{"openapi":"3.1.0","info":{"title":"Touchstone","version":"0.1.0"},"paths":{"/healthz":{"get":{"summary":"Healthz","operationId":"healthz_healthz_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Healthz Healthz Get"}}}}}}},"/v1/auth/tester/register":{"post":{"tags":["auth"],"summary":"Tester Register","operationId":"tester_register_v1_auth_tester_register_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TesterRegisterIn"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TesterOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/auth/tester/login":{"post":{"tags":["auth"],"summary":"Tester Login","operationId":"tester_login_v1_auth_tester_login_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TesterLoginIn"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TokenOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/auth/requester/register":{"post":{"tags":["auth"],"summary":"Create a requester account and get a bootstrap API key (shown once)","operationId":"requester_register_v1_auth_requester_register_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RequesterRegisterIn"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RequesterRegisterOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/auth/requester/login":{"post":{"tags":["auth"],"summary":"Requester Login","operationId":"requester_login_v1_auth_requester_login_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RequesterLoginIn"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TokenOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/me":{"get":{"tags":["requester"],"summary":"Get Requester Me","operationId":"get_requester_me_v1_me_get","parameters":[{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RequesterMeOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/me/currency":{"put":{"tags":["requester"],"summary":"Switch Currency","description":"Select the active currency (RUB ↔ USD).\n\nBalances are separate per currency (like bank sub-accounts), so switching\nis always safe: it changes which balance is active and which payment rail\ntop-ups use — Alfa for RUB, Stripe for USD — without converting anything.","operationId":"switch_currency_v1_me_currency_put","parameters":[{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CurrencyIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RequesterMeOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/keys":{"get":{"tags":["keys"],"summary":"List Keys","operationId":"list_keys_v1_keys_get","parameters":[{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ApiKeyOut"},"title":"Response List Keys V1 Keys Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["keys"],"summary":"Create Key","operationId":"create_key_v1_keys_post","parameters":[{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiKeyCreateIn"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiKeyCreatedOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/keys/{key_id}":{"delete":{"tags":["keys"],"summary":"Revoke Key","operationId":"revoke_key_v1_keys__key_id__delete","parameters":[{"name":"key_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Key Id"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/tasks":{"post":{"tags":["requester"],"summary":"Create Task","operationId":"create_task_v1_tasks_post","parameters":[{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TaskCreateIn"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TaskOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["requester"],"summary":"List Tasks","operationId":"list_tasks_v1_tasks_get","parameters":[{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"}},{"name":"q","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Q"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":20,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Offset"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/TaskOut"},"title":"Response List Tasks V1 Tasks Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/tasks/{task_id}":{"get":{"tags":["requester"],"summary":"Get Task","operationId":"get_task_v1_tasks__task_id__get","parameters":[{"name":"task_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Task Id"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TaskDetailOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/tasks/{task_id}/report":{"get":{"tags":["requester"],"summary":"List Reports","operationId":"list_reports_v1_tasks__task_id__report_get","parameters":[{"name":"task_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Task Id"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ReportOut"},"title":"Response List Reports V1 Tasks  Task Id  Report Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/tasks/{task_id}/artifact-url":{"get":{"tags":["requester"],"summary":"Get Artifact Url","operationId":"get_artifact_url_v1_tasks__task_id__artifact_url_get","parameters":[{"name":"task_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Task Id"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ArtifactUrlOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/tasks/{task_id}/cancel":{"post":{"tags":["requester"],"summary":"Cancel Task","operationId":"cancel_task_v1_tasks__task_id__cancel_post","parameters":[{"name":"task_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Task Id"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TaskOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/tasks/{task_id}/done":{"post":{"tags":["requester"],"summary":"Mark Task Done","operationId":"mark_task_done_v1_tasks__task_id__done_post","parameters":[{"name":"task_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Task Id"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DoneIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TaskOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/tasks/{task_id}/approve":{"post":{"tags":["requester"],"summary":"Approve Task","operationId":"approve_task_v1_tasks__task_id__approve_post","parameters":[{"name":"task_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Task Id"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApproveIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TaskOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/tasks/{task_id}/reject":{"post":{"tags":["requester"],"summary":"Reject Task","operationId":"reject_task_v1_tasks__task_id__reject_post","parameters":[{"name":"task_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Task Id"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RejectIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TaskOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/tasks/{task_id}/reports/{report_id}/approve":{"post":{"tags":["requester"],"summary":"Approve Report","operationId":"approve_report_v1_tasks__task_id__reports__report_id__approve_post","parameters":[{"name":"task_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Task Id"}},{"name":"report_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Report Id"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApproveIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TaskOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/tasks/{task_id}/reports/{report_id}/reject":{"post":{"tags":["requester"],"summary":"Reject Report","operationId":"reject_report_v1_tasks__task_id__reports__report_id__reject_post","parameters":[{"name":"task_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Task Id"}},{"name":"report_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Report Id"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RejectIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TaskOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/tester/me":{"get":{"tags":["tester"],"summary":"Get Me","operationId":"get_me_v1_tester_me_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TesterOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/tester/me/devices":{"put":{"tags":["tester"],"summary":"Replace Devices","operationId":"replace_devices_v1_tester_me_devices_put","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DevicesIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TesterOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/tester/me/phone":{"put":{"tags":["tester"],"summary":"Set Phone","operationId":"set_phone_v1_tester_me_phone_put","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PhoneIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TesterOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["tester"],"summary":"Delete Phone","operationId":"delete_phone_v1_tester_me_phone_delete","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TesterOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/tester/me/currency":{"put":{"tags":["tester"],"summary":"Switch Currency","description":"Select the default sub-account (RUB ↔ USD) for earnings and withdrawals.\n\nBalances stay separate; switching only changes which one is the default\nview. It never converts anything.","operationId":"switch_currency_v1_tester_me_currency_put","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CurrencyIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TesterOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/tester/tasks/available":{"get":{"tags":["tester"],"summary":"List Available Tasks","operationId":"list_available_tasks_v1_tester_tasks_available_get","parameters":[{"name":"q","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Q"}},{"name":"sort","in":"query","required":false,"schema":{"anyOf":[{"enum":["price","created_at","ends_at"],"type":"string"},{"type":"null"}],"title":"Sort"}},{"name":"order","in":"query","required":false,"schema":{"anyOf":[{"enum":["asc","desc"],"type":"string"},{"type":"null"}],"title":"Order"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":20,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Offset"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/TaskOut"},"title":"Response List Available Tasks V1 Tester Tasks Available Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/tester/tasks/mine":{"get":{"tags":["tester"],"summary":"List My Tasks","operationId":"list_my_tasks_v1_tester_tasks_mine_get","parameters":[{"name":"q","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Q"}},{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":20,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Offset"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/TaskOut"},"title":"Response List My Tasks V1 Tester Tasks Mine Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/tester/tasks/mine/count":{"get":{"tags":["tester"],"summary":"Count My Tasks","description":"Badge counter for the in-progress FAB; cheap COUNT, no payloads.","operationId":"count_my_tasks_v1_tester_tasks_mine_count_get","parameters":[{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Count My Tasks V1 Tester Tasks Mine Count Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/tester/tasks/{task_id}":{"get":{"tags":["tester"],"summary":"Get Task Detail","operationId":"get_task_detail_v1_tester_tasks__task_id__get","parameters":[{"name":"task_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Task Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TaskOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/tester/tasks/{task_id}/artifact-url":{"get":{"tags":["tester"],"summary":"Get Task Artifact Url","operationId":"get_task_artifact_url_v1_tester_tasks__task_id__artifact_url_get","parameters":[{"name":"task_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Task Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ArtifactUrlOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/tester/tasks/{task_id}/accept":{"post":{"tags":["tester"],"summary":"Accept Task","operationId":"accept_task_v1_tester_tasks__task_id__accept_post","parameters":[{"name":"task_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Task Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TaskOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/tester/tasks/{task_id}/release":{"post":{"tags":["tester"],"summary":"Release Task","operationId":"release_task_v1_tester_tasks__task_id__release_post","parameters":[{"name":"task_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Task Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TaskOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/tester/tasks/{task_id}/draft":{"put":{"tags":["tester"],"summary":"Save Draft Report","operationId":"save_draft_report_v1_tester_tasks__task_id__draft_put","parameters":[{"name":"task_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Task Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DraftReportIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReportOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["tester"],"summary":"Get Draft Report","operationId":"get_draft_report_v1_tester_tasks__task_id__draft_get","parameters":[{"name":"task_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Task Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReportOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/tester/tasks/{task_id}/report":{"post":{"tags":["tester"],"summary":"Submit Report","operationId":"submit_report_v1_tester_tasks__task_id__report_post","parameters":[{"name":"task_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Task Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReportSubmitIn"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReportOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/tester/earnings":{"get":{"tags":["tester"],"summary":"Get Earnings","operationId":"get_earnings_v1_tester_earnings_get","parameters":[{"name":"currency","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Currency"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":20,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Offset"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EarningsOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/tester/withdrawals":{"post":{"tags":["tester"],"summary":"Create Withdrawal","operationId":"create_withdrawal_v1_tester_withdrawals_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WithdrawalIn"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WithdrawalOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["tester"],"summary":"List Withdrawals","operationId":"list_withdrawals_v1_tester_withdrawals_get","parameters":[{"name":"currency","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Currency"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":20,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Offset"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WithdrawalPageOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/tester/payout-banks":{"get":{"tags":["tester"],"summary":"List Payout Banks","description":"НСПК bank catalog for RUB SBP withdrawals.","operationId":"list_payout_banks_v1_tester_payout_banks_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/PayoutBankOut"},"title":"Response List Payout Banks V1 Tester Payout Banks Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/tester/stripe/connect":{"post":{"tags":["tester"],"summary":"Connect Stripe Payouts","description":"Start (or resume) Stripe Express onboarding for USD payouts.","operationId":"connect_stripe_payouts_v1_tester_stripe_connect_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Connect Stripe Payouts V1 Tester Stripe Connect Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/uploads/presign":{"post":{"tags":["uploads"],"summary":"Presign","operationId":"presign_v1_uploads_presign_post","parameters":[{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PresignIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PresignOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/schemas/{name}/{version}":{"get":{"tags":["schemas"],"summary":"Get Schema","operationId":"get_schema_v1_schemas__name___version__get","parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string","title":"Name"}},{"name":"version","in":"path","required":true,"schema":{"type":"string","title":"Version"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Schema V1 Schemas  Name   Version  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/geo":{"get":{"tags":["geo"],"summary":"Get Geo","operationId":"get_geo_v1_geo_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeoOut"}}}}}}},"/v1/budget":{"get":{"tags":["budget"],"summary":"Get Budget","operationId":"get_budget_v1_budget_get","parameters":[{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BudgetOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/budget/topups":{"post":{"tags":["budget"],"summary":"Create Topup","operationId":"create_topup_v1_budget_topups_post","parameters":[{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TopupIn"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TopupOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/budget/topups/sync":{"post":{"tags":["budget"],"summary":"Sync Topups","operationId":"sync_topups_v1_budget_topups_sync_post","parameters":[{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BudgetOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/transfers/quote":{"get":{"tags":["transfers"],"summary":"Get Conversion Quote","operationId":"get_conversion_quote_v1_transfers_quote_get","parameters":[{"name":"from_currency","in":"query","required":true,"schema":{"enum":["RUB","USD"],"type":"string","title":"From Currency"}},{"name":"to_currency","in":"query","required":true,"schema":{"enum":["RUB","USD"],"type":"string","title":"To Currency"}},{"name":"amount_cents","in":"query","required":true,"schema":{"type":"integer","exclusiveMinimum":0,"title":"Amount Cents"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TransferQuoteOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/transfers":{"post":{"tags":["transfers"],"summary":"Execute Conversion","operationId":"execute_conversion_v1_transfers_post","parameters":[{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TransferIn"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TransferOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/notifications":{"get":{"tags":["notifications"],"summary":"List Notifications","operationId":"list_notifications_v1_notifications_get","parameters":[{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/NotificationOut"},"title":"Response List Notifications V1 Notifications Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["notifications"],"summary":"Clear All Notifications","operationId":"clear_all_notifications_v1_notifications_delete","parameters":[{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/notifications/unread-count":{"get":{"tags":["notifications"],"summary":"Get Unread Count","operationId":"get_unread_count_v1_notifications_unread_count_get","parameters":[{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":{"type":"integer"},"title":"Response Get Unread Count V1 Notifications Unread Count Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/notifications/read-all":{"post":{"tags":["notifications"],"summary":"Mark All Read","operationId":"mark_all_read_v1_notifications_read_all_post","parameters":[{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/notifications/{notification_id}/read":{"post":{"tags":["notifications"],"summary":"Mark Read","operationId":"mark_read_v1_notifications__notification_id__read_post","parameters":[{"name":"notification_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Notification Id"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/notifications/{notification_id}":{"delete":{"tags":["notifications"],"summary":"Delete Notification","operationId":"delete_notification_v1_notifications__notification_id__delete","parameters":[{"name":"notification_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Notification Id"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/webhooks/alfabank/callback":{"post":{"tags":["webhooks"],"summary":"Alfabank Callback","operationId":"alfabank_callback_v1_webhooks_alfabank_callback_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Alfabank Callback V1 Webhooks Alfabank Callback Post"}}}}}}},"/v1/webhooks/stripe/callback":{"post":{"tags":["webhooks"],"summary":"Stripe Callback","operationId":"stripe_callback_v1_webhooks_stripe_callback_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Stripe Callback V1 Webhooks Stripe Callback Post"}}}}}}},"/s/{code}":{"get":{"tags":["public"],"summary":"Follow Short Link","operationId":"follow_short_link_s__code__get","parameters":[{"name":"code","in":"path","required":true,"schema":{"type":"string","title":"Code"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/public/tasks/{task_id}":{"get":{"tags":["public"],"summary":"Get Public Task","operationId":"get_public_task_v1_public_tasks__task_id__get","parameters":[{"name":"task_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Task Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicTaskOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}}},"components":{"schemas":{"ApiKeyCreateIn":{"properties":{"label":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"title":"Label"}},"type":"object","title":"ApiKeyCreateIn"},"ApiKeyCreatedOut":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"prefix":{"type":"string","title":"Prefix"},"api_key":{"type":"string","title":"Api Key"}},"type":"object","required":["id","prefix","api_key"],"title":"ApiKeyCreatedOut"},"ApiKeyOut":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"prefix":{"type":"string","title":"Prefix"},"label":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Label"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"revoked_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Revoked At"}},"type":"object","required":["id","prefix","label","created_at","revoked_at"],"title":"ApiKeyOut"},"ApproveIn":{"properties":{"note":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Note"}},"type":"object","title":"ApproveIn"},"ArtifactUrlOut":{"properties":{"url":{"type":"string","title":"Url"}},"type":"object","required":["url"],"title":"ArtifactUrlOut"},"AssignmentOut":{"properties":{"tester_id":{"type":"string","format":"uuid","title":"Tester Id"},"tester_name":{"type":"string","title":"Tester Name"},"accepted_at":{"type":"string","format":"date-time","title":"Accepted At"}},"type":"object","required":["tester_id","tester_name","accepted_at"],"title":"AssignmentOut","description":"One claimed slot on a task. Display name only — tester emails are\nnever exposed to developers."},"BudgetOut":{"properties":{"balance_cents":{"type":"integer","title":"Balance Cents"},"currency":{"type":"string","title":"Currency"},"topups":{"items":{"$ref":"#/components/schemas/BudgetTopupOut"},"type":"array","title":"Topups"}},"type":"object","required":["balance_cents","currency","topups"],"title":"BudgetOut"},"BudgetTopupOut":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"amount_cents":{"type":"integer","title":"Amount Cents"},"status":{"type":"string","title":"Status"},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["id","amount_cents","status","created_at"],"title":"BudgetTopupOut"},"CurrencyIn":{"properties":{"currency":{"type":"string","enum":["RUB","USD"],"title":"Currency"}},"type":"object","required":["currency"],"title":"CurrencyIn"},"DeviceIn":{"properties":{"platform":{"type":"string","enum":["android","ios","web"],"title":"Platform"},"model":{"type":"string","maxLength":200,"minLength":1,"title":"Model"},"os_version":{"type":"string","maxLength":50,"minLength":1,"title":"Os Version"},"form_factor":{"type":"string","enum":["phone","tablet","desktop"],"title":"Form Factor"},"is_emulator":{"type":"boolean","title":"Is Emulator","default":false}},"type":"object","required":["platform","model","os_version","form_factor"],"title":"DeviceIn"},"DeviceOut":{"properties":{"platform":{"type":"string","enum":["android","ios","web"],"title":"Platform"},"model":{"type":"string","maxLength":200,"minLength":1,"title":"Model"},"os_version":{"type":"string","maxLength":50,"minLength":1,"title":"Os Version"},"form_factor":{"type":"string","enum":["phone","tablet","desktop"],"title":"Form Factor"},"is_emulator":{"type":"boolean","title":"Is Emulator","default":false},"id":{"type":"string","format":"uuid","title":"Id"}},"type":"object","required":["platform","model","os_version","form_factor","id"],"title":"DeviceOut"},"DevicesIn":{"properties":{"devices":{"items":{"$ref":"#/components/schemas/DeviceIn"},"type":"array","title":"Devices"}},"type":"object","required":["devices"],"title":"DevicesIn"},"DoneIn":{"properties":{"fix_notes":{"anyOf":[{"type":"string","maxLength":4000},{"type":"null"}],"title":"Fix Notes"}},"type":"object","title":"DoneIn"},"DraftReportIn":{"properties":{"bugs":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Bugs"},"ux_findings":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Ux Findings"},"metrics":{"additionalProperties":true,"type":"object","title":"Metrics"}},"type":"object","title":"DraftReportIn"},"EarningsOut":{"properties":{"currency":{"type":"string","title":"Currency"},"total_cents":{"type":"integer","title":"Total Cents"},"withdrawn_cents":{"type":"integer","title":"Withdrawn Cents"},"available_cents":{"type":"integer","title":"Available Cents"},"payout_hold_reports":{"type":"integer","title":"Payout Hold Reports"},"withdrawal_fee_cents":{"type":"integer","title":"Withdrawal Fee Cents"},"entries_total":{"type":"integer","title":"Entries Total"},"entries":{"items":{"$ref":"#/components/schemas/LedgerEntryOut"},"type":"array","title":"Entries"}},"type":"object","required":["currency","total_cents","withdrawn_cents","available_cents","payout_hold_reports","withdrawal_fee_cents","entries_total","entries"],"title":"EarningsOut"},"GeoOut":{"properties":{"country_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Country Code"},"currency":{"type":"string","enum":["RUB","USD"],"title":"Currency"}},"type":"object","required":["country_code","currency"],"title":"GeoOut"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"LedgerEntryOut":{"properties":{"task_id":{"type":"string","format":"uuid","title":"Task Id"},"amount_cents":{"type":"integer","title":"Amount Cents"},"currency":{"type":"string","title":"Currency"},"source_amount_cents":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Source Amount Cents"},"fx_rate":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Fx Rate"},"kind":{"type":"string","title":"Kind"},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["task_id","amount_cents","currency","source_amount_cents","fx_rate","kind","created_at"],"title":"LedgerEntryOut"},"NotificationOut":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"kind":{"type":"string","title":"Kind"},"task_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Task Id"},"title":{"type":"string","title":"Title"},"body":{"type":"string","title":"Body"},"is_read":{"type":"boolean","title":"Is Read"},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["id","kind","task_id","title","body","is_read","created_at"],"title":"NotificationOut"},"PayoutBankOut":{"properties":{"code":{"type":"string","title":"Code"},"name":{"type":"string","title":"Name"}},"type":"object","required":["code","name"],"title":"PayoutBankOut"},"PhoneIn":{"properties":{"phone":{"type":"string","maxLength":16,"minLength":9,"title":"Phone"}},"type":"object","required":["phone"],"title":"PhoneIn"},"PresignIn":{"properties":{"kind":{"type":"string","enum":["recording","screenshot","artifact"],"title":"Kind"},"task_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Task Id"},"filename":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}],"title":"Filename"}},"type":"object","required":["kind"],"title":"PresignIn"},"PresignOut":{"properties":{"upload_url":{"type":"string","title":"Upload Url"},"key":{"type":"string","title":"Key"},"expires_in":{"type":"integer","title":"Expires In"}},"type":"object","required":["upload_url","key","expires_in"],"title":"PresignOut"},"PublicTaskOut":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"schema_version":{"type":"string","title":"Schema Version"},"artifact_type":{"type":"string","title":"Artifact Type"},"niche":{"type":"string","title":"Niche"},"test_type":{"type":"string","title":"Test Type"},"instructions":{"additionalProperties":true,"type":"object","title":"Instructions"},"targeting":{"additionalProperties":true,"type":"object","title":"Targeting"},"budget_cents":{"type":"integer","title":"Budget Cents"},"platform_fee_cents":{"type":"integer","title":"Platform Fee Cents"},"currency":{"type":"string","title":"Currency"},"status":{"type":"string","title":"Status"},"max_testers":{"type":"integer","title":"Max Testers"},"accepted_count":{"type":"integer","title":"Accepted Count"},"starts_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Starts At"},"ends_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Ends At"},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["id","schema_version","artifact_type","niche","test_type","instructions","targeting","budget_cents","platform_fee_cents","currency","status","max_testers","accepted_count","starts_at","ends_at","created_at"],"title":"PublicTaskOut","description":"Anonymous task preview: what a bot-link visitor needs to decide whether\nto sign up. Private fields (credentials, artifact URL, requester id) stay\nbehind tester auth."},"RejectIn":{"properties":{"note":{"type":"string","minLength":1,"title":"Note"}},"type":"object","required":["note"],"title":"RejectIn"},"ReportOut":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"task_id":{"type":"string","format":"uuid","title":"Task Id"},"tester_id":{"type":"string","format":"uuid","title":"Tester Id"},"schema_version":{"type":"string","title":"Schema Version"},"bugs":{"items":{},"type":"array","title":"Bugs"},"ux_findings":{"items":{},"type":"array","title":"Ux Findings"},"metrics":{"additionalProperties":true,"type":"object","title":"Metrics"},"recording_key":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Recording Key"},"screenshot_keys":{"items":{},"type":"array","title":"Screenshot Keys"},"status":{"type":"string","title":"Status"},"review_note":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Review Note"},"evidence_flags":{"items":{},"type":"array","title":"Evidence Flags"},"recording_duration_s":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Recording Duration S"},"honeypot_score":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Honeypot Score"},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["id","task_id","tester_id","schema_version","bugs","ux_findings","metrics","recording_key","screenshot_keys","status","review_note","created_at"],"title":"ReportOut"},"ReportSubmitIn":{"properties":{"recording_key":{"type":"string","minLength":1,"title":"Recording Key"},"screenshot_keys":{"items":{"type":"string"},"type":"array","title":"Screenshot Keys"},"bugs":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Bugs"},"ux_findings":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Ux Findings"},"metrics":{"additionalProperties":true,"type":"object","title":"Metrics"}},"type":"object","required":["recording_key"],"title":"ReportSubmitIn"},"RequesterLoginIn":{"properties":{"email":{"type":"string","title":"Email"},"password":{"type":"string","title":"Password"}},"type":"object","required":["email","password"],"title":"RequesterLoginIn"},"RequesterMeOut":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"name":{"type":"string","title":"Name"},"email":{"type":"string","title":"Email"},"currency":{"type":"string","title":"Currency"}},"type":"object","required":["id","name","email","currency"],"title":"RequesterMeOut"},"RequesterOut":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"name":{"type":"string","title":"Name"},"email":{"type":"string","title":"Email"},"webhook_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Webhook Url"},"currency":{"type":"string","title":"Currency"},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["id","name","email","webhook_url","currency","created_at"],"title":"RequesterOut"},"RequesterRegisterIn":{"properties":{"name":{"type":"string","maxLength":200,"minLength":1,"title":"Name"},"email":{"type":"string","maxLength":320,"minLength":3,"title":"Email"},"password":{"type":"string","minLength":8,"title":"Password"},"webhook_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Webhook Url"}},"type":"object","required":["name","email","password"],"title":"RequesterRegisterIn"},"RequesterRegisterOut":{"properties":{"requester":{"$ref":"#/components/schemas/RequesterOut"},"api_key":{"type":"string","title":"Api Key"}},"type":"object","required":["requester","api_key"],"title":"RequesterRegisterOut"},"TargetingIn":{"properties":{"platforms":{"items":{"type":"string"},"type":"array","title":"Platforms"},"locales":{"items":{"type":"string"},"type":"array","title":"Locales"},"device_classes":{"items":{"type":"string"},"type":"array","title":"Device Classes"}},"type":"object","title":"TargetingIn"},"TaskCreateIn":{"properties":{"artifact_type":{"type":"string","enum":["apk_url","testflight","web_url"],"title":"Artifact Type"},"artifact_url":{"type":"string","maxLength":2000,"minLength":1,"title":"Artifact Url"},"niche":{"type":"string","enum":["mobile_game","mobile_app","web_app","web_game","landing_page","ecommerce","other"],"title":"Niche"},"test_type":{"type":"string","enum":["exploratory","scripted","ux_survey","gameplay"],"title":"Test Type"},"instructions":{"additionalProperties":true,"type":"object","title":"Instructions"},"targeting":{"$ref":"#/components/schemas/TargetingIn"},"budget_cents":{"type":"integer","exclusiveMinimum":0.0,"title":"Budget Cents"},"max_testers":{"type":"integer","maximum":5.0,"minimum":1.0,"title":"Max Testers","default":1},"credentials":{"anyOf":[{"type":"string","maxLength":2000},{"type":"null"}],"title":"Credentials"},"starts_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Starts At"},"ends_at":{"type":"string","format":"date-time","title":"Ends At"},"is_honeypot":{"type":"boolean","title":"Is Honeypot","default":false},"expected_bugs":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Expected Bugs"}},"type":"object","required":["artifact_type","artifact_url","niche","test_type","instructions","budget_cents","ends_at"],"title":"TaskCreateIn"},"TaskDetailOut":{"properties":{"task":{"$ref":"#/components/schemas/TaskOut"},"reports":{"items":{"$ref":"#/components/schemas/ReportOut"},"type":"array","title":"Reports"},"assignments":{"items":{"$ref":"#/components/schemas/AssignmentOut"},"type":"array","title":"Assignments","default":[]}},"type":"object","required":["task","reports"],"title":"TaskDetailOut"},"TaskOut":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"requester_id":{"type":"string","format":"uuid","title":"Requester Id"},"schema_version":{"type":"string","title":"Schema Version"},"artifact_type":{"type":"string","title":"Artifact Type"},"artifact_url":{"type":"string","title":"Artifact Url"},"credentials":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Credentials"},"niche":{"type":"string","title":"Niche"},"test_type":{"type":"string","title":"Test Type"},"instructions":{"additionalProperties":true,"type":"object","title":"Instructions"},"targeting":{"additionalProperties":true,"type":"object","title":"Targeting"},"budget_cents":{"type":"integer","title":"Budget Cents"},"platform_fee_cents":{"type":"integer","title":"Platform Fee Cents"},"currency":{"type":"string","title":"Currency"},"status":{"type":"string","title":"Status"},"max_testers":{"type":"integer","title":"Max Testers"},"accepted_count":{"type":"integer","title":"Accepted Count"},"matched_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Matched At"},"due_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Due At"},"submitted_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Submitted At"},"resolved_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Resolved At"},"fix_notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Fix Notes"},"done_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Done At"},"starts_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Starts At"},"ends_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Ends At"},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["id","requester_id","schema_version","artifact_type","artifact_url","credentials","niche","test_type","instructions","targeting","budget_cents","platform_fee_cents","currency","status","max_testers","accepted_count","matched_at","due_at","submitted_at","resolved_at","fix_notes","done_at","starts_at","ends_at","created_at"],"title":"TaskOut"},"TesterLoginIn":{"properties":{"email":{"type":"string","title":"Email"},"password":{"type":"string","title":"Password"}},"type":"object","required":["email","password"],"title":"TesterLoginIn"},"TesterOut":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"email":{"type":"string","title":"Email"},"display_name":{"type":"string","title":"Display Name"},"locales":{"items":{"type":"string"},"type":"array","title":"Locales"},"rating":{"type":"number","title":"Rating"},"status":{"type":"string","title":"Status"},"currency":{"type":"string","title":"Currency"},"phone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Phone"},"bugs_reported":{"type":"integer","title":"Bugs Reported","default":0},"bugs_corroborated":{"type":"integer","title":"Bugs Corroborated","default":0},"honeypot_passed":{"type":"boolean","title":"Honeypot Passed","default":false},"approved_reports":{"type":"integer","title":"Approved Reports","default":0},"last_payout_phone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Payout Phone"},"devices":{"items":{"$ref":"#/components/schemas/DeviceOut"},"type":"array","title":"Devices","default":[]},"stripe_connected":{"type":"boolean","title":"Stripe Connected","default":false}},"type":"object","required":["id","email","display_name","locales","rating","status","currency","phone"],"title":"TesterOut"},"TesterRegisterIn":{"properties":{"email":{"type":"string","maxLength":320,"minLength":3,"title":"Email"},"password":{"type":"string","minLength":8,"title":"Password"},"display_name":{"type":"string","maxLength":200,"minLength":1,"title":"Display Name"},"locales":{"items":{"type":"string"},"type":"array","title":"Locales"}},"type":"object","required":["email","password","display_name"],"title":"TesterRegisterIn"},"TokenOut":{"properties":{"access_token":{"type":"string","title":"Access Token"},"token_type":{"type":"string","title":"Token Type","default":"bearer"}},"type":"object","required":["access_token"],"title":"TokenOut"},"TopupIn":{"properties":{"amount_cents":{"type":"integer","exclusiveMinimum":0.0,"title":"Amount Cents"}},"type":"object","required":["amount_cents"],"title":"TopupIn"},"TopupOut":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"form_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Form Url"},"status":{"type":"string","title":"Status"},"provider":{"type":"string","title":"Provider"}},"type":"object","required":["id","form_url","status","provider"],"title":"TopupOut"},"TransferIn":{"properties":{"from_currency":{"type":"string","enum":["RUB","USD"],"title":"From Currency"},"to_currency":{"type":"string","enum":["RUB","USD"],"title":"To Currency"},"amount_cents":{"type":"integer","exclusiveMinimum":0.0,"title":"Amount Cents"},"expected_credit_cents":{"anyOf":[{"type":"integer","exclusiveMinimum":0.0},{"type":"null"}],"title":"Expected Credit Cents"}},"type":"object","required":["from_currency","to_currency","amount_cents"],"title":"TransferIn"},"TransferOut":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"from_currency":{"type":"string","title":"From Currency"},"to_currency":{"type":"string","title":"To Currency"},"debit_cents":{"type":"integer","title":"Debit Cents"},"credit_cents":{"type":"integer","title":"Credit Cents"},"rub_per_usd_x10000":{"type":"integer","title":"Rub Per Usd X10000"},"spread_bp":{"type":"integer","title":"Spread Bp"},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["id","from_currency","to_currency","debit_cents","credit_cents","rub_per_usd_x10000","spread_bp","created_at"],"title":"TransferOut"},"TransferQuoteOut":{"properties":{"from_currency":{"type":"string","title":"From Currency"},"to_currency":{"type":"string","title":"To Currency"},"debit_cents":{"type":"integer","title":"Debit Cents"},"credit_cents":{"type":"integer","title":"Credit Cents"},"rub_per_usd_x10000":{"type":"integer","title":"Rub Per Usd X10000"},"spread_bp":{"type":"integer","title":"Spread Bp"}},"type":"object","required":["from_currency","to_currency","debit_cents","credit_cents","rub_per_usd_x10000","spread_bp"],"title":"TransferQuoteOut"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"},"input":{"title":"Input"},"ctx":{"type":"object","title":"Context"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"},"WithdrawalIn":{"properties":{"amount_cents":{"type":"integer","exclusiveMinimum":0.0,"title":"Amount Cents"},"phone":{"anyOf":[{"type":"string","maxLength":16,"minLength":9},{"type":"null"}],"title":"Phone"},"currency":{"type":"string","enum":["RUB","USD"],"title":"Currency"},"first_name":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}],"title":"First Name"},"last_name":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}],"title":"Last Name"},"middle_name":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}],"title":"Middle Name"},"bank_code":{"anyOf":[{"type":"string","maxLength":20},{"type":"null"}],"title":"Bank Code"}},"type":"object","required":["amount_cents","currency"],"title":"WithdrawalIn"},"WithdrawalOut":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"amount_cents":{"type":"integer","title":"Amount Cents"},"currency":{"type":"string","title":"Currency"},"status":{"type":"string","title":"Status"},"provider_ref":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Provider Ref"},"provider_amount_cents":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Provider Amount Cents"},"provider_currency":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Provider Currency"},"provider_fx_rate":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Provider Fx Rate"},"phone_masked":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Phone Masked"},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["id","amount_cents","currency","status","provider_ref","provider_amount_cents","provider_currency","provider_fx_rate","phone_masked","created_at"],"title":"WithdrawalOut"},"WithdrawalPageOut":{"properties":{"total":{"type":"integer","title":"Total"},"items":{"items":{"$ref":"#/components/schemas/WithdrawalOut"},"type":"array","title":"Items"}},"type":"object","required":["total","items"],"title":"WithdrawalPageOut"}}}}