curl -X POST 'https://api.hydradb.com/connectors/{id}/resources' \
-H "Authorization: Bearer $HYDRA_DB_API_KEY" \
-H "API-Version: 2" \
-H "Content-Type: application/json" \
-d '{
"resource_id": "{resource_id}",
"resource_type": "channel",
"display_name": "general",
"sub_tenant_id_override": "all-hands"
}'
{
"connector_id": "{connector_id}",
"resource_id": "{resource_id}",
"resource_type": "channel",
"display_name": "general",
"status": "active",
"provider_cursor": "",
"tenant_id_override": "",
"sub_tenant_id_override": "all-hands",
"provider_metadata": null,
"filters": null
}
Add Connector Resource
Add a single resource to a connector.
curl -X POST 'https://api.hydradb.com/connectors/{id}/resources' \
-H "Authorization: Bearer $HYDRA_DB_API_KEY" \
-H "API-Version: 2" \
-H "Content-Type: application/json" \
-d '{
"resource_id": "{resource_id}",
"resource_type": "channel",
"display_name": "general",
"sub_tenant_id_override": "all-hands"
}'
{
"connector_id": "{connector_id}",
"resource_id": "{resource_id}",
"resource_type": "channel",
"display_name": "general",
"status": "active",
"provider_cursor": "",
"tenant_id_override": "",
"sub_tenant_id_override": "all-hands",
"provider_metadata": null,
"filters": null
}
metadata / lookback_days.
curl -X POST 'https://api.hydradb.com/connectors/{id}/resources' \
-H "Authorization: Bearer $HYDRA_DB_API_KEY" \
-H "API-Version: 2" \
-H "Content-Type: application/json" \
-d '{
"resource_id": "{resource_id}",
"resource_type": "channel",
"display_name": "general",
"sub_tenant_id_override": "all-hands"
}'
Path parameters
| Name | Description |
|---|---|
id | Connector UUID returned by POST /connectors. |
Request body
| Name | Description |
|---|---|
Resource identifier from GET /connectors/:id/discover. | |
Resource type from GET /connectors/:id/discover. | |
| Human-readable name for this resource. | |
| Routes synced objects from this resource into a specific sub-tenant partition. |
{
"connector_id": "{connector_id}",
"resource_id": "{resource_id}",
"resource_type": "channel",
"display_name": "general",
"status": "active",
"provider_cursor": "",
"tenant_id_override": "",
"sub_tenant_id_override": "all-hands",
"provider_metadata": null,
"filters": null
}
Related Resources
- List Connector Resources - view all resources and sync state
- Delete Connector Resource - remove a resource
- Configure Connector - add multiple resources with metadata and lookback settings
Authorizations
API key sent as a Bearer token: "Bearer prefix.secret"
Path Parameters
Connector ID
"HydraDoc1234"
Body
Resource configuration
Resource identifier from the Discover endpoint.
"C0123456789"
ACL restricts every object synced from this resource to the listed principals (see resourceMapping.ACL). Omitted means unrestricted.
Key-value pairs merged into document metadata on every synced object from this resource. Capped at 1 KiB, measured on the compact JSON encoding of the whole map in UTF-8 bytes — keys, quotes, commas and braces count toward the budget. The cap is applied when synced objects are ingested, not to this request.
Show child attributes
Show child attributes
{ "author": "ada", "doc_version": 3 }
CustomInstructions optionally steers how documents synced from this resource are ingested and indexed. When set it replaces the connector-level custom_instructions for this resource; empty inherits the connector's value. Max 4000 characters.
Human-readable name for this resource.
"general"
Provider-specific filters applied during sync (e.g. {"lookback_days": 30}).
Show child attributes
Show child attributes
{ "channel": "general" }
Key-value pairs merged into tenant metadata on every synced object from this resource. Capped at 16 KiB, measured on the compact JSON encoding of the whole map in UTF-8 bytes — keys, quotes, commas and braces count toward the budget. The cap is applied when synced objects are ingested, not to this request.
Show child attributes
Show child attributes
{ "department": "finance", "priority": 7 }
Additional provider-supplied metadata for this resource.
Show child attributes
Show child attributes
{ "workspace_id": "T12345ACME" }
Type of resource within the provider (e.g. channel, repo, linear_team).
"channel"
deprecated: use collection_override
DatabaseOverride/CollectionOverride are the canonical v2 names; TenantIDOverride/SubTenantIDOverride are their deprecated aliases.
Response
Created
ACL is the customer-declared access-control list stamped onto every object synced from this resource (PRO-1684; see internal/domain/acl). Stored in caller-supplied form and normalized at transform time. nil means no ACL, documents stay unrestricted. Provider-derived ACLs (Phase 2) take precedence over this when the provider supports them.
ACLFingerprint is the stable identity of the ACL last APPLIED to this resource's already-indexed documents (PRO-1684). The sync compares the freshly-resolved provider ACL against it: equal means nothing to do, different means fan the new ACL out to existing documents. Empty means nothing has been applied yet (first capture-enabled sync).
AdditionalMetadata is merged into the additional_metadata (document metadata) layer of every object synced from this resource. User-supplied keys are shallow-merged as the base; provider-generated fields are applied on top and always win on conflict.
Show child attributes
Show child attributes
{ "author": "ada", "doc_version": 3 }
BackfillChunkIntervalSeconds is the pacing interval persisted at configure time so the scheduler can thread it into each chunk's workflow input.
86400
BackfillNextChunkAt is the RFC3339 time the next chunk becomes due. The backfill workflow processes one chunk then sets this to now+interval and exits; the connector scheduler starts the next chunk once it passes.
BackfillOldest is an RFC3339 timestamp marking the oldest boundary remaining for async historical backfill. Empty means backfill is complete or not needed.
"2026-06-01T00:00:00Z"
BackfillStatus gates the sparse ResourcesByBackfillNextChunkAt GSI: it is set to BackfillStatusActive while a historical backfill is in progress and removed when it completes, so only actively-backfilling resources appear in the scheduler's due query. Pacing between chunks is driven by that scheduler (see BackfillNextChunkAt), not by an in-workflow sleep.
Routes this resource's synced objects into a specific collection, overriding the connector's. Canonical name; mirrors the deprecated sub_tenant_id_override alias.
Connector this resource belongs to.
"conn_abc123"
CustomInstructions is optional free-text ingestion guidance scoped to this resource. When set it replaces the connector-level custom_instructions for documents synced from this resource; empty means the resource inherits the connector's value. Max 4000 characters; changes apply from the next sync cycle.
DatabaseOverride/CollectionOverride are the canonical v2 names for the deprecated tenant_id_override/sub_tenant_id_override wire fields. Empty means the resource inherits the connector's database/collection, exactly as the deprecated fields do. Not persisted (dynamodbav:"-"): mirrored from the tenant_id_override/sub_tenant_id_override values at construction time.
Human-readable name for this resource.
"general"
Provider-specific filters applied during sync (e.g. {"lookback_days": 30}).
Show child attributes
Show child attributes
{ "channel": "general" }
Metadata is merged into the tenant metadata layer of every object synced from this resource. User-supplied keys are shallow-merged as the base; system defaults (connector_id, provider) are applied on top so they always win on conflict — user keys extend the map but cannot override system-set fields.
Show child attributes
Show child attributes
{ "department": "finance", "priority": 7 }
Bookmark of the last synced position. Non-empty value confirms the first sync has run.
"1699999999.000100"
Additional provider-supplied metadata for this resource.
Show child attributes
Show child attributes
{ "workspace_id": "T12345ACME" }
Resource identifier from the Discover endpoint.
"C0123456789"
Type of resource within the provider (e.g. channel, repo, linear_team).
"channel"
Current sync state of this resource (e.g. active, paused).
"completed"
Overrides the connector-level collection for objects synced from this resource.
SyncBlocked marks a resource the provider will go on refusing — a table that was dropped, a channel this credential was never invited to.
Deliberately not a Status value. Status gates ListConnectorResources, which is what GET /connectors/{id}/status reads, so expressing this as a status would hide the resource from the one endpoint that explains why it stopped. The resource stays active and visible; this only takes it out of what gets synced.
true
SyncBlockedAt is when the resource was stopped (RFC3339).
SyncBlockedReason is the provider's own explanation, carried forward from the health that triggered the block so it survives the next sync overwriting that health.
Overrides the connector-level database for objects synced from this resource. Deprecated.
Was this page helpful?
