Create a new experience with the specified context and capabilities
Soft-delete a playbook (sets active=false).
Fetch catalog metadata
Fetch one product from a catalog
Fetch products from a catalog
Fetch the org's current active brand config.
List the org's brand config version history, newest first.
Return the L2 CustomerProfile for a customer, scoped to the caller's org.
Poll one engagement decision's assembled widget set (the decision widget +
its enrichment widgets), scoped to decisionId (the decision_id returned by
invokeEngagementDecision). status is PENDING until every widget is terminal.
Fetch a single playbook by its partner-chosen playbook_id.
Get a presigned URL for file upload
Ingest a batch of behavioural signals for the caller's org. Writes L1 customer_signals and re-derives L2 customer_profiles incrementally.
Invoke an engagement decision for a customer against a named playbook. Returns 202 with status=PENDING (async) or status=COMPLETED (cache hit). On COMPLETED, widget_data is populated and polling can be skipped.
List active playbooks for the caller's org.
Report a delivery outcome against the decision_id returned by invokeEngagementDecision. Updates L2 features and stores an attribution row.
Re-publish a prior brand config version as the new head.
Create or full-replace the org's brand config (bumps version).
Upload a file using a presigned URL response
Create or fully replace a playbook for the caller's org. If no playbook with this playbook_id exists it is created; otherwise the current version is archived and all fields are replaced.
Poll getEngagementDecision until the decision's widget set has settled:
every widget is terminal AND (if the decision planned enrichment) the enrichment
widgets have appeared. Handles the spawn gap — the decision widget can be
COMPLETED before the continuation has created the enrichment sessions, so a bare
"until not PENDING" would return too early. Falls back to the last response after
maxRetries (e.g. a planned block that dropped on spawn), so it never hangs.
Privileged, server-side calls against the Thankly API.