{"openapi":"3.1.0","info":{"title":"Tasqo API v1","version":"1.0.0","description":"Orders, the reports people send back, and your own numbers.\n\nAuthenticate with `Authorization: Bearer ow_…`. Errors are real HTTP statuses with a `{\"error\":{\"code\",\"message\"}}` body — translate by `code`, never by `message`.\n\nAPI v2 (`/api/v2`) is the PerfectPanel-compatible surface and is documented separately: it answers HTTP 200 to everything, including errors, because that is what panels expect."},"servers":[{"url":"https://tasqo.pro"}],"tags":[{"name":"v1:orders","description":"Buy traffic."},{"name":"v1:review","description":"Read proofs and decide them."},{"name":"publisher:stats","description":"Your wall’s own numbers."}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"ow_…"}},"schemas":{"Error":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"],"additionalProperties":false}},"required":["error"],"additionalProperties":false},"WebhookPayload":{"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)$"},"event":{"type":"string","enum":["order.status_changed","submission.awaiting_review"]},"created_at":{"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)))$"},"data":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"required":["id","event","created_at","data"],"additionalProperties":false}}},"paths":{"/api/v1/services":{"get":{"summary":"The catalogue","description":"Every service you may order, with its price per 1000 and its bounds, in catalogue order. The price is USD and the bounds are units; a Custom Task may set its own price per unit instead. `catalog` places each service in the tree (section, optional category), with titles and descriptions in both languages; `icon_url` is relative to this host.\n\nScope: `v1:orders`.","tags":["v1:orders"],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"services":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"name":{"type":"string"},"category":{"type":"string"},"catalog":{"type":"object","properties":{"section":{"type":"object","properties":{"id":{"type":"string"},"title":{"type":"object","properties":{"ru":{"type":"string","minLength":1,"maxLength":80},"en":{"type":"string","minLength":1,"maxLength":80}},"required":["ru","en"],"additionalProperties":false},"description":{"type":"object","properties":{"ru":{"type":"string"},"en":{"type":"string"}},"additionalProperties":false},"icon_url":{"type":["string","null"]},"position":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["id","title","description","icon_url","position"],"additionalProperties":false},"category":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"title":{"type":"object","properties":{"ru":{"type":"string","minLength":1,"maxLength":80},"en":{"type":"string","minLength":1,"maxLength":80}},"required":["ru","en"],"additionalProperties":false},"description":{"type":"object","properties":{"ru":{"type":"string"},"en":{"type":"string"}},"additionalProperties":false},"icon_url":{"type":["string","null"]},"position":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["id","title","description","icon_url","position"],"additionalProperties":false},{"type":"null"}]}},"required":["section","category"],"additionalProperties":false},"title":{"type":"object","properties":{"ru":{"type":"string"},"en":{"type":"string"}},"additionalProperties":false},"description":{"type":"object","properties":{"ru":{"type":"string"},"en":{"type":"string"}},"additionalProperties":false},"icon_url":{"type":["string","null"]},"position":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"type":{"type":"string","enum":["Default","Package","SEO","CustomComments","CustomCommentsPackage","Mentions","MentionsWithHashtags","MentionsCustomList","MentionsHashtag","MentionsUserFollowers","MentionsMediaLikers","CommentLikes","Poll","InvitesFromGroups","CommentReplies","Subscriptions","WebTraffic","CustomTask"]},"platform":{"type":"string","enum":["telegram","vk","youtube","instagram","tiktok","web","app","github","twitter","discord","facebook","reddit","other","avito","rutube"]},"rate_per_1000":{"type":"string","pattern":"^-?\\d+(\\.\\d+)?$"},"min":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"max":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"refill":{"type":"boolean"},"cancel":{"type":"boolean"},"dripfeed":{"type":"boolean"},"task_template":{"type":"object","properties":{"title":{"type":"object","properties":{"ru":{"type":"string","minLength":1},"en":{"type":"string","minLength":1}},"additionalProperties":false},"description":{"type":"object","properties":{"ru":{"type":"string","minLength":1},"en":{"type":"string","minLength":1}},"additionalProperties":false},"instructions":{"type":"object","properties":{"ru":{"type":"string","minLength":1},"en":{"type":"string","minLength":1}},"additionalProperties":false},"lists":{"default":[],"maxItems":5,"type":"array","items":{"type":"object","properties":{"key":{"type":"string","enum":["list_1","list_2","list_3","list_4","list_5"]},"label":{"type":"object","properties":{"ru":{"type":"string","minLength":1},"en":{"type":"string","minLength":1}},"additionalProperties":false},"unique_per_person":{"default":false,"type":"boolean"}},"required":["key","label","unique_per_person"],"additionalProperties":false}}},"required":["title","description","lists"],"additionalProperties":false},"proof_spec":{"type":"object","properties":{"proof_types":{"type":"array","items":{"type":"string","enum":["screenshot","link","text","username"]}},"instructions":{"type":"object","properties":{"ru":{"type":"string","minLength":1},"en":{"type":"string","minLength":1}},"additionalProperties":false},"min_attachments":{"default":0,"type":"integer","minimum":0,"maximum":9007199254740991},"max_attachments":{"default":3,"type":"integer","minimum":1,"maximum":9007199254740991}},"required":["proof_types","instructions","min_attachments","max_attachments"],"additionalProperties":false},"check_mode_default":{"type":"string","enum":["ai_auto","ai_assist","manual"]},"api_check":{"type":"string","enum":["none","youtube_comment","youtube_subscribe","vk_comment","vk_group_member","github_follow","github_star","github_fork","rutube_comment","rutube_subscribe"]},"reservation_ttl_default_sec":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"reservation_ttl_options_sec":{"type":"array","items":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"revision_deadline_sec":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"reversible_days":{"type":"integer","minimum":0,"maximum":9007199254740991},"targeting_default":{"type":"object","properties":{"countries":{"default":[],"type":"array","items":{"type":"string","pattern":"^[A-Z]{2}$"}},"devices":{"default":[],"type":"array","items":{"type":"string","enum":["desktop","mobile","tablet","other"]}},"languages":{"default":[],"type":"array","items":{"type":"string","pattern":"^[a-z]{2}$"}}},"required":["countries","devices","languages"],"additionalProperties":false},"per_user_limit":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"once_per_target":{"type":"boolean"},"queue_same_link":{"type":"boolean"},"comment_autogen":{"type":"boolean"},"stages":{"anyOf":[{"type":"array","items":{"type":"object","properties":{"title":{"anyOf":[{"type":"object","properties":{"ru":{"type":"string"},"en":{"type":"string"}},"additionalProperties":false},{"type":"null"}]},"ttl_sec":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"delay_sec":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["title","ttl_sec","delay_sec"],"additionalProperties":false}},{"type":"null"}]}},"required":["id","name","category","catalog","title","description","icon_url","position","type","platform","rate_per_1000","min","max","refill","cancel","dripfeed","task_template","proof_spec","check_mode_default","api_check","reservation_ttl_default_sec","revision_deadline_sec","reversible_days","targeting_default","per_user_limit","once_per_target","queue_same_link","comment_autogen","stages"],"additionalProperties":false}}},"required":["services"],"additionalProperties":false}}}},"4XX":{"description":"The request was refused; `error.code` says which of the codes below.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/api/v1/orders":{"post":{"summary":"Place an order","description":"Charges the balance and creates the task in one transaction: either you are charged and the task exists, or neither happened. Send `idempotency_key` and a retry of the same request returns the same order rather than buying twice.\n\nScope: `v1:orders`.","tags":["v1:orders"],"security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"service":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"link":{"type":"string","minLength":1,"maxLength":2048},"quantity":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"runs":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"interval":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"comments":{"anyOf":[{"minItems":1,"type":"array","items":{"type":"string","minLength":1}},{"type":"string","minLength":1}]},"usernames":{"anyOf":[{"minItems":1,"type":"array","items":{"type":"string","minLength":1}},{"type":"string","minLength":1}]},"hashtags":{"anyOf":[{"minItems":1,"type":"array","items":{"type":"string","minLength":1}},{"type":"string","minLength":1}]},"hashtag":{"type":"string","minLength":1},"keywords":{"anyOf":[{"minItems":1,"type":"array","items":{"type":"string","minLength":1}},{"type":"string","minLength":1}]},"groups":{"anyOf":[{"minItems":1,"type":"array","items":{"type":"string","minLength":1}},{"type":"string","minLength":1}]},"username":{"type":"string","minLength":1},"media":{"type":"string","minLength":1},"answer_number":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"country":{"type":"string","minLength":1},"device":{"type":"integer","minimum":1,"maximum":5},"type_of_traffic":{"type":"integer","minimum":1,"maximum":3},"google_keyword":{"type":"string","minLength":1,"maxLength":200},"referring_url":{"type":"string","minLength":1,"maxLength":2048},"lists":{"maxItems":5,"type":"array","items":{"type":"object","properties":{"key":{"type":"string","enum":["list_1","list_2","list_3","list_4","list_5"]},"lines":{"minItems":1,"maxItems":100000,"type":"array","items":{"type":"string","minLength":1,"maxLength":5000}}},"required":["key","lines"],"additionalProperties":false}},"comment_hint":{"type":"string","minLength":1,"maxLength":500},"custom":{"type":"object","properties":{"title":{"type":"string","minLength":1,"maxLength":200},"description":{"type":"string","minLength":1,"maxLength":5000},"proof_instructions":{"type":"string","minLength":1,"maxLength":5000},"countries":{"type":"array","items":{"type":"string","pattern":"^[A-Z]{2}$"}}},"additionalProperties":false},"click_param":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,32}$"},"unit_price_usd":{"type":"string","pattern":"^-?\\d+(\\.\\d+)?$"},"reservation_ttl_sec":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"check_mode":{"type":"string","enum":["ai_auto","ai_assist","manual"]},"targeting":{"type":"object","properties":{"countries":{"default":[],"type":"array","items":{"type":"string","pattern":"^[A-Z]{2}$"}},"devices":{"default":[],"type":"array","items":{"type":"string","enum":["desktop","mobile","tablet","other"]}},"languages":{"default":[],"type":"array","items":{"type":"string","pattern":"^[a-z]{2}$"}}},"required":["countries","devices","languages"],"additionalProperties":false},"overbooking_pct":{"type":"integer","minimum":0,"maximum":100},"idempotency_key":{"type":"string","minLength":1,"maxLength":128},"external_ref":{"type":"string","minLength":1,"maxLength":255}},"required":["service"],"additionalProperties":false}}}},"responses":{"201":{"description":"Created","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"service":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"source":{"type":"string","enum":["api_v2","api_v1","cabinet"]},"status":{"type":"string","enum":["Pending","InProgress","Processing","Partial","Completed","Canceled"]},"status_v2":{"type":"string"},"moderation_status":{"type":"string","enum":["draft","pending","approved","rejected","suspended"]},"link":{"type":"string"},"quantity":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"charge_usd":{"type":"string","pattern":"^-?\\d+(\\.\\d+)?$"},"unit_price_usd":{"anyOf":[{"type":"string","pattern":"^-?\\d+(\\.\\d+)?$"},{"type":"null"}]},"approved":{"type":"integer","minimum":0,"maximum":9007199254740991},"pending":{"type":"integer","minimum":0,"maximum":9007199254740991},"remains":{"type":"integer","minimum":0,"maximum":9007199254740991},"start_count":{"type":"integer","minimum":0,"maximum":9007199254740991},"queued_at":{"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"}]},"excluded_users":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"comment_generation":{"anyOf":[{"type":"object","properties":{"status":{"type":"string","enum":["pending","ready","failed"]},"language":{"type":["string","null"]}},"required":["status","language"],"additionalProperties":false},{"type":"null"}]},"params":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"dripfeed":{"anyOf":[{"type":"object","properties":{"runs":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"interval_min":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"required":["runs","interval_min"],"additionalProperties":false},{"type":"null"}]},"reservation_ttl_sec":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"check_mode":{"type":"string","enum":["ai_auto","ai_assist","manual"]},"targeting":{"type":"object","properties":{"countries":{"default":[],"type":"array","items":{"type":"string","pattern":"^[A-Z]{2}$"}},"devices":{"default":[],"type":"array","items":{"type":"string","enum":["desktop","mobile","tablet","other"]}},"languages":{"default":[],"type":"array","items":{"type":"string","pattern":"^[a-z]{2}$"}}},"required":["countries","devices","languages"],"additionalProperties":false},"overbooking_pct":{"type":"integer","minimum":0,"maximum":9007199254740991},"external_ref":{"type":["string","null"]},"idempotency_key":{"type":["string","null"]},"task":{"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","active","paused","completed","canceled"]},"api_check":{"type":"string","enum":["none","youtube_comment","youtube_subscribe","vk_comment","vk_group_member","github_follow","github_star","github_fork","rutube_comment","rutube_subscribe"]},"reward_publisher_usd":{"type":"string","pattern":"^-?\\d+(\\.\\d+)?$"},"unit_price_usd":{"type":"string","pattern":"^-?\\d+(\\.\\d+)?$"}},"required":["id","status","api_check","reward_publisher_usd","unit_price_usd"],"additionalProperties":false},"created_at":{"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)))$"},"completed_at":{"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"}]},"cancel_requested_at":{"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"}]},"canceled_at":{"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":["id","service","source","status","status_v2","moderation_status","link","quantity","charge_usd","unit_price_usd","approved","pending","remains","start_count","queued_at","excluded_users","comment_generation","params","dripfeed","reservation_ttl_sec","check_mode","targeting","overbooking_pct","external_ref","idempotency_key","task","created_at","completed_at","cancel_requested_at","canceled_at"],"additionalProperties":false}}}},"4XX":{"description":"The request was refused; `error.code` says which of the codes below.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}},"get":{"summary":"Your orders","description":"Newest first. `remains` is what has not been delivered yet.\n\nScope: `v1:orders`.","tags":["v1:orders"],"security":[{"bearerAuth":[]}],"parameters":[{"name":"status","in":"query","required":false,"schema":{"type":"string","enum":["Pending","InProgress","Processing","Partial","Completed","Canceled"]}},{"name":"limit","in":"query","required":true,"schema":{"default":50,"type":"integer","minimum":1,"maximum":100}},{"name":"cursor","in":"query","required":false,"schema":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"orders":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"service":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"source":{"type":"string","enum":["api_v2","api_v1","cabinet"]},"status":{"type":"string","enum":["Pending","InProgress","Processing","Partial","Completed","Canceled"]},"status_v2":{"type":"string"},"moderation_status":{"type":"string","enum":["draft","pending","approved","rejected","suspended"]},"link":{"type":"string"},"quantity":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"charge_usd":{"type":"string","pattern":"^-?\\d+(\\.\\d+)?$"},"unit_price_usd":{"anyOf":[{"type":"string","pattern":"^-?\\d+(\\.\\d+)?$"},{"type":"null"}]},"approved":{"type":"integer","minimum":0,"maximum":9007199254740991},"pending":{"type":"integer","minimum":0,"maximum":9007199254740991},"remains":{"type":"integer","minimum":0,"maximum":9007199254740991},"start_count":{"type":"integer","minimum":0,"maximum":9007199254740991},"queued_at":{"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"}]},"excluded_users":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"comment_generation":{"anyOf":[{"type":"object","properties":{"status":{"type":"string","enum":["pending","ready","failed"]},"language":{"type":["string","null"]}},"required":["status","language"],"additionalProperties":false},{"type":"null"}]},"params":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"dripfeed":{"anyOf":[{"type":"object","properties":{"runs":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"interval_min":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"required":["runs","interval_min"],"additionalProperties":false},{"type":"null"}]},"reservation_ttl_sec":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"check_mode":{"type":"string","enum":["ai_auto","ai_assist","manual"]},"targeting":{"type":"object","properties":{"countries":{"default":[],"type":"array","items":{"type":"string","pattern":"^[A-Z]{2}$"}},"devices":{"default":[],"type":"array","items":{"type":"string","enum":["desktop","mobile","tablet","other"]}},"languages":{"default":[],"type":"array","items":{"type":"string","pattern":"^[a-z]{2}$"}}},"required":["countries","devices","languages"],"additionalProperties":false},"overbooking_pct":{"type":"integer","minimum":0,"maximum":9007199254740991},"external_ref":{"type":["string","null"]},"idempotency_key":{"type":["string","null"]},"task":{"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","active","paused","completed","canceled"]},"api_check":{"type":"string","enum":["none","youtube_comment","youtube_subscribe","vk_comment","vk_group_member","github_follow","github_star","github_fork","rutube_comment","rutube_subscribe"]},"reward_publisher_usd":{"type":"string","pattern":"^-?\\d+(\\.\\d+)?$"},"unit_price_usd":{"type":"string","pattern":"^-?\\d+(\\.\\d+)?$"}},"required":["id","status","api_check","reward_publisher_usd","unit_price_usd"],"additionalProperties":false},"created_at":{"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)))$"},"completed_at":{"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"}]},"cancel_requested_at":{"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"}]},"canceled_at":{"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":["id","service","source","status","status_v2","moderation_status","link","quantity","charge_usd","unit_price_usd","approved","pending","remains","start_count","queued_at","excluded_users","comment_generation","params","dripfeed","reservation_ttl_sec","check_mode","targeting","overbooking_pct","external_ref","idempotency_key","task","created_at","completed_at","cancel_requested_at","canceled_at"],"additionalProperties":false}},"next_cursor":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]}},"required":["orders","next_cursor"],"additionalProperties":false}}}},"4XX":{"description":"The request was refused; `error.code` says which of the codes below.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/api/v1/orders/{id}":{"get":{"summary":"One order","description":"The counters, the charge as it stands now, and the task behind it.\n\nScope: `v1:orders`.","tags":["v1:orders"],"security":[{"bearerAuth":[]}],"parameters":[{"name":"id","in":"path","required":true,"description":"Order id, as returned by `POST /orders`.","schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"service":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"source":{"type":"string","enum":["api_v2","api_v1","cabinet"]},"status":{"type":"string","enum":["Pending","InProgress","Processing","Partial","Completed","Canceled"]},"status_v2":{"type":"string"},"moderation_status":{"type":"string","enum":["draft","pending","approved","rejected","suspended"]},"link":{"type":"string"},"quantity":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"charge_usd":{"type":"string","pattern":"^-?\\d+(\\.\\d+)?$"},"unit_price_usd":{"anyOf":[{"type":"string","pattern":"^-?\\d+(\\.\\d+)?$"},{"type":"null"}]},"approved":{"type":"integer","minimum":0,"maximum":9007199254740991},"pending":{"type":"integer","minimum":0,"maximum":9007199254740991},"remains":{"type":"integer","minimum":0,"maximum":9007199254740991},"start_count":{"type":"integer","minimum":0,"maximum":9007199254740991},"queued_at":{"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"}]},"excluded_users":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"comment_generation":{"anyOf":[{"type":"object","properties":{"status":{"type":"string","enum":["pending","ready","failed"]},"language":{"type":["string","null"]}},"required":["status","language"],"additionalProperties":false},{"type":"null"}]},"params":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"dripfeed":{"anyOf":[{"type":"object","properties":{"runs":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"interval_min":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"required":["runs","interval_min"],"additionalProperties":false},{"type":"null"}]},"reservation_ttl_sec":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"check_mode":{"type":"string","enum":["ai_auto","ai_assist","manual"]},"targeting":{"type":"object","properties":{"countries":{"default":[],"type":"array","items":{"type":"string","pattern":"^[A-Z]{2}$"}},"devices":{"default":[],"type":"array","items":{"type":"string","enum":["desktop","mobile","tablet","other"]}},"languages":{"default":[],"type":"array","items":{"type":"string","pattern":"^[a-z]{2}$"}}},"required":["countries","devices","languages"],"additionalProperties":false},"overbooking_pct":{"type":"integer","minimum":0,"maximum":9007199254740991},"external_ref":{"type":["string","null"]},"idempotency_key":{"type":["string","null"]},"task":{"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","active","paused","completed","canceled"]},"api_check":{"type":"string","enum":["none","youtube_comment","youtube_subscribe","vk_comment","vk_group_member","github_follow","github_star","github_fork","rutube_comment","rutube_subscribe"]},"reward_publisher_usd":{"type":"string","pattern":"^-?\\d+(\\.\\d+)?$"},"unit_price_usd":{"type":"string","pattern":"^-?\\d+(\\.\\d+)?$"}},"required":["id","status","api_check","reward_publisher_usd","unit_price_usd"],"additionalProperties":false},"created_at":{"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)))$"},"completed_at":{"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"}]},"cancel_requested_at":{"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"}]},"canceled_at":{"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":["id","service","source","status","status_v2","moderation_status","link","quantity","charge_usd","unit_price_usd","approved","pending","remains","start_count","queued_at","excluded_users","comment_generation","params","dripfeed","reservation_ttl_sec","check_mode","targeting","overbooking_pct","external_ref","idempotency_key","task","created_at","completed_at","cancel_requested_at","canceled_at"],"additionalProperties":false}}}},"4XX":{"description":"The request was refused; `error.code` says which of the codes below.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/api/v1/orders/{id}/cancel":{"post":{"summary":"Stop an order","description":"A REQUEST, not an instant stop. Nothing new is handed out from this moment; slots already held run to their verdict, and the order becomes `Partial` or `Canceled` when the last one lands. What was not delivered is refunded.\n\nScope: `v1:orders`.","tags":["v1:orders"],"security":[{"bearerAuth":[]}],"parameters":[{"name":"id","in":"path","required":true,"description":"Order id, as returned by `POST /orders`.","schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"service":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"source":{"type":"string","enum":["api_v2","api_v1","cabinet"]},"status":{"type":"string","enum":["Pending","InProgress","Processing","Partial","Completed","Canceled"]},"status_v2":{"type":"string"},"moderation_status":{"type":"string","enum":["draft","pending","approved","rejected","suspended"]},"link":{"type":"string"},"quantity":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"charge_usd":{"type":"string","pattern":"^-?\\d+(\\.\\d+)?$"},"unit_price_usd":{"anyOf":[{"type":"string","pattern":"^-?\\d+(\\.\\d+)?$"},{"type":"null"}]},"approved":{"type":"integer","minimum":0,"maximum":9007199254740991},"pending":{"type":"integer","minimum":0,"maximum":9007199254740991},"remains":{"type":"integer","minimum":0,"maximum":9007199254740991},"start_count":{"type":"integer","minimum":0,"maximum":9007199254740991},"queued_at":{"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"}]},"excluded_users":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"comment_generation":{"anyOf":[{"type":"object","properties":{"status":{"type":"string","enum":["pending","ready","failed"]},"language":{"type":["string","null"]}},"required":["status","language"],"additionalProperties":false},{"type":"null"}]},"params":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"dripfeed":{"anyOf":[{"type":"object","properties":{"runs":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"interval_min":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"required":["runs","interval_min"],"additionalProperties":false},{"type":"null"}]},"reservation_ttl_sec":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"check_mode":{"type":"string","enum":["ai_auto","ai_assist","manual"]},"targeting":{"type":"object","properties":{"countries":{"default":[],"type":"array","items":{"type":"string","pattern":"^[A-Z]{2}$"}},"devices":{"default":[],"type":"array","items":{"type":"string","enum":["desktop","mobile","tablet","other"]}},"languages":{"default":[],"type":"array","items":{"type":"string","pattern":"^[a-z]{2}$"}}},"required":["countries","devices","languages"],"additionalProperties":false},"overbooking_pct":{"type":"integer","minimum":0,"maximum":9007199254740991},"external_ref":{"type":["string","null"]},"idempotency_key":{"type":["string","null"]},"task":{"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","active","paused","completed","canceled"]},"api_check":{"type":"string","enum":["none","youtube_comment","youtube_subscribe","vk_comment","vk_group_member","github_follow","github_star","github_fork","rutube_comment","rutube_subscribe"]},"reward_publisher_usd":{"type":"string","pattern":"^-?\\d+(\\.\\d+)?$"},"unit_price_usd":{"type":"string","pattern":"^-?\\d+(\\.\\d+)?$"}},"required":["id","status","api_check","reward_publisher_usd","unit_price_usd"],"additionalProperties":false},"created_at":{"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)))$"},"completed_at":{"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"}]},"cancel_requested_at":{"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"}]},"canceled_at":{"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":["id","service","source","status","status_v2","moderation_status","link","quantity","charge_usd","unit_price_usd","approved","pending","remains","start_count","queued_at","excluded_users","comment_generation","params","dripfeed","reservation_ttl_sec","check_mode","targeting","overbooking_pct","external_ref","idempotency_key","task","created_at","completed_at","cancel_requested_at","canceled_at"],"additionalProperties":false}}}},"4XX":{"description":"The request was refused; `error.code` says which of the codes below.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/api/v1/balance":{"get":{"summary":"Your balance","description":"USD, as the ledger has it right now.\n\nScope: `v1:orders`.","tags":["v1:orders"],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"balance_usd":{"type":"string","pattern":"^-?\\d+(\\.\\d+)?$"},"currency":{"type":"string","const":"USD"}},"required":["balance_usd","currency"],"additionalProperties":false}}}},"4XX":{"description":"The request was refused; `error.code` says which of the codes below.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/api/v1/submissions":{"get":{"summary":"Reports waiting for you","description":"Across every order. `awaiting` means somebody has to decide: a first report, one being looked at, or a corrected one that came back.\n\nScope: `v1:review`.","tags":["v1:review"],"security":[{"bearerAuth":[]}],"parameters":[{"name":"status","in":"query","required":true,"schema":{"default":"awaiting","type":"string","enum":["awaiting","submitted","in_review","revision_requested","resubmitted","approved","rejected","expired","next_stage"]}},{"name":"page","in":"query","required":true,"schema":{"default":1,"type":"integer","minimum":1,"maximum":9007199254740991}},{"name":"per_page","in":"query","required":true,"schema":{"default":25,"type":"integer","minimum":1,"maximum":100}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"submissions":{"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)$"},"order_id":{"type":"string"},"task_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":["submitted","in_review","revision_requested","resubmitted","approved","rejected","expired","next_stage"]},"revision_count":{"type":"integer","minimum":0,"maximum":9007199254740991},"stage":{"type":"integer","minimum":1,"maximum":9007199254740991},"stage_count":{"type":"integer","minimum":1,"maximum":9007199254740991},"proof_username":{"type":["string","null"]},"attachments":{"type":"integer","minimum":0,"maximum":9007199254740991},"submitted_at":{"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)))$"},"sla_auto_approve_at":{"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"}]},"ai":{"anyOf":[{"type":"object","properties":{"decision":{"type":"string","enum":["approve","revision","reject"]},"confidence":{"anyOf":[{"type":"number","minimum":0,"maximum":1},{"type":"null"}]},"flags":{"type":"array","items":{"type":"string"}}},"required":["decision","confidence","flags"],"additionalProperties":false},{"type":"null"}]},"decidable":{"type":"boolean"}},"required":["id","order_id","task_id","status","revision_count","stage","stage_count","proof_username","attachments","submitted_at","sla_auto_approve_at","ai","decidable"],"additionalProperties":false}},"total":{"type":"integer","minimum":0,"maximum":9007199254740991},"page":{"type":"integer","minimum":1,"maximum":9007199254740991},"per_page":{"type":"integer","minimum":1,"maximum":9007199254740991},"awaiting":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["submissions","total","page","per_page","awaiting"],"additionalProperties":false}}}},"4XX":{"description":"The request was refused; `error.code` says which of the codes below.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/api/v1/orders/{id}/submissions":{"get":{"summary":"Reports on one order","description":"The same list, narrowed to one order.\n\nScope: `v1:review`.","tags":["v1:review"],"security":[{"bearerAuth":[]}],"parameters":[{"name":"id","in":"path","required":true,"description":"Order id, as returned by `POST /orders`.","schema":{"type":"string"}},{"name":"status","in":"query","required":true,"schema":{"default":"awaiting","type":"string","enum":["awaiting","submitted","in_review","revision_requested","resubmitted","approved","rejected","expired","next_stage"]}},{"name":"page","in":"query","required":true,"schema":{"default":1,"type":"integer","minimum":1,"maximum":9007199254740991}},{"name":"per_page","in":"query","required":true,"schema":{"default":25,"type":"integer","minimum":1,"maximum":100}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"submissions":{"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)$"},"order_id":{"type":"string"},"task_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":["submitted","in_review","revision_requested","resubmitted","approved","rejected","expired","next_stage"]},"revision_count":{"type":"integer","minimum":0,"maximum":9007199254740991},"stage":{"type":"integer","minimum":1,"maximum":9007199254740991},"stage_count":{"type":"integer","minimum":1,"maximum":9007199254740991},"proof_username":{"type":["string","null"]},"attachments":{"type":"integer","minimum":0,"maximum":9007199254740991},"submitted_at":{"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)))$"},"sla_auto_approve_at":{"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"}]},"ai":{"anyOf":[{"type":"object","properties":{"decision":{"type":"string","enum":["approve","revision","reject"]},"confidence":{"anyOf":[{"type":"number","minimum":0,"maximum":1},{"type":"null"}]},"flags":{"type":"array","items":{"type":"string"}}},"required":["decision","confidence","flags"],"additionalProperties":false},{"type":"null"}]},"decidable":{"type":"boolean"}},"required":["id","order_id","task_id","status","revision_count","stage","stage_count","proof_username","attachments","submitted_at","sla_auto_approve_at","ai","decidable"],"additionalProperties":false}},"total":{"type":"integer","minimum":0,"maximum":9007199254740991},"page":{"type":"integer","minimum":1,"maximum":9007199254740991},"per_page":{"type":"integer","minimum":1,"maximum":9007199254740991},"awaiting":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["submissions","total","page","per_page","awaiting"],"additionalProperties":false}}}},"4XX":{"description":"The request was refused; `error.code` says which of the codes below.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/api/v1/submissions/{id}":{"get":{"summary":"One report, with its thread","description":"The conversation as the person sees it, their proof, and what our model made of it. `allowed` is what you may decide right now and `refusal` says why the rest are not there.\n\nScope: `v1:review`.","tags":["v1:review"],"security":[{"bearerAuth":[]}],"parameters":[{"name":"id","in":"path","required":true,"description":"Submission id (uuid).","schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"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)$"},"order_id":{"type":"string"},"task_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":["submitted","in_review","revision_requested","resubmitted","approved","rejected","expired","next_stage"]},"revision_count":{"type":"integer","minimum":0,"maximum":9007199254740991},"stage":{"type":"integer","minimum":1,"maximum":9007199254740991},"stage_count":{"type":"integer","minimum":1,"maximum":9007199254740991},"proof_username":{"type":["string","null"]},"attachments":{"type":"integer","minimum":0,"maximum":9007199254740991},"submitted_at":{"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)))$"},"sla_auto_approve_at":{"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"}]},"ai":{"anyOf":[{"type":"object","properties":{"decision":{"type":"string","enum":["approve","revision","reject"]},"confidence":{"anyOf":[{"type":"number","minimum":0,"maximum":1},{"type":"null"}]},"flags":{"type":"array","items":{"type":"string"}}},"required":["decision","confidence","flags"],"additionalProperties":false},{"type":"null"}]},"decidable":{"type":"boolean"},"task_title":{"type":"string"},"task_link":{"type":"string"},"messages":{"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)$"},"author":{"type":"string","enum":["user","ai","advertiser","moderator","system"]},"text":{"type":"string"},"attachments":{"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)$"},"url":{"type":"string"},"filename":{"type":["string","null"]},"size_bytes":{"type":"integer","minimum":0,"maximum":9007199254740991},"mime":{"type":"string"}},"required":["id","url","filename","size_bytes","mime"],"additionalProperties":false}},"created_at":{"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","author","text","attachments","created_at"],"additionalProperties":false}},"allowed":{"type":"array","items":{"type":"string","enum":["approve","revision","reject"]}},"refusal":{"type":["string","null"]}},"required":["id","order_id","task_id","status","revision_count","stage","stage_count","proof_username","attachments","submitted_at","sla_auto_approve_at","ai","decidable","task_title","task_link","messages","allowed","refusal"],"additionalProperties":false}}}},"4XX":{"description":"The request was refused; `error.code` says which of the codes below.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/api/v1/submissions/{id}/verdict":{"post":{"summary":"Decide a report","description":"Approve it, ask for a fix, or refuse it. **A refusal of the DECISION is `200` with `applied: false`**, not an error: \"you cannot reject a report nobody has asked to fix\" is an answer, and retrying it will not change it. Asking for a fix or refusing needs a `message` — the person reads it.\n\nScope: `v1:review`.","tags":["v1:review"],"security":[{"bearerAuth":[]}],"parameters":[{"name":"id","in":"path","required":true,"description":"Submission id (uuid).","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"decision":{"type":"string","enum":["approve","revision","reject"]},"message":{"type":"string","maxLength":1000},"internal_note":{"type":"string","maxLength":1000}},"required":["decision"],"additionalProperties":false}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"submission_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)$"},"applied":{"type":"boolean"},"status":{"type":"string","enum":["submitted","in_review","revision_requested","resubmitted","approved","rejected","expired","next_stage"]},"refusal":{"type":["string","null"]},"downgraded":{"type":"boolean"}},"required":["submission_id","applied","status","refusal","downgraded"],"additionalProperties":false}}}},"4XX":{"description":"The request was refused; `error.code` says which of the codes below.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/api/v1/submissions/{id}/messages":{"post":{"summary":"Say something without deciding","description":"Goes into the same thread the person reads in the wall. They see it.\n\nScope: `v1:review`.","tags":["v1:review"],"security":[{"bearerAuth":[]}],"parameters":[{"name":"id","in":"path","required":true,"description":"Submission id (uuid).","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"text":{"type":"string","minLength":1,"maxLength":2000}},"required":["text"],"additionalProperties":false}}}},"responses":{"201":{"description":"Created","content":{"application/json":{"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)$"},"created_at":{"type":"string"}},"required":["id","created_at"],"additionalProperties":false}}}},"4XX":{"description":"The request was refused; `error.code` says which of the codes below.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/api/v1/webhooks":{"get":{"summary":"Your webhooks","description":"With the last delivery’s outcome, so a broken endpoint is visible here.\n\nScope: `v1:webhooks`.","tags":["v1:webhooks"],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"webhooks":{"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)$"},"url":{"type":"string"},"events":{"type":"array","items":{"type":"string","enum":["order.status_changed","submission.awaiting_review"]}},"enabled":{"type":"boolean"},"created_at":{"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)))$"},"last_status":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"last_error":{"type":["string","null"]},"last_delivered_at":{"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":["id","url","events","enabled","created_at","last_status","last_error","last_delivered_at"],"additionalProperties":false}}},"required":["webhooks"],"additionalProperties":false}}}},"4XX":{"description":"The request was refused; `error.code` says which of the codes below.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}},"post":{"summary":"Register a webhook","description":"The signing secret comes back **once**, in this response. Store it: every delivery is signed with it, and we cannot show it to you again.\n\nScope: `v1:webhooks`.","tags":["v1:webhooks"],"security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"events":{"minItems":1,"type":"array","items":{"type":"string","enum":["order.status_changed","submission.awaiting_review"]}}},"required":["url","events"],"additionalProperties":false}}}},"responses":{"201":{"description":"Created","content":{"application/json":{"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)$"},"url":{"type":"string"},"events":{"type":"array","items":{"type":"string","enum":["order.status_changed","submission.awaiting_review"]}},"enabled":{"type":"boolean"},"created_at":{"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)))$"},"last_status":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"last_error":{"type":["string","null"]},"last_delivered_at":{"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"}]},"secret":{"type":"string"}},"required":["id","url","events","enabled","created_at","last_status","last_error","last_delivered_at","secret"],"additionalProperties":false}}}},"4XX":{"description":"The request was refused; `error.code` says which of the codes below.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/api/v1/webhooks/{id}":{"patch":{"summary":"Pause one, or change its events","description":"Pausing beats deleting: the secret is shown once, so a delete is a re-key for every consumer of it. A paused endpoint receives nothing and keeps everything.\n\nScope: `v1:webhooks`.","tags":["v1:webhooks"],"security":[{"bearerAuth":[]}],"parameters":[{"name":"id","in":"path","required":true,"description":"Webhook id (uuid).","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"enabled":{"type":"boolean"},"events":{"minItems":1,"type":"array","items":{"type":"string","enum":["order.status_changed","submission.awaiting_review"]}}},"additionalProperties":false}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"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)$"},"url":{"type":"string"},"events":{"type":"array","items":{"type":"string","enum":["order.status_changed","submission.awaiting_review"]}},"enabled":{"type":"boolean"},"created_at":{"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)))$"},"last_status":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"last_error":{"type":["string","null"]},"last_delivered_at":{"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":["id","url","events","enabled","created_at","last_status","last_error","last_delivered_at"],"additionalProperties":false}}}},"4XX":{"description":"The request was refused; `error.code` says which of the codes below.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}},"delete":{"summary":"Remove a webhook","description":"Its delivery history goes with it.\n\nScope: `v1:webhooks`.","tags":["v1:webhooks"],"security":[{"bearerAuth":[]}],"parameters":[{"name":"id","in":"path","required":true,"description":"Webhook id (uuid).","schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"deleted":{"type":"boolean","const":true}},"required":["deleted"],"additionalProperties":false}}}},"4XX":{"description":"The request was refused; `error.code` says which of the codes below.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/api/v1/webhooks/{id}/deliveries":{"get":{"summary":"What we sent to this endpoint","description":"Every attempt, with your server’s answer and the exact body we sent. The last 50, newest first.\n\nScope: `v1:webhooks`.","tags":["v1:webhooks"],"security":[{"bearerAuth":[]}],"parameters":[{"name":"id","in":"path","required":true,"description":"Webhook id (uuid).","schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"deliveries":{"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)$"},"event":{"type":"string","enum":["order.status_changed","submission.awaiting_review"]},"status":{"type":"string","enum":["queued","delivered","failed","manual"]},"attempt":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"last_http_status":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"last_error":{"type":["string","null"]},"next_attempt_at":{"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"}]},"delivered_at":{"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"}]},"created_at":{"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)))$"},"payload":{"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)$"},"event":{"type":"string","enum":["order.status_changed","submission.awaiting_review"]},"created_at":{"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)))$"},"data":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"required":["id","event","created_at","data"],"additionalProperties":false}},"required":["id","event","status","attempt","last_http_status","last_error","next_attempt_at","delivered_at","created_at","payload"],"additionalProperties":false}}},"required":["deliveries"],"additionalProperties":false}}}},"4XX":{"description":"The request was refused; `error.code` says which of the codes below.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/api/v1/webhooks/{id}/deliveries/{deliveryId}/resend":{"post":{"summary":"Send one again","description":"Starts the schedule again from the first attempt. This is what the stored body is for: an endpoint that was down all afternoon has run out of attempts, and the alternative is reconciling by hand. A disabled webhook answers 409: enable it first.\n\nScope: `v1:webhooks`.","tags":["v1:webhooks"],"security":[{"bearerAuth":[]}],"parameters":[{"name":"id","in":"path","required":true,"description":"Webhook id (uuid).","schema":{"type":"string"}},{"name":"deliveryId","in":"path","required":true,"description":"Delivery id (uuid).","schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"queued":{"type":"boolean","const":true}},"required":["queued"],"additionalProperties":false}}}},"4XX":{"description":"The request was refused; `error.code` says which of the codes below.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/api/v1/me/usage/ai":{"get":{"summary":"What the model did with your reports","description":"Not a bill — you pay for completions, and what a check costs is ours. This is here so you can see whether automatic checking is doing anything for you.\n\nScope: `v1:review`.","tags":["v1:review"],"security":[{"bearerAuth":[]}],"parameters":[{"name":"days","in":"query","required":true,"schema":{"default":30,"type":"integer","minimum":1,"maximum":90}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"days":{"type":"integer","minimum":1,"maximum":9007199254740991},"checked":{"type":"integer","minimum":0,"maximum":9007199254740991},"decided_by_ai":{"type":"integer","minimum":0,"maximum":9007199254740991},"decided_by_person":{"type":"integer","minimum":0,"maximum":9007199254740991},"avg_confidence":{"anyOf":[{"type":"number","minimum":0,"maximum":1},{"type":"null"}]}},"required":["days","checked","decided_by_ai","decided_by_person","avg_confidence"],"additionalProperties":false}}}},"4XX":{"description":"The request was refused; `error.code` says which of the codes below.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/api/v1/placements/{key}/stats":{"get":{"summary":"What your wall earned","description":"Conversions, revenue, reversals, and both halves of what we owe you.\n\nScope: `publisher:stats`.","tags":["publisher:stats"],"security":[{"bearerAuth":[]}],"parameters":[{"name":"key","in":"path","required":true,"description":"The wall’s public key, the one in your loader snippet.","schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"placement_key":{"type":"string"},"days":{"type":"integer","minimum":1,"maximum":9007199254740991},"conversions":{"type":"integer","minimum":0,"maximum":9007199254740991},"revenue_usd":{"type":"string","pattern":"^-?\\d+(\\.\\d+)?$"},"reversed":{"type":"integer","minimum":0,"maximum":9007199254740991},"reversed_usd":{"type":"string","pattern":"^-?\\d+(\\.\\d+)?$"},"users":{"type":"integer","minimum":0,"maximum":9007199254740991},"earning_users":{"type":"integer","minimum":0,"maximum":9007199254740991},"approval_rate":{"anyOf":[{"type":"number","minimum":0,"maximum":1},{"type":"null"}]},"balance_pending_usd":{"type":"string","pattern":"^-?\\d+(\\.\\d+)?$"},"balance_available_usd":{"type":"string","pattern":"^-?\\d+(\\.\\d+)?$"}},"required":["placement_key","days","conversions","revenue_usd","reversed","reversed_usd","users","earning_users","approval_rate","balance_pending_usd","balance_available_usd"],"additionalProperties":false}}}},"4XX":{"description":"The request was refused; `error.code` says which of the codes below.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/api/v1/placements/{key}/postbacks":{"get":{"summary":"What we sent you","description":"Every notification, every attempt, and what your server answered.\n\nScope: `publisher:stats`.","tags":["publisher:stats"],"security":[{"bearerAuth":[]}],"parameters":[{"name":"key","in":"path","required":true,"description":"The wall’s public key, the one in your loader snippet.","schema":{"type":"string"}},{"name":"event","in":"query","required":false,"schema":{"type":"string","enum":["approved","reversed","revision_requested","rejected","stage_available","test"]}},{"name":"status","in":"query","required":false,"schema":{"type":"string","enum":["queued","delivered","failed","manual"]}},{"name":"limit","in":"query","required":true,"schema":{"default":50,"type":"integer","minimum":1,"maximum":100}},{"name":"before","in":"query","required":false,"schema":{"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)))$"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"deliveries":{"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)$"},"event":{"type":"string","enum":["approved","reversed","pending","revision_requested","rejected","stage_available","test"],"description":"The event sent. `pending` is reserved and never sent."},"status":{"type":"string","enum":["queued","delivered","failed","manual"]},"method":{"type":"string","enum":["GET","POST"]},"url":{"type":"string"},"transaction_id":{"type":["string","null"]},"payout_usd":{"anyOf":[{"type":"string","pattern":"^-?\\d+(\\.\\d+)?$"},{"type":"null"}]},"amount":{"anyOf":[{"type":"string","pattern":"^-?\\d+(\\.\\d+)?$"},{"type":"null"}]},"attempt":{"type":"integer","minimum":0,"maximum":9007199254740991},"last_http_status":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"last_body":{"type":["string","null"]},"last_error":{"type":["string","null"]},"next_attempt_at":{"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"}]},"delivered_at":{"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"}]},"created_at":{"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","event","status","method","url","transaction_id","payout_usd","amount","attempt","last_http_status","last_body","last_error","next_attempt_at","delivered_at","created_at"],"additionalProperties":false}},"next_before":{"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"}]},"totals":{"type":"object","properties":{"delivered":{"type":"integer","minimum":0,"maximum":9007199254740991},"queued":{"type":"integer","minimum":0,"maximum":9007199254740991},"failed":{"type":"integer","minimum":0,"maximum":9007199254740991},"manual":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["delivered","queued","failed","manual"],"additionalProperties":false}},"required":["deliveries","next_before","totals"],"additionalProperties":false}}}},"4XX":{"description":"The request was refused; `error.code` says which of the codes below.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/api/v1/placements/{key}/postbacks/{deliveryId}/resend":{"post":{"summary":"Send one again","description":"Restarts the retry schedule from the first attempt.\n\nScope: `publisher:stats`.","tags":["publisher:stats"],"security":[{"bearerAuth":[]}],"parameters":[{"name":"key","in":"path","required":true,"description":"The wall’s public key, the one in your loader snippet.","schema":{"type":"string"}},{"name":"deliveryId","in":"path","required":true,"description":"Delivery id from the log.","schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"queued":{"type":"boolean"}},"required":["queued"],"additionalProperties":false}}}},"4XX":{"description":"The request was refused; `error.code` says which of the codes below.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/api/v1/placements/{key}/postbacks/test":{"post":{"summary":"Send a test one","description":"A real request to your configured URL, with a real signature. It carries `payout=0` and `amount=0`, so a handler that credits without reading `event` credits nothing.\n\nScope: `publisher:stats`.","tags":["publisher:stats"],"security":[{"bearerAuth":[]}],"parameters":[{"name":"key","in":"path","required":true,"description":"The wall’s public key, the one in your loader snippet.","schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"delivery_id":{"type":["string","null"]}},"required":["delivery_id"],"additionalProperties":false}}}},"4XX":{"description":"The request was refused; `error.code` says which of the codes below.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/api/v1/placements/{key}/users/{externalId}":{"get":{"summary":"One of your users","description":"By YOUR id for them — the one you sent us in the loader. Their counters, what they earned, and the fraud flags our checks raised.\n\nScope: `publisher:stats`.","tags":["publisher:stats"],"security":[{"bearerAuth":[]}],"parameters":[{"name":"key","in":"path","required":true,"description":"The wall’s public key, the one in your loader snippet.","schema":{"type":"string"}},{"name":"externalId","in":"path","required":true,"description":"Your own id for the person.","schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"external_user_id":{"type":"string"},"trust_score":{"type":"integer","minimum":0,"maximum":100},"flags":{"type":"array","items":{"type":"string"}},"banned_by_publisher":{"type":"boolean"},"reservations":{"type":"integer","minimum":0,"maximum":9007199254740991},"submissions":{"type":"integer","minimum":0,"maximum":9007199254740991},"approved":{"type":"integer","minimum":0,"maximum":9007199254740991},"rejected":{"type":"integer","minimum":0,"maximum":9007199254740991},"earned_usd":{"type":"string","pattern":"^-?\\d+(\\.\\d+)?$"},"first_seen_at":{"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)))$"},"last_seen_at":{"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":["external_user_id","trust_score","flags","banned_by_publisher","reservations","submissions","approved","rejected","earned_usd","first_seen_at","last_seen_at"],"additionalProperties":false}}}},"4XX":{"description":"The request was refused; `error.code` says which of the codes below.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}}},"x-error-codes":{"validation_failed":{"status":400,"message":"Request validation failed"},"unauthorized":{"status":401,"message":"Authentication required"},"forbidden":{"status":403,"message":"Not allowed"},"not_found":{"status":404,"message":"Not found"},"conflict":{"status":409,"message":"Conflict with the current state"},"rate_limited":{"status":429,"message":"Too many requests"},"payload_too_large":{"status":413,"message":"Request body is too large"},"internal":{"status":500,"message":"Internal error"},"ai_unavailable":{"status":503,"message":"The model is not available"},"comments_unavailable":{"status":503,"message":"Automatic comments are not available right now"},"ai_models_not_chosen":{"status":409,"message":"Pick a real model for every tier before checking is switched on"},"ai_check_unavailable":{"status":409,"message":"This report cannot be sent to the model"},"ai_key_missing":{"status":409,"message":"This server has no AI provider key"},"project_locked":{"status":409,"message":"The project changed status while it was being edited"},"icon_invalid":{"status":400,"message":"Expected a PNG, JPEG, WebP, GIF or SVG image within the size limit"},"placement_not_found":{"status":404,"message":"Unknown placement"},"placement_inactive":{"status":403,"message":"Placement is not active"},"invalid_signature":{"status":401,"message":"Invalid user signature"},"signature_required":{"status":401,"message":"The wall opens only with a signed user id: sig = HMAC-SHA256(user_id:ts) and ts"},"signature_expired":{"status":401,"message":"The signed link has expired; open the wall again"},"placeholder_user_id":{"status":400,"message":"user_id is the template placeholder; put the real user id there"},"user_banned":{"status":403,"message":"User is banned by the publisher"},"session_expired":{"status":401,"message":"Session expired"},"task_not_available":{"status":409,"message":"Task is not available"},"task_already_reserved":{"status":409,"message":"Task already reserved"},"per_user_limit_reached":{"status":409,"message":"Task limit reached for this user"},"no_slots":{"status":409,"message":"No free slots left"},"target_already_done":{"status":409,"message":"You already did this task for this target on an earlier order"},"account_required":{"status":409,"message":"Link your account on this platform first"},"account_script_mismatch":{"status":409,"message":"This task is not available for your linked account"},"account_already_done":{"status":409,"message":"Your linked account has already done this task"},"account_input_invalid":{"status":400,"message":"Paste a channel id, a channel link or a profile link"},"account_not_found":{"status":404,"message":"The platform has no such account"},"account_private":{"status":400,"message":"Make your subscriptions public on YouTube and try again"},"account_taken":{"status":409,"message":"This account is already linked by another person"},"account_already_linked":{"status":409,"message":"You already have a linked account on this platform"},"account_link_cooldown":{"status":429,"message":"Please wait before trying to link an account again"},"api_check_limit_reached":{"status":429,"message":"You have started as many API-checked tasks as allowed for now"},"api_unavailable":{"status":503,"message":"The platform cannot be asked right now"},"reservation_not_found":{"status":404,"message":"Reservation not found"},"reservation_expired":{"status":410,"message":"Reservation has expired"},"stage_not_started":{"status":409,"message":"Start the stage before sending its report"},"stage_not_open":{"status":409,"message":"The stage has not opened yet"},"stage_not_startable":{"status":409,"message":"There is no stage to start"},"submission_not_editable":{"status":409,"message":"Submission cannot be changed in its current status"},"revision_deadline_passed":{"status":410,"message":"Revision deadline has passed"},"attachment_required":{"status":400,"message":"A proof attachment is required"},"proof_field_required":{"status":400,"message":"The report is missing a required proof field"},"attachment_too_large":{"status":413,"message":"Attachment is too large"},"attachment_type_not_allowed":{"status":415,"message":"Attachment type is not allowed"},"attachment_unreadable":{"status":415,"message":"Attachment could not be read"},"too_many_attachments":{"status":400,"message":"Too many attachments"},"insufficient_funds":{"status":402,"message":"Insufficient balance"},"order_target_busy":{"status":409,"message":"There is an active order for this target already; a new one can be placed when it is completed"},"refill_not_available":{"status":409,"message":"Refill is not available for this order"},"refill_in_progress":{"status":409,"message":"A refill of this order is in progress"},"refill_too_soon":{"status":409,"message":"A refill of this order was requested recently"},"refill_temporarily_unavailable":{"status":503,"message":"The platform did not answer; try the refill again later"},"adjustment_above_max":{"status":400,"message":"The adjustment is above the configured maximum"},"service_unavailable":{"status":409,"message":"Service is not available"},"invalid_quantity":{"status":400,"message":"Quantity is out of the allowed range"},"verdict_not_allowed":{"status":409,"message":"This verdict is not allowed at this stage"},"wrong_cabinet":{"status":403,"message":"This address belongs to a different cabinet"},"email_not_verified":{"status":403,"message":"Confirm your email address first"},"api_scope_not_allowed":{"status":403,"message":"This account cannot hold an API key with these scopes"},"invalid_token":{"status":400,"message":"This link or code is no longer valid"},"two_factor_required":{"status":401,"message":"A sign-in code is required"}}}