Getting started
Can I integrate Lookout without Wave (or vice versa)?
Can I integrate Lookout without Wave (or vice versa)?
Is there a sandbox I can hammer without affecting real data?
Is there a sandbox I can hammer without affecting real data?
How long does a typical integration take?
How long does a typical integration take?
Do I need to host the docs site myself?
Do I need to host the docs site myself?
Auth
The spec says `apikey` — where do I get one?
The spec says `apikey` — where do I get one?
apikey scheme in the OpenAPI
spec is actually Authorization: Bearer <Cognito JWT> — you obtain
the JWT by signing in with username/password at POST /auth. See
Authentication.Why am I getting 403 even though my token is valid?
Why am I getting 403 even though my token is valid?
X-Preferred-Partner-Id
header. Multi-partner users need to send the right partner; single-
partner users still should. See Partner & Client.Token refresh fails with 400 — what changed?
Token refresh fails with 400 — what changed?
Can I use MFA with a service account?
Can I use MFA with a service account?
Endpoints and conventions
Why are some array params sent as `?city=A&city=B` instead of `?city[]=A`?
Why are some array params sent as `?city=A&city=B` instead of `?city[]=A`?
repeat style — repeated keys without
brackets, no CSV. Use qs.stringify(..., { arrayFormat: "repeat" })
or the equivalent in your serialiser.Why does `POST /campaigns/` take query-string parameters?
Why does `POST /campaigns/` take query-string parameters?
POST /campaigns/, PUT /events/{eid}/client_campaign_status?...,
POST /events/{eid}/series?...,
POST /package_builder/packages/merge?packages_ids=.... Watch out
for each.Why does the same endpoint return fractions sometimes and percents other times?
Why does the same endpoint return fractions sometimes and percents other times?
/events/{eid}/benchmark) does this. Use the
peak < 1.5 ? ×100 : ×1 heuristic — see
Event Detail.An endpoint I'm using isn't in the OpenAPI spec — is it real?
An endpoint I'm using isn't in the OpenAPI spec — is it real?
/events/{eid}/client_campaign_status[/task]/events/{eid}/campaign_optimisation_status/events/{eid}/ad_campaign_optimisation_status/events/{eid}/attribution_model/events/{eid}/available_events_for_series
Why are some operations on a different host?
Why are some operations on a different host?
Wave wizard
My autosave PUTs sometimes get out of order — what's happening?
My autosave PUTs sometimes get out of order — what's happening?
AbortController to cancel any in-flight PUT before issuing a new
one. Without it, you can have edit N+1 land before edit N. See
Campaigns Lifecycle.`/setup_processes/{eid}` returns 404 — is something broken?
`/setup_processes/{eid}` returns 404 — is something broken?
POST /setup_processes/{eid} to begin.Why doesn't editing a published campaign use the same endpoint as the draft?
Why doesn't editing a published campaign use the same endpoint as the draft?
POST /campaigns_setup (body carries eid, tc,
tc_run_id). The draft endpoint PUT /setup_processes/{eid} only
works while the setup is unpublished.Publish returns 200 but my campaigns aren't on Meta
Publish returns 200 but my campaigns aren't on Meta
/integrations/facebook/events/{eid}/...;
(2) Meta auth expired — re-check /meta/authorization/status and
prompt the user to reconnect.Package Builder
My poll loop runs forever — what's the right stop condition?
My poll loop runs forever — what's the right stop condition?
DONE, FAILED, EXPIRED. Stop on any of
those. Also gate the loop on an AbortController tied to component
lifetime — the reference webapp doesn’t, and it leaks polls on
unmount.Package is `EXPIRED` — does that mean I lost the data?
Package is `EXPIRED` — does that mean I lost the data?
POST /package_builder/packages/{id}/regenerate to refresh
it. The TTL is server-side; ask Future Demand for your tenant’s value.Why does the customer-list URL not slugify `tc`?
Why does the customer-list URL not slugify `tc`?
tc is used raw (URL-encoded) in the per-package path. The campaign-
side cid composite slugifies it. Two different conventions; URL-
encode either way.Operations
Are there webhooks?
Are there webhooks?
Rate limits?
Rate limits?
How do I file a bug?
How do I file a bug?
x-request-id from the failing response. We can trace
across services in seconds with that.Where do I see breaking changes?
Where do I see breaking changes?