Skip to main content

Connectors

A connector is a dataset resource that pulls raw events from an external source into a Space and lands them as a connectors.<name> dataset. Its resource id is prefixed CON_.

A connector is the entry point of every ingest pipeline. It reads from one source (an S3 bucket, a polled API, a streaming broker, or an HTTP push endpoint) and writes the raw events it collects, without parsing them. An ingest table reads the connector's connectors.<name> dataset and shapes those raw events into typed columns. The connector's type fixes which source it reads and which config shape it takes. API-polling and streaming connectors run as Lambda functions built from the connector catalog and authenticate through credentials. An integration bundles a connector with the parser, mapper, and detections that process its output.

Variants​

A connector comes in four variants, fixed at creation and determined by type. Each pairs with a matching config shape.

Config: ObjectStorageConnector​

Scans an S3 bucket for new objects and ingests their contents.

FieldTypeRequiredDescription
typeenumRequiredLiteral ObjectStorageConnector.
bucketstringRequiredS3 bucket name. Must be a valid bucket name.
prefixstringRequiredKey prefix within the bucket to scan.
regionstringOptionalAWS region. Default not-used.
objectStore.auth.roleArnstringOptionalIAM role ARN the data plane assumes to read the bucket. Must be a valid role ARN.

Config: ApiPollingConnector​

Runs a catalog connector as a Lambda function on a fixed interval.

FieldTypeRequiredDescription
typeenumRequiredLiteral ApiPollingConnector.
connectorKindstringRequiredCatalog connector kind, such as google-workspace, or custom for a customer ECR image.
intervalMinutesintegerRequiredMinutes between polls.
settingsobjectRequiredSource-specific settings, validated against the catalog kind's settingsSchema.
credentialIdsobjectOptionalMap of connector credential slot id to credential resource id.
ecrImageUrlstringOptionalECR image URL for the Lambda container. Required when connectorKind is custom. Rejected for built-in kinds, which resolve their image at invoke time.

Config: StreamingConnector​

Runs a catalog connector as a Lambda function that consumes a stream continuously.

FieldTypeRequiredDescription
typeenumRequiredLiteral StreamingConnector.
connectorKindstringRequiredCatalog connector kind, or custom for a customer ECR image.
settingsobjectRequiredSource-specific settings, validated against the catalog kind's settingsSchema.
credentialIdsobjectOptionalMap of connector credential slot id to credential resource id.
ecrImageUrlstringOptionalECR image URL for the Lambda container. Required when connectorKind is custom. Rejected for built-in kinds.

Config: HttpSourceConnector​

Hosts an HTTP push endpoint that the source sends events to. Perpetual generates the endpoint URL and its auth material at create time.

FieldTypeRequiredDescription
typeenumRequiredLiteral HttpSourceConnector.
authModeenumRequiredHow the source authenticates to the endpoint. One of bearer (a generated bearer token), presigned (a generated URL token), hmac (an HMAC signature keyed by a credential).
credentialIdstringOptionalThe HMAC credential resource id. Required when authMode is hmac. Rejected for bearer and presigned.

For bearer and presigned connectors, the create response returns a one-time generatedSecret or generatedIngestUrl. The stored config never exposes the token hashes.

Run status​

Returned in runStatus for ApiPollingConnector and StreamingConnector when requested. Holds a lastRun and an activeRun, each nullable. Streaming connectors also carry currentLag and lagUnit.

FieldTypeDescription
idintegerRun identifier.
connectorResourceIdstringThe connector the run belongs to.
startedAttimestampWhen the run started.
finishedAttimestampWhen the run finished. Null while running.
statusenumrunning, succeeded, failed, or timed_out.
rowsEmittedintegerRows the run wrote. Null when unreported.
bytesEmittedintegerBytes the run wrote. Null when unreported.
errorstringFailure message. Null on success.
lastHeartbeatAttimestampLast heartbeat the run reported. Null when unreported.
lagnumberHow far the run is behind the source. Null when unreported.
lagUnitenumUnit of lag: milliseconds or messages. Null when unreported.
messagesConsumedintegerMessages the streaming run consumed. Null when unreported.

Inputs​

FieldTypeRequiredDescription
namestringRequiredDataset name in connectors.<name> or connectors.<namespace>.<name> format. The connectors. prefix is required.
typeenumRequiredThe connector type. One of ObjectStorageConnector, ApiPollingConnector, StreamingConnector, HttpSourceConnector. Fixes the shape of config.
configobjectRequiredThe source configuration for this connector's type. See the config tables under Variants.
deploybooleanRequiredWhether the connector ingests. true runs the source and writes the dataset. false leaves it as saved content.

Outputs​

FieldTypeDescription
deploymentStatusenumIngestion state: UNDEPLOYED, DEPLOY_PENDING, DEPLOY_IN_PROGRESS, DEPLOYED, UPDATE_PENDING, UPDATE_IN_PROGRESS, REFRESH_IN_PROGRESS, FAILED, ARCHIVED, CLEANUP_PENDING, CLEANUP_IN_PROGRESS.
runStatusobjectLast and active run summary for ApiPollingConnector and StreamingConnector. Returned only when the request asks for it. Absent for object-storage and HTTP-source connectors. See the run status table above.
readOnlybooleantrue when the connector cannot be edited in place, such as one owned by an integration.
isSystemCreatedbooleantrue when the platform created the connector rather than a user.

Plus the common resource fields.