integrations

Create Integration

post/parents/{parent_id}/integrations

Request

  • Base URL
    https://api.verdun.ai (the document declares no server; this is the origin it was published from)
  • URL
    https://api.verdun.ai/parents/{parent_id}/integrations
  • Auth
    HTTP bearer

Path parameters

parent_idstring required

Request body

provider'verkada' | 'turing' | 'avertx' required
labelstring required

Operator-facing name for this connection. Unique per client and provider (compared trimmed and case-insensitively).

api_keystring password required

Provider credential: a Verkada API key, or a Turing Vision third-party access token. WRITE-ONLY: stored in Secrets Manager and never returned by any endpoint, log line, or activity-log entry. Mint a dedicated, view-only credential for Verdun rather than reusing an administrative one.

org_idstring nullable

Provider organization id. NOT a secret — stored in the clear for display, and also inside the credential secret. Optional at this layer, and NOT required by every provider: Verkada scopes every stream URL by org and rejects a connection without one, while a Turing access token is already org-scoped and takes no org parameter on any endpoint.

usernamestring nullable

AvertX only, and required for it: the AvertX Connect sign-in email of the Verdun user the customer added to their account (Manage Users). With provider=avertx, api_key is that user's PASSWORD and org_id is the account's company code (the cm= value in connect.avertx.com URLs, e.g. Z6WQ7G). Not a secret; stored inside the credential secret. Ignored by Verkada and Turing.

command_short_namestring nullable

The vendor console's organization short name (the subdomain in https://<short-name>.command.verkada.com/...). Owner-entered and never fetched from the provider. Lowercase letters, digits and hyphens only. Send null or an empty string to clear it.

site_idsstring[]

Sites to assign this connection to on creation, in the same transaction. Every site must be a live site of this client and none may already use a connection of this provider. Duplicates are ignored.

Example request

{
  "label": "Northgate Command",
  "api_key": "<API_KEY>",
  "org_id": "ceb8ff18-0000-0000-0000-000000000000",
  "username": "support@verdun.ai",
  "command_short_name": "northgate-security",
  "site_ids": [
    "3fa85f64-5717-4562-b3fc-2c963f66afa6"
  ]
}

Response

Successful Response

idstring uuid required

The integration record ID.

parent_idstring uuid required

The client this connection belongs to. The credential is client-level; WHICH SITES it serves is site_ids.

provider'verkada' | 'turing' | 'avertx' required
labelstring required

Operator-facing name for this connection.

external_org_idstring nullable

Provider organization id (non-secret), for display.

command_short_namestring nullable

The vendor console's organization short name (the subdomain in https://<short-name>.command.verkada.com/...). Owner-entered, never fetched from the provider, and used only to build an operator's deep link. A Verkada concept: providers whose console has no such deep link leave it null.

status'active' | 'error' required
last_verified_atstring date-time nullable

When the connection last tested successfully.

last_errorstring nullable

Most recent connection-test failure, sanitized and truncated. Never contains a credential.

site_idsstring[]

The live sites this connection is assigned to, ordered by id. Empty means UNASSIGNED: the connection is listed and manageable but no site uses it yet. Absent from payloads of older servers (read as empty).

created_atstring date-time required

When the connection was created.

updated_atstring date-time nullable

When the connection was last modified.

Example response

{
  "label": "Northgate Command",
  "external_org_id": "ceb8ff18-0000-0000-0000-000000000000",
  "command_short_name": "northgate-security",
  "last_error": "The provider rejected the supplied API key."
}

Changes

No recorded changes to this operation across all 2 revisions of this API.