Skip to main content

Google SecOps Platform Integration Guide

Overview

The Google SecOps Platform integration allows your NINA workflows to connect with the Google SecOps Security Operations Platform API to manage the full range of platform-level capabilities: dashboards, data tables, data exports, access control, long-running operations, investigations, Labs & AI experiments, and instance-wide system settings.

Capabilities

This integration provides access to 38 resources with 186 operations covering:

  • Access Control: Data access labels, data access scopes, and SOC roles
  • Context & Properties: Instance-level context property key-value store
  • Dashboards: Native dashboards, legacy dashboards, scheduled reports, chart and query management
  • Data Tables: Data table lifecycle and row-level bulk operations
  • Data Export: BigQuery export provisioning and data export job management
  • Investigations: Investigation lifecycle, comments, and step graph
  • Labs & AI: Labs experiments, executions, notebooks, and AI conversation threads
  • Operations: Long-running operation tracking and cancellation
  • System Settings: Module settings, announcements, notifications, views, feature flags, federation groups, metric definitions, tenant configurations, and more

Credential Configuration

Before using the Google SecOps Platform integration in your workflows, you must configure credentials for authentication.

Authentication Method

Google SecOps Platform uses Google Service Account (OAuth2 JWT) authentication. You provide the full JSON key of a GCP service account, and the integration automatically negotiates a short-lived OAuth2 access token using the https://www.googleapis.com/auth/cloud-platform scope. No user interaction or redirect URLs are required.

FieldDescriptionRequired
serviceAccountJsonFull content of the Google service account JSON key fileYes
regionGoogle SecOps API region prefix (e.g. us, eu)Yes
projectGCP project ID where the Google SecOps instance livesYes
locationGCP location of the Google SecOps instance (e.g. us, europe-west2)Yes
instanceGoogle SecOps instance UUIDYes

How It Works

  1. You paste the service account JSON key when creating the credential in NINA.
  2. On each API call the integration uses golang.org/x/oauth2/google to exchange the key for a short-lived bearer token scoped to https://www.googleapis.com/auth/cloud-platform.
  3. Tokens are refreshed automatically — no manual rotation is needed at runtime.
  4. All requests are sent to https://{region}-chronicle.googleapis.com.

Google SecOps API Regions

Choose the region that matches where your Google SecOps instance was provisioned. Using the wrong region returns 404 NOT_FOUND for every call.

Region labelregion valueBase URL
United Statesushttps://us-chronicle.googleapis.com
Europeeuhttps://eu-chronicle.googleapis.com
Singaporeasia-southeast1https://asia-southeast1-chronicle.googleapis.com
Indiaasia-south1https://asia-south1-chronicle.googleapis.com
Canadanorthamerica-northeast2https://northamerica-northeast2-chronicle.googleapis.com
Middle Eastme-west1https://me-west1-chronicle.googleapis.com

How to Obtain a Service Account Key

  1. Open the Google Cloud Console and select the GCP project that owns your Google SecOps instance.
  2. Navigate to IAM & Admin → Service Accounts.
  3. Click Create Service Account (or select an existing one dedicated to NINA).
    • Name: e.g. nina-chronicle-platform
    • Description: "NINA Google SecOps Platform integration"
  4. Click Create and continue.
  5. On the Grant this service account access to the project step, assign the required IAM roles (see table below).
  6. Click Done.
  7. Select the service account, open the Keys tab, click Add Key → Create new key, choose JSON, and click Create.
  8. The JSON key file downloads automatically. Store it securely — it cannot be retrieved again.

Required IAM Roles

The roles required depend on which resources and operations you use. Grant only what your workflows need.

IAM RoleRole IDGrants access to
Google SecOps API Viewerroles/chronicle.viewerAll read-only (list, get) operations across every resource
Google SecOps API Editorroles/chronicle.editorCreate, update, and delete operations on most resources
Google SecOps API Adminroles/chronicle.adminAll operations including access control, SOC roles, tenant management, and feature flags
Google SecOps SOAR Adminroles/chronicle.soarAdminInvestigations, investigation comments, and investigation steps
Google SecOps Limited Viewerroles/chronicle.limitedViewerRead-only access restricted by data access scopes

Minimum recommended configuration:

  • Read-only workflows (list/get only): roles/chronicle.viewer
  • Full platform management: roles/chronicle.editor
  • Access control management (labels, scopes, SOC roles): roles/chronicle.admin
  • Investigations: roles/chronicle.soarAdmin in addition to viewer or editor
  • Data export jobs: roles/chronicle.admin — the dataExports.list endpoint requires elevated permissions beyond standard viewer

Note: Google SecOps IAM roles are granted at the GCP project level. Open IAM & Admin → IAM in the Cloud Console, find the service account, click Edit, and add the required roles.


Where to Find Each Credential Value

FieldWhere to find it
serviceAccountJsonThe JSON file downloaded in step 7 above — paste the entire file content
regionShown in your Google SecOps URL: https://{region}-chronicle.googleapis.com
projectGCP project ID shown in the Cloud Console header (e.g. my-org-chronicle-prod)
locationThe GCP region used when the Google SecOps instance was provisioned; visible in Google SecOps's instance settings or the resource name path
instanceThe UUID in the Google SecOps instance resource name: projects/{project}/locations/{location}/instances/{instance} — visible in Google SecOps Settings → Instance

Creating a Google SecOps Platform Credential in NINA

  1. Navigate to Credentials in NINA.
  2. Click Add New Credential.
  3. Set Integration Service to Google SecOps Platform.
  4. Fill in the five fields:
    • serviceAccountJson: Paste the full contents of the JSON key file.
    • region: e.g. eu
    • project: e.g. my-org-chronicle-prod
    • location: e.g. europe-west2
    • instance: e.g. fca7f167-b9d1-43b1-9d03-0257d31dcb63
  5. Click Test Connection to verify. The connector calls GET .../operations?pageSize=1 as a lightweight probe.
  6. Click Save.

Shared credentials: All Google SecOps connectors (chronicle-cases, chronicle-events, chronicle-entities, chronicle-platform, etc.) use the same five credential fields and the same service account. One credential can be reused across all Google SecOps integrations.


Supported Resources

ResourceDescriptionOperations
dataAccessLabelsData access labels for data visibility control5
dataAccessScopesData access scopes combining labels for user visibility5
socRolesSOC roles assigning permissions to users5
contextPropertiesInstance-level key-value context properties6
dashboardChartsDashboard chart definitions2
dashboardQueriesDashboard query execution and retrieval2
dashboardScheduledReportsScheduled dashboard report delivery8
dashboardsLegacy dashboards and migration operations9
nativeDashboardsNative dashboards, charts, import/export, IAM14
dataTableOperationErrorsError details for failed data table operations1
dataTablesData table lifecycle management6
dataTableRowsRow-level operations including bulk create/update/delete15
bigQueryExportBigQuery export provisioning and access2
dataExportsData export job management7
investigationsInvestigation lifecycle management5
investigationCommentsComments on investigations5
investigationStepsInvestigation graph step nodes2
labsExperimentsLabs AI experiment execution and management6
labsExperimentExecutionsLabs experiment execution tracking3
notebooksLabs notebooks2
conversationsUser-scoped AI conversation threads5
conversationMessagesMessages within AI conversations5
operationsLong-running operation tracking and cancellation5
moduleSettingsInstance module settings and properties6
savedColumnSetsInstance-scoped saved column configurations5
userSavedColumnSetsUser-scoped saved column configurations5
announcementsSystem announcements displayed to users5
systemNotificationsSystem notification management3
viewsView configurations4
featuresFeature flag management4
federationGroupsMulti-instance federation groups5
metricDefinitionsCustom metric definitions4
sharedPreferenceSetsShared preference sets5
tenantsTenant configurations4
errorNotificationConfigsError notification delivery configurations5
userSettingsPer-user settings (preferences, conversation history)3
userModuleSettingsPer-user module settings overrides1
managedDomainSettingsManaged domain settings for federated deployments2

Resource Details

dataAccessLabels

Manage Google SecOps data access labels used to control visibility of data within an instance. Requires roles/chronicle.admin.

Operations

OperationMethodDescription
createPOSTCreate a new data access label
deleteDELETEDelete a label by resource name
getGETGet a single label by resource name
listGETList all labels in the instance
patchPATCHUpdate an existing label

create

Parameters:

NameTypeRequiredDescription
displayNamestringYesHuman-readable name for the label
descriptionstringNoOptional description

Example:

{
"displayName": "PII Data",
"description": "Label for personally identifiable information"
}

delete

Parameters:

NameTypeRequiredDescription
namestringYesResource name, e.g. projects/my-project/locations/us/instances/uuid/dataAccessLabels/label-id

Example:

{
"name": "projects/my-project/locations/us/instances/fca7f167-b9d1-43b1-9d03-0257d31dcb63/dataAccessLabels/pii-data"
}

get

Parameters:

NameTypeRequiredDescription
namestringYesResource name of the data access label

Example:

{
"name": "projects/my-project/locations/us/instances/fca7f167-b9d1-43b1-9d03-0257d31dcb63/dataAccessLabels/pii-data"
}

list

Parameters:

NameTypeRequiredDescription
pageSizenumberNoMaximum number of results per page (default: server-defined)
pageTokenstringNoPage token from a previous response for pagination

Example:

{
"pageSize": 50
}

patch

Parameters:

NameTypeRequiredDescription
namestringYesResource name of the label to update
displayNamestringNoNew display name
descriptionstringNoNew description
updateMaskstringNoComma-separated fields to update, e.g. displayName,description

Example:

{
"name": "projects/my-project/locations/us/instances/fca7f167-b9d1-43b1-9d03-0257d31dcb63/dataAccessLabels/pii-data",
"displayName": "PII — Updated",
"updateMask": "displayName"
}

dataAccessScopes

Manage Google SecOps data access scopes. A scope combines one or more labels to define what data a user or role can see. Requires roles/chronicle.admin.

Operations

OperationMethodDescription
createPOSTCreate a new data access scope
deleteDELETEDelete a scope by resource name
getGETGet a single scope by resource name
listGETList all scopes in the instance
patchPATCHUpdate an existing scope

create

Parameters:

NameTypeRequiredDescription
displayNamestringYesHuman-readable name for the scope
dataAccessLabelsarrayNoList of label resource names to include in the scope

Example:

{
"displayName": "EU Security Team Scope",
"dataAccessLabels": [
"projects/my-project/locations/eu/instances/fca7f167-b9d1-43b1-9d03-0257d31dcb63/dataAccessLabels/eu-events"
]
}

delete

Parameters:

NameTypeRequiredDescription
namestringYesResource name of the data access scope

Example:

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

get

Parameters:

NameTypeRequiredDescription
namestringYesResource name of the data access scope

Example:

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

list

Parameters:

NameTypeRequiredDescription
pageSizenumberNoMaximum number of results per page
pageTokenstringNoPage token for pagination

Example:

{
"pageSize": 25
}

patch

Parameters:

NameTypeRequiredDescription
namestringYesResource name of the scope to update
dataAccessLabelsarrayNoReplacement list of label resource names
updateMaskstringNoComma-separated fields to update

Example:

{
"name": "projects/my-project/locations/eu/instances/fca7f167-b9d1-43b1-9d03-0257d31dcb63/dataAccessScopes/eu-security-scope",
"dataAccessLabels": [
"projects/my-project/locations/eu/instances/fca7f167-b9d1-43b1-9d03-0257d31dcb63/dataAccessLabels/eu-events",
"projects/my-project/locations/eu/instances/fca7f167-b9d1-43b1-9d03-0257d31dcb63/dataAccessLabels/pii-data"
],
"updateMask": "dataAccessLabels"
}

socRoles

Manage Google SecOps SOC roles that assign permissions to users within an instance. Requires roles/chronicle.admin.

Operations

OperationMethodDescription
createPOSTCreate a new SOC role
deleteDELETEDelete a SOC role
getGETGet a single SOC role
listGETList all SOC roles
patchPATCHUpdate an existing SOC role

create

Parameters:

NameTypeRequiredDescription
displayNamestringYesHuman-readable name for the role
permissionsarrayNoList of Google SecOps permission strings to assign

Example:

{
"displayName": "Tier 1 Analyst",
"permissions": ["chronicle.events.list", "chronicle.cases.get"]
}

delete

Parameters:

NameTypeRequiredDescription
namestringYesResource name of the SOC role

Example:

{
"name": "projects/my-project/locations/us/instances/fca7f167-b9d1-43b1-9d03-0257d31dcb63/socRoles/tier1-analyst"
}

get

Parameters:

NameTypeRequiredDescription
namestringYesResource name of the SOC role

Example:

{
"name": "projects/my-project/locations/us/instances/fca7f167-b9d1-43b1-9d03-0257d31dcb63/socRoles/tier1-analyst"
}

list

Parameters:

NameTypeRequiredDescription
pageSizenumberNoMaximum number of results per page
pageTokenstringNoPage token for pagination

Example:

{
"pageSize": 50
}

patch

Parameters:

NameTypeRequiredDescription
namestringYesResource name of the SOC role to update
displayNamestringNoNew display name
permissionsarrayNoReplacement permission list
updateMaskstringNoComma-separated fields to update

Example:

{
"name": "projects/my-project/locations/us/instances/fca7f167-b9d1-43b1-9d03-0257d31dcb63/socRoles/tier1-analyst",
"permissions": ["chronicle.events.list", "chronicle.cases.get", "chronicle.alerts.list"],
"updateMask": "permissions"
}

contextProperties

Manage instance-level key-value context properties used to customise the Google SecOps workspace. Requires roles/chronicle.editor.

Operations

OperationMethodDescription
clearAllDELETEDelete all instance-level context properties at once
createPOSTCreate a new context property
deleteDELETEDelete a single context property
getGETGet a single context property
listGETList all context properties
patchPATCHUpdate a context property

clearAll

No parameters. Destructive — removes all properties in one call.

Example:

{}

create

Parameters:

NameTypeRequiredDescription
keystringYesProperty key (identifier)
valuestringYesProperty value

Example:

{
"key": "soc.tier1.maxAlerts",
"value": "100"
}

delete

Parameters:

NameTypeRequiredDescription
namestringYesResource name of the context property

Example:

{
"name": "projects/my-project/locations/us/instances/fca7f167-b9d1-43b1-9d03-0257d31dcb63/contextProperties/soc.tier1.maxAlerts"
}

get

Parameters:

NameTypeRequiredDescription
namestringYesResource name of the context property

Example:

{
"name": "projects/my-project/locations/us/instances/fca7f167-b9d1-43b1-9d03-0257d31dcb63/contextProperties/soc.tier1.maxAlerts"
}

list

Parameters:

NameTypeRequiredDescription
pageSizenumberNoMaximum number of results per page
pageTokenstringNoPage token for pagination

Example:

{
"pageSize": 100
}

patch

Parameters:

NameTypeRequiredDescription
namestringYesResource name of the property to update
valuestringNoNew value
updateMaskstringNoComma-separated fields to update

Example:

{
"name": "projects/my-project/locations/us/instances/fca7f167-b9d1-43b1-9d03-0257d31dcb63/contextProperties/soc.tier1.maxAlerts",
"value": "200",
"updateMask": "value"
}

dashboardCharts

Retrieve dashboard chart definitions. Requires roles/chronicle.viewer.

Operations

OperationMethodDescription
batchGetGETRetrieve multiple charts in one request
getGETGet a single chart by resource name

batchGet

Parameters:

NameTypeRequiredDescription
namesarrayYesList of chart resource names to retrieve

Example:

{
"names": [
"projects/my-project/locations/us/instances/fca7f167-b9d1-43b1-9d03-0257d31dcb63/dashboardCharts/chart-001",
"projects/my-project/locations/us/instances/fca7f167-b9d1-43b1-9d03-0257d31dcb63/dashboardCharts/chart-002"
]
}

get

Parameters:

NameTypeRequiredDescription
namestringYesResource name of the dashboard chart

Example:

{
"name": "projects/my-project/locations/us/instances/fca7f167-b9d1-43b1-9d03-0257d31dcb63/dashboardCharts/chart-001"
}

dashboardQueries

Execute and retrieve Google SecOps dashboard queries. Requires roles/chronicle.viewer for get; roles/chronicle.editor for execute.

Operations

OperationMethodDescription
executePOSTExecute a dashboard query
getGETGet a dashboard query configuration

execute

Parameters:

NameTypeRequiredDescription
namestringYesResource name of the dashboard query to execute
timeRangeobjectNoTime range object with startTime and endTime (RFC3339)

Example:

{
"name": "projects/my-project/locations/us/instances/fca7f167-b9d1-43b1-9d03-0257d31dcb63/dashboardQueries/query-001",
"timeRange": {
"startTime": "2026-07-01T00:00:00Z",
"endTime": "2026-07-08T00:00:00Z"
}
}

get

Parameters:

NameTypeRequiredDescription
namestringYesResource name of the dashboard query

Example:

{
"name": "projects/my-project/locations/us/instances/fca7f167-b9d1-43b1-9d03-0257d31dcb63/dashboardQueries/query-001"
}

dashboardScheduledReports

Manage scheduled dashboard report generation and email delivery. v1alpha only. Requires roles/chronicle.editor.

Operations

OperationMethodDescription
createPOSTCreate a new scheduled report
deleteDELETEDelete a scheduled report
duplicatePOSTCopy a scheduled report
fetchHistoryGETList execution history of a scheduled report
getGETGet a single scheduled report
listGETList all scheduled reports
patchPATCHUpdate a scheduled report
triggerPOSTRun a report immediately

create

Parameters:

NameTypeRequiredDescription
dashboardNamestringYesResource name of the dashboard to report on
schedulestringYesCron expression (e.g. 0 8 * * 1 = every Monday at 08:00 UTC)
recipientsarrayNoEmail addresses to deliver the report to

Example:

{
"dashboardName": "projects/my-project/locations/us/instances/fca7f167-b9d1-43b1-9d03-0257d31dcb63/nativeDashboards/weekly-overview",
"schedule": "0 8 * * 1",
"recipients": ["[email protected]", "[email protected]"]
}

delete

Parameters:

NameTypeRequiredDescription
namestringYesResource name of the scheduled report

duplicate

Parameters:

NameTypeRequiredDescription
namestringYesResource name of the scheduled report to copy

fetchHistory

Parameters:

NameTypeRequiredDescription
namestringYesResource name of the scheduled report
pageSizenumberNoMaximum number of history entries per page
pageTokenstringNoPage token for pagination

Example:

{
"name": "projects/my-project/locations/us/instances/fca7f167-b9d1-43b1-9d03-0257d31dcb63/dashboardScheduledReports/weekly-report",
"pageSize": 20
}

get

Parameters:

NameTypeRequiredDescription
namestringYesResource name of the scheduled report

list

Parameters:

NameTypeRequiredDescription
pageSizenumberNoMaximum number of results per page
pageTokenstringNoPage token for pagination

Note: This endpoint does not accept pageSize on some Google SecOps instance tiers and may return INVALID_ARGUMENT. If that occurs, call without pageSize.

patch

Parameters:

NameTypeRequiredDescription
namestringYesResource name of the report to update
schedulestringNoNew cron schedule
recipientsarrayNoNew recipient list
updateMaskstringNoComma-separated fields to update

trigger

Parameters:

NameTypeRequiredDescription
namestringYesResource name of the scheduled report to trigger immediately

Example:

{
"name": "projects/my-project/locations/us/instances/fca7f167-b9d1-43b1-9d03-0257d31dcb63/dashboardScheduledReports/weekly-report"
}

dashboards

Manage Google SecOps legacy dashboards and migration to native dashboards. v1alpha only. Requires roles/chronicle.editor.

Operations

OperationMethodDescription
batchMigratePOSTMigrate multiple legacy dashboards to native dashboards
copyPOSTCopy a legacy dashboard
createPOSTCreate a new legacy dashboard
deleteDELETEDelete a legacy dashboard
fetchMigratableGETList dashboards eligible for migration
fetchMigrationJobsGETList migration job statuses
fetchMigrationMetricsGETRetrieve migration progress metrics
getGETGet a legacy dashboard
listGETList all legacy dashboards

batchMigrate

Parameters:

NameTypeRequiredDescription
namesarrayYesList of legacy dashboard resource names to migrate

Example:

{
"names": [
"projects/my-project/locations/us/instances/fca7f167-b9d1-43b1-9d03-0257d31dcb63/dashboards/legacy-dash-001"
]
}

copy

Parameters:

NameTypeRequiredDescription
namestringYesResource name of the dashboard to copy

create

Parameters:

NameTypeRequiredDescription
displayNamestringYesDisplay name for the new dashboard

delete

Parameters:

NameTypeRequiredDescription
namestringYesResource name of the dashboard to delete

fetchMigratable

Parameters:

NameTypeRequiredDescription
pageSizenumberNoMaximum number of results per page
pageTokenstringNoPage token for pagination

fetchMigrationJobs

Parameters:

NameTypeRequiredDescription
pageSizenumberNoMaximum number of results per page
pageTokenstringNoPage token for pagination

fetchMigrationMetrics

No parameters.

get

Parameters:

NameTypeRequiredDescription
namestringYesResource name of the dashboard

list

Parameters:

NameTypeRequiredDescription
pageSizenumberNoMaximum number of results per page
pageTokenstringNoPage token for pagination

nativeDashboards

Manage Google SecOps native dashboards, including chart management, import/export, duplication, and IAM policies. Requires roles/chronicle.viewer for reads; roles/chronicle.editor for writes; roles/chronicle.admin for IAM policy operations.

Operations

OperationMethodDescription
addChartPOSTAdd a chart to a native dashboard
createPOSTCreate a new native dashboard
deleteDELETEDelete a native dashboard
duplicatePOSTCopy a native dashboard
duplicateChartPOSTDuplicate a chart within a dashboard
editChartPOSTEdit an existing chart
exportPOSTExport a dashboard definition
getGETGet a native dashboard
getIamPolicyGETRetrieve IAM policy for a dashboard (v1alpha)
importPOSTImport a dashboard from an exported definition
listGETList all native dashboards
patchPATCHUpdate a native dashboard
removeChartDELETERemove a chart from a dashboard
setIamPolicyPOSTSet IAM policy for a dashboard (v1alpha)

addChart

Parameters:

NameTypeRequiredDescription
namestringYesResource name of the native dashboard
chartobjectYesChart configuration object

Example:

{
"name": "projects/my-project/locations/us/instances/fca7f167-b9d1-43b1-9d03-0257d31dcb63/nativeDashboards/security-overview",
"chart": {
"title": "Alert Volume by Severity",
"chartType": "BAR"
}
}

create

Parameters:

NameTypeRequiredDescription
displayNamestringYesDisplay name for the new dashboard

Example:

{
"displayName": "SOC Weekly Summary"
}

delete

Parameters:

NameTypeRequiredDescription
namestringYesResource name of the dashboard to delete

duplicate

Parameters:

NameTypeRequiredDescription
namestringYesResource name of the dashboard to duplicate

duplicateChart

Parameters:

NameTypeRequiredDescription
namestringYesResource name of the native dashboard
chartIdstringYesID of the chart to duplicate

editChart

Parameters:

NameTypeRequiredDescription
namestringYesResource name of the native dashboard
chartIdstringYesID of the chart to edit
chartobjectYesUpdated chart configuration

export

Parameters:

NameTypeRequiredDescription
namestringYesResource name of the dashboard to export

get

Parameters:

NameTypeRequiredDescription
namestringYesResource name of the native dashboard

getIamPolicy

Parameters:

NameTypeRequiredDescription
resourcestringYesResource name of the native dashboard

import

Parameters:

NameTypeRequiredDescription
dashboardobjectYesDashboard definition object obtained from a prior export call

list

Parameters:

NameTypeRequiredDescription
pageSizenumberNoMaximum number of results per page
pageTokenstringNoPage token for pagination

patch

Parameters:

NameTypeRequiredDescription
namestringYesResource name of the dashboard to update
displayNamestringNoNew display name
updateMaskstringNoComma-separated fields to update

removeChart

Parameters:

NameTypeRequiredDescription
namestringYesResource name of the native dashboard
chartIdstringYesID of the chart to remove

setIamPolicy

Parameters:

NameTypeRequiredDescription
resourcestringYesResource name of the native dashboard
policyobjectYesIAM policy object with bindings and etag

dataTableOperationErrors

Retrieve error details for failed data table background operations. Requires roles/chronicle.viewer.

Operations

OperationMethodDescription
getGETGet error details for a failed data table operation

get

Parameters:

NameTypeRequiredDescription
namestringYesResource name of the operation error

Example:

{
"name": "projects/my-project/locations/us/instances/fca7f167-b9d1-43b1-9d03-0257d31dcb63/dataTableOperationErrors/op-err-001"
}

dataTables

Manage Google SecOps data tables used to store reference and enrichment data. Requires roles/chronicle.editor.

Operations

OperationMethodDescription
createPOSTCreate a new data table
deleteDELETEDelete a data table
getGETGet a data table
listGETList all data tables
patchPATCHUpdate a data table
uploadPOSTUpload data to a table from file content (v1alpha)

create

Parameters:

NameTypeRequiredDescription
displayNamestringYesDisplay name for the data table
headerobjectNoColumn schema definition

Example:

{
"displayName": "Known Bad IPs",
"header": {
"columns": [
{"name": "ip", "type": "STRING"},
{"name": "threat_type", "type": "STRING"},
{"name": "first_seen", "type": "TIMESTAMP"}
]
}
}

delete

Parameters:

NameTypeRequiredDescription
namestringYesResource name of the data table

get

Parameters:

NameTypeRequiredDescription
namestringYesResource name of the data table

list

Parameters:

NameTypeRequiredDescription
pageSizenumberNoMaximum number of results per page
pageTokenstringNoPage token for pagination

patch

Parameters:

NameTypeRequiredDescription
namestringYesResource name of the data table to update
displayNamestringNoNew display name
updateMaskstringNoComma-separated fields to update

upload

Parameters:

NameTypeRequiredDescription
namestringYesResource name of the data table
datastringNoCSV or JSON data content to upload

dataTableRows

Manage individual rows within Google SecOps data tables, including synchronous and asynchronous bulk operations. Requires roles/chronicle.editor.

Operations

OperationMethodDescription
bulkCreatePOSTSynchronously bulk-create rows
bulkCreateAsyncPOSTAsynchronously bulk-create rows
bulkDeletePOSTSynchronously bulk-delete rows (v1alpha)
bulkDeleteAsyncPOSTAsynchronously bulk-delete rows (v1alpha)
bulkGetGETRetrieve multiple rows in one request
bulkReplacePATCHSynchronously replace multiple rows
bulkReplaceAsyncPATCHAsynchronously replace multiple rows
bulkUpdatePATCHSynchronously update multiple rows
bulkUpdateAsyncPATCHAsynchronously update multiple rows
createPOSTCreate a single row
deleteDELETEDelete a single row
getGETGet a single row
listGETList rows in a data table
patchPATCHUpdate a single row
uploadPOSTUpload rows from file content (v1alpha)

bulkCreate

Parameters:

NameTypeRequiredDescription
parentstringYesResource name of the parent data table
rowsarrayYesList of row objects to create

Example:

{
"parent": "projects/my-project/locations/us/instances/fca7f167-b9d1-43b1-9d03-0257d31dcb63/dataTables/known-bad-ips",
"rows": [
{"values": {"ip": "10.0.0.1", "threat_type": "C2", "first_seen": "2026-07-01T00:00:00Z"}},
{"values": {"ip": "192.168.1.5", "threat_type": "scanner", "first_seen": "2026-07-02T00:00:00Z"}}
]
}

bulkGet

Parameters:

NameTypeRequiredDescription
parentstringYesResource name of the parent data table
namesarrayYesList of row resource names to retrieve

create

Parameters:

NameTypeRequiredDescription
parentstringYesResource name of the parent data table
valuesobjectYesColumn name-to-value mapping for the new row

delete

Parameters:

NameTypeRequiredDescription
namestringYesResource name of the row to delete

get

Parameters:

NameTypeRequiredDescription
namestringYesResource name of the row

list

Parameters:

NameTypeRequiredDescription
parentstringYesResource name of the parent data table
pageSizenumberNoMaximum number of results per page
pageTokenstringNoPage token for pagination

patch

Parameters:

NameTypeRequiredDescription
namestringYesResource name of the row to update
valuesobjectNoNew column values
updateMaskstringNoComma-separated fields to update

Async operations: bulkCreateAsync, bulkReplaceAsync, bulkUpdateAsync, bulkDeleteAsync return a long-running operation name. Use the operations.get operation to poll for completion.


bigQueryExport

Provision and manage BigQuery export for Google SecOps data. Requires roles/chronicle.admin.

Operations

OperationMethodDescription
provisionPOSTProvision BigQuery export for the instance
provideBigQueryAccessPOSTGrant BigQuery access to a service account (v1alpha)

provision

Parameters:

NameTypeRequiredDescription
bigQueryDatasetstringNoTarget BigQuery dataset resource name

Example:

{
"bigQueryDataset": "projects/my-bq-project/datasets/chronicle_export"
}

provideBigQueryAccess

Parameters:

NameTypeRequiredDescription
serviceAccountstringYesService account email to grant BigQuery access

Example:

{
"serviceAccount": "[email protected]"
}

dataExports

Manage Google SecOps data export jobs for exporting event and entity data. Requires roles/chronicle.admin for most operations. The list operation additionally requires the dataexport.jobs.list IAM permission, which may not be granted on all instance tiers.

Operations

OperationMethodDescription
cancelDELETECancel an in-progress export
createPOSTCreate a new data export job
fetchAvailableLogTypesGETList log types available for export (v1alpha)
fetchServiceAccountGETRetrieve the service account used for exports
getGETGet export job status
listGETList all export jobs
patchPATCHUpdate an export job (v1alpha)

cancel

Parameters:

NameTypeRequiredDescription
namestringYesResource name of the data export to cancel

create

Parameters:

NameTypeRequiredDescription
startTimestringYesExport start time (RFC3339)
endTimestringYesExport end time (RFC3339)
destinationobjectNoExport destination configuration (e.g. GCS bucket)

Example:

{
"startTime": "2026-07-01T00:00:00Z",
"endTime": "2026-07-08T00:00:00Z",
"destination": {
"gcsBucket": "gs://my-chronicle-exports"
}
}

fetchAvailableLogTypes

No parameters.

fetchServiceAccount

No parameters.

Example:

{}

get

Parameters:

NameTypeRequiredDescription
namestringYesResource name of the data export

list

Parameters:

NameTypeRequiredDescription
pageSizenumberNoMaximum number of results per page
pageTokenstringNoPage token for pagination

Permission note: dataExports.list requires the dataexport.jobs.list permission in addition to roles/chronicle.admin. If your service account returns PERMISSION_DENIED, verify that this specific permission is present in your IAM policy.

patch

Parameters:

NameTypeRequiredDescription
namestringYesResource name of the data export to update
updateMaskstringNoComma-separated fields to update

investigations

Manage Google SecOps investigations and their lifecycle. v1alpha only. Requires roles/chronicle.soarAdmin.

Operations

OperationMethodDescription
fetchAssociatedGETFetch items associated with an investigation
getGETGet an investigation
listGETList investigations
transitionReviewStatePOSTChange the review state of an investigation
triggerPOSTStart a new investigation

fetchAssociated

Parameters:

NameTypeRequiredDescription
namestringYesResource name of the investigation
pageSizenumberNoMaximum number of results per page
pageTokenstringNoPage token for pagination

get

Parameters:

NameTypeRequiredDescription
namestringYesResource name of the investigation

Example:

{
"name": "projects/my-project/locations/us/instances/fca7f167-b9d1-43b1-9d03-0257d31dcb63/investigations/inv-20260701-001"
}

list

Parameters:

NameTypeRequiredDescription
pageSizenumberNoMaximum number of results per page
pageTokenstringNoPage token for pagination
filterstringNoAIP-160 filter expression (e.g. state="OPEN")

Example:

{
"pageSize": 25,
"filter": "state=\"OPEN\""
}

transitionReviewState

Parameters:

NameTypeRequiredDescription
namestringYesResource name of the investigation
statestringYesTarget review state (e.g. REVIEWED, CLOSED)

trigger

Parameters:

NameTypeRequiredDescription
triggerSpecobjectYesSpecification describing what to investigate

investigationComments

Manage comments on Google SecOps investigations. v1alpha only. Requires roles/chronicle.soarAdmin.

Operations

OperationMethodDescription
createPOSTAdd a comment to an investigation
deleteDELETEDelete a comment
getGETGet a single comment
listGETList comments on an investigation
patchPATCHUpdate a comment

create

Parameters:

NameTypeRequiredDescription
parentstringYesResource name of the parent investigation
contentstringYesComment text

Example:

{
"parent": "projects/my-project/locations/us/instances/fca7f167-b9d1-43b1-9d03-0257d31dcb63/investigations/inv-20260701-001",
"content": "Confirmed false positive — closing after verification."
}

delete

Parameters:

NameTypeRequiredDescription
namestringYesResource name of the comment

get

Parameters:

NameTypeRequiredDescription
namestringYesResource name of the comment

list

Parameters:

NameTypeRequiredDescription
parentstringYesResource name of the parent investigation
pageSizenumberNoMaximum number of results per page
pageTokenstringNoPage token for pagination

patch

Parameters:

NameTypeRequiredDescription
namestringYesResource name of the comment to update
contentstringNoNew comment text
updateMaskstringNoComma-separated fields to update

investigationSteps

Read investigation graph step nodes within a Google SecOps investigation. v1alpha only. Read-only. Requires roles/chronicle.soarAdmin.

Operations

OperationMethodDescription
getGETGet a single investigation step
listGETList steps in an investigation

get

Parameters:

NameTypeRequiredDescription
namestringYesResource name of the investigation step

list

Parameters:

NameTypeRequiredDescription
parentstringYesResource name of the parent investigation
pageSizenumberNoMaximum number of results per page
pageTokenstringNoPage token for pagination

labsExperiments

Manage Google SecOps Labs AI experiments. v1alpha only. Requires roles/chronicle.editor.

Operations

OperationMethodDescription
executePOSTExecute a labs experiment
fetchAgentSessionGETRetrieve an active AI agent session
getGETGet a labs experiment
listGETList all labs experiments
patchPATCHUpdate a labs experiment
sendAgentMessagePOSTSend a message to the AI agent

execute

Parameters:

NameTypeRequiredDescription
namestringYesResource name of the labs experiment
inputobjectNoInput parameters for the experiment

Example:

{
"name": "projects/my-project/locations/us/instances/fca7f167-b9d1-43b1-9d03-0257d31dcb63/labsExperiments/threat-summary",
"input": {"alertId": "alert-20260708-001"}
}

fetchAgentSession

Parameters:

NameTypeRequiredDescription
namestringYesResource name of the labs experiment

get

Parameters:

NameTypeRequiredDescription
namestringYesResource name of the labs experiment

list

Parameters:

NameTypeRequiredDescription
pageSizenumberNoMaximum number of results per page
pageTokenstringNoPage token for pagination

patch

Parameters:

NameTypeRequiredDescription
namestringYesResource name of the experiment to update
updateMaskstringNoComma-separated fields to update

sendAgentMessage

Parameters:

NameTypeRequiredDescription
namestringYesResource name of the labs experiment
messagestringYesMessage text to send to the AI agent

labsExperimentExecutions

Track and manage executions of Google SecOps Labs experiments. v1alpha only. Requires roles/chronicle.viewer.

Operations

OperationMethodDescription
getGETGet status and result of an execution
listGETList all executions for an experiment
patchPATCHUpdate metadata on an execution

get

Parameters:

NameTypeRequiredDescription
namestringYesResource name of the execution

list

Parameters:

NameTypeRequiredDescription
parentstringYesResource name of the parent labs experiment
pageSizenumberNoMaximum number of results per page
pageTokenstringNoPage token for pagination

patch

Parameters:

NameTypeRequiredDescription
namestringYesResource name of the execution to update
updateMaskstringNoComma-separated fields to update

notebooks

Read Google SecOps Labs notebooks. v1alpha only. Read-only. Requires roles/chronicle.viewer.

Operations

OperationMethodDescription
getGETGet a notebook
listGETList all notebooks

get

Parameters:

NameTypeRequiredDescription
namestringYesResource name of the notebook

list

Parameters:

NameTypeRequiredDescription
pageSizenumberNoMaximum number of results per page
pageTokenstringNoPage token for pagination

conversations

Manage user-scoped AI conversation threads. v1alpha only. Requires roles/chronicle.editor. Conversations are scoped to the authenticated service account user.

Operations

OperationMethodDescription
createPOSTStart a new AI conversation
deleteDELETEDelete a conversation
getGETGet a conversation
listGETList conversations for the current user
patchPATCHUpdate a conversation (e.g. rename)

create

Parameters:

NameTypeRequiredDescription
titlestringNoOptional title for the conversation

delete

Parameters:

NameTypeRequiredDescription
namestringYesResource name of the conversation

get

Parameters:

NameTypeRequiredDescription
namestringYesResource name of the conversation

list

Parameters:

NameTypeRequiredDescription
pageSizenumberNoMaximum number of results per page
pageTokenstringNoPage token for pagination

patch

Parameters:

NameTypeRequiredDescription
namestringYesResource name of the conversation to update
titlestringNoNew title
updateMaskstringNoComma-separated fields to update

conversationMessages

Manage messages within user-scoped AI conversation threads. v1alpha only. Requires roles/chronicle.editor.

Operations

OperationMethodDescription
createPOSTSend a message
deleteDELETEDelete a message
getGETGet a message
listGETList messages in a conversation
patchPATCHUpdate a message

create

Parameters:

NameTypeRequiredDescription
parentstringYesResource name of the parent conversation
contentstringYesMessage text

Example:

{
"parent": "projects/my-project/locations/us/instances/fca7f167-b9d1-43b1-9d03-0257d31dcb63/users/-/conversations/conv-001",
"content": "Summarise the top 5 alerts from the past 24 hours."
}

delete / get / patch

Same pattern as investigationComments — provide name for single-item operations, parent + optional pagination for list.


operations

Manage Google SecOps long-running operations. Requires roles/chronicle.viewer for reads; roles/chronicle.editor for cancel/delete.

Operations

OperationMethodDescription
cancelDELETECancel a long-running operation
deleteDELETEDelete a completed operation record
getGETGet operation status and result
listGETList long-running operations
streamSearchPOSTStream search results from an operation (v1alpha)

cancel

Parameters:

NameTypeRequiredDescription
namestringYesResource name of the operation to cancel

Example:

{
"name": "projects/my-project/locations/us/instances/fca7f167-b9d1-43b1-9d03-0257d31dcb63/operations/op-20260708-001"
}

delete

Parameters:

NameTypeRequiredDescription
namestringYesResource name of the completed operation

get

Parameters:

NameTypeRequiredDescription
namestringYesResource name of the operation

list

Parameters:

NameTypeRequiredDescription
pageSizenumberNoMaximum number of results per page
pageTokenstringNoPage token for pagination
filterstringNoFilter expression (e.g. done=true)

Example:

{
"pageSize": 20,
"filter": "done=false"
}

streamSearch

Parameters:

NameTypeRequiredDescription
namestringYesResource name of the operation to stream results from

moduleSettings

Read and configure Google SecOps instance module settings. Requires roles/chronicle.admin.

Operations

OperationMethodDescription
getGETGet module settings for the instance
listPropertiesGETList all module setting properties
batchUpdatePropertiesPOSTUpdate multiple properties in one request
testSettingsPOSTTest settings without applying them
rebrandingSettingsPOSTUpdate instance rebranding settings
patchPropertyPATCHUpdate a single module property

get

Parameters:

NameTypeRequiredDescription
namestringNoResource name of the module settings (defaults to instance settings)

Example:

{}

listProperties

Parameters:

NameTypeRequiredDescription
pageSizenumberNoMaximum number of results per page
pageTokenstringNoPage token for pagination

batchUpdateProperties

Parameters:

NameTypeRequiredDescription
requestsarrayYesList of property update request objects

testSettings

Parameters:

NameTypeRequiredDescription
settingsobjectYesSettings configuration to validate

rebrandingSettings

Parameters:

NameTypeRequiredDescription
logoUrlstringNoURL of the custom logo
primaryColorstringNoPrimary brand colour in hex (e.g. #1a73e8)

Example:

{
"logoUrl": "https://cdn.example.com/logo.png",
"primaryColor": "#1a73e8"
}

patchProperty

Parameters:

NameTypeRequiredDescription
namestringYesResource name of the property to update
valuestringNoNew value
updateMaskstringNoComma-separated fields to update

savedColumnSets

Manage instance-scoped saved column set configurations. Requires roles/chronicle.editor.

Known limitation: The list operation does not accept pageSize on some Google SecOps instance tiers and returns INVALID_ARGUMENT. Call without pageSize if this occurs.

Operations

OperationMethodDescription
createPOSTCreate a new saved column set
deleteDELETEDelete a saved column set
getGETGet a saved column set
listGETList all saved column sets
patchPATCHUpdate a saved column set

create

Parameters:

NameTypeRequiredDescription
displayNamestringYesDisplay name for the column set
columnsarrayNoList of column definition objects

delete / get

Provide name (resource name of the column set).

list

Parameters:

NameTypeRequiredDescription
pageTokenstringNoPage token for pagination

patch

Parameters:

NameTypeRequiredDescription
namestringYesResource name of the column set to update
displayNamestringNoNew display name
updateMaskstringNoComma-separated fields to update

userSavedColumnSets

Manage user-scoped saved column sets. Requires roles/chronicle.editor. Scoped to the authenticated service account user (users/-).

Same operations as savedColumnSets (create, delete, get, list, patch) with identical parameter shapes. The resource path is users/{user}/savedColumnSets instead of savedColumnSets.


announcements

Manage system announcements displayed to Google SecOps users. Requires roles/chronicle.admin.

Operations

OperationMethodDescription
createPOSTCreate a new announcement
deleteDELETEDelete an announcement
getGETGet a single announcement
listGETList all announcements
patchPATCHUpdate an announcement

create

Parameters:

NameTypeRequiredDescription
titlestringYesAnnouncement title
contentstringYesAnnouncement body text

Example:

{
"title": "Scheduled Maintenance — 2026-07-15 02:00 UTC",
"content": "Google SecOps will be unavailable for approximately 30 minutes during the maintenance window."
}

list

Parameters:

NameTypeRequiredDescription
pageSizenumberNoMaximum number of results per page
pageTokenstringNoPage token for pagination

patch

Parameters:

NameTypeRequiredDescription
namestringYesResource name of the announcement to update
titlestringNoNew title
contentstringNoNew body text
updateMaskstringNoComma-separated fields to update

systemNotifications

Manage Google SecOps system notifications. Requires roles/chronicle.viewer for list; roles/chronicle.editor for count and markAsRead.

Operations

OperationMethodDescription
countPOSTCount unread system notifications
listGETList system notifications
markAsReadPOSTMark one or more notifications as read

count

No parameters.

list

Parameters:

NameTypeRequiredDescription
pageSizenumberNoMaximum number of results per page
pageTokenstringNoPage token for pagination

markAsRead

Parameters:

NameTypeRequiredDescription
namesarrayYesList of notification resource names to mark as read

Example:

{
"names": [
"projects/my-project/locations/us/instances/fca7f167-b9d1-43b1-9d03-0257d31dcb63/systemNotifications/notif-001"
]
}

views

Manage Google SecOps view configurations. Requires roles/chronicle.viewer for reads; roles/chronicle.editor for saveOverviewTemplate.

Operations

OperationMethodDescription
fetchPredefinedGETRetrieve predefined system views
getGETGet a view by resource name
listGETList all views
saveOverviewTemplatePOSTSave an overview template as a view

fetchPredefined

No parameters.

Note: This endpoint requires a mandatory scope field on some instance configurations. If you receive INVALID_ARGUMENT: The scope field is required, provide the scope as a query parameter in an extended workflow.

get

Parameters:

NameTypeRequiredDescription
namestringYesResource name of the view

list

Parameters:

NameTypeRequiredDescription
pageSizenumberNoMaximum number of results per page
pageTokenstringNoPage token for pagination

saveOverviewTemplate

Parameters:

NameTypeRequiredDescription
templateobjectYesOverview template definition object

features

Manage Google SecOps feature flags. v1alpha only. Requires roles/chronicle.admin.

Operations

OperationMethodDescription
disableDELETEDisable a feature flag
getGETGet a feature flag
listGETList all feature flags
patchPATCHEnable or configure a feature flag

disable

Parameters:

NameTypeRequiredDescription
namestringYesResource name of the feature to disable

get / list

Standard name / pagination parameters.

patch

Parameters:

NameTypeRequiredDescription
namestringYesResource name of the feature
enabledbooleanNoWhether the feature should be enabled
updateMaskstringNoComma-separated fields to update

federationGroups

Manage Google SecOps federation groups for multi-instance federation. v1alpha only. Requires roles/chronicle.admin.

Operations

OperationMethodDescription
createPOSTCreate a federation group
deleteDELETEDelete a federation group
getGETGet a federation group
listGETList all federation groups
patchPATCHUpdate a federation group

create

Parameters:

NameTypeRequiredDescription
displayNamestringYesDisplay name for the federation group

Standard delete/get/list/patch parameter shapes apply.


metricDefinitions

Manage custom metric definitions. v1alpha only. Requires roles/chronicle.editor.

Operations

OperationMethodDescription
createPOSTCreate a metric definition
getGETGet a metric definition
listGETList all metric definitions
patchPATCHUpdate a metric definition

create

Parameters:

NameTypeRequiredDescription
displayNamestringYesDisplay name for the metric
querystringYesUDM query string defining the metric

Example:

{
"displayName": "High Severity Alerts per Hour",
"query": "metadata.event_type = \"ALERT\" AND security_result.severity = \"HIGH\""
}

sharedPreferenceSets

Manage shared preference sets. v1alpha only. Requires roles/chronicle.editor.

Operations

OperationMethodDescription
createPOSTCreate a shared preference set
deleteDELETEDelete a shared preference set
getGETGet a shared preference set
listGETList all shared preference sets
patchPATCHUpdate a shared preference set

Standard parameter shapes — displayName required for create.


tenants

Manage tenant configurations for multi-tenant Google SecOps deployments. v1alpha only. Requires roles/chronicle.admin.

Operations

OperationMethodDescription
createPOSTCreate a tenant
getGETGet a tenant
listGETList all tenants
patchPATCHUpdate a tenant

create

Parameters:

NameTypeRequiredDescription
displayNamestringYesDisplay name for the tenant

errorNotificationConfigs

Manage error notification delivery configurations. v1alpha only. Requires roles/chronicle.admin.

Operations

OperationMethodDescription
createPOSTCreate an error notification config
deleteDELETEDelete a config
getGETGet a config
listGETList all configs
patchPATCHUpdate a config

create

Parameters:

NameTypeRequiredDescription
notificationTargetstringYesDelivery target — email address or Pub/Sub topic

Example:

{
"notificationTarget": "[email protected]"
}

userSettings

Manage per-user Google SecOps settings. v1alpha only. Requires roles/chronicle.editor. These operations act on the authenticated service account's own user profile.

Operations

OperationMethodDescription
clearConversationHistoryPOSTClear the AI conversation history for the current user
getPreferenceSetGETRetrieve the preference set for the current user
updatePreferenceSetPATCHUpdate the preference set for the current user

clearConversationHistory

No parameters.

getPreferenceSet

No parameters.

updatePreferenceSet

Parameters:

NameTypeRequiredDescription
preferencesobjectYesPreference key-value pairs to update
updateMaskstringNoComma-separated fields to update

userModuleSettings

Manage per-user module settings overrides. v1alpha only. Requires roles/chronicle.editor.

Operations

OperationMethodDescription
patchPATCHUpdate per-user module settings

patch

Parameters:

NameTypeRequiredDescription
namestringYesResource name of the user module settings
updateMaskstringNoComma-separated fields to update

managedDomainSettings

Manage domain settings for federated Google SecOps deployments. v1alpha only. Requires roles/chronicle.admin.

Operations

OperationMethodDescription
addManagedDomainPOSTAdd a managed domain to the instance
removeManagedDomainDELETERemove a managed domain from the instance

addManagedDomain

Parameters:

NameTypeRequiredDescription
domainstringYesDomain name to add (e.g. example.com)

Example:

{
"domain": "example.com"
}

removeManagedDomain

Parameters:

NameTypeRequiredDescription
domainstringYesDomain name to remove

Best Practices

  1. Use updateMask on every PATCH: Always supply updateMask to limit which fields are modified. Omitting it may cause the server to reset unspecified fields to their defaults.

  2. Paginate large collections: Use pageSize and pageToken for all list operations. Do not assume a single call returns all results. The server-defined default page size is often small (10–50 items).

  3. Poll long-running operations: dataTables.bulkCreateAsync, bulkReplaceAsync, bulkUpdateAsync, bulkDeleteAsync, and data export jobs all return a long-running operation name. Call operations.get in a loop (with back-off) until done=true.

  4. Understand pageSize limitations: Some endpoints (savedColumnSets.list, dashboardScheduledReports.list) reject the pageSize parameter on certain Google SecOps instance tiers and return INVALID_ARGUMENT. Call those endpoints without pageSize if you encounter this error.

  5. Grant minimum required permissions: Use roles/chronicle.viewer for read-only workflows, roles/chronicle.editor for write workflows, and roles/chronicle.admin only for access control, tenant, and system settings operations. Avoid granting admin universally.

  6. Rotate service account keys regularly: Service account JSON keys do not expire automatically. Implement a key rotation schedule (e.g. every 90 days) and update the NINA credential accordingly.

  7. Do not hard-code resource names: Resource names contain the project, location, instance UUID, and resource ID. Build them dynamically from the credential fields rather than hardcoding, so the same workflow works across environments (dev, staging, prod).

  8. Handle rate limits with retry logic: The Google SecOps API enforces per-project quota. The connector retries HTTP 429 responses up to 3 times with exponential back-off (1 s → 2 s → 4 s). If you sustain high call volumes, implement additional workflow-level throttling.

  9. Use roles/chronicle.soarAdmin for investigations: The investigations, investigationComments, and investigationSteps resources require the SOAR Admin role. A viewer or editor role alone will return PERMISSION_DENIED for these resources.

  10. Scope conversations and userSettings correctly: These resources operate on the service account's own user identity (users/-). They are not suitable for managing other users' data.


Troubleshooting

ErrorCauseSolution
PERMISSION_DENIED on any operationService account lacks the required IAM roleGrant the appropriate Google SecOps IAM role (viewer, editor, admin, or soarAdmin) at the GCP project level
PERMISSION_DENIED on dataExports.listSA has roles/chronicle.admin but is missing the dataexport.jobs.list permissionVerify the specific IAM permission is present; some instance tiers require explicit binding
INVALID_ARGUMENT: Request contains an invalid argument on savedColumnSets.listEndpoint does not accept pageSize on this instance tierRemove the pageSize parameter and paginate using only pageToken
INVALID_ARGUMENT: The scope field is required on views.fetchPredefinedThe API requires a scope field that is not available genericallyPass the required scope value in your workflow parameters
NOT_FOUND on any resourceWrong project, location, instance UUID, or resource IDDouble-check all five credential fields and the full resource name path
404 NOT_FOUND on every callWrong region credential valueThe region prefix in the credential must match the region of your Google SecOps instance exactly
UNAUTHENTICATED / token errorInvalid or expired service account JSONVerify the JSON key is correct and not revoked; regenerate if necessary
INVALID_ARGUMENT: error in getting Data export on fetchAvailableLogTypesv1alpha endpoint not supported on this instance tierThis operation is not available on all Google SecOps tiers; skip or handle gracefully
429 Too Many RequestsAPI quota exceededImplement workflow-level throttling; the connector already retries 3 times with back-off
Empty list responseNo resources exist yet, or filter is too restrictiveVerify the resource type has been populated; create a resource and retry
Long-running operation never completesAsync bulk operation timed out or failedCall operations.get to check status; call dataTableOperationErrors.get for row-level error details
FAILED_PRECONDITION on contextProperties.clearAllConcurrent modification or precondition not metRetry after a short delay; avoid concurrent clearAll calls

Support

For issues with this integration, provide the following when contacting support:

  • The resource and operation you were calling (e.g. dataTables.bulkCreate)
  • The full error message and status code returned
  • The Google SecOps region and instance UUID (not the service account key)
  • Whether the issue is reproducible with a smaller payload or simpler parameters

For Google SecOps API documentation, visit the Google SecOps API reference.


Updated: 2026-07-08