Skip to main content

Get / Update / Delete / Preview

Get binding details, update signal filters or field maps, delete a binding, or preview the resolved payload for a binding without sending it.

Manage a single delivery binding: retrieve its configuration, update the signal filter or field map, delete it, or preview the payload it would produce. Updates re-validate the compatibility triangle. Deleting a binding stops future routing but allows in-flight deliveries to complete.

Use GET to inspect the current binding config and last_status. Use PUT to adjust the signal filter, field map, or retry policy — changes take effect on the next matching event. Use DELETE when the binding is no longer needed; in-flight deliveries already in the job queue will still complete.

The PUT response returns the full updated binding. The compatibility triangle is re-validated on every update — if you change the signal_filter.event_type or serializer_format, the system verifies the new combination is still valid. The preview endpoint (POST /preview) walks the resolve-project-serialize pipeline with a synthetic signal and returns the wire output without delivering.

Pair updates with the delivery history endpoint to verify the binding is producing expected results. If last_status shows failed, check the DLQ for error details before adjusting the binding config.

The public API preview endpoint currently returns a stub response. The internal preview endpoint is fully functional and walks the full resolve, project, and serialize pipeline with structural fallback.
GET/v1/delivery/bindings/:id

Response

Response fields

idstringBinding UUID.
namestringBinding name.
signal_filterobjectEvent filter.
deliverable_typestringPayload resolver type.
destination_idstringTarget destination UUID.
serializer_formatstringSerializer format.
serializer_configobjectSerializer configuration.
field_mapobjectJSONPath field projection map.
delivery_policyobjectRetry policy.
is_activebooleanWhether the binding is enabled.
last_statusstring | nullStatus of the most recent delivery attempt.
created_atstringISO 8601 creation timestamp.
updated_atstringISO 8601 last update timestamp.

Response

{
  "id": "d4e5f6a7-b8c9-0123-defa-345678901234",
  "name": "Notify on extraction complete",
  "signal_filter": { "event_type": "document.extraction.completed" },
  "deliverable_type": "document_capture",
  "destination_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
  "serializer_format": "json",
  "serializer_config": {},
  "field_map": { "vendor": "$.vendor_name", "total": "$.amount" },
  "delivery_policy": { "max_attempts": 5, "backoff_schedule": [1000, 5000, 30000] },
  "is_active": true,
  "last_status": "succeeded",
  "created_at": "2024-09-10T09:00:00.000Z",
  "updated_at": "2024-09-10T09:00:00.000Z"
}

Errors

Error responses

401unauthorizedMissing or invalid API key.
404not_foundNo binding with this ID exists for your organization.
429rate_limitedToo many requests. Retry after the period indicated in the Retry-After header.
PUT/v1/delivery/bindings/:id

Response

Response fields

idstringBinding UUID.
namestringBinding name.
signal_filterobjectUpdated event filter.
deliverable_typestringPayload resolver type.
destination_idstringTarget destination UUID.
serializer_formatstringSerializer format.
serializer_configobjectSerializer configuration.
field_mapobjectUpdated field projection map.
delivery_policyobjectUpdated retry policy.
is_activebooleanCurrent active status.
last_statusstring | nullStatus of the most recent delivery attempt.
created_atstringISO 8601 creation timestamp.
updated_atstringISO 8601 last update timestamp.

Response

{
  "id": "d4e5f6a7-b8c9-0123-defa-345678901234",
  "name": "Notify on extraction complete",
  "signal_filter": { "event_type": "document.extraction.completed" },
  "deliverable_type": "document_capture",
  "destination_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
  "serializer_format": "json",
  "serializer_config": {},
  "field_map": { "vendor": "$.vendor_name", "total": "$.amount", "date": "$.invoice_date" },
  "delivery_policy": { "max_attempts": 7 },
  "is_active": true,
  "last_status": "succeeded",
  "created_at": "2024-09-10T09:00:00.000Z",
  "updated_at": "2024-09-16T10:00:00.000Z"
}

Errors

Error responses

400validation_errorUpdated configuration fails the compatibility triangle validation.
401unauthorizedMissing or invalid API key.
404not_foundNo binding with this ID exists for your organization.
429rate_limitedToo many requests. Retry after the period indicated in the Retry-After header.
DELETE/v1/delivery/bindings/:id

Response

Response fields

deletedbooleanAlways true on success.

Response

{
  "deleted": true
}

Errors

Error responses

401unauthorizedMissing or invalid API key.
404not_foundNo binding with this ID exists for your organization.
429rate_limitedToo many requests. Retry after the period indicated in the Retry-After header.
POST/v1/delivery/bindings/:id/preview

Response

Response fields

previewstringPreview status. Returns a stub message in the current API version.

Response

{
  "preview": "not-implemented-in-slice-1-MVP"
}

Errors

Error responses

401unauthorizedMissing or invalid API key.
404not_foundNo binding with this ID exists for your organization.
429rate_limitedToo many requests. Retry after the period indicated in the Retry-After header.