Mark Packs Launched
Report the packs a platform put live, by Kumquat id or by pack name: each gets its
launched_at stamped, its test started, and the same instant — and the same ad_id, when the
call carries one — written onto every creative the feed offered under it: the cards with a file
to upload.
The pack-level counterpart of /creatives/launched, for the platform that launches a whole
campaign at once rather than card by card. Where the two disagree the pack wins: a creative
someone reported on its own is restamped with the pack’s instant, because a pack’s ads go live
together.
Never a 404 — a batch is reported as a whole, so a pack Kumquat cannot act on carries its own
status in its own row while the rest are recorded: not_found, not_launchable for a pack
that has not finished, and ambiguous for a name matching more than one live pack (they are
not unique — report that one by id). Replays are safe: a pack that already carries a
launched_at keeps it, comes back already_launched, and its creatives are left alone apart
from the ad_id, which the pack and its creatives take from the call if it carries one.
/api/v1/integrations/creative-tests/packs/launchedAuthorizationBearer token · headerrequiredapplication/jsonpacksLaunchedPack[]requiredShow propertiesHide properties
LaunchedPackidstring | anyShow propertiesHide properties
stringanynamestring | anyShow propertiesHide properties
stringanylaunched_atstring<date-time> | anyShow propertiesHide properties
string<date-time>anyad_idstring | anyShow propertiesHide properties
stringanyLaunchedPackResultidstring | anyShow propertiesHide properties
stringanynamestring | anyShow propertiesHide properties
stringanystatusPackLaunchOutcomerequiredlaunchedalready_launchednot_foundambiguousnot_launchablelaunched_atstring<date-time> | anyShow propertiesHide properties
string<date-time>anytest_statusTestStatus | anyShow propertiesHide properties
stringanyad_idstring | anyShow propertiesHide properties
stringanycreativesLaunchedResult[]Show propertiesHide properties
LaunchedResultidstring | anyShow propertiesHide properties
stringanynamestring | anyShow propertiesHide properties
stringanystatusLaunchOutcomerequiredlaunchedalready_launchednot_foundlaunched_atstring<date-time> | anyShow propertiesHide properties
string<date-time>anytest_statusTestStatus | anyShow propertiesHide properties
stringanyad_idstring | anyShow propertiesHide properties
stringanydetailValidationError[]Show propertiesHide properties
ValidationErrorlocstring | integer[]requiredShow propertiesHide properties
string | integerstringintegermsgstringrequiredtypestringrequiredinputanyctxobjectcurl -X POST "/api/v1/integrations/creative-tests/packs/launched" \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"packs": [
{
"id": "string",
"name": "string",
"launched_at": "2019-08-24T14:15:22Z",
"ad_id": "string"
}
]
}'const response = await fetch("/api/v1/integrations/creative-tests/packs/launched", {
method: "POST",
headers: {
"Authorization": "Bearer YOUR_TOKEN",
"Content-Type": "application/json"
},
body: JSON.stringify({
"packs": [
{
"id": "string",
"name": "string",
"launched_at": "2019-08-24T14:15:22Z",
"ad_id": "string"
}
]
})
});import requests
response = requests.post(
"/api/v1/integrations/creative-tests/packs/launched",
headers={
"Authorization": "Bearer YOUR_TOKEN",
"Content-Type": "application/json"
},
json={
"packs": [
{
"id": "string",
"name": "string",
"launched_at": "2019-08-24T14:15:22Z",
"ad_id": "string"
}
]
},
)[
{
"id": "string",
"name": "string",
"status": "launched",
"launched_at": "2019-08-24T14:15:22Z",
"test_status": "not_tested",
"ad_id": "string",
"creatives": [
{
"id": "string",
"name": "string",
"status": "launched",
"launched_at": "2019-08-24T14:15:22Z",
"test_status": "not_tested",
"ad_id": "string"
}
]
}
]{
"detail": [
{
"loc": [
"string"
],
"msg": "string",
"type": "string",
"input": null,
"ctx": {}
}
]
}