Channels

Channel registration and management. Channels give producers their own ingestion endpoint, optionally with enrichment bindings and a Channel_Schema.

Quick Reference

MethodPathSummary
POST /api/v1/config/channels Register a channel
GET /api/v1/config/channels?documentType={documentType} List channels
PUT /api/v1/config/channels/{channelId} Update channel configuration
DELETE /api/v1/config/channels/{channelId} Delete a channel
POST /api/v1/config/channels/{channelId}/activate Activate a channel
POST /api/v1/config/channels/{channelId}/deactivate Deactivate a channel
PUT /api/v1/config/channels/{channelId}/enrichment Set enrichment bindings
GET /api/v1/config/channels/{channelId}/enrichment Get enrichment bindings
DELETE /api/v1/config/channels/{channelId}/enrichment Remove enrichment bindings
POST

/api/v1/config/channels

Register a new channel for a Document_Type. Channels provide per-producer ingestion endpoints.

Request Body

FieldTypeRequiredDescription
channelIdstringYesUnique channel identifier
documentTypestringYesDocument_Type this channel belongs to
channelSchemastringNoOptional schema reference for channel-specific validation

Response

201 Created 400 Bad Request 404 Document_Type not found
{
  "channelId": "garage-sensor",
  "documentType": "temperature-readings",
  "status": "active"
}
GET

/api/v1/config/channels?documentType={documentType}

List all channels, optionally filtered by Document_Type.

Response

200 OK
[
  { ...channel object },
  { ...channel object }
]
PUT

/api/v1/config/channels/{channelId}

Update the configuration of an existing channel.

Request Body

FieldTypeRequiredDescription
channelSchemastringNoUpdated schema reference for channel validation

Response

200 OK 404 Not Found
{
  "channelId": "garage-sensor",
  "documentType": "temperature-readings",
  "channelSchema": "schema-ref",
  "status": "active"
}
DELETE

/api/v1/config/channels/{channelId}

Delete a channel registration.

Response

200 OK 404 Not Found
{
  "deleted": true
}
POST

/api/v1/config/channels/{channelId}/activate

Activate a channel, enabling ingestion via this endpoint.

Response

200 OK 404 Not Found 409 Conflict (blocked)
{
  "channelId": "garage-sensor",
  "status": "active"
}
Note: Cannot activate a blocked channel. Fix the schema conflict first before reactivating.
POST

/api/v1/config/channels/{channelId}/deactivate

Deactivate a channel. Operator-controlled suspension of ingestion.

Response

200 OK 404 Not Found
{
  "channelId": "garage-sensor",
  "status": "inactive"
}
Note: Ingestion attempts return 403 Forbidden while the channel is inactive.
PUT

/api/v1/config/channels/{channelId}/enrichment

Set enrichment bindings for a channel. Bindings inject fields into every payload before validation.

Request Body

FieldTypeRequiredDescription
bindingsarrayYesArray of enrichment binding objects
bindings[].fieldPathstringYesDot-notation path to inject value at
bindings[].staticValueanyYesValue to inject

Response

200 OK 404 Not Found
{
  "channelId": "garage-sensor",
  "bindings": [
    { "fieldPath": "location", "staticValue": "Garage" }
  ]
}
Note: TamaDB injects these fields into every payload received via this channel before validation. Conflict behaviour is governed by enrichment policies.
GET

/api/v1/config/channels/{channelId}/enrichment

Retrieve the current enrichment bindings for a channel.

Response

200 OK 404 Not Found
{
  "channelId": "garage-sensor",
  "bindings": [
    { "fieldPath": "location", "staticValue": "Garage" }
  ]
}
DELETE

/api/v1/config/channels/{channelId}/enrichment

Remove all enrichment bindings from a channel.

Response

200 OK 404 Not Found
{
  "channelId": "garage-sensor",
  "bindings": []
}