Skip to main content

Google SecOps Entities Integration Guide

Overview

The Google SecOps Entities integration allows your NINA workflows to connect with the Google SecOps security intelligence platform for entity and IOC management, watchlist administration, threat intelligence enrichment, reference data management, and UDM ontology customisation. This integration enables automated security operations, threat hunting, and enrichment pipelines directly from your automation platform.

Capabilities

This integration provides access to 18 resources with 99 operations covering:

  • Entities: Get entity details, import entity data, modify risk scores, and query risk score history
  • Entity Blocklists: Create, delete, get, list, and update entity blocklists
  • Entity Risk Scores: Query risk scores for one or more entities
  • IOC Associations: Get, batch-get, and fetch related IOC associations
  • IOCs: Get, batch-get, find, fetch related, manage IOC state, search curated detections, and find first/last seen timestamps
  • Threat Collections: Get, list, and fetch entity metadata, IOC match metadata, and related collections
  • Unique Entities: Get, list, update, add notes, download, and fetch full entity profiles
  • Watchlists: Create, delete, get, list, update watchlists, and list their member entities
  • Watchlist Entities: Add, batch-add, batch-remove, and remove individual entities from watchlists
  • Enrichment Agent: Execute enrichment actions, fetch available actions, and fetch alert context data
  • Enrichment Controls: Create, delete, disable, get, and list enrichment controls
  • Calculated Field Definitions: Full lifecycle management of calculated fields including dependency validation
  • Custom Lists: Create, delete, batch-delete, get, list, update, export, and import custom lists
  • Property Schema Definitions: Create, delete, get, list, and update custom property schemas
  • Reference Lists: Create, get, list, and update YARA-L reference lists
  • Ontology Records: Delete, get, list, update, export, import, get family, and get statistics
  • Ontology Mapping Rules: Delete, get, list, update, fetch all, save, and test UDM mapping rules
  • Ontology Visual Families: Create, delete, get, list, update, export, and import visual families

Credential Configuration

Before using the Google SecOps Entities integration in your workflows, you need to configure credentials for authentication.

Authentication Method

Google SecOps uses Google Service Account authentication. You provide a full service account JSON key, and the integration automatically handles OAuth2 token acquisition and refresh using the cloud-platform scope. No redirect URLs or user interaction are required.

FieldDescriptionRequired
Service Account JSONFull Google service account JSON key (paste the entire JSON content)Yes
RegionGoogle SecOps API region prefix used to construct the base URLYes
ProjectGCP project ID where the Google SecOps instance livesYes
LocationGCP location of the Google SecOps instance (must match provisioning)Yes
InstanceGoogle SecOps instance UUIDYes

How It Works

  1. You provide the service account JSON when creating a credential
  2. The integration parses the JSON and derives an OAuth2 JWT token automatically
  3. Tokens are refreshed automatically when they expire (no manual intervention needed)
  4. All API calls are made to https://{region}-chronicle.googleapis.com

Google SecOps API Regions

Select the region that matches your Google SecOps instance:

Region valueDescriptionBase URL
usUnited Stateshttps://us-chronicle.googleapis.com
euEuropehttps://eu-chronicle.googleapis.com
asia-southeast1Singaporehttps://asia-southeast1-chronicle.googleapis.com
asia-south1Indiahttps://asia-south1-chronicle.googleapis.com
northamerica-northeast2Canadahttps://northamerica-northeast2-chronicle.googleapis.com
me-west1Middle Easthttps://me-west1-chronicle.googleapis.com

How to Obtain a Service Account Key

  1. Log in to the Google Cloud Console
  2. Navigate to IAM & Admin > Service Accounts
  3. Select an existing service account or click Create Service Account
  4. Configure the service account:
    • Name: A descriptive name (e.g., "nina-chronicle-entities")
    • Description: Purpose of this service account
  5. Click Create and Continue
  6. Grant the required IAM roles (see Required IAM Roles below)
  7. Click Done
  8. Click the service account name to open its details
  9. Navigate to the Keys tab
  10. Click Add Key > Create new key
  11. Select JSON format and click Create
  12. Save the downloaded JSON file securely — this is your serviceAccountJson value

Important: The JSON key file is only downloadable once. If you lose it, you must delete the key and create a new one. Never commit this file to source control.

Required IAM Roles

The service account must be granted Google SecOps-specific roles in the GCP project. The roles you need depend on the operations you plan to use:

Google SecOps RoleGCP Role IDRequired For
Google SecOps API Viewerroles/chronicle.viewerAll read-only operations (get, list, batchGet, fetchRelated, fetchFull, etc.)
Google SecOps API Editorroles/chronicle.editorCreate, update, and delete operations on entities, watchlists, custom lists, reference lists, enrichment controls, and property schemas
Google SecOps SOAR Adminroles/chronicle.adminOntology management, enrichment agent execution, calculated field definitions, entity risk score modification

Minimum recommended configuration for read-only NINA workflows: Google SecOps API Viewer

Minimum recommended configuration for full automation workflows: Google SecOps API Editor

Minimum required for ontology and enrichment management: Google SecOps SOAR Admin

To grant a role:

  1. Go to IAM & Admin > IAM in the GCP Console
  2. Click Grant Access
  3. Enter the service account email (e.g., [email protected])
  4. Select the appropriate Google SecOps role
  5. Click Save

Finding Your Credential Values

FieldWhere to find it
serviceAccountJsonThe JSON file downloaded from GCP Console (Service Accounts → Keys → Create)
regionGoogle SecOps Console → Settings → Instance details → Region (e.g., eu, us)
projectGCP Console → Project selector → Project ID (e.g., my-project-123, not the project name or number)
locationGoogle SecOps Console → Settings → Instance details → Location (e.g., eu, us, europe-west2)
instanceGoogle SecOps Console → Settings → Instance details → Instance ID (UUID format, e.g., fca7f167-b9d1-43b1-9d03-0257d31dcb63)

Note: The region and location values are often the same (e.g., both eu) but can differ. The region sets the API base URL; the location is part of the resource path.

Creating a Google SecOps Entities Credential in NINA

  1. Navigate to the Credentials section in NINA
  2. Click Add New Credential
  3. Fill in the credential details:
    • Integration Service: Select "Google SecOps Entities"
    • Service Account JSON: Paste the entire contents of your service account JSON key file
    • Region: Select your Google SecOps instance region (e.g., eu)
    • Project: Enter your GCP project ID (e.g., my-project-123)
    • Location: Enter the Google SecOps instance location (e.g., eu)
    • Instance: Enter the Google SecOps instance UUID
  4. Click Test Connection to verify the credentials work
  5. Click Save to store the credential securely

Note: All Google SecOps integrations (Entities, Cases, Events, Detections, Integrations, etc.) share the same five credential fields. You only need to create one credential set to use across all Google SecOps modules.

Supported Resources

ResourceDescriptionOperations
EntitiesCore entity management and risk score operations4
Entity BlocklistsManage entity blocklists5
Entity Risk ScoresQuery entity risk scores1
IOC AssociationsRead IOC association graph3
IOCsFull IOC management including state and detection search8
Threat CollectionsRead threat intelligence collections5
Unique EntitiesManage unique entity profiles with notes and downloads6
WatchlistsManage watchlists and list their members6
Watchlist EntitiesManage entity membership in watchlists4
Enrichment AgentExecute and manage enrichment actions3
Enrichment ControlsManage enrichment control rules5
Calculated Field DefinitionsManage calculated field definitions8
Custom ListsManage custom lists with import/export8
Property Schema DefinitionsManage custom property schemas5
Reference ListsManage YARA-L reference lists4
Ontology RecordsManage UDM ontology records8
Ontology Mapping RulesManage UDM mapping rules7
Ontology Visual FamiliesManage UDM visual families7

Resource Details

Entities

Core entity management. Retrieve entity details, import entity data, and manage entity risk scores.

Operations

OperationNameDescription
getGet EntityGet entity details by resource name or entity identifier
importImport Entity DataImport entity data into Google SecOps
modifyEntityRiskScoreModify Entity Risk ScoreModify the risk score of an entity (v1alpha)
queryEntityRiskScoreModificationsQuery Entity Risk Score ModificationsQuery the history of risk score modifications for an entity (v1alpha)

Get Entity

Parameters:

NameTypeRequiredDescription
namestringYesResource name of the entity (e.g., projects/my-project/locations/eu/instances/<uuid>/entities/<id>).

Example:

{
"name": "projects/my-project/locations/eu/instances/fca7f167-b9d1-43b1-9d03-0257d31dcb63/entities/abc123"
}

Import Entity Data

Parameters:

NameTypeRequiredDescription
entitiesarrayYesList of entity objects to import. Each object follows the Google SecOps Entity schema.

Example:

{
"entities": [{}]
}

Modify Entity Risk Score

Parameters:

NameTypeRequiredDescription
namestringYesResource name of the entity.
riskScorenumberYesNew risk score value for the entity (0–100).
reasonstringNoReason for modifying the risk score.

Example:

{
"name": "projects/my-project/locations/eu/instances/fca7f167-b9d1-43b1-9d03-0257d31dcb63/entities/abc123",
"riskScore": 85,
"reason": "Confirmed malicious activity detected"
}

Query Entity Risk Score Modifications

Parameters:

NameTypeRequiredDescription
namestringYesResource name of the entity.
pageSizenumberNoMaximum number of results to return.
pageTokenstringNoPagination token from a previous response.

Example:

{
"name": "projects/my-project/locations/eu/instances/fca7f167-b9d1-43b1-9d03-0257d31dcb63/entities/abc123",
"pageSize": 10
}

Entity Blocklists

Manage entity blocklists that can be used to flag groups of entities.

Operations

OperationNameDescription
createCreate Entity BlocklistCreate a new entity blocklist
deleteDelete Entity BlocklistDelete an entity blocklist by resource name
getGet Entity BlocklistRetrieve a specific entity blocklist
listList Entity BlocklistsList all entity blocklists
patchUpdate Entity BlocklistUpdate an existing entity blocklist

Create Entity Blocklist

Parameters:

NameTypeRequiredDescription
displayNamestringYesDisplay name for the blocklist.
descriptionstringNoDescription of the blocklist.
entityTypestringNoType of entities in this blocklist (e.g., DOMAIN, IP, FILE_HASH).

Example:

{
"displayName": "Malicious Domains",
"description": "Domains identified as C2 infrastructure",
"entityType": "DOMAIN"
}

Delete Entity Blocklist

Parameters:

NameTypeRequiredDescription
namestringYesResource name of the entity blocklist to delete.

Example:

{
"name": "projects/my-project/locations/eu/instances/fca7f167-b9d1-43b1-9d03-0257d31dcb63/entitiesBlocklists/blocklist-id"
}

Get Entity Blocklist

Parameters:

NameTypeRequiredDescription
namestringYesResource name of the entity blocklist.

Example:

{
"name": "projects/my-project/locations/eu/instances/fca7f167-b9d1-43b1-9d03-0257d31dcb63/entitiesBlocklists/blocklist-id"
}

List Entity Blocklists

Parameters:

NameTypeRequiredDescription
pageSizenumberNoMaximum number of results to return.
pageTokenstringNoPagination token from a previous response.
filterstringNoFilter expression to narrow results.

Example:

{
"pageSize": 50,
"filter": "displayName=\"Malicious Domains\""
}

Update Entity Blocklist

Parameters:

NameTypeRequiredDescription
namestringYesResource name of the entity blocklist.
displayNamestringNoUpdated display name.
descriptionstringNoUpdated description.
updateMaskstringNoComma-separated list of fields to update (e.g., displayName,description).

Example:

{
"name": "projects/my-project/locations/eu/instances/fca7f167-b9d1-43b1-9d03-0257d31dcb63/entitiesBlocklists/blocklist-id",
"description": "Updated: confirmed C2 infrastructure",
"updateMask": "description"
}

Entity Risk Scores

Query risk scores for one or more entities in batch (v1alpha only).

Operations

OperationNameDescription
queryQuery Entity Risk ScoresQuery risk scores for one or more entities

Query Entity Risk Scores

Parameters:

NameTypeRequiredDescription
entitiesarrayYesList of entity resource names or identifiers to query.
timeRangeobjectNoOptional time range for the risk score query (e.g., {"startTime": "...", "endTime": "..."}).

Example:

{
"entities": [
"projects/my-project/locations/eu/instances/fca7f167-b9d1-43b1-9d03-0257d31dcb63/entities/abc123"
],
"timeRange": {
"startTime": "2025-01-01T00:00:00Z",
"endTime": "2025-07-01T00:00:00Z"
}
}

IOC Associations

Read-only access to IOC association graph nodes.

Operations

OperationNameDescription
getGet IOC AssociationGet a specific IOC association by resource name
batchGetBatch Get IOC AssociationsBatch retrieve multiple IOC associations
fetchRelatedFetch Related IOC AssociationsFetch IOC associations related to a given entity or IOC

Get IOC Association

Parameters:

NameTypeRequiredDescription
namestringYesResource name of the IOC association.

Example:

{
"name": "projects/my-project/locations/eu/instances/fca7f167-b9d1-43b1-9d03-0257d31dcb63/iocAssociations/assoc-id"
}

Batch Get IOC Associations

Parameters:

NameTypeRequiredDescription
namesarrayYesList of IOC association resource names to retrieve.

Example:

{
"names": [
"projects/my-project/locations/eu/instances/fca7f167-b9d1-43b1-9d03-0257d31dcb63/iocAssociations/assoc-id-1",
"projects/my-project/locations/eu/instances/fca7f167-b9d1-43b1-9d03-0257d31dcb63/iocAssociations/assoc-id-2"
]
}

Parameters:

NameTypeRequiredDescription
namestringYesResource name of the entity or IOC to find associations for.
pageSizenumberNoMaximum number of results to return.
pageTokenstringNoPagination token from a previous response.

Example:

{
"name": "projects/my-project/locations/eu/instances/fca7f167-b9d1-43b1-9d03-0257d31dcb63/iocs/ioc-id",
"pageSize": 25
}

IOCs

Full Indicator of Compromise lifecycle management.

Operations

OperationNameDescription
getGet IOCGet IOC details by resource name
batchGetBatch Get IOCsBatch retrieve multiple IOCs
fetchRelatedFetch Related IOCsFetch IOCs related to a given entity or IOC
findFind IOCs by ValueFind IOCs by their indicator value
findFirstAndLastSeenFind First and Last SeenFind first and last seen timestamps for an IOC (v1alpha)
getIocStateGet IOC StateGet the current state of an IOC — active or suppressed (v1alpha)
updateIocStateUpdate IOC StateSuppress or activate an IOC (v1alpha)
searchCuratedDetectionsForIocSearch Curated Detections for IOCSearch curated detections associated with a specific IOC (v1alpha)

Get IOC

Parameters:

NameTypeRequiredDescription
namestringYesResource name of the IOC.

Example:

{
"name": "projects/my-project/locations/eu/instances/fca7f167-b9d1-43b1-9d03-0257d31dcb63/iocs/ioc-id"
}

Batch Get IOCs

Parameters:

NameTypeRequiredDescription
namesarrayYesList of IOC resource names to retrieve.

Example:

{
"names": [
"projects/my-project/locations/eu/instances/fca7f167-b9d1-43b1-9d03-0257d31dcb63/iocs/ioc-id-1",
"projects/my-project/locations/eu/instances/fca7f167-b9d1-43b1-9d03-0257d31dcb63/iocs/ioc-id-2"
]
}

Parameters:

NameTypeRequiredDescription
namestringYesResource name of the entity or IOC.
pageSizenumberNoMaximum number of results to return.
pageTokenstringNoPagination token from a previous response.

Example:

{
"name": "projects/my-project/locations/eu/instances/fca7f167-b9d1-43b1-9d03-0257d31dcb63/entities/entity-id",
"pageSize": 20
}

Find IOCs by Value

Parameters:

NameTypeRequiredDescription
indicatorValuestringYesThe IOC indicator value to search for (e.g., an IP address, domain, or file hash).
indicatorTypestringNoType of indicator — e.g., DOMAIN, IP_ADDRESS, FILE_HASH, URL.

Example:

{
"indicatorValue": "evil.example.com",
"indicatorType": "DOMAIN"
}

Find First and Last Seen

Parameters:

NameTypeRequiredDescription
namestringYesResource name of the IOC.

Example:

{
"name": "projects/my-project/locations/eu/instances/fca7f167-b9d1-43b1-9d03-0257d31dcb63/iocs/ioc-id"
}

Get IOC State

Parameters:

NameTypeRequiredDescription
namestringYesResource name of the IOC.

Example:

{
"name": "projects/my-project/locations/eu/instances/fca7f167-b9d1-43b1-9d03-0257d31dcb63/iocs/ioc-id"
}

Update IOC State

Parameters:

NameTypeRequiredDescription
namestringYesResource name of the IOC.
statestringYesNew state for the IOC — ACTIVE or SUPPRESSED.
reasonstringNoReason for the state change.

Example:

{
"name": "projects/my-project/locations/eu/instances/fca7f167-b9d1-43b1-9d03-0257d31dcb63/iocs/ioc-id",
"state": "SUPPRESSED",
"reason": "False positive — internal IP range"
}

Search Curated Detections for IOC

Parameters:

NameTypeRequiredDescription
namestringYesResource name of the IOC.
pageSizenumberNoMaximum number of results to return.
pageTokenstringNoPagination token from a previous response.

Example:

{
"name": "projects/my-project/locations/eu/instances/fca7f167-b9d1-43b1-9d03-0257d31dcb63/iocs/ioc-id",
"pageSize": 10
}

Threat Collections

Read threat intelligence collections provided by Google.

Operations

OperationNameDescription
getGet Threat CollectionRetrieve a specific threat collection
listList Threat CollectionsList all available threat collections
fetchEntityMetadataFetch Entity Metadata from Threat CollectionFetch metadata for an entity from a threat collection
fetchIocMatchMetadataFetch IOC Match MetadataFetch metadata for IOC matches within a threat collection
fetchRelatedFetch Related Threat CollectionsFetch threat collections related to a given entity or IOC

Get Threat Collection

Parameters:

NameTypeRequiredDescription
namestringYesResource name of the threat collection.

Example:

{
"name": "projects/my-project/locations/eu/instances/fca7f167-b9d1-43b1-9d03-0257d31dcb63/threatCollections/collection-id"
}

List Threat Collections

Parameters:

NameTypeRequiredDescription
pageSizenumberNoMaximum number of results to return.
pageTokenstringNoPagination token from a previous response.
filterstringNoFilter expression.

Example:

{
"pageSize": 20
}

Fetch Entity Metadata from Threat Collection

Parameters:

NameTypeRequiredDescription
namestringYesResource name of the threat collection.
entityNamestringNoName or identifier of the entity to look up within the collection.

Example:

{
"name": "projects/my-project/locations/eu/instances/fca7f167-b9d1-43b1-9d03-0257d31dcb63/threatCollections/collection-id",
"entityName": "evil.example.com"
}

Fetch IOC Match Metadata

Parameters:

NameTypeRequiredDescription
namestringYesResource name of the threat collection.
pageSizenumberNoMaximum number of results to return.
pageTokenstringNoPagination token from a previous response.

Example:

{
"name": "projects/my-project/locations/eu/instances/fca7f167-b9d1-43b1-9d03-0257d31dcb63/threatCollections/collection-id",
"pageSize": 50
}

Parameters:

NameTypeRequiredDescription
namestringYesResource name of the threat collection or entity.
pageSizenumberNoMaximum number of results to return.
pageTokenstringNoPagination token from a previous response.

Example:

{
"name": "projects/my-project/locations/eu/instances/fca7f167-b9d1-43b1-9d03-0257d31dcb63/threatCollections/collection-id",
"pageSize": 10
}

Unique Entities

Manage the enriched unique entity profiles stored in Google SecOps.

Operations

OperationNameDescription
getGet Unique EntityRetrieve a specific unique entity
listList Unique EntitiesList unique entities in the Google SecOps instance
patchUpdate Unique EntityUpdate metadata for a unique entity
addNoteAdd Note to Unique EntityAdd an analyst note to a unique entity
downloadDownload Unique Entity DataDownload data for a unique entity as an export
fetchFullFetch Full Unique Entity ProfileFetch the full enriched profile for a unique entity

Get Unique Entity

Parameters:

NameTypeRequiredDescription
namestringYesResource name of the unique entity.

Example:

{
"name": "projects/my-project/locations/eu/instances/fca7f167-b9d1-43b1-9d03-0257d31dcb63/uniqueEntities/entity-id"
}

List Unique Entities

Parameters:

NameTypeRequiredDescription
pageSizenumberNoMaximum number of results to return.
pageTokenstringNoPagination token from a previous response.
filterstringNoFilter expression.

Example:

{
"pageSize": 50,
"filter": "entityType=\"DOMAIN\""
}

Update Unique Entity

Parameters:

NameTypeRequiredDescription
namestringYesResource name of the unique entity.
updateMaskstringNoComma-separated list of fields to update.

Example:

{
"name": "projects/my-project/locations/eu/instances/fca7f167-b9d1-43b1-9d03-0257d31dcb63/uniqueEntities/entity-id",
"updateMask": "labels"
}

Add Note to Unique Entity

Parameters:

NameTypeRequiredDescription
namestringYesResource name of the unique entity.
contentstringYesNote content to add.

Example:

{
"name": "projects/my-project/locations/eu/instances/fca7f167-b9d1-43b1-9d03-0257d31dcb63/uniqueEntities/entity-id",
"content": "Confirmed C2 server — do not unblock without SOC approval"
}

Download Unique Entity Data

Parameters:

NameTypeRequiredDescription
namestringYesResource name of the unique entity.
formatstringNoExport format — e.g., JSON, CSV.

Example:

{
"name": "projects/my-project/locations/eu/instances/fca7f167-b9d1-43b1-9d03-0257d31dcb63/uniqueEntities/entity-id",
"format": "JSON"
}

Fetch Full Unique Entity Profile

Parameters:

NameTypeRequiredDescription
namestringYesResource name of the unique entity.

Example:

{
"name": "projects/my-project/locations/eu/instances/fca7f167-b9d1-43b1-9d03-0257d31dcb63/uniqueEntities/entity-id"
}

Watchlists

Manage watchlists and their entity membership.

Operations

OperationNameDescription
createCreate WatchlistCreate a new watchlist
deleteDelete WatchlistDelete a watchlist by resource name
getGet WatchlistRetrieve a specific watchlist
listList WatchlistsList all watchlists
patchUpdate WatchlistUpdate an existing watchlist
listEntitiesList Entities on WatchlistList all entities that are members of a watchlist (v1alpha)

Create Watchlist

Parameters:

NameTypeRequiredDescription
displayNamestringYesDisplay name for the watchlist.
descriptionstringNoDescription of the watchlist.
multipleEntityTypesboolNoWhether the watchlist supports multiple entity types.

Example:

{
"displayName": "High Risk Users",
"description": "Users under active investigation",
"multipleEntityTypes": false
}

Delete Watchlist

Parameters:

NameTypeRequiredDescription
namestringYesResource name of the watchlist to delete.

Example:

{
"name": "projects/my-project/locations/eu/instances/fca7f167-b9d1-43b1-9d03-0257d31dcb63/watchlists/watchlist-id"
}

Get Watchlist

Parameters:

NameTypeRequiredDescription
namestringYesResource name of the watchlist.

Example:

{
"name": "projects/my-project/locations/eu/instances/fca7f167-b9d1-43b1-9d03-0257d31dcb63/watchlists/watchlist-id"
}

List Watchlists

Parameters:

NameTypeRequiredDescription
pageSizenumberNoMaximum number of results to return.
pageTokenstringNoPagination token from a previous response.
filterstringNoFilter expression.

Example:

{
"pageSize": 20
}

Update Watchlist

Parameters:

NameTypeRequiredDescription
namestringYesResource name of the watchlist.
displayNamestringNoUpdated display name.
descriptionstringNoUpdated description.
updateMaskstringNoComma-separated list of fields to update (e.g., displayName,description).

Example:

{
"name": "projects/my-project/locations/eu/instances/fca7f167-b9d1-43b1-9d03-0257d31dcb63/watchlists/watchlist-id",
"description": "Updated: insider threat tracking",
"updateMask": "description"
}

List Entities on Watchlist

Parameters:

NameTypeRequiredDescription
namestringYesResource name of the watchlist.
pageSizenumberNoMaximum number of results to return.
pageTokenstringNoPagination token from a previous response.

Example:

{
"name": "projects/my-project/locations/eu/instances/fca7f167-b9d1-43b1-9d03-0257d31dcb63/watchlists/watchlist-id",
"pageSize": 100
}

Watchlist Entities

Manage entity membership in watchlists (v1alpha only).

Operations

OperationNameDescription
addAdd Entity to WatchlistAdd a single entity to a watchlist
batchAddBatch Add Entities to WatchlistAdd multiple entities to a watchlist in a single request
batchRemoveBatch Remove Entities from WatchlistRemove multiple entities from a watchlist in a single request
removeRemove Entity from WatchlistRemove a single entity from a watchlist

Add Entity to Watchlist

Parameters:

NameTypeRequiredDescription
parentstringYesResource name of the watchlist.
entitystringYesResource name of the entity to add.

Example:

{
"parent": "projects/my-project/locations/eu/instances/fca7f167-b9d1-43b1-9d03-0257d31dcb63/watchlists/watchlist-id",
"entity": "projects/my-project/locations/eu/instances/fca7f167-b9d1-43b1-9d03-0257d31dcb63/uniqueEntities/entity-id"
}

Batch Add Entities to Watchlist

Parameters:

NameTypeRequiredDescription
parentstringYesResource name of the watchlist.
entitiesarrayYesList of entity resource names to add.

Example:

{
"parent": "projects/my-project/locations/eu/instances/fca7f167-b9d1-43b1-9d03-0257d31dcb63/watchlists/watchlist-id",
"entities": [
"projects/my-project/locations/eu/instances/fca7f167-b9d1-43b1-9d03-0257d31dcb63/uniqueEntities/entity-id-1",
"projects/my-project/locations/eu/instances/fca7f167-b9d1-43b1-9d03-0257d31dcb63/uniqueEntities/entity-id-2"
]
}

Batch Remove Entities from Watchlist

Parameters:

NameTypeRequiredDescription
parentstringYesResource name of the watchlist.
entitiesarrayYesList of entity resource names to remove.

Example:

{
"parent": "projects/my-project/locations/eu/instances/fca7f167-b9d1-43b1-9d03-0257d31dcb63/watchlists/watchlist-id",
"entities": [
"projects/my-project/locations/eu/instances/fca7f167-b9d1-43b1-9d03-0257d31dcb63/uniqueEntities/entity-id-1"
]
}

Remove Entity from Watchlist

Parameters:

NameTypeRequiredDescription
parentstringYesResource name of the watchlist.
entitystringYesResource name of the entity to remove.

Example:

{
"parent": "projects/my-project/locations/eu/instances/fca7f167-b9d1-43b1-9d03-0257d31dcb63/watchlists/watchlist-id",
"entity": "projects/my-project/locations/eu/instances/fca7f167-b9d1-43b1-9d03-0257d31dcb63/uniqueEntities/entity-id"
}

Enrichment Agent

Interact with the enrichment agent to execute actions and retrieve alert context (v1alpha only).

Operations

OperationNameDescription
executeActionsExecute Enrichment ActionsExecute one or more enrichment actions via the enrichment agent
fetchActionsFetch Available Enrichment ActionsFetch the list of available enrichment actions
fetchAlertDataFetch Alert Data for EnrichmentFetch alert data to use as context for enrichment

Execute Enrichment Actions

Parameters:

NameTypeRequiredDescription
actionsarrayYesList of enrichment action names to execute.
contextobjectNoContext data for the enrichment actions (e.g., alert details, entity info).

Example:

{
"actions": ["VirusTotal_IP_Lookup", "Shodan_Host_Info"],
"context": {
"ipAddress": "1.2.3.4"
}
}

Fetch Available Enrichment Actions

Parameters:

NameTypeRequiredDescription
pageSizenumberNoMaximum number of results to return.
pageTokenstringNoPagination token from a previous response.

Example:

{
"pageSize": 50
}

Fetch Alert Data for Enrichment

Parameters:

NameTypeRequiredDescription
alertNamestringYesResource name of the alert to fetch context data for.

Example:

{
"alertName": "projects/my-project/locations/eu/instances/fca7f167-b9d1-43b1-9d03-0257d31dcb63/alerts/alert-id"
}

Enrichment Controls

Manage enrichment control rules that govern automated enrichment behaviour.

Operations

OperationNameDescription
createCreate Enrichment ControlCreate a new enrichment control
deleteDelete Enrichment ControlDelete an enrichment control (v1alpha)
disableDisable Enrichment ControlDisable an enrichment control without deleting it
getGet Enrichment ControlRetrieve a specific enrichment control
listList Enrichment ControlsList all enrichment controls

Create Enrichment Control

Parameters:

NameTypeRequiredDescription
displayNamestringYesDisplay name for the enrichment control.
descriptionstringNoDescription of the enrichment control.
configobjectNoEnrichment control configuration object.

Example:

{
"displayName": "Block Enrichment for Internal IPs",
"description": "Prevents enrichment of RFC1918 addresses",
"config": {}
}

Delete Enrichment Control

Parameters:

NameTypeRequiredDescription
namestringYesResource name of the enrichment control to delete.

Example:

{
"name": "projects/my-project/locations/eu/instances/fca7f167-b9d1-43b1-9d03-0257d31dcb63/enrichmentControls/control-id"
}

Disable Enrichment Control

Parameters:

NameTypeRequiredDescription
namestringYesResource name of the enrichment control to disable.

Example:

{
"name": "projects/my-project/locations/eu/instances/fca7f167-b9d1-43b1-9d03-0257d31dcb63/enrichmentControls/control-id"
}

Get Enrichment Control

Parameters:

NameTypeRequiredDescription
namestringYesResource name of the enrichment control.

Example:

{
"name": "projects/my-project/locations/eu/instances/fca7f167-b9d1-43b1-9d03-0257d31dcb63/enrichmentControls/control-id"
}

List Enrichment Controls

Parameters:

NameTypeRequiredDescription
pageSizenumberNoMaximum number of results to return.
pageTokenstringNoPagination token from a previous response.
filterstringNoFilter expression.

Example:

{
"pageSize": 20
}

Calculated Field Definitions

Manage calculated field definitions that derive new values from existing entity properties (v1alpha only).

Operations

OperationNameDescription
createCreate Calculated Field DefinitionCreate a new calculated field definition
deleteDelete Calculated Field DefinitionDelete a calculated field definition
getGet Calculated Field DefinitionRetrieve a specific calculated field definition
listList Calculated Field DefinitionsList all calculated field definitions
patchUpdate Calculated Field DefinitionUpdate an existing calculated field definition
fetchAvailableTargetFieldsFetch Available Target FieldsFetch available target fields for calculated field definitions
fetchDynamicOptionsFetch Dynamic OptionsFetch dynamic options for a calculated field definition
validateDependencyValidate Field DependencyValidate a calculated field dependency before saving

Create Calculated Field Definition

Parameters:

NameTypeRequiredDescription
displayNamestringYesDisplay name for the field definition.
descriptionstringNoDescription of the field definition.
expressionstringYesExpression for the calculated field (Google SecOps expression language).

Example:

{
"displayName": "Risk Category",
"description": "Derived risk category from score",
"expression": "riskScore > 70 ? 'HIGH' : riskScore > 40 ? 'MEDIUM' : 'LOW'"
}

Delete Calculated Field Definition

Parameters:

NameTypeRequiredDescription
namestringYesResource name of the field definition to delete.

Example:

{
"name": "projects/my-project/locations/eu/instances/fca7f167-b9d1-43b1-9d03-0257d31dcb63/calculatedFieldDefinitions/field-id"
}

Get Calculated Field Definition

Parameters:

NameTypeRequiredDescription
namestringYesResource name of the calculated field definition.

Example:

{
"name": "projects/my-project/locations/eu/instances/fca7f167-b9d1-43b1-9d03-0257d31dcb63/calculatedFieldDefinitions/field-id"
}

List Calculated Field Definitions

Parameters:

NameTypeRequiredDescription
pageSizenumberNoMaximum number of results to return.
pageTokenstringNoPagination token from a previous response.

Example:

{
"pageSize": 25
}

Update Calculated Field Definition

Parameters:

NameTypeRequiredDescription
namestringYesResource name of the field definition.
expressionstringNoUpdated expression for the calculated field.
updateMaskstringNoComma-separated list of fields to update.

Example:

{
"name": "projects/my-project/locations/eu/instances/fca7f167-b9d1-43b1-9d03-0257d31dcb63/calculatedFieldDefinitions/field-id",
"expression": "riskScore > 80 ? 'CRITICAL' : riskScore > 50 ? 'HIGH' : 'LOW'",
"updateMask": "expression"
}

Fetch Available Target Fields

Parameters:

NameTypeRequiredDescription
filterstringNoFilter expression to narrow the results.

Example:

{
"filter": "type=\"STRING\""
}

Fetch Dynamic Options

Parameters:

NameTypeRequiredDescription
namestringYesResource name of the calculated field definition.

Example:

{
"name": "projects/my-project/locations/eu/instances/fca7f167-b9d1-43b1-9d03-0257d31dcb63/calculatedFieldDefinitions/field-id"
}

Validate Field Dependency

Parameters:

NameTypeRequiredDescription
namestringYesResource name of the calculated field definition to validate.

Example:

{
"name": "projects/my-project/locations/eu/instances/fca7f167-b9d1-43b1-9d03-0257d31dcb63/calculatedFieldDefinitions/field-id"
}

Custom Lists

Manage custom lists used for UI-driven entity grouping and filtering.

Operations

OperationNameDescription
createCreate Custom ListCreate a new custom list
deleteDelete Custom ListDelete a custom list by resource name
batchDeleteBatch Delete Custom ListsDelete multiple custom lists in a single request
getGet Custom ListRetrieve a specific custom list
listList Custom ListsList all custom lists
patchUpdate Custom ListUpdate an existing custom list
exportExport Custom ListExport a custom list as a downloadable file
importImport Custom ListImport entries into a custom list from a file

Create Custom List

Parameters:

NameTypeRequiredDescription
displayNamestringYesDisplay name for the custom list.
descriptionstringNoDescription of the custom list.
entriesarrayNoInitial list entries (array of strings).

Example:

{
"displayName": "VIP Users",
"description": "Executives and privileged users",
"entries": ["[email protected]", "[email protected]"]
}

Delete Custom List

Parameters:

NameTypeRequiredDescription
namestringYesResource name of the custom list to delete.

Example:

{
"name": "projects/my-project/locations/eu/instances/fca7f167-b9d1-43b1-9d03-0257d31dcb63/customLists/list-id"
}

Batch Delete Custom Lists

Parameters:

NameTypeRequiredDescription
namesarrayYesList of custom list resource names to delete.

Example:

{
"names": [
"projects/my-project/locations/eu/instances/fca7f167-b9d1-43b1-9d03-0257d31dcb63/customLists/list-id-1",
"projects/my-project/locations/eu/instances/fca7f167-b9d1-43b1-9d03-0257d31dcb63/customLists/list-id-2"
]
}

Get Custom List

Parameters:

NameTypeRequiredDescription
namestringYesResource name of the custom list.

Example:

{
"name": "projects/my-project/locations/eu/instances/fca7f167-b9d1-43b1-9d03-0257d31dcb63/customLists/list-id"
}

List Custom Lists

Parameters:

NameTypeRequiredDescription
pageSizenumberNoMaximum number of results to return.
pageTokenstringNoPagination token from a previous response.
filterstringNoFilter expression.

Example:

{
"pageSize": 50
}

Update Custom List

Parameters:

NameTypeRequiredDescription
namestringYesResource name of the custom list.
entriesarrayNoUpdated list entries (replaces existing entries).
updateMaskstringNoComma-separated list of fields to update.

Example:

{
"name": "projects/my-project/locations/eu/instances/fca7f167-b9d1-43b1-9d03-0257d31dcb63/customLists/list-id",
"entries": ["[email protected]", "[email protected]", "[email protected]"],
"updateMask": "entries"
}

Export Custom List

Parameters:

NameTypeRequiredDescription
namestringYesResource name of the custom list to export.
formatstringNoExport format — e.g., JSON, CSV.

Example:

{
"name": "projects/my-project/locations/eu/instances/fca7f167-b9d1-43b1-9d03-0257d31dcb63/customLists/list-id",
"format": "CSV"
}

Import Custom List

Parameters:

NameTypeRequiredDescription
namestringYesResource name of the custom list.
datastringYesBase64-encoded file content to import.

Example:

{
"name": "projects/my-project/locations/eu/instances/fca7f167-b9d1-43b1-9d03-0257d31dcb63/customLists/list-id",
"data": "YWxpY2VAY29ycC5jb20KYm9iQGNvcnAuY29t"
}

Property Schema Definitions

Manage custom property schemas that extend Google SecOps's entity model.

Operations

OperationNameDescription
createCreate Property Schema DefinitionCreate a new property schema definition
deleteDelete Property Schema DefinitionDelete a property schema definition
getGet Property Schema DefinitionRetrieve a specific property schema definition
listList Property Schema DefinitionsList all property schema definitions
patchUpdate Property Schema DefinitionUpdate an existing property schema definition

Create Property Schema Definition

Parameters:

NameTypeRequiredDescription
displayNamestringYesDisplay name for the property schema.
descriptionstringNoDescription of the property schema.
propertyTypestringNoData type — e.g., STRING, NUMBER, BOOL, TIMESTAMP.

Example:

{
"displayName": "Business Unit",
"description": "The business unit this entity belongs to",
"propertyType": "STRING"
}

Delete Property Schema Definition

Parameters:

NameTypeRequiredDescription
namestringYesResource name of the property schema definition to delete.

Example:

{
"name": "projects/my-project/locations/eu/instances/fca7f167-b9d1-43b1-9d03-0257d31dcb63/propertySchemaDefinitions/schema-id"
}

Get Property Schema Definition

Parameters:

NameTypeRequiredDescription
namestringYesResource name of the property schema definition.

Example:

{
"name": "projects/my-project/locations/eu/instances/fca7f167-b9d1-43b1-9d03-0257d31dcb63/propertySchemaDefinitions/schema-id"
}

List Property Schema Definitions

Parameters:

NameTypeRequiredDescription
pageSizenumberNoMaximum number of results to return.
pageTokenstringNoPagination token from a previous response.

Example:

{
"pageSize": 30
}

Update Property Schema Definition

Parameters:

NameTypeRequiredDescription
namestringYesResource name of the property schema definition.
updateMaskstringNoComma-separated list of fields to update.

Example:

{
"name": "projects/my-project/locations/eu/instances/fca7f167-b9d1-43b1-9d03-0257d31dcb63/propertySchemaDefinitions/schema-id",
"updateMask": "description"
}

Reference Lists

Manage reference lists that can be referenced directly inside YARA-L detection rules.

Operations

OperationNameDescription
createCreate Reference ListCreate a new reference list for use in YARA-L detection rules
getGet Reference ListRetrieve a specific reference list
listList Reference ListsList all reference lists
patchUpdate Reference ListUpdate an existing reference list

Create Reference List

Parameters:

NameTypeRequiredDescription
displayNamestringYesDisplay name for the reference list.
descriptionstringNoDescription of the reference list and its purpose.
linesarrayNoInitial list of string entries.
syntaxTypestringNoSyntax type for list entries — PLAIN_TEXT_STRING, CIDR, or REGEX.

Example:

{
"displayName": "Allowlisted Domains",
"description": "Known-safe domains to exclude from detection rules",
"lines": ["google.com", "microsoft.com", "corp.example.com"],
"syntaxType": "PLAIN_TEXT_STRING"
}

Get Reference List

Parameters:

NameTypeRequiredDescription
namestringYesResource name of the reference list.
viewstringNoView type — REFERENCE_LIST_VIEW_UNSPECIFIED, BASIC, or FULL. Use FULL to include all entries.

Example:

{
"name": "projects/my-project/locations/eu/instances/fca7f167-b9d1-43b1-9d03-0257d31dcb63/referenceLists/list-id",
"view": "FULL"
}

List Reference Lists

Parameters:

NameTypeRequiredDescription
pageSizenumberNoMaximum number of results to return.
pageTokenstringNoPagination token from a previous response.
viewstringNoView type — REFERENCE_LIST_VIEW_UNSPECIFIED, BASIC, or FULL.

Example:

{
"pageSize": 50,
"view": "BASIC"
}

Update Reference List

Parameters:

NameTypeRequiredDescription
namestringYesResource name of the reference list.
linesarrayNoUpdated list of string entries (replaces existing).
descriptionstringNoUpdated description.
updateMaskstringNoComma-separated list of fields to update (e.g., lines,description).

Example:

{
"name": "projects/my-project/locations/eu/instances/fca7f167-b9d1-43b1-9d03-0257d31dcb63/referenceLists/list-id",
"lines": ["google.com", "microsoft.com", "corp.example.com", "new-safe-domain.com"],
"updateMask": "lines"
}

Ontology Records

Manage UDM (Unified Data Model) ontology records (v1alpha only).

Operations

OperationNameDescription
deleteDelete Ontology RecordDelete an ontology record
getGet Ontology RecordRetrieve a specific ontology record
listList Ontology RecordsList ontology records
patchUpdate Ontology RecordUpdate an existing ontology record
exportExport Ontology RecordsExport ontology records as a package
familyGet Ontology FamilyRetrieve the ontology family for a given record
importImport Ontology RecordsImport ontology records from a package
statisticsGet Ontology StatisticsGet usage statistics for ontology records

Delete Ontology Record

Parameters:

NameTypeRequiredDescription
namestringYesResource name of the ontology record to delete.

Example:

{
"name": "projects/my-project/locations/eu/instances/fca7f167-b9d1-43b1-9d03-0257d31dcb63/ontologyRecords/record-id"
}

Get Ontology Record

Parameters:

NameTypeRequiredDescription
namestringYesResource name of the ontology record.

Example:

{
"name": "projects/my-project/locations/eu/instances/fca7f167-b9d1-43b1-9d03-0257d31dcb63/ontologyRecords/record-id"
}

List Ontology Records

Parameters:

NameTypeRequiredDescription
pageSizenumberNoMaximum number of results to return.
pageTokenstringNoPagination token from a previous response.
filterstringNoFilter expression.

Example:

{
"pageSize": 50
}

Update Ontology Record

Parameters:

NameTypeRequiredDescription
namestringYesResource name of the ontology record.
updateMaskstringNoComma-separated list of fields to update.

Example:

{
"name": "projects/my-project/locations/eu/instances/fca7f167-b9d1-43b1-9d03-0257d31dcb63/ontologyRecords/record-id",
"updateMask": "description"
}

Export Ontology Records

Parameters:

NameTypeRequiredDescription
filterstringNoFilter expression to select which records to export.

Example:

{
"filter": "type=\"CUSTOM\""
}

Get Ontology Family

Parameters:

NameTypeRequiredDescription
namestringYesResource name of the ontology record.

Example:

{
"name": "projects/my-project/locations/eu/instances/fca7f167-b9d1-43b1-9d03-0257d31dcb63/ontologyRecords/record-id"
}

Import Ontology Records

Parameters:

NameTypeRequiredDescription
datastringYesBase64-encoded ontology package to import.

Example:

{
"data": "<base64-encoded-ontology-package>"
}

Get Ontology Statistics

Parameters:

NameTypeRequiredDescription
filterstringNoFilter expression.

Example:

{
"filter": ""
}

Ontology Mapping Rules

Manage UDM mapping rules that transform raw log fields into UDM fields (v1alpha only).

Operations

OperationNameDescription
deleteDelete Mapping RuleDelete a UDM ontology mapping rule
getGet Mapping RuleRetrieve a specific ontology mapping rule
listList Mapping RulesList all ontology mapping rules
patchUpdate Mapping RuleUpdate an existing ontology mapping rule
fetchAllFetch All Mapping RulesFetch all mapping rules without pagination
saveSave Mapping RulesSave one or more ontology mapping rules
testTest Mapping RuleTest a mapping rule against sample data

Delete Mapping Rule

Parameters:

NameTypeRequiredDescription
namestringYesResource name of the mapping rule to delete.

Example:

{
"name": "projects/my-project/locations/eu/instances/fca7f167-b9d1-43b1-9d03-0257d31dcb63/ontologyRecords/mappingRules/rule-id"
}

Get Mapping Rule

Parameters:

NameTypeRequiredDescription
namestringYesResource name of the mapping rule.

Example:

{
"name": "projects/my-project/locations/eu/instances/fca7f167-b9d1-43b1-9d03-0257d31dcb63/ontologyRecords/mappingRules/rule-id"
}

List Mapping Rules

Parameters:

NameTypeRequiredDescription
pageSizenumberNoMaximum number of results to return.
pageTokenstringNoPagination token from a previous response.

Example:

{
"pageSize": 50
}

Update Mapping Rule

Parameters:

NameTypeRequiredDescription
namestringYesResource name of the mapping rule.
updateMaskstringNoComma-separated list of fields to update.

Example:

{
"name": "projects/my-project/locations/eu/instances/fca7f167-b9d1-43b1-9d03-0257d31dcb63/ontologyRecords/mappingRules/rule-id",
"updateMask": "expression"
}

Fetch All Mapping Rules

Parameters:

NameTypeRequiredDescription
filterstringNoFilter expression to narrow results.

Example:

{
"filter": ""
}

Save Mapping Rules

Parameters:

NameTypeRequiredDescription
rulesarrayYesList of mapping rule objects to save.

Example:

{
"rules": [{}]
}

Test Mapping Rule

Parameters:

NameTypeRequiredDescription
namestringNoResource name of an existing mapping rule to test.
ruleobjectNoInline mapping rule definition to test (use instead of name).
sampleDataobjectNoSample raw log data to test the rule against.

Example:

{
"rule": {},
"sampleData": {
"src_ip": "1.2.3.4",
"dst_port": "443"
}
}

Ontology Visual Families

Manage UDM visual families used to group and display entity relationships in the Google SecOps UI.

Operations

OperationNameDescription
createCreate Visual FamilyCreate a new UDM ontology visual family
deleteDelete Visual FamilyDelete a UDM ontology visual family
getGet Visual FamilyRetrieve a specific ontology visual family
listList Visual FamiliesList all ontology visual families
patchUpdate Visual FamilyUpdate an existing ontology visual family
exportExport Visual FamiliesExport ontology visual families as a package
importImport Visual FamiliesImport ontology visual families from a package

Create Visual Family

Parameters:

NameTypeRequiredDescription
displayNamestringYesDisplay name for the visual family.
descriptionstringNoDescription of the visual family.

Example:

{
"displayName": "Network Assets",
"description": "Visual grouping for network-related entities"
}

Delete Visual Family

Parameters:

NameTypeRequiredDescription
namestringYesResource name of the visual family to delete.

Example:

{
"name": "projects/my-project/locations/eu/instances/fca7f167-b9d1-43b1-9d03-0257d31dcb63/ontologyRecords/visualFamilies/family-id"
}

Get Visual Family

Parameters:

NameTypeRequiredDescription
namestringYesResource name of the visual family.

Example:

{
"name": "projects/my-project/locations/eu/instances/fca7f167-b9d1-43b1-9d03-0257d31dcb63/ontologyRecords/visualFamilies/family-id"
}

List Visual Families

Parameters:

NameTypeRequiredDescription
pageSizenumberNoMaximum number of results to return.
pageTokenstringNoPagination token from a previous response.

Example:

{
"pageSize": 20
}

Update Visual Family

Parameters:

NameTypeRequiredDescription
namestringYesResource name of the visual family.
updateMaskstringNoComma-separated list of fields to update.

Example:

{
"name": "projects/my-project/locations/eu/instances/fca7f167-b9d1-43b1-9d03-0257d31dcb63/ontologyRecords/visualFamilies/family-id",
"updateMask": "description"
}

Export Visual Families

Parameters:

NameTypeRequiredDescription
filterstringNoFilter expression to select which visual families to export.

Example:

{
"filter": ""
}

Import Visual Families

Parameters:

NameTypeRequiredDescription
datastringYesBase64-encoded visual families package to import.

Example:

{
"data": "<base64-encoded-visual-families-package>"
}

Best Practices

  1. Use referenceLists.list or referenceLists.get to test connectivity. These are cheap read-only v1 calls available to any service account with Google SecOps API Viewer. Use them to verify credentials before running more complex workflows.

  2. Implement pagination for all list operations. Pass the nextPageToken from each response as pageToken in the next call. Stop when nextPageToken is absent or empty.

  3. Do not send pageSize to ontologyMappingRules.list or enrichmentAgent.fetchActions. These endpoints return INVALID_ARGUMENT when pageSize is included. Omit the parameter entirely for these two operations.

  4. Back up before bulk-importing or patching reference lists and ontology records. Use export operations before applying changes to avoid data loss.

  5. Use updateMask on all PATCH operations. Always specify only the fields you intend to change. Omitting updateMask may result in unintended field overwrites.

  6. Confirm IOC state before calling updateIocState. Use getIocState first to verify the current state. Suppressing a true positive can cause missed detections and the change is logged in the audit trail.

  7. Use batchAdd and batchRemove for bulk watchlist updates. Calling add and remove individually at scale is rate-limit-inefficient; batch operations are significantly faster.

  8. Prefer v1 endpoints for production workflows. Operations on v1alpha are subject to breaking changes. Where both versions exist, v1 is the stable choice. Reserve v1alpha-only operations (e.g., modifyEntityRiskScore, watchlistEntities, enrichment agent) for workflows that explicitly require them.

  9. Handle rate limits with the built-in retry logic. The connector retries up to 3 times with exponential back-off on HTTP 429 responses, honouring the Retry-After header when present. Avoid hammering list endpoints in tight loops.

  10. Store the service account JSON key securely. Never log it, embed it in code, or commit it to source control. Use NINA's credential management for encrypted storage. Rotate keys regularly using GCP Console → Service Accounts → Keys.

Troubleshooting

IssuePossible CauseSolution
serviceAccountJson is requiredMissing credential fieldPaste the full service account JSON content into the field
failed to parse service account JSONCorrupt JSON or wrong key type (e.g., an API key was pasted instead of a service account JSON)Download a fresh JSON key from GCP Console (IAM → Service Accounts → Keys)
401 UnauthenticatedToken expired or service account deletedRe-export a fresh service account JSON key from GCP Console
403 Permission DeniedService account lacks required Google SecOps IAM roleGrant Google SecOps API Viewer, Google SecOps API Editor, or Google SecOps SOAR Admin as needed
404 Not FoundWrong project, location, or instance value in credentials, or the resource does not existVerify all five credential fields in Google SecOps Console → Settings → Instance details
UnsupportedApiVersion on entitiesBlocklists.listThis Google SecOps instance tier does not support v1 for this endpointThis is an instance-tier constraint; the connector handles it gracefully in tests via skipOnInvalidArgument
INVALID_ARGUMENT: Cannot bind query parameter 'pageSize'pageSize was sent to an endpoint that does not accept it (ontologyMappingRules.list, enrichmentAgent.fetchActions)Remove pageSize from the call; these endpoints do not support pagination via this parameter
429 Too Many RequestsRate limit exceededThe connector retries automatically. If persistent, reduce call frequency in your NINA workflow
404 on ontologyMappingRules.fetchAll or ontologyVisualFamilies.listOntology features not enabled on this instance tierContact Google SecOps support to enable advanced ontology management
Connection timeoutWrong region value or network issueVerify the region matches your Google SecOps instance's provisioned region exactly
Empty list resultsNo data exists yet, or filter is too restrictiveRemove filter parameters and retry; use the Google SecOps console to confirm data exists

Support

For issues with this integration, please contact support with:

  • The resource and operation you were attempting (e.g., watchlists.list)
  • The complete error message received
  • The parameters used (excluding sensitive credential data)
  • Your Google SecOps region and instance ID

For Google SecOps API documentation, visit: Google SecOps API Reference

Updated: 2026-07-08