Connector API
Discover connectors and call status, ledger, booking, and observation endpoints.
Discover connectors
GET /api/connectors returns every entry from config/connectors.json with its id, label, source, configuration status, and optional error.
{
"connectors": [{
"id": "acme-crm",
"label": "Acme CRM",
"source": "config",
"configured": true
}]
}Status and ledger
| Route | Query | Purpose |
|---|---|---|
GET /api/connectors/status | id? | Validate configuration and call ping |
GET /api/connectors/ledger | id? | Summarize remote mapping and observation counts |
{
"id": "acme-crm",
"label": "Acme CRM",
"configured": true,
"ok": true,
"status": 200,
"checkedAt": "2026-07-20T12:00:00.000Z"
}Remote bookings
GET /api/connectors/bookings passes pagination and status to the connector’s booking list.
| Query | Rules |
|---|---|
id | Optional connector id |
page | Optional integer of at least 1 |
limit | Optional integer from 1 to 100 |
status | Optional value passed as a remote filter |
curl 'http://localhost:3000/api/connectors/bookings?id=acme-crm&page=1&limit=20&status=scheduled'The HTTP connector accepts either a bare array or { data, meta } and normalizes records with non-empty ids.
Observe bookings
POST /api/connectors/sync/bookings accepts optional id, page, limit, and status fields. It compares returned booking ids with the connector ledger and reports what is newly observed.
{
"connectorId": "acme-crm",
"observed": 3,
"skipped": 17,
"bookingIds": ["apt_42", "apt_43", "apt_44"],
"meta": { "nextPage": 2 }
}