Register (or rotate) the tenant's OTA channel — Bokun keys + activity map
const url = 'https://quikstik-core.fly.dev/tenants/channels';const options = { method: 'POST', headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'}, body: '{"channel":"bokun","access_key":"example","secret_key":"example","activities":{"1005527":"R1","1005528":"T1"},"poll_window_days":1,"publishable_key":"example"}'};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request POST \ --url https://quikstik-core.fly.dev/tenants/channels \ --header 'Authorization: Bearer <token>' \ --header 'Content-Type: application/json' \ --data '{ "channel": "bokun", "access_key": "example", "secret_key": "example", "activities": { "1005527": "R1", "1005528": "T1" }, "poll_window_days": 1, "publishable_key": "example" }'Operator-scoped, authoritative registration of the tenant’s availability-syndication
channel (per-tenant channel registry, PR B). The access/secret key pair is sealed into the
per-tenant credential vault (never stored in clear, never echoed, never on the event); the
registry row carries the Bokun activity id -> core product id map and the poll window.
Re-registering rotates the credential and replaces the activity map whole. Only
channel: bokun is admitted today.
Authorizations
Section titled “Authorizations”Request Bodyrequired
Section titled “Request Bodyrequired”object
Bokun activity id (as a JSON key) -> core catalog product id.
object
Example
{ "1005527": "R1", "1005528": "T1"}Days ahead the poller walks; omitted = the poller’s default.
The tenant’s storefront publishable key (x-api-key on
/availability/snapshot-requests), used by the allocator’s consumer-surface
check. Public by design (it ships in the storefront widget), so it lives in the
channel config, not the vault. Omitted = the allocator falls back to its env
key, else skips the check. Present-but-blank is refused.
Responses
Section titled “Responses”Channel registered; keys sealed. Never echoes key material.
object
The vault rotation counter the keys were sealed under; null on disable.
Example
{ "channel": "bokun", "status": "active"}Malformed registration (unknown channel, blank key, empty activities, blank product id, zero poll window, blank publishable key).
Backend unavailable.