{"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/auth/verify-email":{"post":{"tags":["auth"],"summary":"Verify Email","operationId":"verify_email_v1_auth_verify_email_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VerifyEmailIn"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MessageOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/auth/resend-verification":{"post":{"tags":["auth"],"summary":"Resend Verification","operationId":"resend_verification_v1_auth_resend_verification_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResendVerificationIn"}}},"required":true},"responses":{"202":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MessageOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/auth/password-reset/request":{"post":{"tags":["auth"],"summary":"Password Reset Request","operationId":"password_reset_request_v1_auth_password_reset_request_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PasswordResetRequestIn"}}},"required":true},"responses":{"202":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MessageOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/auth/password-reset/confirm":{"post":{"tags":["auth"],"summary":"Password Reset Confirm","operationId":"password_reset_confirm_v1_auth_password_reset_confirm_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PasswordResetConfirmIn"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MessageOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/auth/logout":{"post":{"tags":["auth"],"summary":"Logout","description":"Revoke the bearer session token until it would expire anyway.","operationId":"logout_v1_auth_logout_post","parameters":[{"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/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 / USDT).\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":"sort","in":"query","required":false,"schema":{"enum":["created_at","ends_at","budget_cents","status"],"type":"string","default":"created_at","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":"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/usdt-address":{"put":{"tags":["tester"],"summary":"Set Usdt Address","description":"The default TRC-20 address for crypto payouts; the withdrawal form\nprefills from it the way it prefills the SBP phone.","operationId":"set_usdt_address_v1_tester_me_usdt_address_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/UsdtAddressIn"}}}},"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 Usdt Address","operationId":"delete_usdt_address_v1_tester_me_usdt_address_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 / USDT) 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"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TaskAcceptIn"}}}},"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/uploads/short-links":{"post":{"tags":["uploads"],"summary":"Share Artifact","operationId":"share_artifact_v1_uploads_short_links_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/ArtifactShareIn"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ArtifactShareOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/uploads/artifact":{"delete":{"tags":["uploads"],"summary":"Delete Artifact","description":"Delete an uploaded build file that no task references anymore.","operationId":"delete_artifact_v1_uploads_artifact_delete","parameters":[{"name":"key","in":"query","required":true,"schema":{"type":"string","minLength":12,"maxLength":500,"title":"Key"}},{"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/uploads/inspect":{"post":{"tags":["uploads"],"summary":"Inspect Artifact","operationId":"inspect_artifact_v1_uploads_inspect_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/ArtifactInspectIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ArtifactInspectOut"}}}},"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/offer":{"get":{"tags":["offer"],"summary":"Get Offer","operationId":"get_offer_v1_offer_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/OfferOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/offer/accept":{"post":{"tags":["offer"],"summary":"Accept Offer","operationId":"accept_offer_v1_offer_accept_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/OfferAcceptIn"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OfferOut"}}}},"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","USDT"],"type":"string","title":"From Currency"}},{"name":"to_currency","in":"query","required":true,"schema":{"enum":["RUB","USD","USDT"],"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"}}}}}}},"/v1/webhooks/cryptomus":{"post":{"tags":["webhooks"],"summary":"Cryptomus Callback","description":"Cryptomus invoice callback: body is JSON with the sign inside it.","operationId":"cryptomus_callback_v1_webhooks_cryptomus_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Cryptomus Callback V1 Webhooks Cryptomus Post"}}}}}}},"/v1/webhooks/cryptomus/payout":{"post":{"tags":["webhooks"],"summary":"Cryptomus Payout Callback","description":"Payout status callback: signed with the payout key, not the payment key.","operationId":"cryptomus_payout_callback_v1_webhooks_cryptomus_payout_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Cryptomus Payout Callback V1 Webhooks Cryptomus Payout 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"}}}}}}},"/v1/public/insights":{"get":{"tags":["public"],"summary":"Get Public Insights","operationId":"get_public_insights_v1_public_insights_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicInsightsOut"}}}}}}},"/v1/blog":{"get":{"tags":["blog"],"summary":"List Posts","operationId":"list_posts_v1_blog_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/BlogPostSummaryOut"},"type":"array","title":"Response List Posts V1 Blog Get"}}}}}}},"/v1/blog/{slug}":{"get":{"tags":["blog"],"summary":"Get Post","operationId":"get_post_v1_blog__slug__get","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","title":"Slug"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BlogPostOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/instructions/improve":{"post":{"tags":["assist"],"summary":"Improve Instructions","operationId":"improve_instructions_v1_instructions_improve_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/InstructionImproveIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InstructionImproveOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/instructions/draft":{"post":{"tags":["assist"],"summary":"Draft Instructions","operationId":"draft_instructions_v1_instructions_draft_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/InstructionDraftIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InstructionImproveOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/estimate":{"get":{"tags":["assist"],"summary":"Estimate Task","operationId":"estimate_task_v1_estimate_get","parameters":[{"name":"niche","in":"query","required":true,"schema":{"type":"string","maxLength":20,"title":"Niche"}},{"name":"test_type","in":"query","required":true,"schema":{"type":"string","maxLength":20,"title":"Test Type"}},{"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/TaskEstimateOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/support/ask":{"post":{"tags":["support"],"summary":"Ask","operationId":"ask_v1_support_ask_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SupportAskIn"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SupportAnswerOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/support/escalate":{"post":{"tags":["support"],"summary":"Escalate","description":"The user says the bot didn't help: forward the conversation to the\nowner. Anonymous web users leave a contact so the owner can answer.","operationId":"escalate_v1_support_escalate_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SupportEscalateIn"}}},"required":true},"responses":{"202":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Escalate V1 Support Escalate Post"}}}},"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"},"ArtifactInspectIn":{"properties":{"url":{"anyOf":[{"type":"string","maxLength":2000},{"type":"null"}],"title":"Url"},"key":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"title":"Key"}},"type":"object","title":"ArtifactInspectIn"},"ArtifactInspectOut":{"properties":{"app_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"App Name"}},"type":"object","required":["app_name"],"title":"ArtifactInspectOut"},"ArtifactShareIn":{"properties":{"key":{"type":"string","maxLength":500,"minLength":12,"title":"Key"}},"type":"object","required":["key"],"title":"ArtifactShareIn"},"ArtifactShareOut":{"properties":{"code":{"type":"string","title":"Code"},"url":{"type":"string","title":"Url"}},"type":"object","required":["code","url"],"title":"ArtifactShareOut"},"ArtifactUrlOut":{"properties":{"urls":{"items":{"type":"string"},"type":"array","title":"Urls"},"url":{"type":"string","title":"Url"}},"type":"object","required":["urls","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."},"BlogPostOut":{"properties":{"slug":{"type":"string","title":"Slug"},"published_at":{"type":"string","format":"date-time","title":"Published At"},"title":{"$ref":"#/components/schemas/LocalizedText"},"excerpt":{"$ref":"#/components/schemas/LocalizedText"},"schema_version":{"type":"string","title":"Schema Version"},"body":{"$ref":"#/components/schemas/LocalizedText"}},"type":"object","required":["slug","published_at","title","excerpt","schema_version","body"],"title":"BlogPostOut"},"BlogPostSummaryOut":{"properties":{"slug":{"type":"string","title":"Slug"},"published_at":{"type":"string","format":"date-time","title":"Published At"},"title":{"$ref":"#/components/schemas/LocalizedText"},"excerpt":{"$ref":"#/components/schemas/LocalizedText"}},"type":"object","required":["slug","published_at","title","excerpt"],"title":"BlogPostSummaryOut"},"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","USDT"],"title":"Currency"}},"type":"object","required":["currency"],"title":"CurrencyIn"},"DeviceIn":{"properties":{"platform":{"type":"string","enum":["android","ios","web","windows","macos","linux"],"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","windows","macos","linux"],"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","USDT"],"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"},"InsightIssueOut":{"properties":{"label":{"type":"string","title":"Label"},"count":{"type":"integer","title":"Count"},"tasks":{"type":"integer","title":"Tasks"}},"type":"object","required":["label","count","tasks"],"title":"InsightIssueOut"},"InsightNicheOut":{"properties":{"niche":{"type":"string","title":"Niche"},"reports":{"type":"integer","title":"Reports"},"top_issues":{"items":{"$ref":"#/components/schemas/InsightIssueOut"},"type":"array","title":"Top Issues"}},"type":"object","required":["niche","reports","top_issues"],"title":"InsightNicheOut"},"InstructionDraftIn":{"properties":{"artifact_type":{"type":"string","maxLength":20,"title":"Artifact Type"},"niche":{"type":"string","maxLength":20,"title":"Niche"},"test_type":{"type":"string","maxLength":20,"title":"Test Type"},"app_name":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"title":"App Name"}},"type":"object","required":["artifact_type","niche","test_type"],"title":"InstructionDraftIn","description":"Build metadata for the zero-draft brief (assist router). Prompt context\nonly — nothing is persisted."},"InstructionImproveIn":{"properties":{"instructions":{"additionalProperties":true,"type":"object","title":"Instructions"},"niche":{"anyOf":[{"type":"string","maxLength":20},{"type":"null"}],"title":"Niche"},"test_type":{"anyOf":[{"type":"string","maxLength":20},{"type":"null"}],"title":"Test Type"},"budget_cents":{"anyOf":[{"type":"integer","maximum":1000000000000.0,"exclusiveMinimum":0.0},{"type":"null"}],"title":"Budget Cents"}},"type":"object","required":["instructions"],"title":"InstructionImproveIn","description":"Draft brief + context for the one-click LLM rewrite (assist router).\nniche/test_type/budget are prompt context only — nothing is persisted."},"InstructionImproveOut":{"properties":{"instructions":{"additionalProperties":true,"type":"object","title":"Instructions"},"changes":{"items":{"type":"string"},"type":"array","title":"Changes"}},"type":"object","required":["instructions","changes"],"title":"InstructionImproveOut"},"LedgerEntryOut":{"properties":{"task_id":{"type":"string","format":"uuid","title":"Task Id"},"niche":{"type":"string","title":"Niche"},"test_type":{"type":"string","title":"Test Type"},"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","niche","test_type","amount_cents","currency","source_amount_cents","fx_rate","kind","created_at"],"title":"LedgerEntryOut"},"LocalizedText":{"properties":{"en":{"type":"string","title":"En"},"ru":{"type":"string","title":"Ru"}},"type":"object","required":["en","ru"],"title":"LocalizedText"},"MessageOut":{"properties":{"message":{"type":"string","title":"Message"}},"type":"object","required":["message"],"title":"MessageOut"},"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"},"OfferAcceptIn":{"properties":{"version":{"type":"string","maxLength":20,"title":"Version"}},"type":"object","required":["version"],"title":"OfferAcceptIn"},"OfferOut":{"properties":{"version":{"type":"string","title":"Version"},"accepted":{"type":"boolean","title":"Accepted"}},"type":"object","required":["version","accepted"],"title":"OfferOut"},"PasswordResetConfirmIn":{"properties":{"token":{"type":"string","minLength":1,"title":"Token"},"new_password":{"type":"string","minLength":8,"title":"New Password"}},"type":"object","required":["token","new_password"],"title":"PasswordResetConfirmIn"},"PasswordResetRequestIn":{"properties":{"email":{"type":"string","maxLength":320,"minLength":3,"title":"Email"},"role":{"type":"string","enum":["tester","requester"],"title":"Role"}},"type":"object","required":["email","role"],"title":"PasswordResetRequestIn"},"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"},"key":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"title":"Key"},"size_bytes":{"anyOf":[{"type":"integer","exclusiveMinimum":0.0},{"type":"null"}],"title":"Size Bytes"}},"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"},"PublicInsightsOut":{"properties":{"generated_at":{"type":"string","format":"date-time","title":"Generated At"},"niches":{"items":{"$ref":"#/components/schemas/InsightNicheOut"},"type":"array","title":"Niches"}},"type":"object","required":["generated_at","niches"],"title":"PublicInsightsOut","description":"Anonymized aggregates only: labels + counts, never IDs."},"PublicTaskOut":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"schema_version":{"type":"string","title":"Schema Version"},"artifact_type":{"type":"string","title":"Artifact Type"},"app_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"App Name"},"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","app_name","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 refs, 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"},"ResendVerificationIn":{"properties":{"email":{"type":"string","maxLength":320,"minLength":3,"title":"Email"}},"type":"object","required":["email"],"title":"ResendVerificationIn"},"SupportAnswerOut":{"properties":{"answer":{"type":"string","title":"Answer"}},"type":"object","required":["answer"],"title":"SupportAnswerOut"},"SupportAskIn":{"properties":{"question":{"type":"string","maxLength":2000,"minLength":2,"title":"Question"}},"type":"object","required":["question"],"title":"SupportAskIn"},"SupportEscalateIn":{"properties":{"contact":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"title":"Contact"}},"type":"object","title":"SupportEscalateIn"},"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"},"TaskAcceptIn":{"properties":{"device_id":{"type":"string","format":"uuid","title":"Device Id"}},"type":"object","required":["device_id"],"title":"TaskAcceptIn","description":"The device the tester will run the scenario on — recorded on the\nassignment so the report is tied to real hardware."},"TaskCreateIn":{"properties":{"artifact_type":{"type":"string","enum":["apk_url","testflight","web_url","windows","linux","macos","ipa","aab","zip_bundle"],"title":"Artifact Type"},"artifact_url":{"anyOf":[{"type":"string","maxLength":2000,"minLength":1},{"type":"null"}],"title":"Artifact Url"},"artifact_urls":{"items":{"type":"string","maxLength":2000,"minLength":1},"type":"array","maxItems":10,"minItems":1,"title":"Artifact Urls"},"niche":{"type":"string","enum":["mobile_game","mobile_app","web_app","web_game","landing_page","ecommerce","desktop_app","desktop_game","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","maximum":1000000000000.0,"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"},"app_name":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"title":"App Name"},"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","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"},"TaskEstimateOut":{"properties":{"niche":{"type":"string","title":"Niche"},"test_type":{"type":"string","title":"Test Type"},"scope":{"type":"string","title":"Scope"},"sample_size":{"type":"integer","title":"Sample Size"},"typical_budget_cents":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Typical Budget Cents"},"median_minutes":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Median Minutes"},"approval_rate":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Approval Rate"},"pickup_eta_hours":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Pickup Eta Hours"}},"type":"object","required":["niche","test_type","scope","sample_size","typical_budget_cents","median_minutes","approval_rate","pickup_eta_hours"],"title":"TaskEstimateOut","description":"Pre-creation hint from history; nulls when there is no data yet."},"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"},"artifact_urls":{"items":{"type":"string"},"type":"array","title":"Artifact Urls"},"app_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"App Name"},"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"},"instruction_feedback":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Instruction Feedback"}},"type":"object","required":["id","requester_id","schema_version","artifact_type","artifact_url","artifact_urls","app_name","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","instruction_feedback"],"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"},"usdt_address":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Usdt Address"},"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"},"devices":{"items":{"$ref":"#/components/schemas/DeviceIn"},"type":"array","minItems":1,"title":"Devices"}},"type":"object","required":["email","password","display_name","devices"],"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","maximum":1000000000000.0,"exclusiveMinimum":0.0,"title":"Amount Cents"},"return_path":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"title":"Return Path"},"provider":{"anyOf":[{"type":"string","enum":["alfa","stripe","cryptomus"]},{"type":"null"}],"title":"Provider"}},"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","USDT"],"title":"From Currency"},"to_currency":{"type":"string","enum":["RUB","USD","USDT"],"title":"To Currency"},"amount_cents":{"type":"integer","maximum":1000000000000.0,"exclusiveMinimum":0.0,"title":"Amount Cents"},"expected_credit_cents":{"anyOf":[{"type":"integer","maximum":1000000000000.0,"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"},"UsdtAddressIn":{"properties":{"usdt_address":{"type":"string","maxLength":34,"minLength":34,"title":"Usdt Address"}},"type":"object","required":["usdt_address"],"title":"UsdtAddressIn"},"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"},"VerifyEmailIn":{"properties":{"token":{"type":"string","minLength":1,"title":"Token"}},"type":"object","required":["token"],"title":"VerifyEmailIn"},"WithdrawalIn":{"properties":{"amount_cents":{"type":"integer","maximum":1000000000000.0,"exclusiveMinimum":0.0,"title":"Amount Cents"},"phone":{"anyOf":[{"type":"string","maxLength":16,"minLength":9},{"type":"null"}],"title":"Phone"},"usdt_address":{"anyOf":[{"type":"string","maxLength":34,"minLength":34},{"type":"null"}],"title":"Usdt Address"},"currency":{"type":"string","enum":["RUB","USD","USDT"],"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"},"usdt_address_masked":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Usdt Address 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"}}}}