{"openapi":"3.1.0","info":{"title":"Postinger Public API","version":"1.0.0","description":"Project-scoped API keys. JSON bodies up to 100 KB. Upload media directly to the returned R2 URL, then complete the upload. Rate limits are shared by all keys in the project. Scheduling requires posts-publish in addition to posts-write. A paused key returns 403 with error.code api_key_paused."},"servers":[{"url":"https://api.dev.postinger.dev/public/v1"}],"components":{"securitySchemes":{"ApiKey":{"type":"http","scheme":"bearer","bearerFormat":"Postinger API key"}},"schemas":{"Session":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"apiVersion":{"type":"string","const":"v1"},"project":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"name":{"type":"string"}},"required":["id","name"]},"key":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"name":{"type":"string"},"expiresAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"}},"required":["id","name","expiresAt"]},"permissions":{"type":"array","items":{"type":"string"}}},"required":["apiVersion","project","key","permissions"]},"Accounts":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"platform":{"type":"string","enum":["instagram","facebook","youtube","tiktok"]},"externalId":{"type":"string"},"handle":{"type":["string","null"]},"displayName":{"type":["string","null"]},"avatarUrl":{"type":["string","null"]},"status":{"type":"string","enum":["active","needs_reauth","disconnected"]},"tokenExpiresAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"connectedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"}},"required":["id","platform","externalId","handle","displayName","avatarUrl","status","tokenExpiresAt","connectedAt"]}},"PublishingCapabilities":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"account":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"platform":{"type":"string","enum":["instagram","facebook","youtube","tiktok"]},"status":{"type":"string","enum":["active","needs_reauth","disconnected"]}},"required":["id","platform","status"]},"supported":{"type":"boolean"},"available":{"type":"boolean"},"reason":{"type":["string","null"]},"requiredPermissions":{"type":"object","properties":{"discover":{"type":"array","items":{"type":"string"}},"draft":{"type":"array","items":{"type":"string"}},"schedule":{"type":"array","items":{"type":"string"}},"publish":{"type":"array","items":{"type":"string"}},"upload":{"type":"array","items":{"type":"string"}}},"required":["discover","draft","schedule","publish","upload"]},"rules":{"anyOf":[{"type":"object","properties":{"caption":{"type":"object","properties":{"maxLength":{"type":"number"},"lengthUnit":{"type":"string"},"requiredExcept":{"type":["string","null"]}},"required":["maxLength","lengthUnit","requiredExcept"]},"attachments":{"type":"object","properties":{"min":{"type":"number"},"max":{"type":"number"},"maxVideos":{"type":"number"},"allowMixed":{"type":"boolean"},"storyMax":{"type":"number"}},"required":["min","max","maxVideos","allowMixed","storyMax"]},"maxShortDurationSeconds":{"type":"number"},"maxVideoDurationSeconds":{"type":"number"},"options":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{},"description":"JSON Schema for the platform-specific publishing options."},"media":{"type":"object","properties":{"images":{"type":"object","properties":{"contentTypes":{"type":"array","items":{"type":"string"}},"maxBytes":{"type":"number"}},"required":["contentTypes","maxBytes"]},"videos":{"type":"object","properties":{"contentTypes":{"type":"array","items":{"type":"string"}},"maxBytes":{"type":"number"},"videoCodecs":{"type":"array","items":{"type":"string"}},"audioCodecs":{"type":"array","items":{"type":"string"}},"minDurationSeconds":{"type":"number"},"maxDurationSeconds":{"type":"number"}},"required":["contentTypes","maxBytes","videoCodecs","audioCodecs","minDurationSeconds","maxDurationSeconds"]}},"required":["images","videos"]},"notes":{"type":"array","items":{"type":"string"}}},"required":["caption","attachments","options","media","notes"]},{"type":"null"}]}},"required":["account","supported","available","reason","requiredPermissions","rules"]},"Post":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"status":{"type":"string","enum":["draft","scheduled","publishing","partial","published","failed"]},"content":{"type":"string"},"scheduledAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"publishedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"targets":{"type":"array","items":{"type":"object","properties":{"socialAccountId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"platform":{"type":"string","enum":["instagram","facebook","youtube","tiktok"]},"handle":{"type":["string","null"]},"contentOverride":{"type":["string","null"]},"options":{"type":"object","properties":{"format":{"type":"string","enum":["feed","reel","story"]},"shareToFeed":{"type":"boolean"},"link":{"type":"string","maxLength":2048,"format":"uri"},"youtubeTitle":{"type":"string","maxLength":100},"youtubeDescription":{"type":"string","maxLength":5000},"youtubePrivacy":{"type":"string","enum":["private","unlisted","public"]},"youtubeMadeForKids":{"type":"boolean"},"youtubeTags":{"maxItems":30,"type":"array","items":{"type":"string","minLength":1,"maxLength":100}},"tiktokMode":{"type":"string","enum":["direct","inbox"]},"tiktokCaption":{"type":"string","maxLength":2200},"tiktokPrivacy":{"type":"string","enum":["PUBLIC_TO_EVERYONE","MUTUAL_FOLLOW_FRIENDS","FOLLOWER_OF_CREATOR","SELF_ONLY"]},"tiktokAllowComment":{"type":"boolean"},"tiktokAllowDuet":{"type":"boolean"},"tiktokAllowStitch":{"type":"boolean"},"tiktokDisclose":{"type":"boolean"},"tiktokBrandContent":{"type":"boolean"},"tiktokBrandOrganic":{"type":"boolean"},"tiktokIsAigc":{"type":"boolean"}}},"status":{"type":"string","enum":["pending","publishing","processing","published","failed"]},"externalPostId":{"type":["string","null"]},"error":{"type":["string","null"]},"waitReason":{"type":["string","null"]},"nextAttemptAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"publishedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]}},"required":["socialAccountId","platform","handle","contentOverride","options","status","externalPostId","error","waitReason","nextAttemptAt","publishedAt"]}},"media":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"kind":{"type":"string","enum":["image","video"]},"url":{"type":"string"},"posterUrl":{"type":["string","null"]},"sourceAvailable":{"type":"boolean"},"contentType":{"type":"string"},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"durationSeconds":{"type":["number","null"]}},"required":["id","kind","url","posterUrl","sourceAvailable","contentType","width","height","durationSeconds"]}}},"required":["id","status","content","scheduledAt","publishedAt","createdAt","updatedAt","targets","media"]},"PostsPage":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"status":{"type":"string","enum":["draft","scheduled","publishing","partial","published","failed"]},"content":{"type":"string"},"scheduledAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"publishedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"targets":{"type":"array","items":{"type":"object","properties":{"socialAccountId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"platform":{"type":"string","enum":["instagram","facebook","youtube","tiktok"]},"handle":{"type":["string","null"]},"contentOverride":{"type":["string","null"]},"options":{"type":"object","properties":{"format":{"type":"string","enum":["feed","reel","story"]},"shareToFeed":{"type":"boolean"},"link":{"type":"string","maxLength":2048,"format":"uri"},"youtubeTitle":{"type":"string","maxLength":100},"youtubeDescription":{"type":"string","maxLength":5000},"youtubePrivacy":{"type":"string","enum":["private","unlisted","public"]},"youtubeMadeForKids":{"type":"boolean"},"youtubeTags":{"maxItems":30,"type":"array","items":{"type":"string","minLength":1,"maxLength":100}},"tiktokMode":{"type":"string","enum":["direct","inbox"]},"tiktokCaption":{"type":"string","maxLength":2200},"tiktokPrivacy":{"type":"string","enum":["PUBLIC_TO_EVERYONE","MUTUAL_FOLLOW_FRIENDS","FOLLOWER_OF_CREATOR","SELF_ONLY"]},"tiktokAllowComment":{"type":"boolean"},"tiktokAllowDuet":{"type":"boolean"},"tiktokAllowStitch":{"type":"boolean"},"tiktokDisclose":{"type":"boolean"},"tiktokBrandContent":{"type":"boolean"},"tiktokBrandOrganic":{"type":"boolean"},"tiktokIsAigc":{"type":"boolean"}}},"status":{"type":"string","enum":["pending","publishing","processing","published","failed"]},"externalPostId":{"type":["string","null"]},"error":{"type":["string","null"]},"waitReason":{"type":["string","null"]},"nextAttemptAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"publishedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]}},"required":["socialAccountId","platform","handle","contentOverride","options","status","externalPostId","error","waitReason","nextAttemptAt","publishedAt"]}},"media":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"kind":{"type":"string","enum":["image","video"]},"url":{"type":"string"},"posterUrl":{"type":["string","null"]},"sourceAvailable":{"type":"boolean"},"contentType":{"type":"string"},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"durationSeconds":{"type":["number","null"]}},"required":["id","kind","url","posterUrl","sourceAvailable","contentType","width","height","durationSeconds"]}}},"required":["id","status","content","scheduledAt","publishedAt","createdAt","updatedAt","targets","media"]}},"nextCursor":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]}},"required":["items","nextCursor"]},"Publication":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"targets":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Number of targets queued for publication; this is not a list of targets."}},"required":["id","targets"]},"DeletedPost":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"deleted":{"type":"boolean","const":true}},"required":["deleted"]},"Media":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"kind":{"type":"string","enum":["image","video"]},"contentType":{"type":"string"},"url":{"type":"string"},"sizeBytes":{"type":["number","null"]},"width":{"type":["number","null"]},"height":{"type":["number","null"]},"durationSeconds":{"type":["number","null"]},"originalFilename":{"type":["string","null"]},"posterUrl":{"type":["string","null"]},"status":{"type":"string","enum":["pending","ready"]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"}},"required":["id","kind","contentType","url","sizeBytes","width","height","durationSeconds","originalFilename","posterUrl","status","createdAt"]},"MediaUpload":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"uploadUrl":{"type":"string","description":"Signed PUT URL. Empty for multipart uploads; use the multipart endpoint to sign each part."},"multipart":{"type":"boolean"},"partSize":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"posterUploadUrl":{"type":"string"},"expiresAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"}},"required":["id","uploadUrl","multipart","partSize","expiresAt"]},"MultipartResult":{"$schema":"https://json-schema.org/draft/2020-12/schema","anyOf":[{"type":"object","properties":{"url":{"type":"string"}},"required":["url"]},{"type":"object","properties":{"parts":{"type":"array","items":{"type":"object","properties":{"partNumber":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"etag":{"type":"string"},"size":{"type":"number"}},"required":["partNumber","etag","size"]}}},"required":["parts"]},{"type":"object","properties":{"completed":{"type":"boolean","const":true}},"required":["completed"]},{"type":"object","properties":{"aborted":{"type":"boolean","const":true}},"required":["aborted"]}]},"AnalyticsCapabilities":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"providers":{"type":"array","items":{"type":"object","properties":{"platform":{"type":"string","enum":["instagram","facebook","youtube","tiktok"]},"enabled":{"type":"boolean"},"accountMetrics":{"type":"array","items":{"type":"string"}},"dailyMetrics":{"type":"array","items":{"type":"string"}},"postMetrics":{"type":"array","items":{"type":"string"}}},"required":["platform","enabled","accountMetrics","dailyMetrics","postMetrics"]}}},"required":["providers"]},"AnalyticsReport":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"from":{"type":"string","format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"},"to":{"type":"string","format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"},"timezone":{"type":"string","const":"UTC"},"generatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"selection":{"type":"object","properties":{"platforms":{"type":"array","items":{"type":"string","enum":["instagram","facebook","youtube","tiktok"]}}},"required":["platforms"]},"comparison":{"anyOf":[{"type":"object","properties":{"from":{"type":"string","format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"},"to":{"type":"string","format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"},"days":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["from","to","days"]},{"type":"null"}]},"previous":{"anyOf":[{"type":"object","properties":{"from":{"type":"string","format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"},"to":{"type":"string","format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"}},"required":["from","to"]},{"type":"null"}]},"metrics":{"type":"object","properties":{"followers":{"type":"object","properties":{"points":{"type":"array","items":{"type":"object","properties":{"time":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"value":{"type":["string","null"]},"partial":{"type":"boolean"}},"required":["time","value","partial"]}},"value":{"type":["string","null"]},"partial":{"type":"boolean"},"comparisonValue":{"type":["string","null"]},"previousValue":{"type":["string","null"]},"change":{"type":["number","null"]},"comparisonReason":{"anyOf":[{"type":"string","enum":["incomplete_period","incomplete_data","zero_baseline"]},{"type":"null"}]}},"required":["points","value","partial","comparisonValue","previousValue","change","comparisonReason"]},"views":{"type":"object","properties":{"points":{"type":"array","items":{"type":"object","properties":{"time":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"value":{"type":["string","null"]},"partial":{"type":"boolean"}},"required":["time","value","partial"]}},"value":{"type":["string","null"]},"partial":{"type":"boolean"},"comparisonValue":{"type":["string","null"]},"previousValue":{"type":["string","null"]},"change":{"type":["number","null"]},"comparisonReason":{"anyOf":[{"type":"string","enum":["incomplete_period","incomplete_data","zero_baseline"]},{"type":"null"}]}},"required":["points","value","partial","comparisonValue","previousValue","change","comparisonReason"]},"likes":{"type":"object","properties":{"points":{"type":"array","items":{"type":"object","properties":{"time":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"value":{"type":["string","null"]},"partial":{"type":"boolean"}},"required":["time","value","partial"]}},"value":{"type":["string","null"]},"partial":{"type":"boolean"},"comparisonValue":{"type":["string","null"]},"previousValue":{"type":["string","null"]},"change":{"type":["number","null"]},"comparisonReason":{"anyOf":[{"type":"string","enum":["incomplete_period","incomplete_data","zero_baseline"]},{"type":"null"}]}},"required":["points","value","partial","comparisonValue","previousValue","change","comparisonReason"]},"comments":{"type":"object","properties":{"points":{"type":"array","items":{"type":"object","properties":{"time":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"value":{"type":["string","null"]},"partial":{"type":"boolean"}},"required":["time","value","partial"]}},"value":{"type":["string","null"]},"partial":{"type":"boolean"},"comparisonValue":{"type":["string","null"]},"previousValue":{"type":["string","null"]},"change":{"type":["number","null"]},"comparisonReason":{"anyOf":[{"type":"string","enum":["incomplete_period","incomplete_data","zero_baseline"]},{"type":"null"}]}},"required":["points","value","partial","comparisonValue","previousValue","change","comparisonReason"]},"shares":{"type":"object","properties":{"points":{"type":"array","items":{"type":"object","properties":{"time":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"value":{"type":["string","null"]},"partial":{"type":"boolean"}},"required":["time","value","partial"]}},"value":{"type":["string","null"]},"partial":{"type":"boolean"},"comparisonValue":{"type":["string","null"]},"previousValue":{"type":["string","null"]},"change":{"type":["number","null"]},"comparisonReason":{"anyOf":[{"type":"string","enum":["incomplete_period","incomplete_data","zero_baseline"]},{"type":"null"}]}},"required":["points","value","partial","comparisonValue","previousValue","change","comparisonReason"]},"saves":{"type":"object","properties":{"points":{"type":"array","items":{"type":"object","properties":{"time":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"value":{"type":["string","null"]},"partial":{"type":"boolean"}},"required":["time","value","partial"]}},"value":{"type":["string","null"]},"partial":{"type":"boolean"},"comparisonValue":{"type":["string","null"]},"previousValue":{"type":["string","null"]},"change":{"type":["number","null"]},"comparisonReason":{"anyOf":[{"type":"string","enum":["incomplete_period","incomplete_data","zero_baseline"]},{"type":"null"}]}},"required":["points","value","partial","comparisonValue","previousValue","change","comparisonReason"]}},"required":["followers","views","likes","comments","shares","saves"]},"freshness":{"type":"object","properties":{"collectedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"accountsObserved":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"accountsTotal":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["collectedAt","accountsObserved","accountsTotal"]}},"required":["from","to","timezone","generatedAt","selection","comparison","previous","metrics","freshness"]},"AnalyticsAccount":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"from":{"type":"string","format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"},"to":{"type":"string","format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"},"timezone":{"type":"string","const":"UTC"},"generatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"account":{"anyOf":[{"type":"object","properties":{"metrics":{"type":"object","properties":{"followers":{"type":"object","properties":{"value":{"type":["string","null"]},"status":{"type":"string","enum":["available","unavailable","unsupported","permission_required"]},"collectedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]}},"required":["value","status","collectedAt"]},"following":{"type":"object","properties":{"value":{"type":["string","null"]},"status":{"type":"string","enum":["available","unavailable","unsupported","permission_required"]},"collectedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]}},"required":["value","status","collectedAt"]},"media_count":{"type":"object","properties":{"value":{"type":["string","null"]},"status":{"type":"string","enum":["available","unavailable","unsupported","permission_required"]},"collectedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]}},"required":["value","status","collectedAt"]}},"required":["followers","following","media_count"]},"collectedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"platform":{"type":"string","enum":["instagram","facebook","youtube","tiktok"]}},"required":["metrics","collectedAt","id","platform"]},{"type":"null"}]},"daily":{"type":"array","items":{"type":"object","properties":{"metrics":{"type":"object","properties":{"views":{"type":"object","properties":{"value":{"type":["string","null"]},"status":{"type":"string","enum":["available","unavailable","unsupported","permission_required"]},"collectedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]}},"required":["value","status","collectedAt"]},"likes":{"type":"object","properties":{"value":{"type":["string","null"]},"status":{"type":"string","enum":["available","unavailable","unsupported","permission_required"]},"collectedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]}},"required":["value","status","collectedAt"]},"comments":{"type":"object","properties":{"value":{"type":["string","null"]},"status":{"type":"string","enum":["available","unavailable","unsupported","permission_required"]},"collectedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]}},"required":["value","status","collectedAt"]},"shares":{"type":"object","properties":{"value":{"type":["string","null"]},"status":{"type":"string","enum":["available","unavailable","unsupported","permission_required"]},"collectedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]}},"required":["value","status","collectedAt"]},"saves":{"type":"object","properties":{"value":{"type":["string","null"]},"status":{"type":"string","enum":["available","unavailable","unsupported","permission_required"]},"collectedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]}},"required":["value","status","collectedAt"]}},"required":["views","likes","comments","shares","saves"]},"collectedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"periodStart":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"periodEnd":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["metrics","collectedAt","periodStart","periodEnd"]}},"followers":{"type":"array","items":{"type":"object","properties":{"value":{"type":"string"},"collectedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["value","collectedAt"]}}},"required":["from","to","timezone","generatedAt","account","daily","followers"]},"AnalyticsPosts":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"metrics":{"type":"object","properties":{"views":{"type":"object","properties":{"value":{"type":["string","null"]},"status":{"type":"string","enum":["available","unavailable","unsupported","permission_required"]},"collectedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]}},"required":["value","status","collectedAt"]},"reach":{"type":"object","properties":{"value":{"type":["string","null"]},"status":{"type":"string","enum":["available","unavailable","unsupported","permission_required"]},"collectedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]}},"required":["value","status","collectedAt"]},"likes":{"type":"object","properties":{"value":{"type":["string","null"]},"status":{"type":"string","enum":["available","unavailable","unsupported","permission_required"]},"collectedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]}},"required":["value","status","collectedAt"]},"comments":{"type":"object","properties":{"value":{"type":["string","null"]},"status":{"type":"string","enum":["available","unavailable","unsupported","permission_required"]},"collectedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]}},"required":["value","status","collectedAt"]},"shares":{"type":"object","properties":{"value":{"type":["string","null"]},"status":{"type":"string","enum":["available","unavailable","unsupported","permission_required"]},"collectedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]}},"required":["value","status","collectedAt"]},"saves":{"type":"object","properties":{"value":{"type":["string","null"]},"status":{"type":"string","enum":["available","unavailable","unsupported","permission_required"]},"collectedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]}},"required":["value","status","collectedAt"]},"replies":{"type":"object","properties":{"value":{"type":["string","null"]},"status":{"type":"string","enum":["available","unavailable","unsupported","permission_required"]},"collectedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]}},"required":["value","status","collectedAt"]},"watch_time_seconds":{"type":"object","properties":{"value":{"type":["string","null"]},"status":{"type":"string","enum":["available","unavailable","unsupported","permission_required"]},"collectedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]}},"required":["value","status","collectedAt"]},"average_watch_time_seconds":{"type":"object","properties":{"value":{"type":["string","null"]},"status":{"type":"string","enum":["available","unavailable","unsupported","permission_required"]},"collectedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]}},"required":["value","status","collectedAt"]}},"required":["views","reach","likes","comments","shares","saves","replies","watch_time_seconds","average_watch_time_seconds"]},"collectedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]},"postId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"accountId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"platform":{"type":"string","enum":["instagram","facebook","youtube","tiktok"]},"publishedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["metrics","collectedAt","postId","accountId","platform","publishedAt"]}},"nextCursor":{"type":["string","null"]}},"required":["items","nextCursor"]},"AnalyticsHistory":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"postId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"accountId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"items":{"type":"array","items":{"type":"object","properties":{"metrics":{"type":"object","properties":{"views":{"type":"object","properties":{"value":{"type":["string","null"]},"status":{"type":"string","enum":["available","unavailable","unsupported","permission_required"]},"collectedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]}},"required":["value","status","collectedAt"]},"reach":{"type":"object","properties":{"value":{"type":["string","null"]},"status":{"type":"string","enum":["available","unavailable","unsupported","permission_required"]},"collectedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]}},"required":["value","status","collectedAt"]},"likes":{"type":"object","properties":{"value":{"type":["string","null"]},"status":{"type":"string","enum":["available","unavailable","unsupported","permission_required"]},"collectedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]}},"required":["value","status","collectedAt"]},"comments":{"type":"object","properties":{"value":{"type":["string","null"]},"status":{"type":"string","enum":["available","unavailable","unsupported","permission_required"]},"collectedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]}},"required":["value","status","collectedAt"]},"shares":{"type":"object","properties":{"value":{"type":["string","null"]},"status":{"type":"string","enum":["available","unavailable","unsupported","permission_required"]},"collectedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]}},"required":["value","status","collectedAt"]},"saves":{"type":"object","properties":{"value":{"type":["string","null"]},"status":{"type":"string","enum":["available","unavailable","unsupported","permission_required"]},"collectedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]}},"required":["value","status","collectedAt"]},"replies":{"type":"object","properties":{"value":{"type":["string","null"]},"status":{"type":"string","enum":["available","unavailable","unsupported","permission_required"]},"collectedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]}},"required":["value","status","collectedAt"]},"watch_time_seconds":{"type":"object","properties":{"value":{"type":["string","null"]},"status":{"type":"string","enum":["available","unavailable","unsupported","permission_required"]},"collectedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]}},"required":["value","status","collectedAt"]},"average_watch_time_seconds":{"type":"object","properties":{"value":{"type":["string","null"]},"status":{"type":"string","enum":["available","unavailable","unsupported","permission_required"]},"collectedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]}},"required":["value","status","collectedAt"]}},"required":["views","reach","likes","comments","shares","saves","replies","watch_time_seconds","average_watch_time_seconds"]},"collectedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},{"type":"null"}]}},"required":["metrics","collectedAt"]}}},"required":["postId","accountId","items"]},"CreatePost":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"content":{"default":"","type":"string","maxLength":10000},"mediaIds":{"default":[],"maxItems":10,"type":"array","items":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},"targets":{"default":[],"maxItems":20,"type":"array","items":{"type":"object","properties":{"socialAccountId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"options":{"type":"object","properties":{"format":{"default":"feed","type":"string","enum":["feed","reel","story"]},"shareToFeed":{"default":true,"type":"boolean"},"link":{"type":"string","maxLength":2048,"format":"uri"},"youtubeTitle":{"type":"string","maxLength":100},"youtubeDescription":{"type":"string","maxLength":5000},"youtubePrivacy":{"type":"string","enum":["private","unlisted","public"]},"youtubeMadeForKids":{"type":"boolean"},"youtubeTags":{"maxItems":30,"type":"array","items":{"type":"string","minLength":1,"maxLength":100}},"tiktokMode":{"type":"string","enum":["direct","inbox"]},"tiktokCaption":{"type":"string","maxLength":2200},"tiktokPrivacy":{"type":"string","enum":["PUBLIC_TO_EVERYONE","MUTUAL_FOLLOW_FRIENDS","FOLLOWER_OF_CREATOR","SELF_ONLY"]},"tiktokAllowComment":{"type":"boolean"},"tiktokAllowDuet":{"type":"boolean"},"tiktokAllowStitch":{"type":"boolean"},"tiktokDisclose":{"type":"boolean"},"tiktokBrandContent":{"type":"boolean"},"tiktokBrandOrganic":{"type":"boolean"},"tiktokIsAigc":{"type":"boolean"}}},"contentOverride":{"anyOf":[{"type":"string","maxLength":63206},{"type":"null"}]}},"required":["socialAccountId"]}},"scheduledAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]}},"additionalProperties":false},"UpdatePost":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"content":{"type":"string","maxLength":10000},"mediaIds":{"maxItems":10,"type":"array","items":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},"targets":{"maxItems":20,"type":"array","items":{"type":"object","properties":{"socialAccountId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"options":{"type":"object","properties":{"format":{"default":"feed","type":"string","enum":["feed","reel","story"]},"shareToFeed":{"default":true,"type":"boolean"},"link":{"type":"string","maxLength":2048,"format":"uri"},"youtubeTitle":{"type":"string","maxLength":100},"youtubeDescription":{"type":"string","maxLength":5000},"youtubePrivacy":{"type":"string","enum":["private","unlisted","public"]},"youtubeMadeForKids":{"type":"boolean"},"youtubeTags":{"maxItems":30,"type":"array","items":{"type":"string","minLength":1,"maxLength":100}},"tiktokMode":{"type":"string","enum":["direct","inbox"]},"tiktokCaption":{"type":"string","maxLength":2200},"tiktokPrivacy":{"type":"string","enum":["PUBLIC_TO_EVERYONE","MUTUAL_FOLLOW_FRIENDS","FOLLOWER_OF_CREATOR","SELF_ONLY"]},"tiktokAllowComment":{"type":"boolean"},"tiktokAllowDuet":{"type":"boolean"},"tiktokAllowStitch":{"type":"boolean"},"tiktokDisclose":{"type":"boolean"},"tiktokBrandContent":{"type":"boolean"},"tiktokBrandOrganic":{"type":"boolean"},"tiktokIsAigc":{"type":"boolean"}}},"contentOverride":{"anyOf":[{"type":"string","maxLength":63206},{"type":"null"}]}},"required":["socialAccountId"]}},"scheduledAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]}},"additionalProperties":false,"minProperties":1},"Upload":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"filename":{"type":"string","minLength":1,"maxLength":255},"contentType":{"type":"string","enum":["image/jpeg","image/png","video/mp4","video/quicktime"]},"sizeBytes":{"type":"integer","exclusiveMinimum":0,"maximum":1073741824}},"required":["filename","contentType","sizeBytes"],"additionalProperties":false,"description":"JPEG/PNG images: at most 8 MiB. MP4/MOV videos: at most 1 GiB. Upload the file to the signed storage URL without the Postinger Authorization header, then call complete.","allOf":[{"if":{"properties":{"contentType":{"enum":["image/jpeg","image/png"]}},"required":["contentType"]},"then":{"properties":{"sizeBytes":{"maximum":8388608}}}}]},"Publish":{"$schema":"https://json-schema.org/draft/2020-12/schema","default":{},"type":"object","properties":{"socialAccountId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},"additionalProperties":false},"Multipart":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"operation":{"type":"string","enum":["list","sign","complete","abort"]},"partNumber":{"type":"integer","minimum":1,"maximum":128}},"required":["operation"],"additionalProperties":false,"description":"sign requires partNumber within the upload part count. complete uses parts already uploaded to storage; call media complete afterward to validate the file. list can also return completed: true if storage assembly already finished.","allOf":[{"if":{"properties":{"operation":{"const":"sign"}},"required":["operation"]},"then":{"required":["partNumber"]}}]}}},"paths":{"/auth/session":{"get":{"operationId":"getSession","summary":"Verify API credentials and inspect project, expiry and effective permissions","description":"Requires a valid active API key, with no resource permission required. Does not return credentials.","tags":["Authentication"],"x-required-permissions":[],"security":[{"ApiKey":[]}],"responses":{"200":{"description":"Success","headers":{"X-Request-Id":{"schema":{"type":"string"},"description":"Request identifier for troubleshooting."},"Cache-Control":{"schema":{"type":"string","const":"no-store"}},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Project-wide limit, when supplied by the rate limiter."},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining project requests, when supplied by the rate limiter."}},"content":{"application/json":{"schema":{"type":"object","required":["data","meta"],"properties":{"data":{"$ref":"#/components/schemas/Session"},"meta":{"type":"object","required":["requestId"],"properties":{"requestId":{"type":"string"}}}}}}}},"400":{"description":"Request failed. Check error.code and meta.requestId.","headers":{"X-Request-Id":{"schema":{"type":"string"},"description":"Request identifier for troubleshooting."},"Cache-Control":{"schema":{"type":"string","const":"no-store"}},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Project-wide limit, when supplied by the rate limiter."},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining project requests, when supplied by the rate limiter."}},"content":{"application/json":{"schema":{"type":"object","required":["error","meta"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]}}},"meta":{"type":"object","required":["requestId"],"properties":{"requestId":{"type":"string"}}}}}}}},"401":{"description":"Request failed. Check error.code and meta.requestId.","headers":{"X-Request-Id":{"schema":{"type":"string"},"description":"Request identifier for troubleshooting."},"Cache-Control":{"schema":{"type":"string","const":"no-store"}},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Project-wide limit, when supplied by the rate limiter."},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining project requests, when supplied by the rate limiter."}},"content":{"application/json":{"schema":{"type":"object","required":["error","meta"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]}}},"meta":{"type":"object","required":["requestId"],"properties":{"requestId":{"type":"string"}}}}}}}},"403":{"description":"Request failed. Check error.code and meta.requestId.","headers":{"X-Request-Id":{"schema":{"type":"string"},"description":"Request identifier for troubleshooting."},"Cache-Control":{"schema":{"type":"string","const":"no-store"}},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Project-wide limit, when supplied by the rate limiter."},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining project requests, when supplied by the rate limiter."}},"content":{"application/json":{"schema":{"type":"object","required":["error","meta"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]}}},"meta":{"type":"object","required":["requestId"],"properties":{"requestId":{"type":"string"}}}}}}}},"404":{"description":"Request failed. Check error.code and meta.requestId.","headers":{"X-Request-Id":{"schema":{"type":"string"},"description":"Request identifier for troubleshooting."},"Cache-Control":{"schema":{"type":"string","const":"no-store"}},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Project-wide limit, when supplied by the rate limiter."},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining project requests, when supplied by the rate limiter."}},"content":{"application/json":{"schema":{"type":"object","required":["error","meta"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]}}},"meta":{"type":"object","required":["requestId"],"properties":{"requestId":{"type":"string"}}}}}}}},"409":{"description":"Request failed. Check error.code and meta.requestId.","headers":{"X-Request-Id":{"schema":{"type":"string"},"description":"Request identifier for troubleshooting."},"Cache-Control":{"schema":{"type":"string","const":"no-store"}},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Project-wide limit, when supplied by the rate limiter."},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining project requests, when supplied by the rate limiter."},"Retry-After":{"schema":{"type":"integer"},"description":"Present for idempotency_in_progress; wait before retrying."}},"content":{"application/json":{"schema":{"type":"object","required":["error","meta"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]}}},"meta":{"type":"object","required":["requestId"],"properties":{"requestId":{"type":"string"}}}}}}}},"413":{"description":"JSON body exceeds the 100 KB limit. This can be rejected before the controller, so the public error envelope is not guaranteed."},"429":{"description":"Request failed. Check error.code and meta.requestId.","headers":{"X-Request-Id":{"schema":{"type":"string"},"description":"Request identifier for troubleshooting."},"Cache-Control":{"schema":{"type":"string","const":"no-store"}},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Project-wide limit, when supplied by the rate limiter."},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining project requests, when supplied by the rate limiter."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying."}},"content":{"application/json":{"schema":{"type":"object","required":["error","meta"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]}}},"meta":{"type":"object","required":["requestId"],"properties":{"requestId":{"type":"string"}}}}}}}},"500":{"description":"Request failed. Check error.code and meta.requestId.","headers":{"X-Request-Id":{"schema":{"type":"string"},"description":"Request identifier for troubleshooting."},"Cache-Control":{"schema":{"type":"string","const":"no-store"}},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Project-wide limit, when supplied by the rate limiter."},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining project requests, when supplied by the rate limiter."}},"content":{"application/json":{"schema":{"type":"object","required":["error","meta"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]}}},"meta":{"type":"object","required":["requestId"],"properties":{"requestId":{"type":"string"}}}}}}}},"503":{"description":"Request failed. Check error.code and meta.requestId.","headers":{"X-Request-Id":{"schema":{"type":"string"},"description":"Request identifier for troubleshooting."},"Cache-Control":{"schema":{"type":"string","const":"no-store"}},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Project-wide limit, when supplied by the rate limiter."},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining project requests, when supplied by the rate limiter."}},"content":{"application/json":{"schema":{"type":"object","required":["error","meta"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]}}},"meta":{"type":"object","required":["requestId"],"properties":{"requestId":{"type":"string"}}}}}}}}}}},"/accounts/{accountId}/capabilities":{"get":{"operationId":"getPublishingCapabilities","summary":"Read current publishing rules and account availability","description":"Required permissions: accounts-read.","tags":["Accounts"],"x-required-permissions":["accounts-read"],"security":[{"ApiKey":[]}],"responses":{"200":{"description":"Success","headers":{"X-Request-Id":{"schema":{"type":"string"},"description":"Request identifier for troubleshooting."},"Cache-Control":{"schema":{"type":"string","const":"no-store"}},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Project-wide limit, when supplied by the rate limiter."},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining project requests, when supplied by the rate limiter."}},"content":{"application/json":{"schema":{"type":"object","required":["data","meta"],"properties":{"data":{"$ref":"#/components/schemas/PublishingCapabilities"},"meta":{"type":"object","required":["requestId"],"properties":{"requestId":{"type":"string"}}}}}}}},"400":{"description":"Request failed. Check error.code and meta.requestId.","headers":{"X-Request-Id":{"schema":{"type":"string"},"description":"Request identifier for troubleshooting."},"Cache-Control":{"schema":{"type":"string","const":"no-store"}},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Project-wide limit, when supplied by the rate limiter."},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining project requests, when supplied by the rate limiter."}},"content":{"application/json":{"schema":{"type":"object","required":["error","meta"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]}}},"meta":{"type":"object","required":["requestId"],"properties":{"requestId":{"type":"string"}}}}}}}},"401":{"description":"Request failed. Check error.code and meta.requestId.","headers":{"X-Request-Id":{"schema":{"type":"string"},"description":"Request identifier for troubleshooting."},"Cache-Control":{"schema":{"type":"string","const":"no-store"}},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Project-wide limit, when supplied by the rate limiter."},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining project requests, when supplied by the rate limiter."}},"content":{"application/json":{"schema":{"type":"object","required":["error","meta"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]}}},"meta":{"type":"object","required":["requestId"],"properties":{"requestId":{"type":"string"}}}}}}}},"403":{"description":"Request failed. Check error.code and meta.requestId.","headers":{"X-Request-Id":{"schema":{"type":"string"},"description":"Request identifier for troubleshooting."},"Cache-Control":{"schema":{"type":"string","const":"no-store"}},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Project-wide limit, when supplied by the rate limiter."},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining project requests, when supplied by the rate limiter."}},"content":{"application/json":{"schema":{"type":"object","required":["error","meta"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]}}},"meta":{"type":"object","required":["requestId"],"properties":{"requestId":{"type":"string"}}}}}}}},"404":{"description":"Request failed. Check error.code and meta.requestId.","headers":{"X-Request-Id":{"schema":{"type":"string"},"description":"Request identifier for troubleshooting."},"Cache-Control":{"schema":{"type":"string","const":"no-store"}},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Project-wide limit, when supplied by the rate limiter."},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining project requests, when supplied by the rate limiter."}},"content":{"application/json":{"schema":{"type":"object","required":["error","meta"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]}}},"meta":{"type":"object","required":["requestId"],"properties":{"requestId":{"type":"string"}}}}}}}},"409":{"description":"Request failed. Check error.code and meta.requestId.","headers":{"X-Request-Id":{"schema":{"type":"string"},"description":"Request identifier for troubleshooting."},"Cache-Control":{"schema":{"type":"string","const":"no-store"}},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Project-wide limit, when supplied by the rate limiter."},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining project requests, when supplied by the rate limiter."},"Retry-After":{"schema":{"type":"integer"},"description":"Present for idempotency_in_progress; wait before retrying."}},"content":{"application/json":{"schema":{"type":"object","required":["error","meta"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]}}},"meta":{"type":"object","required":["requestId"],"properties":{"requestId":{"type":"string"}}}}}}}},"413":{"description":"JSON body exceeds the 100 KB limit. This can be rejected before the controller, so the public error envelope is not guaranteed."},"429":{"description":"Request failed. Check error.code and meta.requestId.","headers":{"X-Request-Id":{"schema":{"type":"string"},"description":"Request identifier for troubleshooting."},"Cache-Control":{"schema":{"type":"string","const":"no-store"}},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Project-wide limit, when supplied by the rate limiter."},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining project requests, when supplied by the rate limiter."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying."}},"content":{"application/json":{"schema":{"type":"object","required":["error","meta"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]}}},"meta":{"type":"object","required":["requestId"],"properties":{"requestId":{"type":"string"}}}}}}}},"500":{"description":"Request failed. Check error.code and meta.requestId.","headers":{"X-Request-Id":{"schema":{"type":"string"},"description":"Request identifier for troubleshooting."},"Cache-Control":{"schema":{"type":"string","const":"no-store"}},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Project-wide limit, when supplied by the rate limiter."},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining project requests, when supplied by the rate limiter."}},"content":{"application/json":{"schema":{"type":"object","required":["error","meta"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]}}},"meta":{"type":"object","required":["requestId"],"properties":{"requestId":{"type":"string"}}}}}}}},"503":{"description":"Request failed. Check error.code and meta.requestId.","headers":{"X-Request-Id":{"schema":{"type":"string"},"description":"Request identifier for troubleshooting."},"Cache-Control":{"schema":{"type":"string","const":"no-store"}},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Project-wide limit, when supplied by the rate limiter."},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining project requests, when supplied by the rate limiter."}},"content":{"application/json":{"schema":{"type":"object","required":["error","meta"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]}}},"meta":{"type":"object","required":["requestId"],"properties":{"requestId":{"type":"string"}}}}}}}}},"parameters":[{"name":"accountId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}]}},"/analytics/capabilities":{"get":{"operationId":"getAnalyticsCapabilities","summary":"List supported analytics metrics and platforms","description":"Required permissions: analytics-read. Reads stored measurements only; never triggers collection. Counters are decimal strings; null means missing data, not zero. generatedAt is the response time, collectedAt is the measurement time. enabled indicates whether a platform currently supports analytics collection.","tags":["Analytics"],"x-required-permissions":["analytics-read"],"security":[{"ApiKey":[]}],"responses":{"200":{"description":"Stored analytics","headers":{"X-Request-Id":{"schema":{"type":"string"},"description":"Request identifier for troubleshooting."},"Cache-Control":{"schema":{"type":"string","const":"no-store"}},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Project-wide limit, when supplied by the rate limiter."},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining project requests, when supplied by the rate limiter."}},"content":{"application/json":{"schema":{"type":"object","required":["data","meta"],"properties":{"data":{"$ref":"#/components/schemas/AnalyticsCapabilities"},"meta":{"type":"object","required":["requestId"],"properties":{"requestId":{"type":"string"}}}}}}}},"400":{"description":"Request failed. Check error.code and meta.requestId.","headers":{"X-Request-Id":{"schema":{"type":"string"},"description":"Request identifier for troubleshooting."},"Cache-Control":{"schema":{"type":"string","const":"no-store"}},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Project-wide limit, when supplied by the rate limiter."},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining project requests, when supplied by the rate limiter."}},"content":{"application/json":{"schema":{"type":"object","required":["error","meta"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]}}},"meta":{"type":"object","required":["requestId"],"properties":{"requestId":{"type":"string"}}}}}}}},"401":{"description":"Request failed. Check error.code and meta.requestId.","headers":{"X-Request-Id":{"schema":{"type":"string"},"description":"Request identifier for troubleshooting."},"Cache-Control":{"schema":{"type":"string","const":"no-store"}},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Project-wide limit, when supplied by the rate limiter."},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining project requests, when supplied by the rate limiter."}},"content":{"application/json":{"schema":{"type":"object","required":["error","meta"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]}}},"meta":{"type":"object","required":["requestId"],"properties":{"requestId":{"type":"string"}}}}}}}},"403":{"description":"Request failed. Check error.code and meta.requestId.","headers":{"X-Request-Id":{"schema":{"type":"string"},"description":"Request identifier for troubleshooting."},"Cache-Control":{"schema":{"type":"string","const":"no-store"}},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Project-wide limit, when supplied by the rate limiter."},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining project requests, when supplied by the rate limiter."}},"content":{"application/json":{"schema":{"type":"object","required":["error","meta"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]}}},"meta":{"type":"object","required":["requestId"],"properties":{"requestId":{"type":"string"}}}}}}}},"404":{"description":"Request failed. Check error.code and meta.requestId.","headers":{"X-Request-Id":{"schema":{"type":"string"},"description":"Request identifier for troubleshooting."},"Cache-Control":{"schema":{"type":"string","const":"no-store"}},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Project-wide limit, when supplied by the rate limiter."},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining project requests, when supplied by the rate limiter."}},"content":{"application/json":{"schema":{"type":"object","required":["error","meta"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]}}},"meta":{"type":"object","required":["requestId"],"properties":{"requestId":{"type":"string"}}}}}}}},"409":{"description":"Request failed. Check error.code and meta.requestId.","headers":{"X-Request-Id":{"schema":{"type":"string"},"description":"Request identifier for troubleshooting."},"Cache-Control":{"schema":{"type":"string","const":"no-store"}},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Project-wide limit, when supplied by the rate limiter."},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining project requests, when supplied by the rate limiter."},"Retry-After":{"schema":{"type":"integer"},"description":"Present for idempotency_in_progress; wait before retrying."}},"content":{"application/json":{"schema":{"type":"object","required":["error","meta"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]}}},"meta":{"type":"object","required":["requestId"],"properties":{"requestId":{"type":"string"}}}}}}}},"413":{"description":"JSON body exceeds the 100 KB limit. This can be rejected before the controller, so the public error envelope is not guaranteed."},"429":{"description":"Request failed. Check error.code and meta.requestId.","headers":{"X-Request-Id":{"schema":{"type":"string"},"description":"Request identifier for troubleshooting."},"Cache-Control":{"schema":{"type":"string","const":"no-store"}},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Project-wide limit, when supplied by the rate limiter."},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining project requests, when supplied by the rate limiter."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying."}},"content":{"application/json":{"schema":{"type":"object","required":["error","meta"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]}}},"meta":{"type":"object","required":["requestId"],"properties":{"requestId":{"type":"string"}}}}}}}},"500":{"description":"Request failed. Check error.code and meta.requestId.","headers":{"X-Request-Id":{"schema":{"type":"string"},"description":"Request identifier for troubleshooting."},"Cache-Control":{"schema":{"type":"string","const":"no-store"}},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Project-wide limit, when supplied by the rate limiter."},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining project requests, when supplied by the rate limiter."}},"content":{"application/json":{"schema":{"type":"object","required":["error","meta"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]}}},"meta":{"type":"object","required":["requestId"],"properties":{"requestId":{"type":"string"}}}}}}}},"503":{"description":"Request failed. Check error.code and meta.requestId.","headers":{"X-Request-Id":{"schema":{"type":"string"},"description":"Request identifier for troubleshooting."},"Cache-Control":{"schema":{"type":"string","const":"no-store"}},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Project-wide limit, when supplied by the rate limiter."},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining project requests, when supplied by the rate limiter."}},"content":{"application/json":{"schema":{"type":"object","required":["error","meta"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]}}},"meta":{"type":"object","required":["requestId"],"properties":{"requestId":{"type":"string"}}}}}}}}}}},"/analytics/report":{"get":{"operationId":"getAnalyticsReport","summary":"Read account analytics report","description":"Required permissions: analytics-read. Reads stored measurements only; never triggers collection. Counters are decimal strings; null means missing data, not zero. generatedAt is the response time, collectedAt is the measurement time. Optionally filter by accountId and platform. Unsupported or disabled platforms return 400. Disconnected accounts are excluded; needs_reauth accounts retain stored history. Report freshness uses the oldest latest daily collection in the selected range; use accountsObserved/accountsTotal to detect incomplete coverage. partial and comparisonReason explain missing coverage. Followers value is the last observed total; its chart points are daily changes. Other metrics are daily activity totals.","tags":["Analytics"],"x-required-permissions":["analytics-read"],"security":[{"ApiKey":[]}],"responses":{"200":{"description":"Stored analytics","headers":{"X-Request-Id":{"schema":{"type":"string"},"description":"Request identifier for troubleshooting."},"Cache-Control":{"schema":{"type":"string","const":"no-store"}},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Project-wide limit, when supplied by the rate limiter."},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining project requests, when supplied by the rate limiter."}},"content":{"application/json":{"schema":{"type":"object","required":["data","meta"],"properties":{"data":{"$ref":"#/components/schemas/AnalyticsReport"},"meta":{"type":"object","required":["requestId"],"properties":{"requestId":{"type":"string"}}}}}}}},"400":{"description":"Request failed. Check error.code and meta.requestId.","headers":{"X-Request-Id":{"schema":{"type":"string"},"description":"Request identifier for troubleshooting."},"Cache-Control":{"schema":{"type":"string","const":"no-store"}},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Project-wide limit, when supplied by the rate limiter."},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining project requests, when supplied by the rate limiter."}},"content":{"application/json":{"schema":{"type":"object","required":["error","meta"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]}}},"meta":{"type":"object","required":["requestId"],"properties":{"requestId":{"type":"string"}}}}}}}},"401":{"description":"Request failed. Check error.code and meta.requestId.","headers":{"X-Request-Id":{"schema":{"type":"string"},"description":"Request identifier for troubleshooting."},"Cache-Control":{"schema":{"type":"string","const":"no-store"}},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Project-wide limit, when supplied by the rate limiter."},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining project requests, when supplied by the rate limiter."}},"content":{"application/json":{"schema":{"type":"object","required":["error","meta"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]}}},"meta":{"type":"object","required":["requestId"],"properties":{"requestId":{"type":"string"}}}}}}}},"403":{"description":"Request failed. Check error.code and meta.requestId.","headers":{"X-Request-Id":{"schema":{"type":"string"},"description":"Request identifier for troubleshooting."},"Cache-Control":{"schema":{"type":"string","const":"no-store"}},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Project-wide limit, when supplied by the rate limiter."},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining project requests, when supplied by the rate limiter."}},"content":{"application/json":{"schema":{"type":"object","required":["error","meta"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]}}},"meta":{"type":"object","required":["requestId"],"properties":{"requestId":{"type":"string"}}}}}}}},"404":{"description":"Request failed. Check error.code and meta.requestId.","headers":{"X-Request-Id":{"schema":{"type":"string"},"description":"Request identifier for troubleshooting."},"Cache-Control":{"schema":{"type":"string","const":"no-store"}},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Project-wide limit, when supplied by the rate limiter."},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining project requests, when supplied by the rate limiter."}},"content":{"application/json":{"schema":{"type":"object","required":["error","meta"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]}}},"meta":{"type":"object","required":["requestId"],"properties":{"requestId":{"type":"string"}}}}}}}},"409":{"description":"Request failed. Check error.code and meta.requestId.","headers":{"X-Request-Id":{"schema":{"type":"string"},"description":"Request identifier for troubleshooting."},"Cache-Control":{"schema":{"type":"string","const":"no-store"}},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Project-wide limit, when supplied by the rate limiter."},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining project requests, when supplied by the rate limiter."},"Retry-After":{"schema":{"type":"integer"},"description":"Present for idempotency_in_progress; wait before retrying."}},"content":{"application/json":{"schema":{"type":"object","required":["error","meta"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]}}},"meta":{"type":"object","required":["requestId"],"properties":{"requestId":{"type":"string"}}}}}}}},"413":{"description":"JSON body exceeds the 100 KB limit. This can be rejected before the controller, so the public error envelope is not guaranteed."},"429":{"description":"Request failed. Check error.code and meta.requestId.","headers":{"X-Request-Id":{"schema":{"type":"string"},"description":"Request identifier for troubleshooting."},"Cache-Control":{"schema":{"type":"string","const":"no-store"}},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Project-wide limit, when supplied by the rate limiter."},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining project requests, when supplied by the rate limiter."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying."}},"content":{"application/json":{"schema":{"type":"object","required":["error","meta"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]}}},"meta":{"type":"object","required":["requestId"],"properties":{"requestId":{"type":"string"}}}}}}}},"500":{"description":"Request failed. Check error.code and meta.requestId.","headers":{"X-Request-Id":{"schema":{"type":"string"},"description":"Request identifier for troubleshooting."},"Cache-Control":{"schema":{"type":"string","const":"no-store"}},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Project-wide limit, when supplied by the rate limiter."},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining project requests, when supplied by the rate limiter."}},"content":{"application/json":{"schema":{"type":"object","required":["error","meta"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]}}},"meta":{"type":"object","required":["requestId"],"properties":{"requestId":{"type":"string"}}}}}}}},"503":{"description":"Request failed. Check error.code and meta.requestId.","headers":{"X-Request-Id":{"schema":{"type":"string"},"description":"Request identifier for troubleshooting."},"Cache-Control":{"schema":{"type":"string","const":"no-store"}},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Project-wide limit, when supplied by the rate limiter."},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining project requests, when supplied by the rate limiter."}},"content":{"application/json":{"schema":{"type":"object","required":["error","meta"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]}}},"meta":{"type":"object","required":["requestId"],"properties":{"requestId":{"type":"string"}}}}}}}}},"parameters":[{"name":"from","in":"query","required":true,"description":"Inclusive UTC date. Both dates are required; at most 366 days.","schema":{"type":"string","format":"date"}},{"name":"to","in":"query","required":true,"description":"Inclusive UTC date. Both dates are required; at most 366 days.","schema":{"type":"string","format":"date"}},{"name":"accountId","in":"query","schema":{"type":"string","format":"uuid"}},{"name":"platform","in":"query","schema":{"type":"string","enum":["instagram","facebook","youtube","tiktok"]}}]}},"/analytics/accounts/{accountId}":{"get":{"operationId":"getAccountAnalytics","summary":"Read account counters and daily analytics","description":"Required permissions: analytics-read. Reads stored measurements only; never triggers collection. Counters are decimal strings; null means missing data, not zero. generatedAt is the response time, collectedAt is the measurement time. Account counters are the latest stored totals, regardless of date range. Daily analytics use the requested inclusive UTC range. Follower observations also include the previous day as a comparison baseline. Another project’s account returns 404.","tags":["Analytics"],"x-required-permissions":["analytics-read"],"security":[{"ApiKey":[]}],"responses":{"200":{"description":"Stored analytics","headers":{"X-Request-Id":{"schema":{"type":"string"},"description":"Request identifier for troubleshooting."},"Cache-Control":{"schema":{"type":"string","const":"no-store"}},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Project-wide limit, when supplied by the rate limiter."},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining project requests, when supplied by the rate limiter."}},"content":{"application/json":{"schema":{"type":"object","required":["data","meta"],"properties":{"data":{"$ref":"#/components/schemas/AnalyticsAccount"},"meta":{"type":"object","required":["requestId"],"properties":{"requestId":{"type":"string"}}}}}}}},"400":{"description":"Request failed. Check error.code and meta.requestId.","headers":{"X-Request-Id":{"schema":{"type":"string"},"description":"Request identifier for troubleshooting."},"Cache-Control":{"schema":{"type":"string","const":"no-store"}},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Project-wide limit, when supplied by the rate limiter."},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining project requests, when supplied by the rate limiter."}},"content":{"application/json":{"schema":{"type":"object","required":["error","meta"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]}}},"meta":{"type":"object","required":["requestId"],"properties":{"requestId":{"type":"string"}}}}}}}},"401":{"description":"Request failed. Check error.code and meta.requestId.","headers":{"X-Request-Id":{"schema":{"type":"string"},"description":"Request identifier for troubleshooting."},"Cache-Control":{"schema":{"type":"string","const":"no-store"}},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Project-wide limit, when supplied by the rate limiter."},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining project requests, when supplied by the rate limiter."}},"content":{"application/json":{"schema":{"type":"object","required":["error","meta"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]}}},"meta":{"type":"object","required":["requestId"],"properties":{"requestId":{"type":"string"}}}}}}}},"403":{"description":"Request failed. Check error.code and meta.requestId.","headers":{"X-Request-Id":{"schema":{"type":"string"},"description":"Request identifier for troubleshooting."},"Cache-Control":{"schema":{"type":"string","const":"no-store"}},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Project-wide limit, when supplied by the rate limiter."},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining project requests, when supplied by the rate limiter."}},"content":{"application/json":{"schema":{"type":"object","required":["error","meta"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]}}},"meta":{"type":"object","required":["requestId"],"properties":{"requestId":{"type":"string"}}}}}}}},"404":{"description":"Request failed. Check error.code and meta.requestId.","headers":{"X-Request-Id":{"schema":{"type":"string"},"description":"Request identifier for troubleshooting."},"Cache-Control":{"schema":{"type":"string","const":"no-store"}},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Project-wide limit, when supplied by the rate limiter."},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining project requests, when supplied by the rate limiter."}},"content":{"application/json":{"schema":{"type":"object","required":["error","meta"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]}}},"meta":{"type":"object","required":["requestId"],"properties":{"requestId":{"type":"string"}}}}}}}},"409":{"description":"Request failed. Check error.code and meta.requestId.","headers":{"X-Request-Id":{"schema":{"type":"string"},"description":"Request identifier for troubleshooting."},"Cache-Control":{"schema":{"type":"string","const":"no-store"}},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Project-wide limit, when supplied by the rate limiter."},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining project requests, when supplied by the rate limiter."},"Retry-After":{"schema":{"type":"integer"},"description":"Present for idempotency_in_progress; wait before retrying."}},"content":{"application/json":{"schema":{"type":"object","required":["error","meta"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]}}},"meta":{"type":"object","required":["requestId"],"properties":{"requestId":{"type":"string"}}}}}}}},"413":{"description":"JSON body exceeds the 100 KB limit. This can be rejected before the controller, so the public error envelope is not guaranteed."},"429":{"description":"Request failed. Check error.code and meta.requestId.","headers":{"X-Request-Id":{"schema":{"type":"string"},"description":"Request identifier for troubleshooting."},"Cache-Control":{"schema":{"type":"string","const":"no-store"}},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Project-wide limit, when supplied by the rate limiter."},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining project requests, when supplied by the rate limiter."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying."}},"content":{"application/json":{"schema":{"type":"object","required":["error","meta"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]}}},"meta":{"type":"object","required":["requestId"],"properties":{"requestId":{"type":"string"}}}}}}}},"500":{"description":"Request failed. Check error.code and meta.requestId.","headers":{"X-Request-Id":{"schema":{"type":"string"},"description":"Request identifier for troubleshooting."},"Cache-Control":{"schema":{"type":"string","const":"no-store"}},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Project-wide limit, when supplied by the rate limiter."},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining project requests, when supplied by the rate limiter."}},"content":{"application/json":{"schema":{"type":"object","required":["error","meta"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]}}},"meta":{"type":"object","required":["requestId"],"properties":{"requestId":{"type":"string"}}}}}}}},"503":{"description":"Request failed. Check error.code and meta.requestId.","headers":{"X-Request-Id":{"schema":{"type":"string"},"description":"Request identifier for troubleshooting."},"Cache-Control":{"schema":{"type":"string","const":"no-store"}},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Project-wide limit, when supplied by the rate limiter."},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining project requests, when supplied by the rate limiter."}},"content":{"application/json":{"schema":{"type":"object","required":["error","meta"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]}}},"meta":{"type":"object","required":["requestId"],"properties":{"requestId":{"type":"string"}}}}}}}}},"parameters":[{"name":"accountId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"from","in":"query","required":true,"description":"Inclusive UTC date. Both dates are required; at most 366 days.","schema":{"type":"string","format":"date"}},{"name":"to","in":"query","required":true,"description":"Inclusive UTC date. Both dates are required; at most 366 days.","schema":{"type":"string","format":"date"}}]}},"/analytics/posts":{"get":{"operationId":"listPostAnalytics","summary":"List published post performance","description":"Required permissions: analytics-read. Reads stored measurements only; never triggers collection. Counters are decimal strings; null means missing data, not zero. generatedAt is the response time, collectedAt is the measurement time. Dates filter publication time, not metric collection time; values are latest lifetime counters. Use days (7, 30 or 90; default 30), or both from/to (at most 366 days). days starts at UTC midnight that many days ago. Send nextCursor as cursor with unchanged filters. Each item represents one post/account pair.","tags":["Analytics"],"x-required-permissions":["analytics-read"],"security":[{"ApiKey":[]}],"responses":{"200":{"description":"Stored analytics","headers":{"X-Request-Id":{"schema":{"type":"string"},"description":"Request identifier for troubleshooting."},"Cache-Control":{"schema":{"type":"string","const":"no-store"}},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Project-wide limit, when supplied by the rate limiter."},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining project requests, when supplied by the rate limiter."}},"content":{"application/json":{"schema":{"type":"object","required":["data","meta"],"properties":{"data":{"$ref":"#/components/schemas/AnalyticsPosts"},"meta":{"type":"object","required":["requestId"],"properties":{"requestId":{"type":"string"}}}}}}}},"400":{"description":"Request failed. Check error.code and meta.requestId.","headers":{"X-Request-Id":{"schema":{"type":"string"},"description":"Request identifier for troubleshooting."},"Cache-Control":{"schema":{"type":"string","const":"no-store"}},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Project-wide limit, when supplied by the rate limiter."},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining project requests, when supplied by the rate limiter."}},"content":{"application/json":{"schema":{"type":"object","required":["error","meta"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]}}},"meta":{"type":"object","required":["requestId"],"properties":{"requestId":{"type":"string"}}}}}}}},"401":{"description":"Request failed. Check error.code and meta.requestId.","headers":{"X-Request-Id":{"schema":{"type":"string"},"description":"Request identifier for troubleshooting."},"Cache-Control":{"schema":{"type":"string","const":"no-store"}},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Project-wide limit, when supplied by the rate limiter."},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining project requests, when supplied by the rate limiter."}},"content":{"application/json":{"schema":{"type":"object","required":["error","meta"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]}}},"meta":{"type":"object","required":["requestId"],"properties":{"requestId":{"type":"string"}}}}}}}},"403":{"description":"Request failed. Check error.code and meta.requestId.","headers":{"X-Request-Id":{"schema":{"type":"string"},"description":"Request identifier for troubleshooting."},"Cache-Control":{"schema":{"type":"string","const":"no-store"}},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Project-wide limit, when supplied by the rate limiter."},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining project requests, when supplied by the rate limiter."}},"content":{"application/json":{"schema":{"type":"object","required":["error","meta"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]}}},"meta":{"type":"object","required":["requestId"],"properties":{"requestId":{"type":"string"}}}}}}}},"404":{"description":"Request failed. Check error.code and meta.requestId.","headers":{"X-Request-Id":{"schema":{"type":"string"},"description":"Request identifier for troubleshooting."},"Cache-Control":{"schema":{"type":"string","const":"no-store"}},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Project-wide limit, when supplied by the rate limiter."},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining project requests, when supplied by the rate limiter."}},"content":{"application/json":{"schema":{"type":"object","required":["error","meta"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]}}},"meta":{"type":"object","required":["requestId"],"properties":{"requestId":{"type":"string"}}}}}}}},"409":{"description":"Request failed. Check error.code and meta.requestId.","headers":{"X-Request-Id":{"schema":{"type":"string"},"description":"Request identifier for troubleshooting."},"Cache-Control":{"schema":{"type":"string","const":"no-store"}},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Project-wide limit, when supplied by the rate limiter."},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining project requests, when supplied by the rate limiter."},"Retry-After":{"schema":{"type":"integer"},"description":"Present for idempotency_in_progress; wait before retrying."}},"content":{"application/json":{"schema":{"type":"object","required":["error","meta"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]}}},"meta":{"type":"object","required":["requestId"],"properties":{"requestId":{"type":"string"}}}}}}}},"413":{"description":"JSON body exceeds the 100 KB limit. This can be rejected before the controller, so the public error envelope is not guaranteed."},"429":{"description":"Request failed. Check error.code and meta.requestId.","headers":{"X-Request-Id":{"schema":{"type":"string"},"description":"Request identifier for troubleshooting."},"Cache-Control":{"schema":{"type":"string","const":"no-store"}},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Project-wide limit, when supplied by the rate limiter."},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining project requests, when supplied by the rate limiter."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying."}},"content":{"application/json":{"schema":{"type":"object","required":["error","meta"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]}}},"meta":{"type":"object","required":["requestId"],"properties":{"requestId":{"type":"string"}}}}}}}},"500":{"description":"Request failed. Check error.code and meta.requestId.","headers":{"X-Request-Id":{"schema":{"type":"string"},"description":"Request identifier for troubleshooting."},"Cache-Control":{"schema":{"type":"string","const":"no-store"}},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Project-wide limit, when supplied by the rate limiter."},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining project requests, when supplied by the rate limiter."}},"content":{"application/json":{"schema":{"type":"object","required":["error","meta"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]}}},"meta":{"type":"object","required":["requestId"],"properties":{"requestId":{"type":"string"}}}}}}}},"503":{"description":"Request failed. Check error.code and meta.requestId.","headers":{"X-Request-Id":{"schema":{"type":"string"},"description":"Request identifier for troubleshooting."},"Cache-Control":{"schema":{"type":"string","const":"no-store"}},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Project-wide limit, when supplied by the rate limiter."},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining project requests, when supplied by the rate limiter."}},"content":{"application/json":{"schema":{"type":"object","required":["error","meta"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]}}},"meta":{"type":"object","required":["requestId"],"properties":{"requestId":{"type":"string"}}}}}}}}},"parameters":[{"name":"from","in":"query","required":false,"description":"Inclusive UTC date. Both dates are required; at most 366 days.","schema":{"type":"string","format":"date"}},{"name":"to","in":"query","required":false,"description":"Inclusive UTC date. Both dates are required; at most 366 days.","schema":{"type":"string","format":"date"}},{"name":"accountId","in":"query","schema":{"type":"string","format":"uuid"}},{"name":"platform","in":"query","schema":{"type":"string","enum":["instagram","facebook","youtube","tiktok"]}},{"name":"days","in":"query","schema":{"type":"integer","enum":[7,30,90],"default":30}},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":100,"default":50}},{"name":"cursor","in":"query","schema":{"type":"string","minLength":1,"maxLength":1024}}]}},"/analytics/posts/{postId}/{accountId}":{"get":{"operationId":"getPostAnalyticsHistory","summary":"Read post measurement history","description":"Required permissions: analytics-read. Reads stored measurements only; never triggers collection. Counters are decimal strings; null means missing data, not zero. generatedAt is the response time, collectedAt is the measurement time. Returns up to the latest 1000 retained observations, oldest first. Recent 30 days keep raw observations; older history uses daily closing observations. Values are cumulative counters, not interval deltas. Empty items means no measurements yet. Another project’s post/account pair returns 404.","tags":["Analytics"],"x-required-permissions":["analytics-read"],"security":[{"ApiKey":[]}],"responses":{"200":{"description":"Stored analytics","headers":{"X-Request-Id":{"schema":{"type":"string"},"description":"Request identifier for troubleshooting."},"Cache-Control":{"schema":{"type":"string","const":"no-store"}},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Project-wide limit, when supplied by the rate limiter."},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining project requests, when supplied by the rate limiter."}},"content":{"application/json":{"schema":{"type":"object","required":["data","meta"],"properties":{"data":{"$ref":"#/components/schemas/AnalyticsHistory"},"meta":{"type":"object","required":["requestId"],"properties":{"requestId":{"type":"string"}}}}}}}},"400":{"description":"Request failed. Check error.code and meta.requestId.","headers":{"X-Request-Id":{"schema":{"type":"string"},"description":"Request identifier for troubleshooting."},"Cache-Control":{"schema":{"type":"string","const":"no-store"}},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Project-wide limit, when supplied by the rate limiter."},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining project requests, when supplied by the rate limiter."}},"content":{"application/json":{"schema":{"type":"object","required":["error","meta"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]}}},"meta":{"type":"object","required":["requestId"],"properties":{"requestId":{"type":"string"}}}}}}}},"401":{"description":"Request failed. Check error.code and meta.requestId.","headers":{"X-Request-Id":{"schema":{"type":"string"},"description":"Request identifier for troubleshooting."},"Cache-Control":{"schema":{"type":"string","const":"no-store"}},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Project-wide limit, when supplied by the rate limiter."},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining project requests, when supplied by the rate limiter."}},"content":{"application/json":{"schema":{"type":"object","required":["error","meta"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]}}},"meta":{"type":"object","required":["requestId"],"properties":{"requestId":{"type":"string"}}}}}}}},"403":{"description":"Request failed. Check error.code and meta.requestId.","headers":{"X-Request-Id":{"schema":{"type":"string"},"description":"Request identifier for troubleshooting."},"Cache-Control":{"schema":{"type":"string","const":"no-store"}},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Project-wide limit, when supplied by the rate limiter."},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining project requests, when supplied by the rate limiter."}},"content":{"application/json":{"schema":{"type":"object","required":["error","meta"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]}}},"meta":{"type":"object","required":["requestId"],"properties":{"requestId":{"type":"string"}}}}}}}},"404":{"description":"Request failed. Check error.code and meta.requestId.","headers":{"X-Request-Id":{"schema":{"type":"string"},"description":"Request identifier for troubleshooting."},"Cache-Control":{"schema":{"type":"string","const":"no-store"}},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Project-wide limit, when supplied by the rate limiter."},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining project requests, when supplied by the rate limiter."}},"content":{"application/json":{"schema":{"type":"object","required":["error","meta"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]}}},"meta":{"type":"object","required":["requestId"],"properties":{"requestId":{"type":"string"}}}}}}}},"409":{"description":"Request failed. Check error.code and meta.requestId.","headers":{"X-Request-Id":{"schema":{"type":"string"},"description":"Request identifier for troubleshooting."},"Cache-Control":{"schema":{"type":"string","const":"no-store"}},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Project-wide limit, when supplied by the rate limiter."},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining project requests, when supplied by the rate limiter."},"Retry-After":{"schema":{"type":"integer"},"description":"Present for idempotency_in_progress; wait before retrying."}},"content":{"application/json":{"schema":{"type":"object","required":["error","meta"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]}}},"meta":{"type":"object","required":["requestId"],"properties":{"requestId":{"type":"string"}}}}}}}},"413":{"description":"JSON body exceeds the 100 KB limit. This can be rejected before the controller, so the public error envelope is not guaranteed."},"429":{"description":"Request failed. Check error.code and meta.requestId.","headers":{"X-Request-Id":{"schema":{"type":"string"},"description":"Request identifier for troubleshooting."},"Cache-Control":{"schema":{"type":"string","const":"no-store"}},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Project-wide limit, when supplied by the rate limiter."},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining project requests, when supplied by the rate limiter."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying."}},"content":{"application/json":{"schema":{"type":"object","required":["error","meta"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]}}},"meta":{"type":"object","required":["requestId"],"properties":{"requestId":{"type":"string"}}}}}}}},"500":{"description":"Request failed. Check error.code and meta.requestId.","headers":{"X-Request-Id":{"schema":{"type":"string"},"description":"Request identifier for troubleshooting."},"Cache-Control":{"schema":{"type":"string","const":"no-store"}},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Project-wide limit, when supplied by the rate limiter."},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining project requests, when supplied by the rate limiter."}},"content":{"application/json":{"schema":{"type":"object","required":["error","meta"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]}}},"meta":{"type":"object","required":["requestId"],"properties":{"requestId":{"type":"string"}}}}}}}},"503":{"description":"Request failed. Check error.code and meta.requestId.","headers":{"X-Request-Id":{"schema":{"type":"string"},"description":"Request identifier for troubleshooting."},"Cache-Control":{"schema":{"type":"string","const":"no-store"}},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Project-wide limit, when supplied by the rate limiter."},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining project requests, when supplied by the rate limiter."}},"content":{"application/json":{"schema":{"type":"object","required":["error","meta"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]}}},"meta":{"type":"object","required":["requestId"],"properties":{"requestId":{"type":"string"}}}}}}}}},"parameters":[{"name":"postId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"accountId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}]}},"/accounts":{"get":{"operationId":"listAccounts","summary":"List connected accounts","description":"Required permissions: accounts-read.","tags":["Accounts"],"x-required-permissions":["accounts-read"],"security":[{"ApiKey":[]}],"responses":{"200":{"description":"Success","headers":{"X-Request-Id":{"schema":{"type":"string"},"description":"Request identifier for troubleshooting."},"Cache-Control":{"schema":{"type":"string","const":"no-store"}},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Project-wide limit, when supplied by the rate limiter."},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining project requests, when supplied by the rate limiter."}},"content":{"application/json":{"schema":{"type":"object","required":["data","meta"],"properties":{"data":{"$ref":"#/components/schemas/Accounts"},"meta":{"type":"object","required":["requestId"],"properties":{"requestId":{"type":"string"}}}}}}}},"400":{"description":"Request failed. Check error.code and meta.requestId.","headers":{"X-Request-Id":{"schema":{"type":"string"},"description":"Request identifier for troubleshooting."},"Cache-Control":{"schema":{"type":"string","const":"no-store"}},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Project-wide limit, when supplied by the rate limiter."},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining project requests, when supplied by the rate limiter."}},"content":{"application/json":{"schema":{"type":"object","required":["error","meta"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]}}},"meta":{"type":"object","required":["requestId"],"properties":{"requestId":{"type":"string"}}}}}}}},"401":{"description":"Request failed. Check error.code and meta.requestId.","headers":{"X-Request-Id":{"schema":{"type":"string"},"description":"Request identifier for troubleshooting."},"Cache-Control":{"schema":{"type":"string","const":"no-store"}},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Project-wide limit, when supplied by the rate limiter."},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining project requests, when supplied by the rate limiter."}},"content":{"application/json":{"schema":{"type":"object","required":["error","meta"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]}}},"meta":{"type":"object","required":["requestId"],"properties":{"requestId":{"type":"string"}}}}}}}},"403":{"description":"Request failed. Check error.code and meta.requestId.","headers":{"X-Request-Id":{"schema":{"type":"string"},"description":"Request identifier for troubleshooting."},"Cache-Control":{"schema":{"type":"string","const":"no-store"}},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Project-wide limit, when supplied by the rate limiter."},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining project requests, when supplied by the rate limiter."}},"content":{"application/json":{"schema":{"type":"object","required":["error","meta"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]}}},"meta":{"type":"object","required":["requestId"],"properties":{"requestId":{"type":"string"}}}}}}}},"404":{"description":"Request failed. Check error.code and meta.requestId.","headers":{"X-Request-Id":{"schema":{"type":"string"},"description":"Request identifier for troubleshooting."},"Cache-Control":{"schema":{"type":"string","const":"no-store"}},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Project-wide limit, when supplied by the rate limiter."},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining project requests, when supplied by the rate limiter."}},"content":{"application/json":{"schema":{"type":"object","required":["error","meta"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]}}},"meta":{"type":"object","required":["requestId"],"properties":{"requestId":{"type":"string"}}}}}}}},"409":{"description":"Request failed. Check error.code and meta.requestId.","headers":{"X-Request-Id":{"schema":{"type":"string"},"description":"Request identifier for troubleshooting."},"Cache-Control":{"schema":{"type":"string","const":"no-store"}},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Project-wide limit, when supplied by the rate limiter."},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining project requests, when supplied by the rate limiter."},"Retry-After":{"schema":{"type":"integer"},"description":"Present for idempotency_in_progress; wait before retrying."}},"content":{"application/json":{"schema":{"type":"object","required":["error","meta"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]}}},"meta":{"type":"object","required":["requestId"],"properties":{"requestId":{"type":"string"}}}}}}}},"413":{"description":"JSON body exceeds the 100 KB limit. This can be rejected before the controller, so the public error envelope is not guaranteed."},"429":{"description":"Request failed. Check error.code and meta.requestId.","headers":{"X-Request-Id":{"schema":{"type":"string"},"description":"Request identifier for troubleshooting."},"Cache-Control":{"schema":{"type":"string","const":"no-store"}},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Project-wide limit, when supplied by the rate limiter."},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining project requests, when supplied by the rate limiter."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying."}},"content":{"application/json":{"schema":{"type":"object","required":["error","meta"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]}}},"meta":{"type":"object","required":["requestId"],"properties":{"requestId":{"type":"string"}}}}}}}},"500":{"description":"Request failed. Check error.code and meta.requestId.","headers":{"X-Request-Id":{"schema":{"type":"string"},"description":"Request identifier for troubleshooting."},"Cache-Control":{"schema":{"type":"string","const":"no-store"}},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Project-wide limit, when supplied by the rate limiter."},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining project requests, when supplied by the rate limiter."}},"content":{"application/json":{"schema":{"type":"object","required":["error","meta"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]}}},"meta":{"type":"object","required":["requestId"],"properties":{"requestId":{"type":"string"}}}}}}}},"503":{"description":"Request failed. Check error.code and meta.requestId.","headers":{"X-Request-Id":{"schema":{"type":"string"},"description":"Request identifier for troubleshooting."},"Cache-Control":{"schema":{"type":"string","const":"no-store"}},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Project-wide limit, when supplied by the rate limiter."},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining project requests, when supplied by the rate limiter."}},"content":{"application/json":{"schema":{"type":"object","required":["error","meta"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]}}},"meta":{"type":"object","required":["requestId"],"properties":{"requestId":{"type":"string"}}}}}}}}}}},"/posts":{"get":{"operationId":"listPosts","summary":"List posts","description":"Required permissions: posts-read. Returns data.items and data.nextCursor. Send nextCursor as after on the next request; the final full page may be followed by an empty page. For backward navigation send the first visible post ID as before. Use after or before, never both. Keep filters and sort unchanged. Default sort is schedule_desc; unscheduled posts come last in both schedule sorts. Creation time and ID break ties.","tags":["Posts"],"x-required-permissions":["posts-read"],"security":[{"ApiKey":[]}],"responses":{"200":{"description":"Success","headers":{"X-Request-Id":{"schema":{"type":"string"},"description":"Request identifier for troubleshooting."},"Cache-Control":{"schema":{"type":"string","const":"no-store"}},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Project-wide limit, when supplied by the rate limiter."},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining project requests, when supplied by the rate limiter."}},"content":{"application/json":{"schema":{"type":"object","required":["data","meta"],"properties":{"data":{"$ref":"#/components/schemas/PostsPage"},"meta":{"type":"object","required":["requestId"],"properties":{"requestId":{"type":"string"}}}}}}}},"400":{"description":"Request failed. Check error.code and meta.requestId.","headers":{"X-Request-Id":{"schema":{"type":"string"},"description":"Request identifier for troubleshooting."},"Cache-Control":{"schema":{"type":"string","const":"no-store"}},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Project-wide limit, when supplied by the rate limiter."},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining project requests, when supplied by the rate limiter."}},"content":{"application/json":{"schema":{"type":"object","required":["error","meta"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]}}},"meta":{"type":"object","required":["requestId"],"properties":{"requestId":{"type":"string"}}}}}}}},"401":{"description":"Request failed. Check error.code and meta.requestId.","headers":{"X-Request-Id":{"schema":{"type":"string"},"description":"Request identifier for troubleshooting."},"Cache-Control":{"schema":{"type":"string","const":"no-store"}},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Project-wide limit, when supplied by the rate limiter."},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining project requests, when supplied by the rate limiter."}},"content":{"application/json":{"schema":{"type":"object","required":["error","meta"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]}}},"meta":{"type":"object","required":["requestId"],"properties":{"requestId":{"type":"string"}}}}}}}},"403":{"description":"Request failed. Check error.code and meta.requestId.","headers":{"X-Request-Id":{"schema":{"type":"string"},"description":"Request identifier for troubleshooting."},"Cache-Control":{"schema":{"type":"string","const":"no-store"}},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Project-wide limit, when supplied by the rate limiter."},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining project requests, when supplied by the rate limiter."}},"content":{"application/json":{"schema":{"type":"object","required":["error","meta"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]}}},"meta":{"type":"object","required":["requestId"],"properties":{"requestId":{"type":"string"}}}}}}}},"404":{"description":"Request failed. Check error.code and meta.requestId.","headers":{"X-Request-Id":{"schema":{"type":"string"},"description":"Request identifier for troubleshooting."},"Cache-Control":{"schema":{"type":"string","const":"no-store"}},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Project-wide limit, when supplied by the rate limiter."},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining project requests, when supplied by the rate limiter."}},"content":{"application/json":{"schema":{"type":"object","required":["error","meta"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]}}},"meta":{"type":"object","required":["requestId"],"properties":{"requestId":{"type":"string"}}}}}}}},"409":{"description":"Request failed. Check error.code and meta.requestId.","headers":{"X-Request-Id":{"schema":{"type":"string"},"description":"Request identifier for troubleshooting."},"Cache-Control":{"schema":{"type":"string","const":"no-store"}},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Project-wide limit, when supplied by the rate limiter."},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining project requests, when supplied by the rate limiter."},"Retry-After":{"schema":{"type":"integer"},"description":"Present for idempotency_in_progress; wait before retrying."}},"content":{"application/json":{"schema":{"type":"object","required":["error","meta"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]}}},"meta":{"type":"object","required":["requestId"],"properties":{"requestId":{"type":"string"}}}}}}}},"413":{"description":"JSON body exceeds the 100 KB limit. This can be rejected before the controller, so the public error envelope is not guaranteed."},"429":{"description":"Request failed. Check error.code and meta.requestId.","headers":{"X-Request-Id":{"schema":{"type":"string"},"description":"Request identifier for troubleshooting."},"Cache-Control":{"schema":{"type":"string","const":"no-store"}},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Project-wide limit, when supplied by the rate limiter."},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining project requests, when supplied by the rate limiter."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying."}},"content":{"application/json":{"schema":{"type":"object","required":["error","meta"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]}}},"meta":{"type":"object","required":["requestId"],"properties":{"requestId":{"type":"string"}}}}}}}},"500":{"description":"Request failed. Check error.code and meta.requestId.","headers":{"X-Request-Id":{"schema":{"type":"string"},"description":"Request identifier for troubleshooting."},"Cache-Control":{"schema":{"type":"string","const":"no-store"}},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Project-wide limit, when supplied by the rate limiter."},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining project requests, when supplied by the rate limiter."}},"content":{"application/json":{"schema":{"type":"object","required":["error","meta"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]}}},"meta":{"type":"object","required":["requestId"],"properties":{"requestId":{"type":"string"}}}}}}}},"503":{"description":"Request failed. Check error.code and meta.requestId.","headers":{"X-Request-Id":{"schema":{"type":"string"},"description":"Request identifier for troubleshooting."},"Cache-Control":{"schema":{"type":"string","const":"no-store"}},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Project-wide limit, when supplied by the rate limiter."},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining project requests, when supplied by the rate limiter."}},"content":{"application/json":{"schema":{"type":"object","required":["error","meta"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]}}},"meta":{"type":"object","required":["requestId"],"properties":{"requestId":{"type":"string"}}}}}}}}},"parameters":[{"name":"status","in":"query","required":false,"schema":{"type":"string","enum":["draft","scheduled","publishing","partial","published","failed"]}},{"name":"after","in":"query","required":false,"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},{"name":"before","in":"query","required":false,"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},{"name":"sort","in":"query","required":false,"schema":{"type":"string","enum":["schedule_desc","schedule_asc","newest","oldest"],"default":"schedule_desc"}},{"name":"limit","in":"query","required":false,"schema":{"default":50,"type":"integer","minimum":1,"maximum":100}},{"name":"q","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":200}},{"name":"platform","in":"query","required":false,"schema":{"type":"string","enum":["instagram","facebook","youtube","tiktok"]}}]},"post":{"operationId":"createPost","summary":"Create a draft or scheduled post","description":"Required permissions: posts-write.","tags":["Posts"],"x-required-permissions":["posts-write"],"security":[{"ApiKey":[]}],"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"description":"Reuse for the same logical request for up to 24 hours. Concurrent retries return 409. Replays return the original data and HTTP status.","schema":{"type":"string","pattern":"^[A-Za-z0-9_.-]{1,128}$"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreatePost"}}}},"responses":{"201":{"description":"Success","headers":{"X-Request-Id":{"schema":{"type":"string"},"description":"Request identifier for troubleshooting."},"Cache-Control":{"schema":{"type":"string","const":"no-store"}},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Project-wide limit, when supplied by the rate limiter."},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining project requests, when supplied by the rate limiter."}},"content":{"application/json":{"schema":{"type":"object","required":["data","meta"],"properties":{"data":{"$ref":"#/components/schemas/Post"},"meta":{"type":"object","required":["requestId"],"properties":{"requestId":{"type":"string"}}}}}}}},"400":{"description":"Request failed. Check error.code and meta.requestId.","headers":{"X-Request-Id":{"schema":{"type":"string"},"description":"Request identifier for troubleshooting."},"Cache-Control":{"schema":{"type":"string","const":"no-store"}},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Project-wide limit, when supplied by the rate limiter."},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining project requests, when supplied by the rate limiter."}},"content":{"application/json":{"schema":{"type":"object","required":["error","meta"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]}}},"meta":{"type":"object","required":["requestId"],"properties":{"requestId":{"type":"string"}}}}}}}},"401":{"description":"Request failed. Check error.code and meta.requestId.","headers":{"X-Request-Id":{"schema":{"type":"string"},"description":"Request identifier for troubleshooting."},"Cache-Control":{"schema":{"type":"string","const":"no-store"}},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Project-wide limit, when supplied by the rate limiter."},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining project requests, when supplied by the rate limiter."}},"content":{"application/json":{"schema":{"type":"object","required":["error","meta"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]}}},"meta":{"type":"object","required":["requestId"],"properties":{"requestId":{"type":"string"}}}}}}}},"403":{"description":"Request failed. Check error.code and meta.requestId.","headers":{"X-Request-Id":{"schema":{"type":"string"},"description":"Request identifier for troubleshooting."},"Cache-Control":{"schema":{"type":"string","const":"no-store"}},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Project-wide limit, when supplied by the rate limiter."},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining project requests, when supplied by the rate limiter."}},"content":{"application/json":{"schema":{"type":"object","required":["error","meta"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]}}},"meta":{"type":"object","required":["requestId"],"properties":{"requestId":{"type":"string"}}}}}}}},"404":{"description":"Request failed. Check error.code and meta.requestId.","headers":{"X-Request-Id":{"schema":{"type":"string"},"description":"Request identifier for troubleshooting."},"Cache-Control":{"schema":{"type":"string","const":"no-store"}},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Project-wide limit, when supplied by the rate limiter."},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining project requests, when supplied by the rate limiter."}},"content":{"application/json":{"schema":{"type":"object","required":["error","meta"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]}}},"meta":{"type":"object","required":["requestId"],"properties":{"requestId":{"type":"string"}}}}}}}},"409":{"description":"Request failed. Check error.code and meta.requestId.","headers":{"X-Request-Id":{"schema":{"type":"string"},"description":"Request identifier for troubleshooting."},"Cache-Control":{"schema":{"type":"string","const":"no-store"}},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Project-wide limit, when supplied by the rate limiter."},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining project requests, when supplied by the rate limiter."},"Retry-After":{"schema":{"type":"integer"},"description":"Present for idempotency_in_progress; wait before retrying."}},"content":{"application/json":{"schema":{"type":"object","required":["error","meta"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]}}},"meta":{"type":"object","required":["requestId"],"properties":{"requestId":{"type":"string"}}}}}}}},"413":{"description":"JSON body exceeds the 100 KB limit. This can be rejected before the controller, so the public error envelope is not guaranteed."},"429":{"description":"Request failed. Check error.code and meta.requestId.","headers":{"X-Request-Id":{"schema":{"type":"string"},"description":"Request identifier for troubleshooting."},"Cache-Control":{"schema":{"type":"string","const":"no-store"}},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Project-wide limit, when supplied by the rate limiter."},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining project requests, when supplied by the rate limiter."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying."}},"content":{"application/json":{"schema":{"type":"object","required":["error","meta"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]}}},"meta":{"type":"object","required":["requestId"],"properties":{"requestId":{"type":"string"}}}}}}}},"500":{"description":"Request failed. Check error.code and meta.requestId.","headers":{"X-Request-Id":{"schema":{"type":"string"},"description":"Request identifier for troubleshooting."},"Cache-Control":{"schema":{"type":"string","const":"no-store"}},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Project-wide limit, when supplied by the rate limiter."},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining project requests, when supplied by the rate limiter."}},"content":{"application/json":{"schema":{"type":"object","required":["error","meta"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]}}},"meta":{"type":"object","required":["requestId"],"properties":{"requestId":{"type":"string"}}}}}}}},"503":{"description":"Request failed. Check error.code and meta.requestId.","headers":{"X-Request-Id":{"schema":{"type":"string"},"description":"Request identifier for troubleshooting."},"Cache-Control":{"schema":{"type":"string","const":"no-store"}},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Project-wide limit, when supplied by the rate limiter."},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining project requests, when supplied by the rate limiter."}},"content":{"application/json":{"schema":{"type":"object","required":["error","meta"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]}}},"meta":{"type":"object","required":["requestId"],"properties":{"requestId":{"type":"string"}}}}}}}}}}},"/posts/{id}":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"get":{"operationId":"getPost","summary":"Get post and per-account publishing status","description":"Required permissions: posts-read.","tags":["Posts"],"x-required-permissions":["posts-read"],"security":[{"ApiKey":[]}],"responses":{"200":{"description":"Success","headers":{"X-Request-Id":{"schema":{"type":"string"},"description":"Request identifier for troubleshooting."},"Cache-Control":{"schema":{"type":"string","const":"no-store"}},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Project-wide limit, when supplied by the rate limiter."},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining project requests, when supplied by the rate limiter."}},"content":{"application/json":{"schema":{"type":"object","required":["data","meta"],"properties":{"data":{"$ref":"#/components/schemas/Post"},"meta":{"type":"object","required":["requestId"],"properties":{"requestId":{"type":"string"}}}}}}}},"400":{"description":"Request failed. Check error.code and meta.requestId.","headers":{"X-Request-Id":{"schema":{"type":"string"},"description":"Request identifier for troubleshooting."},"Cache-Control":{"schema":{"type":"string","const":"no-store"}},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Project-wide limit, when supplied by the rate limiter."},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining project requests, when supplied by the rate limiter."}},"content":{"application/json":{"schema":{"type":"object","required":["error","meta"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]}}},"meta":{"type":"object","required":["requestId"],"properties":{"requestId":{"type":"string"}}}}}}}},"401":{"description":"Request failed. Check error.code and meta.requestId.","headers":{"X-Request-Id":{"schema":{"type":"string"},"description":"Request identifier for troubleshooting."},"Cache-Control":{"schema":{"type":"string","const":"no-store"}},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Project-wide limit, when supplied by the rate limiter."},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining project requests, when supplied by the rate limiter."}},"content":{"application/json":{"schema":{"type":"object","required":["error","meta"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]}}},"meta":{"type":"object","required":["requestId"],"properties":{"requestId":{"type":"string"}}}}}}}},"403":{"description":"Request failed. Check error.code and meta.requestId.","headers":{"X-Request-Id":{"schema":{"type":"string"},"description":"Request identifier for troubleshooting."},"Cache-Control":{"schema":{"type":"string","const":"no-store"}},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Project-wide limit, when supplied by the rate limiter."},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining project requests, when supplied by the rate limiter."}},"content":{"application/json":{"schema":{"type":"object","required":["error","meta"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]}}},"meta":{"type":"object","required":["requestId"],"properties":{"requestId":{"type":"string"}}}}}}}},"404":{"description":"Request failed. Check error.code and meta.requestId.","headers":{"X-Request-Id":{"schema":{"type":"string"},"description":"Request identifier for troubleshooting."},"Cache-Control":{"schema":{"type":"string","const":"no-store"}},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Project-wide limit, when supplied by the rate limiter."},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining project requests, when supplied by the rate limiter."}},"content":{"application/json":{"schema":{"type":"object","required":["error","meta"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]}}},"meta":{"type":"object","required":["requestId"],"properties":{"requestId":{"type":"string"}}}}}}}},"409":{"description":"Request failed. Check error.code and meta.requestId.","headers":{"X-Request-Id":{"schema":{"type":"string"},"description":"Request identifier for troubleshooting."},"Cache-Control":{"schema":{"type":"string","const":"no-store"}},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Project-wide limit, when supplied by the rate limiter."},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining project requests, when supplied by the rate limiter."},"Retry-After":{"schema":{"type":"integer"},"description":"Present for idempotency_in_progress; wait before retrying."}},"content":{"application/json":{"schema":{"type":"object","required":["error","meta"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]}}},"meta":{"type":"object","required":["requestId"],"properties":{"requestId":{"type":"string"}}}}}}}},"413":{"description":"JSON body exceeds the 100 KB limit. This can be rejected before the controller, so the public error envelope is not guaranteed."},"429":{"description":"Request failed. Check error.code and meta.requestId.","headers":{"X-Request-Id":{"schema":{"type":"string"},"description":"Request identifier for troubleshooting."},"Cache-Control":{"schema":{"type":"string","const":"no-store"}},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Project-wide limit, when supplied by the rate limiter."},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining project requests, when supplied by the rate limiter."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying."}},"content":{"application/json":{"schema":{"type":"object","required":["error","meta"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]}}},"meta":{"type":"object","required":["requestId"],"properties":{"requestId":{"type":"string"}}}}}}}},"500":{"description":"Request failed. Check error.code and meta.requestId.","headers":{"X-Request-Id":{"schema":{"type":"string"},"description":"Request identifier for troubleshooting."},"Cache-Control":{"schema":{"type":"string","const":"no-store"}},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Project-wide limit, when supplied by the rate limiter."},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining project requests, when supplied by the rate limiter."}},"content":{"application/json":{"schema":{"type":"object","required":["error","meta"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]}}},"meta":{"type":"object","required":["requestId"],"properties":{"requestId":{"type":"string"}}}}}}}},"503":{"description":"Request failed. Check error.code and meta.requestId.","headers":{"X-Request-Id":{"schema":{"type":"string"},"description":"Request identifier for troubleshooting."},"Cache-Control":{"schema":{"type":"string","const":"no-store"}},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Project-wide limit, when supplied by the rate limiter."},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining project requests, when supplied by the rate limiter."}},"content":{"application/json":{"schema":{"type":"object","required":["error","meta"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]}}},"meta":{"type":"object","required":["requestId"],"properties":{"requestId":{"type":"string"}}}}}}}}}},"patch":{"operationId":"updatePost","summary":"Edit a post","description":"Required permissions: posts-write. Editing a scheduled post or setting a non-null scheduledAt also requires posts-publish. Provide at least one field. Set scheduledAt to null to return an editable scheduled post to draft.","tags":["Posts"],"x-required-permissions":["posts-write"],"security":[{"ApiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdatePost"}}}},"responses":{"200":{"description":"Success","headers":{"X-Request-Id":{"schema":{"type":"string"},"description":"Request identifier for troubleshooting."},"Cache-Control":{"schema":{"type":"string","const":"no-store"}},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Project-wide limit, when supplied by the rate limiter."},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining project requests, when supplied by the rate limiter."}},"content":{"application/json":{"schema":{"type":"object","required":["data","meta"],"properties":{"data":{"$ref":"#/components/schemas/Post"},"meta":{"type":"object","required":["requestId"],"properties":{"requestId":{"type":"string"}}}}}}}},"400":{"description":"Request failed. Check error.code and meta.requestId.","headers":{"X-Request-Id":{"schema":{"type":"string"},"description":"Request identifier for troubleshooting."},"Cache-Control":{"schema":{"type":"string","const":"no-store"}},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Project-wide limit, when supplied by the rate limiter."},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining project requests, when supplied by the rate limiter."}},"content":{"application/json":{"schema":{"type":"object","required":["error","meta"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]}}},"meta":{"type":"object","required":["requestId"],"properties":{"requestId":{"type":"string"}}}}}}}},"401":{"description":"Request failed. Check error.code and meta.requestId.","headers":{"X-Request-Id":{"schema":{"type":"string"},"description":"Request identifier for troubleshooting."},"Cache-Control":{"schema":{"type":"string","const":"no-store"}},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Project-wide limit, when supplied by the rate limiter."},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining project requests, when supplied by the rate limiter."}},"content":{"application/json":{"schema":{"type":"object","required":["error","meta"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]}}},"meta":{"type":"object","required":["requestId"],"properties":{"requestId":{"type":"string"}}}}}}}},"403":{"description":"Request failed. Check error.code and meta.requestId.","headers":{"X-Request-Id":{"schema":{"type":"string"},"description":"Request identifier for troubleshooting."},"Cache-Control":{"schema":{"type":"string","const":"no-store"}},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Project-wide limit, when supplied by the rate limiter."},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining project requests, when supplied by the rate limiter."}},"content":{"application/json":{"schema":{"type":"object","required":["error","meta"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]}}},"meta":{"type":"object","required":["requestId"],"properties":{"requestId":{"type":"string"}}}}}}}},"404":{"description":"Request failed. Check error.code and meta.requestId.","headers":{"X-Request-Id":{"schema":{"type":"string"},"description":"Request identifier for troubleshooting."},"Cache-Control":{"schema":{"type":"string","const":"no-store"}},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Project-wide limit, when supplied by the rate limiter."},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining project requests, when supplied by the rate limiter."}},"content":{"application/json":{"schema":{"type":"object","required":["error","meta"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]}}},"meta":{"type":"object","required":["requestId"],"properties":{"requestId":{"type":"string"}}}}}}}},"409":{"description":"Request failed. Check error.code and meta.requestId.","headers":{"X-Request-Id":{"schema":{"type":"string"},"description":"Request identifier for troubleshooting."},"Cache-Control":{"schema":{"type":"string","const":"no-store"}},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Project-wide limit, when supplied by the rate limiter."},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining project requests, when supplied by the rate limiter."},"Retry-After":{"schema":{"type":"integer"},"description":"Present for idempotency_in_progress; wait before retrying."}},"content":{"application/json":{"schema":{"type":"object","required":["error","meta"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]}}},"meta":{"type":"object","required":["requestId"],"properties":{"requestId":{"type":"string"}}}}}}}},"413":{"description":"JSON body exceeds the 100 KB limit. This can be rejected before the controller, so the public error envelope is not guaranteed."},"429":{"description":"Request failed. Check error.code and meta.requestId.","headers":{"X-Request-Id":{"schema":{"type":"string"},"description":"Request identifier for troubleshooting."},"Cache-Control":{"schema":{"type":"string","const":"no-store"}},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Project-wide limit, when supplied by the rate limiter."},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining project requests, when supplied by the rate limiter."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying."}},"content":{"application/json":{"schema":{"type":"object","required":["error","meta"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]}}},"meta":{"type":"object","required":["requestId"],"properties":{"requestId":{"type":"string"}}}}}}}},"500":{"description":"Request failed. Check error.code and meta.requestId.","headers":{"X-Request-Id":{"schema":{"type":"string"},"description":"Request identifier for troubleshooting."},"Cache-Control":{"schema":{"type":"string","const":"no-store"}},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Project-wide limit, when supplied by the rate limiter."},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining project requests, when supplied by the rate limiter."}},"content":{"application/json":{"schema":{"type":"object","required":["error","meta"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]}}},"meta":{"type":"object","required":["requestId"],"properties":{"requestId":{"type":"string"}}}}}}}},"503":{"description":"Request failed. Check error.code and meta.requestId.","headers":{"X-Request-Id":{"schema":{"type":"string"},"description":"Request identifier for troubleshooting."},"Cache-Control":{"schema":{"type":"string","const":"no-store"}},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Project-wide limit, when supplied by the rate limiter."},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining project requests, when supplied by the rate limiter."}},"content":{"application/json":{"schema":{"type":"object","required":["error","meta"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]}}},"meta":{"type":"object","required":["requestId"],"properties":{"requestId":{"type":"string"}}}}}}}}}},"delete":{"operationId":"deletePost","summary":"Delete a post","description":"Required permissions: posts-delete.","tags":["Posts"],"x-required-permissions":["posts-delete"],"security":[{"ApiKey":[]}],"responses":{"200":{"description":"Success","headers":{"X-Request-Id":{"schema":{"type":"string"},"description":"Request identifier for troubleshooting."},"Cache-Control":{"schema":{"type":"string","const":"no-store"}},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Project-wide limit, when supplied by the rate limiter."},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining project requests, when supplied by the rate limiter."}},"content":{"application/json":{"schema":{"type":"object","required":["data","meta"],"properties":{"data":{"$ref":"#/components/schemas/DeletedPost"},"meta":{"type":"object","required":["requestId"],"properties":{"requestId":{"type":"string"}}}}}}}},"400":{"description":"Request failed. Check error.code and meta.requestId.","headers":{"X-Request-Id":{"schema":{"type":"string"},"description":"Request identifier for troubleshooting."},"Cache-Control":{"schema":{"type":"string","const":"no-store"}},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Project-wide limit, when supplied by the rate limiter."},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining project requests, when supplied by the rate limiter."}},"content":{"application/json":{"schema":{"type":"object","required":["error","meta"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]}}},"meta":{"type":"object","required":["requestId"],"properties":{"requestId":{"type":"string"}}}}}}}},"401":{"description":"Request failed. Check error.code and meta.requestId.","headers":{"X-Request-Id":{"schema":{"type":"string"},"description":"Request identifier for troubleshooting."},"Cache-Control":{"schema":{"type":"string","const":"no-store"}},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Project-wide limit, when supplied by the rate limiter."},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining project requests, when supplied by the rate limiter."}},"content":{"application/json":{"schema":{"type":"object","required":["error","meta"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]}}},"meta":{"type":"object","required":["requestId"],"properties":{"requestId":{"type":"string"}}}}}}}},"403":{"description":"Request failed. Check error.code and meta.requestId.","headers":{"X-Request-Id":{"schema":{"type":"string"},"description":"Request identifier for troubleshooting."},"Cache-Control":{"schema":{"type":"string","const":"no-store"}},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Project-wide limit, when supplied by the rate limiter."},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining project requests, when supplied by the rate limiter."}},"content":{"application/json":{"schema":{"type":"object","required":["error","meta"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]}}},"meta":{"type":"object","required":["requestId"],"properties":{"requestId":{"type":"string"}}}}}}}},"404":{"description":"Request failed. Check error.code and meta.requestId.","headers":{"X-Request-Id":{"schema":{"type":"string"},"description":"Request identifier for troubleshooting."},"Cache-Control":{"schema":{"type":"string","const":"no-store"}},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Project-wide limit, when supplied by the rate limiter."},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining project requests, when supplied by the rate limiter."}},"content":{"application/json":{"schema":{"type":"object","required":["error","meta"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]}}},"meta":{"type":"object","required":["requestId"],"properties":{"requestId":{"type":"string"}}}}}}}},"409":{"description":"Request failed. Check error.code and meta.requestId.","headers":{"X-Request-Id":{"schema":{"type":"string"},"description":"Request identifier for troubleshooting."},"Cache-Control":{"schema":{"type":"string","const":"no-store"}},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Project-wide limit, when supplied by the rate limiter."},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining project requests, when supplied by the rate limiter."},"Retry-After":{"schema":{"type":"integer"},"description":"Present for idempotency_in_progress; wait before retrying."}},"content":{"application/json":{"schema":{"type":"object","required":["error","meta"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]}}},"meta":{"type":"object","required":["requestId"],"properties":{"requestId":{"type":"string"}}}}}}}},"413":{"description":"JSON body exceeds the 100 KB limit. This can be rejected before the controller, so the public error envelope is not guaranteed."},"429":{"description":"Request failed. Check error.code and meta.requestId.","headers":{"X-Request-Id":{"schema":{"type":"string"},"description":"Request identifier for troubleshooting."},"Cache-Control":{"schema":{"type":"string","const":"no-store"}},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Project-wide limit, when supplied by the rate limiter."},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining project requests, when supplied by the rate limiter."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying."}},"content":{"application/json":{"schema":{"type":"object","required":["error","meta"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]}}},"meta":{"type":"object","required":["requestId"],"properties":{"requestId":{"type":"string"}}}}}}}},"500":{"description":"Request failed. Check error.code and meta.requestId.","headers":{"X-Request-Id":{"schema":{"type":"string"},"description":"Request identifier for troubleshooting."},"Cache-Control":{"schema":{"type":"string","const":"no-store"}},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Project-wide limit, when supplied by the rate limiter."},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining project requests, when supplied by the rate limiter."}},"content":{"application/json":{"schema":{"type":"object","required":["error","meta"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]}}},"meta":{"type":"object","required":["requestId"],"properties":{"requestId":{"type":"string"}}}}}}}},"503":{"description":"Request failed. Check error.code and meta.requestId.","headers":{"X-Request-Id":{"schema":{"type":"string"},"description":"Request identifier for troubleshooting."},"Cache-Control":{"schema":{"type":"string","const":"no-store"}},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Project-wide limit, when supplied by the rate limiter."},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining project requests, when supplied by the rate limiter."}},"content":{"application/json":{"schema":{"type":"object","required":["error","meta"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]}}},"meta":{"type":"object","required":["requestId"],"properties":{"requestId":{"type":"string"}}}}}}}}}}},"/posts/{id}/publish":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"post":{"operationId":"publishPost","summary":"Request immediate publication","description":"Required permissions: posts-publish.","tags":["Posts"],"x-required-permissions":["posts-publish"],"security":[{"ApiKey":[]}],"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"description":"Reuse for the same logical request for up to 24 hours. Concurrent retries return 409. Replays return the original data and HTTP status.","schema":{"type":"string","pattern":"^[A-Za-z0-9_.-]{1,128}$"}}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Publish"}}}},"responses":{"202":{"description":"Accepted for asynchronous publishing; poll GET /posts/{id}.","headers":{"X-Request-Id":{"schema":{"type":"string"},"description":"Request identifier for troubleshooting."},"Cache-Control":{"schema":{"type":"string","const":"no-store"}},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Project-wide limit, when supplied by the rate limiter."},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining project requests, when supplied by the rate limiter."}},"content":{"application/json":{"schema":{"type":"object","required":["data","meta"],"properties":{"data":{"$ref":"#/components/schemas/Publication"},"meta":{"type":"object","required":["requestId"],"properties":{"requestId":{"type":"string"}}}}}}}},"400":{"description":"Request failed. Check error.code and meta.requestId.","headers":{"X-Request-Id":{"schema":{"type":"string"},"description":"Request identifier for troubleshooting."},"Cache-Control":{"schema":{"type":"string","const":"no-store"}},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Project-wide limit, when supplied by the rate limiter."},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining project requests, when supplied by the rate limiter."}},"content":{"application/json":{"schema":{"type":"object","required":["error","meta"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]}}},"meta":{"type":"object","required":["requestId"],"properties":{"requestId":{"type":"string"}}}}}}}},"401":{"description":"Request failed. Check error.code and meta.requestId.","headers":{"X-Request-Id":{"schema":{"type":"string"},"description":"Request identifier for troubleshooting."},"Cache-Control":{"schema":{"type":"string","const":"no-store"}},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Project-wide limit, when supplied by the rate limiter."},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining project requests, when supplied by the rate limiter."}},"content":{"application/json":{"schema":{"type":"object","required":["error","meta"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]}}},"meta":{"type":"object","required":["requestId"],"properties":{"requestId":{"type":"string"}}}}}}}},"403":{"description":"Request failed. Check error.code and meta.requestId.","headers":{"X-Request-Id":{"schema":{"type":"string"},"description":"Request identifier for troubleshooting."},"Cache-Control":{"schema":{"type":"string","const":"no-store"}},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Project-wide limit, when supplied by the rate limiter."},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining project requests, when supplied by the rate limiter."}},"content":{"application/json":{"schema":{"type":"object","required":["error","meta"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]}}},"meta":{"type":"object","required":["requestId"],"properties":{"requestId":{"type":"string"}}}}}}}},"404":{"description":"Request failed. Check error.code and meta.requestId.","headers":{"X-Request-Id":{"schema":{"type":"string"},"description":"Request identifier for troubleshooting."},"Cache-Control":{"schema":{"type":"string","const":"no-store"}},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Project-wide limit, when supplied by the rate limiter."},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining project requests, when supplied by the rate limiter."}},"content":{"application/json":{"schema":{"type":"object","required":["error","meta"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]}}},"meta":{"type":"object","required":["requestId"],"properties":{"requestId":{"type":"string"}}}}}}}},"409":{"description":"Request failed. Check error.code and meta.requestId.","headers":{"X-Request-Id":{"schema":{"type":"string"},"description":"Request identifier for troubleshooting."},"Cache-Control":{"schema":{"type":"string","const":"no-store"}},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Project-wide limit, when supplied by the rate limiter."},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining project requests, when supplied by the rate limiter."},"Retry-After":{"schema":{"type":"integer"},"description":"Present for idempotency_in_progress; wait before retrying."}},"content":{"application/json":{"schema":{"type":"object","required":["error","meta"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]}}},"meta":{"type":"object","required":["requestId"],"properties":{"requestId":{"type":"string"}}}}}}}},"413":{"description":"JSON body exceeds the 100 KB limit. This can be rejected before the controller, so the public error envelope is not guaranteed."},"429":{"description":"Request failed. Check error.code and meta.requestId.","headers":{"X-Request-Id":{"schema":{"type":"string"},"description":"Request identifier for troubleshooting."},"Cache-Control":{"schema":{"type":"string","const":"no-store"}},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Project-wide limit, when supplied by the rate limiter."},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining project requests, when supplied by the rate limiter."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying."}},"content":{"application/json":{"schema":{"type":"object","required":["error","meta"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]}}},"meta":{"type":"object","required":["requestId"],"properties":{"requestId":{"type":"string"}}}}}}}},"500":{"description":"Request failed. Check error.code and meta.requestId.","headers":{"X-Request-Id":{"schema":{"type":"string"},"description":"Request identifier for troubleshooting."},"Cache-Control":{"schema":{"type":"string","const":"no-store"}},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Project-wide limit, when supplied by the rate limiter."},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining project requests, when supplied by the rate limiter."}},"content":{"application/json":{"schema":{"type":"object","required":["error","meta"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]}}},"meta":{"type":"object","required":["requestId"],"properties":{"requestId":{"type":"string"}}}}}}}},"503":{"description":"Request failed. Check error.code and meta.requestId.","headers":{"X-Request-Id":{"schema":{"type":"string"},"description":"Request identifier for troubleshooting."},"Cache-Control":{"schema":{"type":"string","const":"no-store"}},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Project-wide limit, when supplied by the rate limiter."},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining project requests, when supplied by the rate limiter."}},"content":{"application/json":{"schema":{"type":"object","required":["error","meta"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]}}},"meta":{"type":"object","required":["requestId"],"properties":{"requestId":{"type":"string"}}}}}}}}}}},"/media/uploads":{"post":{"operationId":"createUpload","summary":"Create an image or video upload","description":"Required permissions: media-write.","tags":["Media"],"x-required-permissions":["media-write"],"security":[{"ApiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Upload"}}}},"responses":{"201":{"description":"Success","headers":{"X-Request-Id":{"schema":{"type":"string"},"description":"Request identifier for troubleshooting."},"Cache-Control":{"schema":{"type":"string","const":"no-store"}},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Project-wide limit, when supplied by the rate limiter."},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining project requests, when supplied by the rate limiter."}},"content":{"application/json":{"schema":{"type":"object","required":["data","meta"],"properties":{"data":{"$ref":"#/components/schemas/MediaUpload"},"meta":{"type":"object","required":["requestId"],"properties":{"requestId":{"type":"string"}}}}}}}},"400":{"description":"Request failed. Check error.code and meta.requestId.","headers":{"X-Request-Id":{"schema":{"type":"string"},"description":"Request identifier for troubleshooting."},"Cache-Control":{"schema":{"type":"string","const":"no-store"}},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Project-wide limit, when supplied by the rate limiter."},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining project requests, when supplied by the rate limiter."}},"content":{"application/json":{"schema":{"type":"object","required":["error","meta"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]}}},"meta":{"type":"object","required":["requestId"],"properties":{"requestId":{"type":"string"}}}}}}}},"401":{"description":"Request failed. Check error.code and meta.requestId.","headers":{"X-Request-Id":{"schema":{"type":"string"},"description":"Request identifier for troubleshooting."},"Cache-Control":{"schema":{"type":"string","const":"no-store"}},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Project-wide limit, when supplied by the rate limiter."},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining project requests, when supplied by the rate limiter."}},"content":{"application/json":{"schema":{"type":"object","required":["error","meta"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]}}},"meta":{"type":"object","required":["requestId"],"properties":{"requestId":{"type":"string"}}}}}}}},"403":{"description":"Request failed. Check error.code and meta.requestId.","headers":{"X-Request-Id":{"schema":{"type":"string"},"description":"Request identifier for troubleshooting."},"Cache-Control":{"schema":{"type":"string","const":"no-store"}},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Project-wide limit, when supplied by the rate limiter."},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining project requests, when supplied by the rate limiter."}},"content":{"application/json":{"schema":{"type":"object","required":["error","meta"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]}}},"meta":{"type":"object","required":["requestId"],"properties":{"requestId":{"type":"string"}}}}}}}},"404":{"description":"Request failed. Check error.code and meta.requestId.","headers":{"X-Request-Id":{"schema":{"type":"string"},"description":"Request identifier for troubleshooting."},"Cache-Control":{"schema":{"type":"string","const":"no-store"}},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Project-wide limit, when supplied by the rate limiter."},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining project requests, when supplied by the rate limiter."}},"content":{"application/json":{"schema":{"type":"object","required":["error","meta"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]}}},"meta":{"type":"object","required":["requestId"],"properties":{"requestId":{"type":"string"}}}}}}}},"409":{"description":"Request failed. Check error.code and meta.requestId.","headers":{"X-Request-Id":{"schema":{"type":"string"},"description":"Request identifier for troubleshooting."},"Cache-Control":{"schema":{"type":"string","const":"no-store"}},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Project-wide limit, when supplied by the rate limiter."},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining project requests, when supplied by the rate limiter."},"Retry-After":{"schema":{"type":"integer"},"description":"Present for idempotency_in_progress; wait before retrying."}},"content":{"application/json":{"schema":{"type":"object","required":["error","meta"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]}}},"meta":{"type":"object","required":["requestId"],"properties":{"requestId":{"type":"string"}}}}}}}},"413":{"description":"JSON body exceeds the 100 KB limit. This can be rejected before the controller, so the public error envelope is not guaranteed."},"429":{"description":"Request failed. Check error.code and meta.requestId.","headers":{"X-Request-Id":{"schema":{"type":"string"},"description":"Request identifier for troubleshooting."},"Cache-Control":{"schema":{"type":"string","const":"no-store"}},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Project-wide limit, when supplied by the rate limiter."},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining project requests, when supplied by the rate limiter."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying."}},"content":{"application/json":{"schema":{"type":"object","required":["error","meta"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]}}},"meta":{"type":"object","required":["requestId"],"properties":{"requestId":{"type":"string"}}}}}}}},"500":{"description":"Request failed. Check error.code and meta.requestId.","headers":{"X-Request-Id":{"schema":{"type":"string"},"description":"Request identifier for troubleshooting."},"Cache-Control":{"schema":{"type":"string","const":"no-store"}},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Project-wide limit, when supplied by the rate limiter."},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining project requests, when supplied by the rate limiter."}},"content":{"application/json":{"schema":{"type":"object","required":["error","meta"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]}}},"meta":{"type":"object","required":["requestId"],"properties":{"requestId":{"type":"string"}}}}}}}},"503":{"description":"Request failed. Check error.code and meta.requestId.","headers":{"X-Request-Id":{"schema":{"type":"string"},"description":"Request identifier for troubleshooting."},"Cache-Control":{"schema":{"type":"string","const":"no-store"}},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Project-wide limit, when supplied by the rate limiter."},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining project requests, when supplied by the rate limiter."}},"content":{"application/json":{"schema":{"type":"object","required":["error","meta"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]}}},"meta":{"type":"object","required":["requestId"],"properties":{"requestId":{"type":"string"}}}}}}}}}}},"/media/{id}":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"get":{"operationId":"getMedia","summary":"Get media status","description":"Required permissions: media-read.","tags":["Media"],"x-required-permissions":["media-read"],"security":[{"ApiKey":[]}],"responses":{"200":{"description":"Success","headers":{"X-Request-Id":{"schema":{"type":"string"},"description":"Request identifier for troubleshooting."},"Cache-Control":{"schema":{"type":"string","const":"no-store"}},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Project-wide limit, when supplied by the rate limiter."},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining project requests, when supplied by the rate limiter."}},"content":{"application/json":{"schema":{"type":"object","required":["data","meta"],"properties":{"data":{"$ref":"#/components/schemas/Media"},"meta":{"type":"object","required":["requestId"],"properties":{"requestId":{"type":"string"}}}}}}}},"400":{"description":"Request failed. Check error.code and meta.requestId.","headers":{"X-Request-Id":{"schema":{"type":"string"},"description":"Request identifier for troubleshooting."},"Cache-Control":{"schema":{"type":"string","const":"no-store"}},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Project-wide limit, when supplied by the rate limiter."},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining project requests, when supplied by the rate limiter."}},"content":{"application/json":{"schema":{"type":"object","required":["error","meta"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]}}},"meta":{"type":"object","required":["requestId"],"properties":{"requestId":{"type":"string"}}}}}}}},"401":{"description":"Request failed. Check error.code and meta.requestId.","headers":{"X-Request-Id":{"schema":{"type":"string"},"description":"Request identifier for troubleshooting."},"Cache-Control":{"schema":{"type":"string","const":"no-store"}},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Project-wide limit, when supplied by the rate limiter."},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining project requests, when supplied by the rate limiter."}},"content":{"application/json":{"schema":{"type":"object","required":["error","meta"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]}}},"meta":{"type":"object","required":["requestId"],"properties":{"requestId":{"type":"string"}}}}}}}},"403":{"description":"Request failed. Check error.code and meta.requestId.","headers":{"X-Request-Id":{"schema":{"type":"string"},"description":"Request identifier for troubleshooting."},"Cache-Control":{"schema":{"type":"string","const":"no-store"}},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Project-wide limit, when supplied by the rate limiter."},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining project requests, when supplied by the rate limiter."}},"content":{"application/json":{"schema":{"type":"object","required":["error","meta"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]}}},"meta":{"type":"object","required":["requestId"],"properties":{"requestId":{"type":"string"}}}}}}}},"404":{"description":"Request failed. Check error.code and meta.requestId.","headers":{"X-Request-Id":{"schema":{"type":"string"},"description":"Request identifier for troubleshooting."},"Cache-Control":{"schema":{"type":"string","const":"no-store"}},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Project-wide limit, when supplied by the rate limiter."},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining project requests, when supplied by the rate limiter."}},"content":{"application/json":{"schema":{"type":"object","required":["error","meta"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]}}},"meta":{"type":"object","required":["requestId"],"properties":{"requestId":{"type":"string"}}}}}}}},"409":{"description":"Request failed. Check error.code and meta.requestId.","headers":{"X-Request-Id":{"schema":{"type":"string"},"description":"Request identifier for troubleshooting."},"Cache-Control":{"schema":{"type":"string","const":"no-store"}},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Project-wide limit, when supplied by the rate limiter."},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining project requests, when supplied by the rate limiter."},"Retry-After":{"schema":{"type":"integer"},"description":"Present for idempotency_in_progress; wait before retrying."}},"content":{"application/json":{"schema":{"type":"object","required":["error","meta"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]}}},"meta":{"type":"object","required":["requestId"],"properties":{"requestId":{"type":"string"}}}}}}}},"413":{"description":"JSON body exceeds the 100 KB limit. This can be rejected before the controller, so the public error envelope is not guaranteed."},"429":{"description":"Request failed. Check error.code and meta.requestId.","headers":{"X-Request-Id":{"schema":{"type":"string"},"description":"Request identifier for troubleshooting."},"Cache-Control":{"schema":{"type":"string","const":"no-store"}},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Project-wide limit, when supplied by the rate limiter."},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining project requests, when supplied by the rate limiter."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying."}},"content":{"application/json":{"schema":{"type":"object","required":["error","meta"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]}}},"meta":{"type":"object","required":["requestId"],"properties":{"requestId":{"type":"string"}}}}}}}},"500":{"description":"Request failed. Check error.code and meta.requestId.","headers":{"X-Request-Id":{"schema":{"type":"string"},"description":"Request identifier for troubleshooting."},"Cache-Control":{"schema":{"type":"string","const":"no-store"}},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Project-wide limit, when supplied by the rate limiter."},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining project requests, when supplied by the rate limiter."}},"content":{"application/json":{"schema":{"type":"object","required":["error","meta"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]}}},"meta":{"type":"object","required":["requestId"],"properties":{"requestId":{"type":"string"}}}}}}}},"503":{"description":"Request failed. Check error.code and meta.requestId.","headers":{"X-Request-Id":{"schema":{"type":"string"},"description":"Request identifier for troubleshooting."},"Cache-Control":{"schema":{"type":"string","const":"no-store"}},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Project-wide limit, when supplied by the rate limiter."},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining project requests, when supplied by the rate limiter."}},"content":{"application/json":{"schema":{"type":"object","required":["error","meta"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]}}},"meta":{"type":"object","required":["requestId"],"properties":{"requestId":{"type":"string"}}}}}}}}}}},"/media/{id}/complete":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"post":{"operationId":"completeMedia","summary":"Validate the uploaded file","description":"Required permissions: media-write.","tags":["Media"],"x-required-permissions":["media-write"],"security":[{"ApiKey":[]}],"responses":{"200":{"description":"Success","headers":{"X-Request-Id":{"schema":{"type":"string"},"description":"Request identifier for troubleshooting."},"Cache-Control":{"schema":{"type":"string","const":"no-store"}},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Project-wide limit, when supplied by the rate limiter."},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining project requests, when supplied by the rate limiter."}},"content":{"application/json":{"schema":{"type":"object","required":["data","meta"],"properties":{"data":{"$ref":"#/components/schemas/Media"},"meta":{"type":"object","required":["requestId"],"properties":{"requestId":{"type":"string"}}}}}}}},"400":{"description":"Request failed. Check error.code and meta.requestId.","headers":{"X-Request-Id":{"schema":{"type":"string"},"description":"Request identifier for troubleshooting."},"Cache-Control":{"schema":{"type":"string","const":"no-store"}},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Project-wide limit, when supplied by the rate limiter."},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining project requests, when supplied by the rate limiter."}},"content":{"application/json":{"schema":{"type":"object","required":["error","meta"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]}}},"meta":{"type":"object","required":["requestId"],"properties":{"requestId":{"type":"string"}}}}}}}},"401":{"description":"Request failed. Check error.code and meta.requestId.","headers":{"X-Request-Id":{"schema":{"type":"string"},"description":"Request identifier for troubleshooting."},"Cache-Control":{"schema":{"type":"string","const":"no-store"}},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Project-wide limit, when supplied by the rate limiter."},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining project requests, when supplied by the rate limiter."}},"content":{"application/json":{"schema":{"type":"object","required":["error","meta"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]}}},"meta":{"type":"object","required":["requestId"],"properties":{"requestId":{"type":"string"}}}}}}}},"403":{"description":"Request failed. Check error.code and meta.requestId.","headers":{"X-Request-Id":{"schema":{"type":"string"},"description":"Request identifier for troubleshooting."},"Cache-Control":{"schema":{"type":"string","const":"no-store"}},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Project-wide limit, when supplied by the rate limiter."},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining project requests, when supplied by the rate limiter."}},"content":{"application/json":{"schema":{"type":"object","required":["error","meta"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]}}},"meta":{"type":"object","required":["requestId"],"properties":{"requestId":{"type":"string"}}}}}}}},"404":{"description":"Request failed. Check error.code and meta.requestId.","headers":{"X-Request-Id":{"schema":{"type":"string"},"description":"Request identifier for troubleshooting."},"Cache-Control":{"schema":{"type":"string","const":"no-store"}},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Project-wide limit, when supplied by the rate limiter."},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining project requests, when supplied by the rate limiter."}},"content":{"application/json":{"schema":{"type":"object","required":["error","meta"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]}}},"meta":{"type":"object","required":["requestId"],"properties":{"requestId":{"type":"string"}}}}}}}},"409":{"description":"Request failed. Check error.code and meta.requestId.","headers":{"X-Request-Id":{"schema":{"type":"string"},"description":"Request identifier for troubleshooting."},"Cache-Control":{"schema":{"type":"string","const":"no-store"}},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Project-wide limit, when supplied by the rate limiter."},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining project requests, when supplied by the rate limiter."},"Retry-After":{"schema":{"type":"integer"},"description":"Present for idempotency_in_progress; wait before retrying."}},"content":{"application/json":{"schema":{"type":"object","required":["error","meta"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]}}},"meta":{"type":"object","required":["requestId"],"properties":{"requestId":{"type":"string"}}}}}}}},"413":{"description":"JSON body exceeds the 100 KB limit. This can be rejected before the controller, so the public error envelope is not guaranteed."},"429":{"description":"Request failed. Check error.code and meta.requestId.","headers":{"X-Request-Id":{"schema":{"type":"string"},"description":"Request identifier for troubleshooting."},"Cache-Control":{"schema":{"type":"string","const":"no-store"}},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Project-wide limit, when supplied by the rate limiter."},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining project requests, when supplied by the rate limiter."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying."}},"content":{"application/json":{"schema":{"type":"object","required":["error","meta"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]}}},"meta":{"type":"object","required":["requestId"],"properties":{"requestId":{"type":"string"}}}}}}}},"500":{"description":"Request failed. Check error.code and meta.requestId.","headers":{"X-Request-Id":{"schema":{"type":"string"},"description":"Request identifier for troubleshooting."},"Cache-Control":{"schema":{"type":"string","const":"no-store"}},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Project-wide limit, when supplied by the rate limiter."},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining project requests, when supplied by the rate limiter."}},"content":{"application/json":{"schema":{"type":"object","required":["error","meta"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]}}},"meta":{"type":"object","required":["requestId"],"properties":{"requestId":{"type":"string"}}}}}}}},"503":{"description":"Request failed. Check error.code and meta.requestId.","headers":{"X-Request-Id":{"schema":{"type":"string"},"description":"Request identifier for troubleshooting."},"Cache-Control":{"schema":{"type":"string","const":"no-store"}},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Project-wide limit, when supplied by the rate limiter."},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining project requests, when supplied by the rate limiter."}},"content":{"application/json":{"schema":{"type":"object","required":["error","meta"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]}}},"meta":{"type":"object","required":["requestId"],"properties":{"requestId":{"type":"string"}}}}}}}}}}},"/media/{id}/multipart":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"post":{"operationId":"multipartMedia","summary":"Sign parts, list parts, complete or abort a large video upload","description":"Required permissions: media-write.","tags":["Media"],"x-required-permissions":["media-write"],"security":[{"ApiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Multipart"}}}},"responses":{"200":{"description":"Success","headers":{"X-Request-Id":{"schema":{"type":"string"},"description":"Request identifier for troubleshooting."},"Cache-Control":{"schema":{"type":"string","const":"no-store"}},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Project-wide limit, when supplied by the rate limiter."},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining project requests, when supplied by the rate limiter."}},"content":{"application/json":{"schema":{"type":"object","required":["data","meta"],"properties":{"data":{"$ref":"#/components/schemas/MultipartResult"},"meta":{"type":"object","required":["requestId"],"properties":{"requestId":{"type":"string"}}}}}}}},"400":{"description":"Request failed. Check error.code and meta.requestId.","headers":{"X-Request-Id":{"schema":{"type":"string"},"description":"Request identifier for troubleshooting."},"Cache-Control":{"schema":{"type":"string","const":"no-store"}},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Project-wide limit, when supplied by the rate limiter."},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining project requests, when supplied by the rate limiter."}},"content":{"application/json":{"schema":{"type":"object","required":["error","meta"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]}}},"meta":{"type":"object","required":["requestId"],"properties":{"requestId":{"type":"string"}}}}}}}},"401":{"description":"Request failed. Check error.code and meta.requestId.","headers":{"X-Request-Id":{"schema":{"type":"string"},"description":"Request identifier for troubleshooting."},"Cache-Control":{"schema":{"type":"string","const":"no-store"}},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Project-wide limit, when supplied by the rate limiter."},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining project requests, when supplied by the rate limiter."}},"content":{"application/json":{"schema":{"type":"object","required":["error","meta"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]}}},"meta":{"type":"object","required":["requestId"],"properties":{"requestId":{"type":"string"}}}}}}}},"403":{"description":"Request failed. Check error.code and meta.requestId.","headers":{"X-Request-Id":{"schema":{"type":"string"},"description":"Request identifier for troubleshooting."},"Cache-Control":{"schema":{"type":"string","const":"no-store"}},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Project-wide limit, when supplied by the rate limiter."},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining project requests, when supplied by the rate limiter."}},"content":{"application/json":{"schema":{"type":"object","required":["error","meta"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]}}},"meta":{"type":"object","required":["requestId"],"properties":{"requestId":{"type":"string"}}}}}}}},"404":{"description":"Request failed. Check error.code and meta.requestId.","headers":{"X-Request-Id":{"schema":{"type":"string"},"description":"Request identifier for troubleshooting."},"Cache-Control":{"schema":{"type":"string","const":"no-store"}},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Project-wide limit, when supplied by the rate limiter."},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining project requests, when supplied by the rate limiter."}},"content":{"application/json":{"schema":{"type":"object","required":["error","meta"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]}}},"meta":{"type":"object","required":["requestId"],"properties":{"requestId":{"type":"string"}}}}}}}},"409":{"description":"Request failed. Check error.code and meta.requestId.","headers":{"X-Request-Id":{"schema":{"type":"string"},"description":"Request identifier for troubleshooting."},"Cache-Control":{"schema":{"type":"string","const":"no-store"}},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Project-wide limit, when supplied by the rate limiter."},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining project requests, when supplied by the rate limiter."},"Retry-After":{"schema":{"type":"integer"},"description":"Present for idempotency_in_progress; wait before retrying."}},"content":{"application/json":{"schema":{"type":"object","required":["error","meta"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]}}},"meta":{"type":"object","required":["requestId"],"properties":{"requestId":{"type":"string"}}}}}}}},"413":{"description":"JSON body exceeds the 100 KB limit. This can be rejected before the controller, so the public error envelope is not guaranteed."},"429":{"description":"Request failed. Check error.code and meta.requestId.","headers":{"X-Request-Id":{"schema":{"type":"string"},"description":"Request identifier for troubleshooting."},"Cache-Control":{"schema":{"type":"string","const":"no-store"}},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Project-wide limit, when supplied by the rate limiter."},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining project requests, when supplied by the rate limiter."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying."}},"content":{"application/json":{"schema":{"type":"object","required":["error","meta"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]}}},"meta":{"type":"object","required":["requestId"],"properties":{"requestId":{"type":"string"}}}}}}}},"500":{"description":"Request failed. Check error.code and meta.requestId.","headers":{"X-Request-Id":{"schema":{"type":"string"},"description":"Request identifier for troubleshooting."},"Cache-Control":{"schema":{"type":"string","const":"no-store"}},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Project-wide limit, when supplied by the rate limiter."},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining project requests, when supplied by the rate limiter."}},"content":{"application/json":{"schema":{"type":"object","required":["error","meta"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]}}},"meta":{"type":"object","required":["requestId"],"properties":{"requestId":{"type":"string"}}}}}}}},"503":{"description":"Request failed. Check error.code and meta.requestId.","headers":{"X-Request-Id":{"schema":{"type":"string"},"description":"Request identifier for troubleshooting."},"Cache-Control":{"schema":{"type":"string","const":"no-store"}},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Project-wide limit, when supplied by the rate limiter."},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining project requests, when supplied by the rate limiter."}},"content":{"application/json":{"schema":{"type":"object","required":["error","meta"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]}}},"meta":{"type":"object","required":["requestId"],"properties":{"requestId":{"type":"string"}}}}}}}}}}}}}