{"openapi":"3.1.0","info":{"title":"BotPrimeX Backend","description":"BotPrimeX Backend API — automated cryptocurrency trading bots powered by Freqtrade.\n\n**Authentication.** Most endpoints require a Bearer token (legacy) or an HttpOnly `botprimex_session` cookie (preferred — see `/auth/cookie-exchange`). WebSocket handshakes accept a single-use ticket from `/auth/ws-ticket`.\n\n**Versioning.** This is `1.0.0`. Breaking changes will bump the major; additive changes (new fields, new endpoints) only bump the minor.\n\n**Rate limits.** Nginx caps auth endpoints at 5 r/s and general API at 30 r/s per IP. Slowapi adds a defense-in-depth 60 r/min default in-app.","contact":{"name":"BotPrimeX Support","url":"https://botprimex.com/contact","email":"support@botprimex.com"},"license":{"name":"Proprietary — see /terms","url":"https://botprimex.com/terms"},"version":"1.0.0"},"paths":{"/my-notifications":{"get":{"summary":"My Notifications","operationId":"my_notifications_my_notifications_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":20,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotificationListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/my-notifications/{notification_id}/read":{"post":{"summary":"Mark My Notification Read","operationId":"mark_my_notification_read_my_notifications__notification_id__read_post","parameters":[{"name":"notification_id","in":"path","required":true,"schema":{"type":"integer","title":"Notification Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MessageResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/my-notifications/read-all":{"post":{"summary":"Mark All My Notifications Read","operationId":"mark_all_my_notifications_read_my_notifications_read_all_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MessageResponse"}}}}}}},"/account/notification-preferences":{"get":{"summary":"Get My Notification Preferences","operationId":"get_my_notification_preferences_account_notification_preferences_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotificationPreferencesResponse"}}}}}},"put":{"summary":"Update My Notification Preferences","operationId":"update_my_notification_preferences_account_notification_preferences_put","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotificationPreferencesUpdate"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotificationPreferencesResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/notifications":{"get":{"summary":"Admin Notifications","operationId":"admin_notifications_admin_notifications_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":20,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotificationListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/notifications/{notification_id}/read":{"post":{"summary":"Mark Admin Notification Read","operationId":"mark_admin_notification_read_admin_notifications__notification_id__read_post","parameters":[{"name":"notification_id","in":"path","required":true,"schema":{"type":"integer","title":"Notification Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MessageResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/notifications/read-all":{"post":{"summary":"Mark All Admin Notifications Read","operationId":"mark_all_admin_notifications_read_admin_notifications_read_all_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MessageResponse"}}}}}}},"/account/contract":{"get":{"summary":"Get Account Contract","description":"User: get current contract template + the user's signature status.","operationId":"get_account_contract_account_contract_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContractStatusResponse"}}}}}}},"/account/contract/accept":{"post":{"summary":"Accept Account Contract","description":"User signs the current contract template.","operationId":"accept_account_contract_account_contract_accept_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContractAcceptRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContractStatusResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/contract/template":{"get":{"summary":"Admin Get Contract Template","description":"Admin: get the editable contract template + signature counts.","operationId":"admin_get_contract_template_admin_contract_template_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminContractTemplateResponse"}}}}}},"put":{"summary":"Admin Update Contract Template","description":"Admin: update the contract template. When ``bump_version=True`` every existing signed user must re-sign.","operationId":"admin_update_contract_template_admin_contract_template_put","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminContractTemplateUpdate"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminContractTemplateResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/customers/{user_ref}/contract/revoke":{"post":{"summary":"Admin Revoke User Contract","description":"Admin: revoke a user's currently active contract signature, forcing them to re-sign.","operationId":"admin_revoke_user_contract_admin_customers__user_ref__contract_revoke_post","parameters":[{"name":"user_ref","in":"path","required":true,"schema":{"type":"string","title":"User Ref"}}],"requestBody":{"content":{"application/json":{"schema":{"anyOf":[{"type":"object"},{"type":"null"}],"title":"Payload"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MessageResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/account/2fa/setup":{"post":{"summary":"Setup 2Fa","description":"Generate TOTP secret and QR code for 2FA setup.","operationId":"setup_2fa_account_2fa_setup_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TwoFactorSetupResponse"}}}}}}},"/account/2fa/enable":{"post":{"summary":"Enable 2Fa","description":"Verify TOTP code and enable 2FA.","operationId":"enable_2fa_account_2fa_enable_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TwoFactorEnableRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BackupCodesResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/account/2fa/disable":{"post":{"summary":"Disable 2Fa","description":"Disable 2FA.","operationId":"disable_2fa_account_2fa_disable_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MessageResponse"}}}}}}},"/account/2fa/backup-codes":{"get":{"summary":"Get Backup Codes","description":"Get remaining backup codes.","operationId":"get_backup_codes_account_2fa_backup_codes_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BackupCodesResponse"}}}}}}},"/account/2fa/regenerate-backup-codes":{"post":{"summary":"Regenerate Backup Codes","description":"Regenerate backup codes.","operationId":"regenerate_backup_codes_account_2fa_regenerate_backup_codes_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BackupCodesResponse"}}}}}}},"/account/sessions":{"get":{"summary":"List Sessions","description":"List active sessions for the current user.","operationId":"list_sessions_account_sessions_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SessionListResponse"}}}}}}},"/account/sessions/{session_id}":{"delete":{"summary":"Revoke Session","description":"Revoke a specific session.","operationId":"revoke_session_account_sessions__session_id__delete","parameters":[{"name":"session_id","in":"path","required":true,"schema":{"type":"integer","title":"Session Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MessageResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/account/sessions/revoke-others":{"post":{"summary":"Revoke All Other Sessions","description":"Revoke all sessions except the current one.","operationId":"revoke_all_other_sessions_account_sessions_revoke_others_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MessageResponse"}}}}}}},"/account/profile":{"get":{"summary":"Get Profile","description":"Get current user profile.","operationId":"get_profile_account_profile_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserResponse"}}}}}},"put":{"summary":"Update Profile","description":"Update current user profile.","operationId":"update_profile_account_profile_put","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProfileUpdate"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/account/email":{"put":{"summary":"Update Email","description":"Request email address change — sends a verification link to the new email.","operationId":"update_email_account_email_put","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EmailUpdate"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MessageResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/account/change-password":{"post":{"summary":"Change Password","description":"Change password (requires current password).","operationId":"change_password_account_change_password_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChangePassword"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MessageResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/account":{"delete":{"summary":"Delete Account","description":"Delete own account.","operationId":"delete_account_account_delete","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MessageResponse"}}}}}}},"/account/api-keys":{"get":{"summary":"List Account Api Keys","description":"List current user's saved exchange API keys (masked).","operationId":"list_account_api_keys_account_api_keys_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/AccountApiKeyResponse"},"type":"array","title":"Response List Account Api Keys Account Api Keys Get"}}}}}},"post":{"summary":"Upsert Account Api Key","description":"Create a new saved exchange API key for the current user.","operationId":"upsert_account_api_key_account_api_keys_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AccountApiKeyUpsert"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AccountApiKeyResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/account/api-keys/{key_id}":{"put":{"summary":"Update Account Api Key","description":"Update an existing saved exchange API key by ID.","operationId":"update_account_api_key_account_api_keys__key_id__put","parameters":[{"name":"key_id","in":"path","required":true,"schema":{"type":"integer","title":"Key Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AccountApiKeyUpsert"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AccountApiKeyResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"summary":"Delete Account Api Key","description":"Soft-delete a saved exchange API key for the current user.","operationId":"delete_account_api_key_account_api_keys__key_id__delete","parameters":[{"name":"key_id","in":"path","required":true,"schema":{"type":"integer","title":"Key Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MessageResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/my-feedback":{"get":{"summary":"My Feedback List","operationId":"my_feedback_list_my_feedback_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/FeedbackItemResponse"},"type":"array","title":"Response My Feedback List My Feedback Get"}}}}}}},"/feedback/top":{"get":{"summary":"Top Feedback","operationId":"top_feedback_feedback_top_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":8,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/feedback":{"post":{"summary":"Submit Feedback","operationId":"submit_feedback_feedback_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FeedbackCreateRequest"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FeedbackItemResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/feedback":{"get":{"summary":"Admin Feedback List","operationId":"admin_feedback_list_admin_feedback_get","parameters":[{"name":"q","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Q"}},{"name":"type","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Type"}},{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/AdminFeedbackItemResponse"},"title":"Response Admin Feedback List Admin Feedback Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/feedback/{feedback_id}":{"put":{"summary":"Admin Feedback Update","operationId":"admin_feedback_update_admin_feedback__feedback_id__put","parameters":[{"name":"feedback_id","in":"path","required":true,"schema":{"type":"integer","title":"Feedback Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminFeedbackUpdateRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminFeedbackItemResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/support/tickets":{"get":{"summary":"My Support Tickets","operationId":"my_support_tickets_support_tickets_get","parameters":[{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SupportTicketsListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"summary":"Create Support Ticket","operationId":"create_support_ticket_support_tickets_post","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SupportTicketCreate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SupportTicketDetailResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/support/tickets/{ticket_id}":{"get":{"summary":"Get My Ticket","operationId":"get_my_ticket_support_tickets__ticket_id__get","parameters":[{"name":"ticket_id","in":"path","required":true,"schema":{"type":"integer","title":"Ticket Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SupportTicketDetailResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/support/tickets/{ticket_id}/messages":{"post":{"summary":"Add Ticket Message","operationId":"add_ticket_message_support_tickets__ticket_id__messages_post","parameters":[{"name":"ticket_id","in":"path","required":true,"schema":{"type":"integer","title":"Ticket Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TicketMessageCreate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SupportMessageResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/support/kb":{"get":{"summary":"Get Kb Articles","operationId":"get_kb_articles_support_kb_get","parameters":[{"name":"category","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Category"}},{"name":"search","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Search"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/support/kb/{article_id}":{"get":{"summary":"Get Kb Article","operationId":"get_kb_article_support_kb__article_id__get","parameters":[{"name":"article_id","in":"path","required":true,"schema":{"type":"integer","title":"Article Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/support/overview":{"get":{"summary":"Admin Support Overview","operationId":"admin_support_overview_admin_support_overview_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminSupportOverview"}}}}}}},"/admin/support/tickets":{"get":{"summary":"Admin List Tickets","operationId":"admin_list_tickets_admin_support_tickets_get","parameters":[{"name":"page","in":"query","required":false,"schema":{"type":"integer","default":1,"title":"Page"}},{"name":"page_size","in":"query","required":false,"schema":{"type":"integer","default":20,"title":"Page Size"}},{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"}},{"name":"priority","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Priority"}},{"name":"category","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Category"}},{"name":"search","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Search"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/support/tickets/{ticket_id}":{"get":{"summary":"Admin Get Ticket","operationId":"admin_get_ticket_admin_support_tickets__ticket_id__get","parameters":[{"name":"ticket_id","in":"path","required":true,"schema":{"type":"integer","title":"Ticket Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SupportTicketDetailResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"summary":"Admin Update Ticket","operationId":"admin_update_ticket_admin_support_tickets__ticket_id__patch","parameters":[{"name":"ticket_id","in":"path","required":true,"schema":{"type":"integer","title":"Ticket Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SupportTicketUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SupportTicketDetailResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/support/tickets/{ticket_id}/messages":{"post":{"summary":"Admin Reply Ticket","operationId":"admin_reply_ticket_admin_support_tickets__ticket_id__messages_post","parameters":[{"name":"ticket_id","in":"path","required":true,"schema":{"type":"integer","title":"Ticket Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TicketMessageCreate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SupportMessageResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/support/kb":{"get":{"summary":"Admin List Kb","operationId":"admin_list_kb_admin_support_kb_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/KbArticleResponse"},"type":"array","title":"Response Admin List Kb Admin Support Kb Get"}}}}}},"post":{"summary":"Admin Create Kb","operationId":"admin_create_kb_admin_support_kb_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/KbArticleCreate"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/KbArticleResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/support/kb/{article_id}":{"patch":{"summary":"Admin Update Kb","operationId":"admin_update_kb_admin_support_kb__article_id__patch","parameters":[{"name":"article_id","in":"path","required":true,"schema":{"type":"integer","title":"Article Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/KbArticleUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/KbArticleResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"summary":"Admin Delete Kb","operationId":"admin_delete_kb_admin_support_kb__article_id__delete","parameters":[{"name":"article_id","in":"path","required":true,"schema":{"type":"integer","title":"Article Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/my-referral/profile":{"get":{"summary":"My Referral Profile","operationId":"my_referral_profile_my_referral_profile_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserReferralProfile"}}}}}}},"/my-referral/referred":{"get":{"summary":"My Referred Users","operationId":"my_referred_users_my_referral_referred_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/my-referral/payouts":{"get":{"summary":"My Referral Payouts","operationId":"my_referral_payouts_my_referral_payouts_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/my-referral/payouts/request":{"post":{"summary":"Request Payout","operationId":"request_payout_my_referral_payouts_request_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReferralPayoutCreate"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/my-referral/tiers":{"get":{"summary":"Referral Tiers","operationId":"referral_tiers_my_referral_tiers_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/admin/referral/overview":{"get":{"summary":"Admin Referral Overview","operationId":"admin_referral_overview_admin_referral_overview_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminReferralOverview"}}}}}}},"/admin/referral/users":{"get":{"summary":"Admin Referral Users","operationId":"admin_referral_users_admin_referral_users_get","parameters":[{"name":"page","in":"query","required":false,"schema":{"type":"integer","default":1,"title":"Page"}},{"name":"page_size","in":"query","required":false,"schema":{"type":"integer","default":20,"title":"Page Size"}},{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"}},{"name":"tier","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tier"}},{"name":"search","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Search"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminReferralUsersListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/referral/users/{user_id}":{"patch":{"summary":"Admin Update Referral User","operationId":"admin_update_referral_user_admin_referral_users__user_id__patch","parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"integer","title":"User Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","title":"Payload"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/referral/payouts":{"get":{"summary":"Admin Referral Payouts","operationId":"admin_referral_payouts_admin_referral_payouts_get","parameters":[{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"default":"pending","title":"Status"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/referral/payouts/{payout_id}/approve":{"post":{"summary":"Admin Approve Payout","operationId":"admin_approve_payout_admin_referral_payouts__payout_id__approve_post","parameters":[{"name":"payout_id","in":"path","required":true,"schema":{"type":"integer","title":"Payout Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/referral/payouts/{payout_id}/reject":{"post":{"summary":"Admin Reject Payout","operationId":"admin_reject_payout_admin_referral_payouts__payout_id__reject_post","parameters":[{"name":"payout_id","in":"path","required":true,"schema":{"type":"integer","title":"Payout Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","title":"Payload"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/referral/recent":{"get":{"summary":"Admin Referral Recent","operationId":"admin_referral_recent_admin_referral_recent_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":20,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/referral/settings":{"get":{"summary":"Admin Get Referral Settings","operationId":"admin_get_referral_settings_admin_referral_settings_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReferralSettingsResponse"}}}}}},"patch":{"summary":"Admin Update Referral Settings","operationId":"admin_update_referral_settings_admin_referral_settings_patch","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReferralSettingsUpdate"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReferralSettingsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/customers":{"get":{"summary":"List Customers","description":"List all users with search/filter/pagination.","operationId":"list_customers_admin_customers_get","parameters":[{"name":"search","in":"query","required":false,"schema":{"type":"string","description":"Search by name/email/phone","default":"","title":"Search"},"description":"Search by name/email/phone"},{"name":"role","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by role","title":"Role"},"description":"Filter by role"},{"name":"is_active","in":"query","required":false,"schema":{"anyOf":[{"type":"boolean"},{"type":"null"}],"description":"Filter by active status","title":"Is Active"},"description":"Filter by active status"},{"name":"plan","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by plan slug/name","title":"Plan"},"description":"Filter by plan slug/name"},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":1,"title":"Page"}},{"name":"page_size","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"default":10,"title":"Page Size"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"summary":"Create Customer","description":"Admin creates a new user.","operationId":"create_customer_admin_customers_post","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminUserCreate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/customers/plans":{"get":{"summary":"List Customer Plans","operationId":"list_customer_plans_admin_customers_plans_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/AdminCustomerPlanOption"},"type":"array","title":"Response List Customer Plans Admin Customers Plans Get"}}}}}}},"/admin/customers/{user_ref}":{"get":{"summary":"Get Customer","description":"Get a single user by username/user_uid/id.","operationId":"get_customer_admin_customers__user_ref__get","parameters":[{"name":"user_ref","in":"path","required":true,"schema":{"type":"string","title":"User Ref"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"summary":"Update Customer","description":"Admin updates a user.","operationId":"update_customer_admin_customers__user_ref__put","parameters":[{"name":"user_ref","in":"path","required":true,"schema":{"type":"string","title":"User Ref"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminUserUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"summary":"Delete Customer","description":"Admin deletes a user and all of their owned data.","operationId":"delete_customer_admin_customers__user_ref__delete","parameters":[{"name":"user_ref","in":"path","required":true,"schema":{"type":"string","title":"User Ref"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MessageResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/customers/{user_ref}/detail":{"get":{"summary":"Get Customer Detail","operationId":"get_customer_detail_admin_customers__user_ref__detail_get","parameters":[{"name":"user_ref","in":"path","required":true,"schema":{"type":"string","title":"User Ref"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminCustomerDetailResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/customers/{user_ref}/toggle-active":{"post":{"summary":"Toggle Customer Active","description":"Toggle user active status.","operationId":"toggle_customer_active_admin_customers__user_ref__toggle_active_post","parameters":[{"name":"user_ref","in":"path","required":true,"schema":{"type":"string","title":"User Ref"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/customers/{user_ref}/suspend":{"post":{"summary":"Suspend Customer","operationId":"suspend_customer_admin_customers__user_ref__suspend_post","parameters":[{"name":"user_ref","in":"path","required":true,"schema":{"type":"string","title":"User Ref"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/customers/{user_ref}/reset-password":{"post":{"summary":"Admin Reset User Password","description":"Admin resets a user's password.","operationId":"admin_reset_user_password_admin_customers__user_ref__reset_password_post","parameters":[{"name":"user_ref","in":"path","required":true,"schema":{"type":"string","title":"User Ref"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminResetPassword"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MessageResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/customers/{user_ref}/disable-2fa":{"post":{"summary":"Admin Disable User 2Fa","description":"Admin disables 2FA for a user.","operationId":"admin_disable_user_2fa_admin_customers__user_ref__disable_2fa_post","parameters":[{"name":"user_ref","in":"path","required":true,"schema":{"type":"string","title":"User Ref"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/coupons":{"get":{"summary":"Admin List Coupons","operationId":"admin_list_coupons_admin_coupons_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CouponListResponse"}}}}}},"post":{"summary":"Admin Create Coupon","operationId":"admin_create_coupon_admin_coupons_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CouponCreate"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CouponResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/coupons/{coupon_id}":{"put":{"summary":"Admin Update Coupon","operationId":"admin_update_coupon_admin_coupons__coupon_id__put","parameters":[{"name":"coupon_id","in":"path","required":true,"schema":{"type":"integer","title":"Coupon Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CouponUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CouponResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"summary":"Admin Delete Coupon","operationId":"admin_delete_coupon_admin_coupons__coupon_id__delete","parameters":[{"name":"coupon_id","in":"path","required":true,"schema":{"type":"integer","title":"Coupon Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MessageResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/account/verification":{"get":{"summary":"Get Account Verification","operationId":"get_account_verification_account_verification_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Get Account Verification Account Verification Get"}}}}}}},"/account/verification/veriff/session":{"post":{"summary":"Create Veriff Session","operationId":"create_veriff_session_account_verification_veriff_session_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VeriffSessionCreateRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VeriffSessionResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/account/verification/veriff/sync":{"post":{"summary":"Sync Veriff Status","description":"Pull the current decision from Veriff's API and update the user's status.\nUsed when webhooks are delayed or not yet configured.","operationId":"sync_veriff_status_account_verification_veriff_sync_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Sync Veriff Status Account Verification Veriff Sync Post"}}}}}}},"/public/veriff/webhook":{"post":{"summary":"Handle Veriff Webhook","operationId":"handle_veriff_webhook_public_veriff_webhook_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MessageResponse"}}}}}}},"/admin/utilities/announcements":{"get":{"summary":"Admin List Announcements","operationId":"admin_list_announcements_admin_utilities_announcements_get","parameters":[{"name":"search","in":"query","required":false,"schema":{"type":"string","default":"","title":"Search"}},{"name":"status_filter","in":"query","required":false,"schema":{"type":"string","default":"all","title":"Status Filter"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AnnouncementListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"summary":"Admin Create Announcement","operationId":"admin_create_announcement_admin_utilities_announcements_post","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AnnouncementCreateRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AnnouncementResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/utilities/announcements/stats":{"get":{"summary":"Admin Announcement Stats","operationId":"admin_announcement_stats_admin_utilities_announcements_stats_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AnnouncementStatsResponse"}}}}}}},"/admin/utilities/announcements/{announcement_id}":{"put":{"summary":"Admin Update Announcement","operationId":"admin_update_announcement_admin_utilities_announcements__announcement_id__put","parameters":[{"name":"announcement_id","in":"path","required":true,"schema":{"type":"integer","title":"Announcement Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AnnouncementUpdateRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AnnouncementResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"summary":"Admin Delete Announcement","operationId":"admin_delete_announcement_admin_utilities_announcements__announcement_id__delete","parameters":[{"name":"announcement_id","in":"path","required":true,"schema":{"type":"integer","title":"Announcement Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MessageResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/utilities/announcements/{announcement_id}/publish":{"post":{"summary":"Admin Publish Announcement","operationId":"admin_publish_announcement_admin_utilities_announcements__announcement_id__publish_post","parameters":[{"name":"announcement_id","in":"path","required":true,"schema":{"type":"integer","title":"Announcement Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AnnouncementResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/public/announcements":{"get":{"summary":"Public Announcements","operationId":"public_announcements_public_announcements_get","parameters":[{"name":"audience","in":"query","required":false,"schema":{"type":"string","default":"all","title":"Audience"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AnnouncementListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/auth/social/google":{"get":{"summary":"Social Google Init","description":"Redirect browser to Google OAuth consent screen.","operationId":"social_google_init_auth_social_google_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/auth/social/google/callback":{"get":{"summary":"Social Google Callback","description":"Exchange Google OAuth code for tokens, create/login user.","operationId":"social_google_callback_auth_social_google_callback_get","parameters":[{"name":"code","in":"query","required":false,"schema":{"type":"string","default":"","title":"Code"}},{"name":"state","in":"query","required":false,"schema":{"type":"string","default":"","title":"State"}},{"name":"error","in":"query","required":false,"schema":{"type":"string","default":"","title":"Error"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/auth/social/apple":{"get":{"summary":"Social Apple Init","description":"Redirect browser to Apple Sign-In consent page.","operationId":"social_apple_init_auth_social_apple_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/auth/social/apple/callback":{"post":{"summary":"Social Apple Callback","description":"Handle Apple Sign-In POST callback (form_post response mode).","operationId":"social_apple_callback_auth_social_apple_callback_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/admin/setup/social-login":{"get":{"summary":"Admin Get Social Login","description":"Return current social login configuration (secrets masked).","operationId":"admin_get_social_login_admin_setup_social_login_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}},"put":{"summary":"Admin Save Social Login","description":"Save social login configuration to SiteSettings.","operationId":"admin_save_social_login_admin_setup_social_login_put","requestBody":{"content":{"application/json":{"schema":{"type":"object","title":"Payload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/public/social-login-providers":{"get":{"summary":"Public Social Providers","description":"Return which social login providers are enabled (no secrets).","operationId":"public_social_providers_public_social_login_providers_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/subscription-plans":{"get":{"summary":"List Subscription Plans","description":"Return all active subscription plans, ordered by sort_order.","operationId":"list_subscription_plans_subscription_plans_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/SubscriptionPlanResponse"},"type":"array","title":"Response List Subscription Plans Subscription Plans Get"}}}}}}},"/admin/subscription-plans":{"get":{"summary":"Admin List Plans","operationId":"admin_list_plans_admin_subscription_plans_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/SubscriptionPlanResponse"},"type":"array","title":"Response Admin List Plans Admin Subscription Plans Get"}}}}}},"post":{"summary":"Admin Create Plan","operationId":"admin_create_plan_admin_subscription_plans_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SubscriptionPlanCreate"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SubscriptionPlanResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/subscription-plans/{plan_id}":{"put":{"summary":"Admin Update Plan","operationId":"admin_update_plan_admin_subscription_plans__plan_id__put","parameters":[{"name":"plan_id","in":"path","required":true,"schema":{"type":"integer","title":"Plan Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SubscriptionPlanUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SubscriptionPlanResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"summary":"Admin Delete Plan","operationId":"admin_delete_plan_admin_subscription_plans__plan_id__delete","parameters":[{"name":"plan_id","in":"path","required":true,"schema":{"type":"integer","title":"Plan Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MessageResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/subscriptions":{"get":{"summary":"Admin List Subscriptions","operationId":"admin_list_subscriptions_admin_subscriptions_get","parameters":[{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"}},{"name":"plan_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Plan Id"}},{"name":"search","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Search"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":1,"title":"Page"}},{"name":"page_size","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"default":50,"title":"Page Size"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminSubscriptionsListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"summary":"Admin Create Subscription","operationId":"admin_create_subscription_admin_subscriptions_post","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserSubscriptionCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserSubscriptionResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/subscriptions/{sub_id}":{"patch":{"summary":"Admin Update Subscription","operationId":"admin_update_subscription_admin_subscriptions__sub_id__patch","parameters":[{"name":"sub_id","in":"path","required":true,"schema":{"type":"integer","title":"Sub Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserSubscriptionUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserSubscriptionResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"summary":"Admin Delete Subscription","operationId":"admin_delete_subscription_admin_subscriptions__sub_id__delete","parameters":[{"name":"sub_id","in":"path","required":true,"schema":{"type":"integer","title":"Sub Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MessageResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/dashboard":{"get":{"summary":"User Dashboard","description":"User dashboard — aggregate real data for the authenticated user.","operationId":"user_dashboard_dashboard_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserDashboardResponse"}}}}}}},"/admin/dashboard":{"get":{"summary":"Admin Dashboard","description":"Admin dashboard — aggregate real data from the database.","operationId":"admin_dashboard_admin_dashboard_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminDashboardResponse"}}}}}}},"/admin/reports/profit":{"get":{"summary":"Admin Profit Report","description":"Profit report data for admin reports page.","operationId":"admin_profit_report_admin_reports_profit_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProfitReportResponse"}}}}}}},"/admin/reports/subscription":{"get":{"summary":"Admin Subscription Report","description":"Subscription report data for admin reports page.","operationId":"admin_subscription_report_admin_reports_subscription_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SubscriptionReportResponse"}}}}}}},"/admin/utilities/media":{"get":{"summary":"Admin List Media","operationId":"admin_list_media_admin_utilities_media_get","parameters":[{"name":"search","in":"query","required":false,"schema":{"type":"string","description":"Search by filename","default":"","title":"Search"},"description":"Search by filename"},{"name":"media_type","in":"query","required":false,"schema":{"type":"string","description":"image|video|document|file|all","default":"all","title":"Media Type"},"description":"image|video|document|file|all"},{"name":"visibility","in":"query","required":false,"schema":{"type":"string","description":"public|private|all","default":"all","title":"Visibility"},"description":"public|private|all"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MediaListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/utilities/media/upload":{"post":{"summary":"Admin Upload Media","operationId":"admin_upload_media_admin_utilities_media_upload_post","requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_admin_upload_media_admin_utilities_media_upload_post"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MediaUploadResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/utilities/media/{media_id}":{"delete":{"summary":"Admin Delete Media","operationId":"admin_delete_media_admin_utilities_media__media_id__delete","parameters":[{"name":"media_id","in":"path","required":true,"schema":{"type":"integer","title":"Media Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MessageResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/utilities/media/{media_id}/url":{"get":{"summary":"Admin Get Media Url","operationId":"admin_get_media_url_admin_utilities_media__media_id__url_get","parameters":[{"name":"media_id","in":"path","required":true,"schema":{"type":"integer","title":"Media Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MediaUrlResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/media/public/{token}":{"get":{"summary":"Media Public View","operationId":"media_public_view_media_public__token__get","parameters":[{"name":"token","in":"path","required":true,"schema":{"type":"string","title":"Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/media/private/{token}":{"get":{"summary":"Media Private View","operationId":"media_private_view_media_private__token__get","parameters":[{"name":"token","in":"path","required":true,"schema":{"type":"string","title":"Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/auth/forgot-password":{"post":{"summary":"User Forgot Password","description":"Request password reset.","operationId":"user_forgot_password_auth_forgot_password_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForgotPasswordRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/auth/reset-password":{"post":{"summary":"User Reset Password","description":"Reset password with token.","operationId":"user_reset_password_auth_reset_password_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResetPasswordRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/auth/forgot-password":{"post":{"summary":"Admin Forgot Password","description":"Request password reset for admin.","operationId":"admin_forgot_password_admin_auth_forgot_password_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForgotPasswordRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/auth/reset-password":{"post":{"summary":"Admin Reset Password","description":"Reset admin password with token.","operationId":"admin_reset_password_admin_auth_reset_password_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResetPasswordRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/auth/verify-email":{"post":{"summary":"User Verify Email","description":"Verify user email with token and return a JWT so the frontend can auto-login.","operationId":"user_verify_email_auth_verify_email_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VerifyEmailRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Token"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/auth/resend-verification":{"post":{"summary":"Resend Verification Email","description":"Resend verification email for unverified users.","operationId":"resend_verification_email_auth_resend_verification_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForgotPasswordRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/auth/verify-email-change":{"post":{"summary":"Verify Email Change","description":"Verify a pending email address change using the token sent to the new email.","operationId":"verify_email_change_auth_verify_email_change_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VerifyEmailRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/auth/verify-email":{"post":{"summary":"Admin Verify Email","description":"Verify admin email with token.","operationId":"admin_verify_email_admin_auth_verify_email_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VerifyEmailRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/auth/logout":{"post":{"summary":"Admin Logout","description":"Admin logout — revokes current session.","operationId":"admin_logout_admin_auth_logout_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/user/auth/logout":{"post":{"summary":"User Logout","description":"User logout — revokes current session.","operationId":"user_logout_user_auth_logout_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/auth/logout":{"post":{"summary":"Auth Logout","description":"Unified logout — works for cookie *or* Bearer auth.\n\nReads the token from either source, revokes the session row, and\nclears the cookie if one was set. Idempotent: calling logout\nwithout a token returns 200 with no side effects.","operationId":"auth_logout_auth_logout_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/auth/refresh":{"post":{"summary":"Refresh Token","description":"Refresh an access token — issues a new JWT without requiring re-login.\nThe current token must still be valid (not expired) and its session active.","operationId":"refresh_token_auth_refresh_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/auth/cookie-exchange":{"post":{"summary":"Auth Cookie Exchange","description":"Migrate a Bearer token to an HttpOnly session cookie.\n\nFrontend calls this once, immediately after a successful login,\nwhile it still has the JWT in memory. The server validates the\ntoken, attaches it to a cookie (HttpOnly, Secure, SameSite=Lax),\nand the client can then discard the in-memory copy. All future\nrequests authenticate via the cookie, with no XSS-readable token\nsitting in localStorage.\n\nReturns 204 — no body, the cookie carries the state.","operationId":"auth_cookie_exchange_auth_cookie_exchange_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/auth/ws-ticket":{"post":{"summary":"Auth Ws Ticket","description":"Mint a one-shot, 60-second ticket for WebSocket auth.\n\nWhy: WebSocket clients used to attach the JWT as a ``?token=…``\nquery parameter, which then landed in nginx access logs forever.\nThe ticket flow keeps the long-lived JWT off the URL — the\nclient opens ``wss://…/ws/...?ticket=<short>`` instead. The\nhandshake exchanges the ticket back to the underlying session.\n\nThe ticket is single-use, expires in 60s, and is bound to the\nissuing session — revoking the session also invalidates any\noutstanding tickets because the underlying token would no longer\nredeem.","operationId":"auth_ws_ticket_auth_ws_ticket_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/admin/auth/register":{"post":{"summary":"Admin Register","description":"Admin registration is disabled.","operationId":"admin_register_admin_auth_register_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/auth/login":{"post":{"summary":"User Login","description":"User login — returns token or 2FA challenge.","operationId":"user_login_auth_login_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserLogin"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/auth/2fa/verify":{"post":{"summary":"User 2Fa Verify","description":"Verify 2FA code after login.","operationId":"user_2fa_verify_auth_2fa_verify_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TwoFactorVerify"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Token"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/auth/register":{"post":{"summary":"User Register","description":"User registration.","operationId":"user_register_auth_register_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserCreate"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/auth/login":{"post":{"summary":"Admin Login","description":"Admin login — returns token or 2FA challenge.","operationId":"admin_login_admin_auth_login_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserLogin"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/auth/2fa/verify":{"post":{"summary":"Admin 2Fa Verify","description":"Verify 2FA code after admin login.","operationId":"admin_2fa_verify_admin_auth_2fa_verify_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TwoFactorVerify"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Token"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/my-billing/address":{"get":{"summary":"Get My Billing Addresses","operationId":"get_my_billing_addresses_my_billing_address_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/BillingAddressResponse"},"type":"array","title":"Response Get My Billing Addresses My Billing Address Get"}}}}}},"post":{"summary":"Create Billing Address","operationId":"create_billing_address_my_billing_address_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BillingAddressCreate"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BillingAddressResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/my-billing/address/{addr_id}":{"put":{"summary":"Update Billing Address","operationId":"update_billing_address_my_billing_address__addr_id__put","parameters":[{"name":"addr_id","in":"path","required":true,"schema":{"type":"integer","title":"Addr Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BillingAddressUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BillingAddressResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"summary":"Delete Billing Address","operationId":"delete_billing_address_my_billing_address__addr_id__delete","parameters":[{"name":"addr_id","in":"path","required":true,"schema":{"type":"integer","title":"Addr Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MessageResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/my-billing/address/{addr_id}/default":{"patch":{"summary":"Set Default Billing Address","operationId":"set_default_billing_address_my_billing_address__addr_id__default_patch","parameters":[{"name":"addr_id","in":"path","required":true,"schema":{"type":"integer","title":"Addr Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BillingAddressResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/utilities/activity-log":{"get":{"summary":"Admin Activity Log List","operationId":"admin_activity_log_list_admin_utilities_activity_log_get","parameters":[{"name":"search","in":"query","required":false,"schema":{"type":"string","default":"","title":"Search"}},{"name":"category_filter","in":"query","required":false,"schema":{"type":"string","default":"all","title":"Category Filter"}},{"name":"severity_filter","in":"query","required":false,"schema":{"type":"string","default":"all","title":"Severity Filter"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":1,"title":"Page"}},{"name":"page_size","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"default":50,"title":"Page Size"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ActivityLogListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/utilities/activity-log/stats":{"get":{"summary":"Admin Activity Log Stats","operationId":"admin_activity_log_stats_admin_utilities_activity_log_stats_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ActivityLogStatsResponse"}}}}}}},"/admin/utilities/activity-log/export":{"get":{"summary":"Admin Activity Log Export","operationId":"admin_activity_log_export_admin_utilities_activity_log_export_get","parameters":[{"name":"search","in":"query","required":false,"schema":{"type":"string","default":"","title":"Search"}},{"name":"category_filter","in":"query","required":false,"schema":{"type":"string","default":"all","title":"Category Filter"}},{"name":"severity_filter","in":"query","required":false,"schema":{"type":"string","default":"all","title":"Severity Filter"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/utilities/csv-export/sources":{"get":{"summary":"Admin Csv Export Sources","operationId":"admin_csv_export_sources_admin_utilities_csv_export_sources_get","parameters":[{"name":"date_range","in":"query","required":false,"schema":{"type":"string","default":"all","title":"Date Range"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CsvExportSourcesResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/utilities/csv-export/preview":{"get":{"summary":"Admin Csv Export Preview","operationId":"admin_csv_export_preview_admin_utilities_csv_export_preview_get","parameters":[{"name":"source_id","in":"query","required":true,"schema":{"type":"string","title":"Source Id"}},{"name":"date_range","in":"query","required":false,"schema":{"type":"string","default":"all","title":"Date Range"}},{"name":"fields","in":"query","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[],"title":"Fields"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CsvExportPreviewResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/utilities/csv-export/history":{"get":{"summary":"Admin Csv Export History","operationId":"admin_csv_export_history_admin_utilities_csv_export_history_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":20,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CsvExportHistoryResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/utilities/csv-export/start":{"post":{"summary":"Admin Csv Export Start","operationId":"admin_csv_export_start_admin_utilities_csv_export_start_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CsvExportStartRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CsvExportStartResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/utilities/csv-export/download/{job_id}":{"get":{"summary":"Admin Csv Export Download","operationId":"admin_csv_export_download_admin_utilities_csv_export_download__job_id__get","parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"integer","title":"Job Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/utilities/invoice-export/summary":{"get":{"summary":"Admin Invoice Export Summary","operationId":"admin_invoice_export_summary_admin_utilities_invoice_export_summary_get","parameters":[{"name":"date_range","in":"query","required":false,"schema":{"type":"string","default":"last3m","title":"Date Range"}},{"name":"invoice_type","in":"query","required":false,"schema":{"type":"string","default":"all","title":"Invoice Type"}},{"name":"status_filter","in":"query","required":false,"schema":{"type":"string","default":"all","title":"Status Filter"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvoiceExportSummaryResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/utilities/invoice-export/history":{"get":{"summary":"Admin Invoice Export History","operationId":"admin_invoice_export_history_admin_utilities_invoice_export_history_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":20,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvoiceExportHistoryResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/utilities/invoice-export/start":{"post":{"summary":"Admin Invoice Export Start","operationId":"admin_invoice_export_start_admin_utilities_invoice_export_start_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvoiceExportStartRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvoiceExportStartResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/utilities/invoice-export/download/{job_id}":{"get":{"summary":"Admin Invoice Export Download","operationId":"admin_invoice_export_download_admin_utilities_invoice_export_download__job_id__get","parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"integer","title":"Job Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/subscription-payment-methods":{"get":{"summary":"Get Subscription Payment Methods","description":"Return enabled crypto payment methods and wallet addresses for subscription checkout.","operationId":"get_subscription_payment_methods_subscription_payment_methods_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/subscription-payment-gateways":{"get":{"summary":"Get Subscription Payment Gateways","description":"Return available payment gateways (NowPayments status + manual methods) for checkout.","operationId":"get_subscription_payment_gateways_subscription_payment_gateways_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/admin/payment-gateways/nowpayments":{"get":{"summary":"Admin Get Nowpayments Config","description":"Return current NowPayments settings (API key masked).","operationId":"admin_get_nowpayments_config_admin_payment_gateways_nowpayments_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}},"put":{"summary":"Admin Save Nowpayments Config","description":"Save NowPayments configuration to SiteSettings.","operationId":"admin_save_nowpayments_config_admin_payment_gateways_nowpayments_put","requestBody":{"content":{"application/json":{"schema":{"type":"object","title":"Payload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/payment-gateways/nowpayments/test":{"post":{"summary":"Admin Test Nowpayments","description":"Ping NowPayments API to verify the API key is valid.","operationId":"admin_test_nowpayments_admin_payment_gateways_nowpayments_test_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/admin/utilities/database-backup/summary":{"get":{"summary":"Admin Database Backup Summary","operationId":"admin_database_backup_summary_admin_utilities_database_backup_summary_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DatabaseBackupSummaryResponse"}}}}}}},"/admin/utilities/database-backup/history":{"get":{"summary":"Admin Database Backup History","operationId":"admin_database_backup_history_admin_utilities_database_backup_history_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":20,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DatabaseBackupHistoryResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/utilities/database-backup/settings":{"get":{"summary":"Admin Database Backup Settings","operationId":"admin_database_backup_settings_admin_utilities_database_backup_settings_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DatabaseBackupSettingsResponse"}}}}}},"put":{"summary":"Admin Database Backup Settings Update","operationId":"admin_database_backup_settings_update_admin_utilities_database_backup_settings_put","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DatabaseBackupSettingsUpdate"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DatabaseBackupSettingsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/utilities/database-backup/start":{"post":{"summary":"Admin Database Backup Start","operationId":"admin_database_backup_start_admin_utilities_database_backup_start_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DatabaseBackupStartRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DatabaseBackupStartResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/utilities/database-backup/upload":{"post":{"summary":"Admin Database Backup Upload","operationId":"admin_database_backup_upload_admin_utilities_database_backup_upload_post","requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_admin_database_backup_upload_admin_utilities_database_backup_upload_post"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DatabaseBackupStartResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/utilities/database-backup/download/{job_id}":{"get":{"summary":"Admin Database Backup Download","operationId":"admin_database_backup_download_admin_utilities_database_backup_download__job_id__get","parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"integer","title":"Job Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/utilities/database-backup/{job_id}":{"delete":{"summary":"Admin Database Backup Delete","operationId":"admin_database_backup_delete_admin_utilities_database_backup__job_id__delete","parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"integer","title":"Job Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MessageResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/utilities/database-backup/preview/{job_id}":{"get":{"summary":"Admin Database Backup Preview","description":"Preview backup contents without restoring.","operationId":"admin_database_backup_preview_admin_utilities_database_backup_preview__job_id__get","parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"integer","title":"Job Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DatabaseBackupPreviewResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/utilities/database-backup/wipe":{"post":{"summary":"Admin Database Backup Wipe","description":"Wipe all database tables and filesystem storage, preserving only admin user.","operationId":"admin_database_backup_wipe_admin_utilities_database_backup_wipe_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MessageResponse"}}}}}}},"/admin/utilities/database-backup/restore/{job_id}":{"post":{"summary":"Admin Database Backup Restore","description":"Restore database and/or filesystem from backup archive.","operationId":"admin_database_backup_restore_admin_utilities_database_backup_restore__job_id__post","parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"integer","title":"Job Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DatabaseBackupRestoreRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DatabaseBackupRestoreResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/my-bots/name-template":{"get":{"summary":"Get My Bot Name Template","description":"Expose current auto-name prefix/suffix for user-side preview in create bot wizard.","operationId":"get_my_bot_name_template_my_bots_name_template_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BotNameTemplateResponse"}}}}}}},"/my-bots/exchanges":{"get":{"summary":"Get My Bot Enabled Exchanges","description":"Expose admin-enabled exchanges for the user create-bot flow.","operationId":"get_my_bot_enabled_exchanges_my_bots_exchanges_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnabledExchangesResponse"}}}}}}},"/my-bots/strategies":{"get":{"summary":"Get My Bot Enabled Strategies","description":"Expose admin-enabled strategy files for user bot creation.","operationId":"get_my_bot_enabled_strategies_my_bots_strategies_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/BotCreationStrategyResponse"},"type":"array","title":"Response Get My Bot Enabled Strategies My Bots Strategies Get"}}}}}}},"/my-bots/strategies/{strategy_id}/timeframes":{"get":{"summary":"Get My Bot Strategy Timeframes","description":"Return timeframe enable/disable flags present in selected strategy file.","operationId":"get_my_bot_strategy_timeframes_my_bots_strategies__strategy_id__timeframes_get","parameters":[{"name":"strategy_id","in":"path","required":true,"schema":{"type":"integer","title":"Strategy Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BotCreationStrategyTimeframesResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/my-bots/draft":{"get":{"summary":"Get My Bot Draft","description":"Return the user's current incomplete bot creation draft, or null if none.","operationId":"get_my_bot_draft_my_bots_draft_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/BotCreationDraftResponse"},{"type":"null"}],"title":"Response Get My Bot Draft My Bots Draft Get"}}}}}},"put":{"summary":"Save My Bot Draft","description":"Create or update the user's bot creation draft.","operationId":"save_my_bot_draft_my_bots_draft_put","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BotCreationDraftSave"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BotCreationDraftResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"summary":"Delete My Bot Draft","description":"Discard the user's bot creation draft, deleting any provisioned server.\nPass keep_server=true after a successful deployment so the running server is not deleted.","operationId":"delete_my_bot_draft_my_bots_draft_delete","parameters":[{"name":"keep_server","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Keep Server"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/bot-create/drafts":{"get":{"summary":"List Admin Bot Drafts","description":"Return all incomplete bot-creation drafts created by the current admin.","operationId":"list_admin_bot_drafts_admin_bot_create_drafts_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/admin/bot-create/users/{user_id}/draft":{"get":{"summary":"Get Admin Bot Draft For User","description":"Return admin's current incomplete bot-creation draft for a target user, or null if none.","operationId":"get_admin_bot_draft_for_user_admin_bot_create_users__user_id__draft_get","parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"integer","title":"User Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/BotCreationDraftResponse"},{"type":"null"}],"title":"Response Get Admin Bot Draft For User Admin Bot Create Users  User Id  Draft Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"summary":"Save Admin Bot Draft For User","description":"Create or update admin's bot-creation draft for a target user.","operationId":"save_admin_bot_draft_for_user_admin_bot_create_users__user_id__draft_put","parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"integer","title":"User Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BotCreationDraftSave"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BotCreationDraftResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"summary":"Delete Admin Bot Draft For User","description":"Discard admin's bot-creation draft for a target user.\nPass keep_server=true after a successful deployment so the running server is not deleted.","operationId":"delete_admin_bot_draft_for_user_admin_bot_create_users__user_id__draft_delete","parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"integer","title":"User Id"}},{"name":"keep_server","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Keep Server"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/bot-create/users/{user_id}/name-template":{"get":{"summary":"Admin Get Bot Name Template For User","description":"Admin access to global bot naming template for create-bot wizard parity.","operationId":"admin_get_bot_name_template_for_user_admin_bot_create_users__user_id__name_template_get","parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"integer","title":"User Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BotNameTemplateResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/bot-create/users/{user_id}/exchanges":{"get":{"summary":"Admin Get Bot Enabled Exchanges For User","description":"Admin access to bot-create exchange options for a target user.","operationId":"admin_get_bot_enabled_exchanges_for_user_admin_bot_create_users__user_id__exchanges_get","parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"integer","title":"User Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnabledExchangesResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/bot-create/users/{user_id}/strategies":{"get":{"summary":"Admin Get Bot Enabled Strategies For User","description":"Admin access to enabled strategy files for a target user bot creation.","operationId":"admin_get_bot_enabled_strategies_for_user_admin_bot_create_users__user_id__strategies_get","parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"integer","title":"User Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/BotCreationStrategyResponse"},"title":"Response Admin Get Bot Enabled Strategies For User Admin Bot Create Users  User Id  Strategies Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/bot-create/users/{user_id}/strategies/{strategy_id}/timeframes":{"get":{"summary":"Admin Get Bot Strategy Timeframes For User","description":"Admin access to strategy timeframe options used in create-bot for a target user.","operationId":"admin_get_bot_strategy_timeframes_for_user_admin_bot_create_users__user_id__strategies__strategy_id__timeframes_get","parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"integer","title":"User Id"}},{"name":"strategy_id","in":"path","required":true,"schema":{"type":"integer","title":"Strategy Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BotCreationStrategyTimeframesResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/bot-create/name-template":{"get":{"summary":"Admin Get Bot Name Template","description":"Expose global bot naming template to the admin create-bot wizard.","operationId":"admin_get_bot_name_template_admin_bot_create_name_template_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BotNameTemplateResponse"}}}}}}},"/my-subscription":{"get":{"summary":"Get My Subscription","operationId":"get_my_subscription_my_subscription_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/UserSubscriptionResponse"},{"type":"null"}],"title":"Response Get My Subscription My Subscription Get"}}}}}}},"/my-subscription/subscribe":{"post":{"summary":"Subscribe To Plan","operationId":"subscribe_to_plan_my_subscription_subscribe_post","parameters":[{"name":"plan_id","in":"query","required":true,"schema":{"type":"integer","title":"Plan Id"}},{"name":"billing_cycle","in":"query","required":false,"schema":{"type":"string","default":"monthly","title":"Billing Cycle"}}],"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserSubscriptionResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/my-subscription/free-activate":{"post":{"summary":"Free Activate Subscription","description":"Activate subscription for free when coupon covers 100% of the price. Generates invoice marked paid.","operationId":"free_activate_subscription_my_subscription_free_activate_post","parameters":[{"name":"plan_id","in":"query","required":true,"schema":{"type":"integer","title":"Plan Id"}},{"name":"billing_cycle","in":"query","required":false,"schema":{"type":"string","default":"monthly","title":"Billing Cycle"}},{"name":"coupon_code","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Coupon Code"}}],"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/my-subscription/checkout":{"post":{"summary":"Subscription Checkout","description":"Create invoice + pending payment, then activate subscription.","operationId":"subscription_checkout_my_subscription_checkout_post","parameters":[{"name":"plan_id","in":"query","required":true,"schema":{"type":"integer","title":"Plan Id"}},{"name":"billing_cycle","in":"query","required":false,"schema":{"type":"string","default":"monthly","title":"Billing Cycle"}},{"name":"payment_method","in":"query","required":true,"schema":{"type":"string","title":"Payment Method"}},{"name":"tx_hash","in":"query","required":true,"schema":{"type":"string","title":"Tx Hash"}},{"name":"coupon_code","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Coupon Code"}}],"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/my-subscription/cancel":{"post":{"summary":"Cancel My Subscription","operationId":"cancel_my_subscription_my_subscription_cancel_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MessageResponse"}}}}}}},"/my-subscription/coupon/validate":{"post":{"summary":"Validate Coupon","description":"Validate a coupon code and return the discounted price.","operationId":"validate_coupon_my_subscription_coupon_validate_post","parameters":[{"name":"plan_id","in":"query","required":true,"schema":{"type":"integer","title":"Plan Id"}},{"name":"billing_cycle","in":"query","required":false,"schema":{"type":"string","default":"monthly","title":"Billing Cycle"}},{"name":"code","in":"query","required":true,"schema":{"type":"string","title":"Code"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CouponValidationResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/my-subscription/nowpayments/create-payment":{"post":{"summary":"Nowpayments Create Payment","description":"Create a NowPayments invoice for a subscription plan. Returns payment URL + payment_id.","operationId":"nowpayments_create_payment_my_subscription_nowpayments_create_payment_post","parameters":[{"name":"plan_id","in":"query","required":true,"schema":{"type":"integer","title":"Plan Id"}},{"name":"billing_cycle","in":"query","required":false,"schema":{"type":"string","default":"monthly","title":"Billing Cycle"}},{"name":"coupon_code","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Coupon Code"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/my-subscription/nowpayments/cancel-payment":{"post":{"summary":"Nowpayments Cancel Payment","description":"Cancel the active pending NowPayments subscription checkout locally.","operationId":"nowpayments_cancel_payment_my_subscription_nowpayments_cancel_payment_post","parameters":[{"name":"payment_id","in":"query","required":true,"schema":{"type":"string","title":"Payment Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/my-subscription/nowpayments/status/{payment_id}":{"get":{"summary":"Nowpayments Payment Status","description":"Poll NowPayments payment status. Auto-activates subscription on confirmed/finished.","operationId":"nowpayments_payment_status_my_subscription_nowpayments_status__payment_id__get","parameters":[{"name":"payment_id","in":"path","required":true,"schema":{"type":"string","title":"Payment Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/my-billing/summary":{"get":{"summary":"Get My Billing Summary","operationId":"get_my_billing_summary_my_billing_summary_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/my-billing/invoices":{"get":{"summary":"Get My Invoices","operationId":"get_my_invoices_my_billing_invoices_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/my-billing/payments":{"get":{"summary":"Get My Payments","operationId":"get_my_payments_my_billing_payments_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/my-billing/invoices/{invoice_id}/nowpayments/pay":{"post":{"summary":"Billing Nowpayments Pay","description":"Create a NowPayments payment for an outstanding billing invoice.","operationId":"billing_nowpayments_pay_my_billing_invoices__invoice_id__nowpayments_pay_post","parameters":[{"name":"invoice_id","in":"path","required":true,"schema":{"type":"integer","title":"Invoice Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/my-billing/nowpayments/status/{payment_id}":{"get":{"summary":"Billing Nowpayments Status","description":"Poll NowPayments payment status for a billing invoice. Auto-marks paid on confirmed/finished.","operationId":"billing_nowpayments_status_my_billing_nowpayments_status__payment_id__get","parameters":[{"name":"payment_id","in":"path","required":true,"schema":{"type":"string","title":"Payment Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/my-billing/invoices/{invoice_id}/manual-pay":{"post":{"summary":"Billing Manual Pay","description":"Submit a manual crypto payment for an outstanding billing invoice.","operationId":"billing_manual_pay_my_billing_invoices__invoice_id__manual_pay_post","parameters":[{"name":"invoice_id","in":"path","required":true,"schema":{"type":"integer","title":"Invoice Id"}},{"name":"payment_method","in":"query","required":true,"schema":{"type":"string","title":"Payment Method"}},{"name":"tx_hash","in":"query","required":true,"schema":{"type":"string","title":"Tx Hash"}}],"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/billing/invoices":{"get":{"summary":"Admin List Invoices","operationId":"admin_list_invoices_admin_billing_invoices_get","parameters":[{"name":"page","in":"query","required":false,"schema":{"type":"integer","default":1,"title":"Page"}},{"name":"page_size","in":"query","required":false,"schema":{"type":"integer","default":25,"title":"Page Size"}},{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"}},{"name":"invoice_type","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Invoice Type"}},{"name":"search","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Search"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"summary":"Admin Create Invoice","operationId":"admin_create_invoice_admin_billing_invoices_post","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvoiceCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/billing/invoices/{invoice_id}":{"get":{"summary":"Admin Get Invoice","operationId":"admin_get_invoice_admin_billing_invoices__invoice_id__get","parameters":[{"name":"invoice_id","in":"path","required":true,"schema":{"type":"integer","title":"Invoice Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"summary":"Admin Update Invoice","operationId":"admin_update_invoice_admin_billing_invoices__invoice_id__patch","parameters":[{"name":"invoice_id","in":"path","required":true,"schema":{"type":"integer","title":"Invoice Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvoiceUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"summary":"Admin Delete Invoice","operationId":"admin_delete_invoice_admin_billing_invoices__invoice_id__delete","parameters":[{"name":"invoice_id","in":"path","required":true,"schema":{"type":"integer","title":"Invoice Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/billing/payments":{"get":{"summary":"Admin List Payments","operationId":"admin_list_payments_admin_billing_payments_get","parameters":[{"name":"page","in":"query","required":false,"schema":{"type":"integer","default":1,"title":"Page"}},{"name":"page_size","in":"query","required":false,"schema":{"type":"integer","default":25,"title":"Page Size"}},{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"}},{"name":"search","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Search"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"summary":"Admin Create Payment","operationId":"admin_create_payment_admin_billing_payments_post","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaymentCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/billing/payments/{payment_id}":{"patch":{"summary":"Admin Update Payment","operationId":"admin_update_payment_admin_billing_payments__payment_id__patch","parameters":[{"name":"payment_id","in":"path","required":true,"schema":{"type":"integer","title":"Payment Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaymentUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/billing/cycles":{"get":{"summary":"Admin List Cycles","operationId":"admin_list_cycles_admin_billing_cycles_get","parameters":[{"name":"page","in":"query","required":false,"schema":{"type":"integer","default":1,"title":"Page"}},{"name":"page_size","in":"query","required":false,"schema":{"type":"integer","default":25,"title":"Page Size"}},{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"}},{"name":"search","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Search"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"summary":"Admin Create Cycle","operationId":"admin_create_cycle_admin_billing_cycles_post","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BillingCycleCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/billing/cycles/{cycle_id}":{"patch":{"summary":"Admin Update Cycle","operationId":"admin_update_cycle_admin_billing_cycles__cycle_id__patch","parameters":[{"name":"cycle_id","in":"path","required":true,"schema":{"type":"integer","title":"Cycle Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BillingCycleUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/billing/settlements":{"get":{"summary":"Admin List Settlements","operationId":"admin_list_settlements_admin_billing_settlements_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}},"post":{"summary":"Admin Create Settlement","operationId":"admin_create_settlement_admin_billing_settlements_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SettlementCreate"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/billing/settlements/{settlement_id}":{"patch":{"summary":"Admin Update Settlement","operationId":"admin_update_settlement_admin_billing_settlements__settlement_id__patch","parameters":[{"name":"settlement_id","in":"path","required":true,"schema":{"type":"integer","title":"Settlement Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SettlementUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/bot-monitor/pairlists":{"get":{"summary":"Admin Bot Monitor Pairlists","description":"Return one PairMonitorRow per unique individual pair across all bots.","operationId":"admin_bot_monitor_pairlists_admin_bot_monitor_pairlists_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/PairMonitorRow"},"type":"array","title":"Response Admin Bot Monitor Pairlists Admin Bot Monitor Pairlists Get"}}}}}}},"/pair-blocks":{"get":{"summary":"Get Pair Blocks","description":"Return all currently active pair blocks. Accessible to any authenticated user.","operationId":"get_pair_blocks_pair_blocks_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/PairBlockInfo"},"type":"array","title":"Response Get Pair Blocks Pair Blocks Get"}}}}}}},"/admin/bot-monitor/blocks":{"get":{"summary":"Admin Bot Monitor Active Blocks","description":"Return all currently active pair blocks.","operationId":"admin_bot_monitor_active_blocks_admin_bot_monitor_blocks_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/PairBlockInfo"},"type":"array","title":"Response Admin Bot Monitor Active Blocks Admin Bot Monitor Blocks Get"}}}}}}},"/admin/bot-monitor/pairlists/{pair}/block":{"post":{"summary":"Admin Block Pair","description":"Block a trading pair across all running bots for an optional duration.","operationId":"admin_block_pair_admin_bot_monitor_pairlists__pair__block_post","parameters":[{"name":"pair","in":"path","required":true,"schema":{"type":"string","title":"Pair"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BlockPairRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PairBlockResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"summary":"Admin Unblock Pair","description":"Remove the active block for a trading pair.","operationId":"admin_unblock_pair_admin_bot_monitor_pairlists__pair__block_delete","parameters":[{"name":"pair","in":"path","required":true,"schema":{"type":"string","title":"Pair"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PairBlockResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/bot-monitor/pairlists/{pair}/orders":{"get":{"summary":"Admin Pair Live Orders","description":"Return open orders for a pair served from the background metrics cache (updated every 15 s).","operationId":"admin_pair_live_orders_admin_bot_monitor_pairlists__pair__orders_get","parameters":[{"name":"pair","in":"path","required":true,"schema":{"type":"string","title":"Pair"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/bot-monitor/force-exit":{"post":{"summary":"Admin Bot Monitor Force Exit","description":"Force-exit a trade from bot-monitor. Requires bot_id and trade_id.\nOptional: amount (float) for partial exit — Freqtrade exits only that many base units.","operationId":"admin_bot_monitor_force_exit_admin_bot_monitor_force_exit_post","requestBody":{"content":{"application/json":{"schema":{"type":"object","title":"Body"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/entry-pause-status":{"get":{"summary":"Admin Entry Pause Status","description":"Return current global entry-pause state (admin).","operationId":"admin_entry_pause_status_admin_entry_pause_status_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/entry-pause-status":{"get":{"summary":"User Entry Pause Status","description":"Return current global entry-pause state (visible to all authenticated users).","operationId":"user_entry_pause_status_entry_pause_status_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/admin/bot-monitor/stop-entries":{"post":{"summary":"Admin Bot Monitor Stop Entries","description":"Pause new trade entries on every running bot via Freqtrade stopbuy.","operationId":"admin_bot_monitor_stop_entries_admin_bot_monitor_stop_entries_post","requestBody":{"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/StopEntriesBody"}],"title":"Body"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/bot-monitor/resume-entries":{"post":{"summary":"Admin Bot Monitor Resume Entries","description":"Resume new trade entries on every bot via Freqtrade reload_config (clears stopbuy flag).","operationId":"admin_bot_monitor_resume_entries_admin_bot_monitor_resume_entries_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/admin/bot-monitor/force-exit-all-bots":{"post":{"summary":"Admin Bot Monitor Force Exit All Bots","description":"Force-exit ALL open trades on EVERY reachable bot. Body: { ordertype: 'market' }","operationId":"admin_bot_monitor_force_exit_all_bots_admin_bot_monitor_force_exit_all_bots_post","requestBody":{"content":{"application/json":{"schema":{"type":"object","title":"Body"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/bot-monitor/portfolio-summary":{"get":{"summary":"Admin Bot Monitor Portfolio Summary","description":"Return aggregated P&L and portfolio stats — real (non-dry-run) online bots only.","operationId":"admin_bot_monitor_portfolio_summary_admin_bot_monitor_portfolio_summary_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/admin/bot-monitor/alert-history":{"get":{"summary":"Admin Bot Monitor Alert History","description":"Return recent bot-monitor alert events from ActivityLog.","operationId":"admin_bot_monitor_alert_history_admin_bot_monitor_alert_history_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":30,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/bot-monitor/force-exit-pair":{"post":{"summary":"Admin Bot Monitor Force Exit Pair","description":"Force-exit all open trades on a specific pair across every bot that trades it.","operationId":"admin_bot_monitor_force_exit_pair_admin_bot_monitor_force_exit_pair_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForceExitPairBody"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/bot-monitor/ticker":{"get":{"summary":"Admin Bot Monitor Ticker","description":"Return 24h ticker data for all active trading pairs. Cached 60 s.","operationId":"admin_bot_monitor_ticker_admin_bot_monitor_ticker_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/PairTickerInfo"},"type":"array","title":"Response Admin Bot Monitor Ticker Admin Bot Monitor Ticker Get"}}}}}}},"/admin/bot-monitor/all-trade-counts":{"get":{"summary":"Admin All Trade Counts","description":"Return open trade counts per pair from background metrics cache (updated every 15 s).","operationId":"admin_all_trade_counts_admin_bot_monitor_all_trade_counts_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/admin/bot-monitor/pair-candles":{"get":{"summary":"Admin Bot Monitor Pair Candles","description":"Fetch OHLCV candlestick data for a pair from the first reachable active bot.","operationId":"admin_bot_monitor_pair_candles_admin_bot_monitor_pair_candles_get","parameters":[{"name":"pair","in":"query","required":true,"schema":{"type":"string","title":"Pair"}},{"name":"timeframe","in":"query","required":false,"schema":{"type":"string","default":"5m","title":"Timeframe"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PairCandleResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/my-bots":{"get":{"summary":"List My Bots","description":"List current user's bots.","operationId":"list_my_bots_my_bots_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/TradingBotResponse"},"type":"array","title":"Response List My Bots My Bots Get"}}}}}},"post":{"summary":"Create My Bot","description":"Create a new bot for the current user.","operationId":"create_my_bot_my_bots_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TradingBotCreate"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TradingBotResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/my-bots/validate-binance":{"post":{"summary":"Validate My Bot Binance Credentials","description":"Validate Binance API credentials, show the verified Binance identity, and persist it on the user record.","operationId":"validate_my_bot_binance_credentials_my_bots_validate_binance_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BinanceValidationRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BinanceValidationResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/my-bots/trading-summaries":{"get":{"summary":"Trading Summaries","description":"Fetch trading performance summaries for all user bots (concurrent).","operationId":"trading_summaries_my_bots_trading_summaries_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/my-bots/{bot_id}":{"get":{"summary":"Get My Bot Detail","description":"Get single bot detail for the current user.","operationId":"get_my_bot_detail_my_bots__bot_id__get","parameters":[{"name":"bot_id","in":"path","required":true,"schema":{"type":"string","title":"Bot Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TradingBotResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"summary":"Delete My Bot","description":"Delete a user-owned bot and associated deployment/server records.","operationId":"delete_my_bot_my_bots__bot_id__delete","parameters":[{"name":"bot_id","in":"path","required":true,"schema":{"type":"string","title":"Bot Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MessageResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/my-bots/{bot_id}/freqtrade-dashboard":{"get":{"summary":"Get Freqtrade Dashboard Url","description":"Get a pre-authenticated Freqtrade dashboard URL for the bot.","operationId":"get_freqtrade_dashboard_url_my_bots__bot_id__freqtrade_dashboard_get","parameters":[{"name":"bot_id","in":"path","required":true,"schema":{"type":"string","title":"Bot Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Get Freqtrade Dashboard Url My Bots  Bot Id  Freqtrade Dashboard Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/my-bots/{bot_id}/config":{"patch":{"summary":"Update My Bot Config","description":"Update bot configuration in DB + remote server then restart docker compose.","operationId":"update_my_bot_config_my_bots__bot_id__config_patch","parameters":[{"name":"bot_id","in":"path","required":true,"schema":{"type":"string","title":"Bot Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BotConfigUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/my-bots/{bot_id}/trading-data":{"get":{"summary":"Bot Trading Data","description":"Fetch full trading data for a single bot from its Freqtrade API.","operationId":"bot_trading_data_my_bots__bot_id__trading_data_get","parameters":[{"name":"bot_id","in":"path","required":true,"schema":{"type":"string","title":"Bot Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/my-bots/{bot_id}/pair-candles":{"get":{"summary":"Bot Pair Candles","description":"Fetch OHLCV candle data for a pair from a bot's Freqtrade API.","operationId":"bot_pair_candles_my_bots__bot_id__pair_candles_get","parameters":[{"name":"bot_id","in":"path","required":true,"schema":{"type":"string","title":"Bot Id"}},{"name":"pair","in":"query","required":true,"schema":{"type":"string","title":"Pair"}},{"name":"timeframe","in":"query","required":false,"schema":{"type":"string","default":"5m","title":"Timeframe"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":500,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/my-bots/{bot_id}/plot-config":{"get":{"summary":"Bot Plot Config","description":"Fetch plot configuration from a bot's Freqtrade strategy.","operationId":"bot_plot_config_my_bots__bot_id__plot_config_get","parameters":[{"name":"bot_id","in":"path","required":true,"schema":{"type":"string","title":"Bot Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/my-bots/{bot_id}/force-exit":{"post":{"summary":"Bot Force Exit","description":"Force exit an open trade via Freqtrade API.","operationId":"bot_force_exit_my_bots__bot_id__force_exit_post","parameters":[{"name":"bot_id","in":"path","required":true,"schema":{"type":"string","title":"Bot Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","title":"Body"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/my-bots/{bot_id}/reload-trade":{"post":{"summary":"Bot Reload Trade","description":"Reload trade data from exchange via Freqtrade API.","operationId":"bot_reload_trade_my_bots__bot_id__reload_trade_post","parameters":[{"name":"bot_id","in":"path","required":true,"schema":{"type":"string","title":"Bot Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","title":"Body"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/my-bots/{bot_id}/actions/{action}":{"post":{"summary":"My Bot Runtime Action","description":"Runtime actions for user-owned bots: start, stop, redeploy.","operationId":"my_bot_runtime_action_my_bots__bot_id__actions__action__post","parameters":[{"name":"bot_id","in":"path","required":true,"schema":{"type":"string","title":"Bot Id"}},{"name":"action","in":"path","required":true,"schema":{"type":"string","title":"Action"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MessageResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/my-bots/provision-server":{"post":{"summary":"Provision My Bot Server","description":"Create a Hetzner server before final bot creation so users can whitelist IPs on exchanges.","operationId":"provision_my_bot_server_my_bots_provision_server_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ServerProvisionDraftCreate"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ServerProvisionDraftResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/my-bots/{bot_id}/live-blacklist":{"get":{"summary":"User Get Bot Live Blacklist","description":"Fetch the current Freqtrade blacklist for the user's bot (live, not from DB).","operationId":"user_get_bot_live_blacklist_my_bots__bot_id__live_blacklist_get","parameters":[{"name":"bot_id","in":"path","required":true,"schema":{"type":"string","title":"Bot Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/bot-create/users/{user_id}/validate-binance":{"post":{"summary":"Admin Validate Bot Binance Credentials For User","description":"Admin validation for Binance credentials while creating a bot for a target user.","operationId":"admin_validate_bot_binance_credentials_for_user_admin_bot_create_users__user_id__validate_binance_post","parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"integer","title":"User Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BinanceValidationRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BinanceValidationResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/bot-create/users/{user_id}/provision-server":{"post":{"summary":"Admin Provision Bot Server For User","description":"Admin pre-provisions target user bot server for exchange IP whitelisting.","operationId":"admin_provision_bot_server_for_user_admin_bot_create_users__user_id__provision_server_post","parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"integer","title":"User Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ServerProvisionDraftCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ServerProvisionDraftResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/bots/create":{"post":{"summary":"Admin Create Bot For User","description":"Admin creates and deploys a bot for a specific user.","operationId":"admin_create_bot_for_user_admin_bots_create_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminTradingBotCreate"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TradingBotResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/bots/manual-add":{"post":{"summary":"Admin Manual Add Bot","description":"Manually register an already-running Freqtrade bot by connecting to its API.","operationId":"admin_manual_add_bot_admin_bots_manual_add_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ManualBotAdd"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/bots/recover-from-drafts":{"post":{"summary":"Admin Recover Bots From Drafts","description":"Scan all server_provision_drafts with a server IP and register any\nrunning Freqtrade instances as TradingBot records.  Safe to call multiple\ntimes — skips drafts that already have a matching bot.","operationId":"admin_recover_bots_from_drafts_admin_bots_recover_from_drafts_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/admin/bots/{bot_id}/deployment":{"get":{"summary":"Admin Get Bot Deployment Detail","description":"Admin-only deployment details with deployment log output.","operationId":"admin_get_bot_deployment_detail_admin_bots__bot_id__deployment_get","parameters":[{"name":"bot_id","in":"path","required":true,"schema":{"type":"string","title":"Bot Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminBotDeploymentDetailResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/bots/{bot_id}":{"delete":{"summary":"Admin Delete Bot","description":"Admin delete for a bot and associated deployment/server records.","operationId":"admin_delete_bot_admin_bots__bot_id__delete","parameters":[{"name":"bot_id","in":"path","required":true,"schema":{"type":"string","title":"Bot Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MessageResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"summary":"Admin Get Bot Detail","description":"Get single bot detail (any user) with owner info.","operationId":"admin_get_bot_detail_admin_bots__bot_id__get","parameters":[{"name":"bot_id","in":"path","required":true,"schema":{"type":"string","title":"Bot Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/bots":{"get":{"summary":"Admin List Bots","description":"List ALL bots across all users with owner info.","operationId":"admin_list_bots_admin_bots_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/admin/bots/trading-summaries":{"get":{"summary":"Admin Trading Summaries","description":"Fetch trading performance summaries for ALL bots (concurrent).","operationId":"admin_trading_summaries_admin_bots_trading_summaries_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/admin/bots/{bot_id}/config":{"patch":{"summary":"Update Admin Bot Config","description":"Admin: update bot configuration in DB + remote server then restart docker compose.","operationId":"update_admin_bot_config_admin_bots__bot_id__config_patch","parameters":[{"name":"bot_id","in":"path","required":true,"schema":{"type":"string","title":"Bot Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BotConfigUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/bots/{bot_id}/trading-data":{"get":{"summary":"Admin Bot Trading Data","description":"Fetch full trading data for any bot from its Freqtrade API.","operationId":"admin_bot_trading_data_admin_bots__bot_id__trading_data_get","parameters":[{"name":"bot_id","in":"path","required":true,"schema":{"type":"string","title":"Bot Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/bots/{bot_id}/ft-password":{"get":{"summary":"Admin Get Bot Ft Password","description":"Admin: get the Freqtrade API password for a bot.","operationId":"admin_get_bot_ft_password_admin_bots__bot_id__ft_password_get","parameters":[{"name":"bot_id","in":"path","required":true,"schema":{"type":"string","title":"Bot Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/bots/{bot_id}/live-blacklist":{"get":{"summary":"Admin Get Bot Live Blacklist","description":"Fetch the current Freqtrade blacklist for a bot (live, not from DB).","operationId":"admin_get_bot_live_blacklist_admin_bots__bot_id__live_blacklist_get","parameters":[{"name":"bot_id","in":"path","required":true,"schema":{"type":"string","title":"Bot Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/bots/{bot_id}/freqtrade-url":{"get":{"summary":"Admin Get Freqtrade Dashboard Url","description":"Get a pre-authenticated Freqtrade dashboard URL for a bot (admin).","operationId":"admin_get_freqtrade_dashboard_url_admin_bots__bot_id__freqtrade_url_get","parameters":[{"name":"bot_id","in":"path","required":true,"schema":{"type":"string","title":"Bot Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/bots/{bot_id}/pair-candles":{"get":{"summary":"Admin Bot Pair Candles","description":"Admin: fetch OHLCV candle data for a pair from a bot's Freqtrade API.","operationId":"admin_bot_pair_candles_admin_bots__bot_id__pair_candles_get","parameters":[{"name":"bot_id","in":"path","required":true,"schema":{"type":"string","title":"Bot Id"}},{"name":"pair","in":"query","required":true,"schema":{"type":"string","title":"Pair"}},{"name":"timeframe","in":"query","required":false,"schema":{"type":"string","default":"5m","title":"Timeframe"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":500,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/bots/{bot_id}/plot-config":{"get":{"summary":"Admin Bot Plot Config","description":"Admin: fetch plot configuration from a bot's Freqtrade strategy.","operationId":"admin_bot_plot_config_admin_bots__bot_id__plot_config_get","parameters":[{"name":"bot_id","in":"path","required":true,"schema":{"type":"string","title":"Bot Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/bots/{bot_id}/force-exit":{"post":{"summary":"Admin Bot Force Exit","description":"Admin force exit an open trade via Freqtrade API.","operationId":"admin_bot_force_exit_admin_bots__bot_id__force_exit_post","parameters":[{"name":"bot_id","in":"path","required":true,"schema":{"type":"string","title":"Bot Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","title":"Body"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/bots/{bot_id}/reload-trade":{"post":{"summary":"Admin Bot Reload Trade","description":"Admin reload trade data from exchange via Freqtrade API.","operationId":"admin_bot_reload_trade_admin_bots__bot_id__reload_trade_post","parameters":[{"name":"bot_id","in":"path","required":true,"schema":{"type":"string","title":"Bot Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","title":"Body"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/bots/{bot_id}/logs":{"get":{"summary":"Admin Bot Logs","description":"Fetch Freqtrade log file from a bot's server via SSH.","operationId":"admin_bot_logs_admin_bots__bot_id__logs_get","parameters":[{"name":"bot_id","in":"path","required":true,"schema":{"type":"string","title":"Bot Id"}},{"name":"tail","in":"query","required":false,"schema":{"type":"integer","maximum":5000,"minimum":10,"description":"Number of log lines to fetch","default":200,"title":"Tail"},"description":"Number of log lines to fetch"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/bots/{bot_id}/actions/{action}":{"post":{"summary":"Admin Bot Runtime Action","description":"Admin runtime actions for any bot: start, stop, redeploy.","operationId":"admin_bot_runtime_action_admin_bots__bot_id__actions__action__post","parameters":[{"name":"bot_id","in":"path","required":true,"schema":{"type":"string","title":"Bot Id"}},{"name":"action","in":"path","required":true,"schema":{"type":"string","title":"Action"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MessageResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/bots/{bot_id}/server-status":{"get":{"summary":"Admin Bot Server Status","description":"Return Hetzner server status (running/off/etc.) plus a quick health\nprobe of the freqtrade container. When something looks unhealthy, also\nreturn recent system logs so admins can diagnose without opening SSH.","operationId":"admin_bot_server_status_admin_bots__bot_id__server_status_get","parameters":[{"name":"bot_id","in":"path","required":true,"schema":{"type":"string","title":"Bot Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/bots/{bot_id}/server-restart":{"post":{"summary":"Admin Bot Server Restart","description":"Reboot the Hetzner server hosting this bot via the Hetzner Cloud API.\n\nUses the soft `reboot` action (ACPI shutdown + start). Hetzner returns\n202 with an Action object once accepted.","operationId":"admin_bot_server_restart_admin_bots__bot_id__server_restart_post","parameters":[{"name":"bot_id","in":"path","required":true,"schema":{"type":"string","title":"Bot Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MessageResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/health":{"get":{"summary":"Health Check","description":"Public liveness probe — returns no host or container data.","operationId":"health_check_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/docker/health":{"get":{"summary":"Docker Health","description":"Docker daemon stats — admin-only.","operationId":"docker_health_docker_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/docker/containers":{"get":{"summary":"Docker Containers","description":"List all containers + their state — admin-only.","operationId":"docker_containers_docker_containers_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/docker/container/{container_name}":{"get":{"summary":"Docker Container Health","description":"Per-container inspect — admin-only.","operationId":"docker_container_health_docker_container__container_name__get","parameters":[{"name":"container_name","in":"path","required":true,"schema":{"type":"string","title":"Container Name"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/docker/system-info":{"get":{"summary":"Docker System Info","description":"Full system snapshot for the admin system-info page — admin-only.","operationId":"docker_system_info_docker_system_info_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/admin/setup/freqtrade/files":{"get":{"tags":["admin-setup"],"summary":"List Freqtrade Files","description":"List all uploaded Freqtrade files grouped by type (no content).","operationId":"list_freqtrade_files_admin_setup_freqtrade_files_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FreqtradeFilesListResponse"}}}}}}},"/admin/setup/freqtrade/file/{file_type}":{"post":{"tags":["admin-setup"],"summary":"Upload Freqtrade File","description":"Upload a new Freqtrade file of the given type.","operationId":"upload_freqtrade_file_admin_setup_freqtrade_file__file_type__post","parameters":[{"name":"file_type","in":"path","required":true,"schema":{"type":"string","title":"File Type"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_upload_freqtrade_file_admin_setup_freqtrade_file__file_type__post"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FreqtradeFileResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/setup/freqtrade/file/{file_id}":{"get":{"tags":["admin-setup"],"summary":"Get Freqtrade File","description":"Return a single file with content (for the inline editor).","operationId":"get_freqtrade_file_admin_setup_freqtrade_file__file_id__get","parameters":[{"name":"file_id","in":"path","required":true,"schema":{"type":"integer","title":"File Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FreqtradeFileDetailResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["admin-setup"],"summary":"Update Freqtrade File","description":"Update file content and optional rename (editor save).","operationId":"update_freqtrade_file_admin_setup_freqtrade_file__file_id__put","parameters":[{"name":"file_id","in":"path","required":true,"schema":{"type":"integer","title":"File Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FreqtradeFileUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FreqtradeFileResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["admin-setup"],"summary":"Delete Freqtrade File","description":"Delete a file. If it was the default, auto-reassign to oldest remaining.","operationId":"delete_freqtrade_file_admin_setup_freqtrade_file__file_id__delete","parameters":[{"name":"file_id","in":"path","required":true,"schema":{"type":"integer","title":"File Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MessageResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/setup/freqtrade/file/{file_id}/deploy":{"post":{"tags":["admin-setup"],"summary":"Deploy Freqtrade File","description":"Push an already-saved strategy file to every non-manual bot whose\n``strategy`` field matches this file's filename (stem), then restart\ndocker compose on each server.  Returns per-bot results.","operationId":"deploy_freqtrade_file_admin_setup_freqtrade_file__file_id__deploy_post","parameters":[{"name":"file_id","in":"path","required":true,"schema":{"type":"integer","title":"File Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/setup/freqtrade/file/{file_id}/default":{"post":{"tags":["admin-setup"],"summary":"Set Freqtrade File Default","description":"Set a file as the default for its type, clearing the previous default.","operationId":"set_freqtrade_file_default_admin_setup_freqtrade_file__file_id__default_post","parameters":[{"name":"file_id","in":"path","required":true,"schema":{"type":"integer","title":"File Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FreqtradeFileResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/setup/freqtrade/strategy/{file_id}/visibility":{"patch":{"tags":["admin-setup"],"summary":"Set Strategy Visibility","description":"Toggle whether a strategy file appears in user bot creation strategy list.","operationId":"set_strategy_visibility_admin_setup_freqtrade_strategy__file_id__visibility_patch","parameters":[{"name":"file_id","in":"path","required":true,"schema":{"type":"integer","title":"File Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StrategyVisibilityUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FreqtradeFileResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/setup/freqtrade/hetzner":{"get":{"tags":["admin-setup"],"summary":"Get Hetzner Config","description":"Return Hetzner configuration (key presence only, not the actual key).","operationId":"get_hetzner_config_admin_setup_freqtrade_hetzner_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HetznerConfigResponse"}}}}}},"put":{"tags":["admin-setup"],"summary":"Update Hetzner Config","description":"Save Hetzner API key and deployment path.","operationId":"update_hetzner_config_admin_setup_freqtrade_hetzner_put","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HetznerDetailsUpdate"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HetznerConfigResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/setup/freqtrade/strategy/{file_id}/parameters":{"get":{"tags":["admin-setup"],"summary":"Get Strategy Parameters","description":"Parse all strategy parameters from the file and merge with saved overrides.","operationId":"get_strategy_parameters_admin_setup_freqtrade_strategy__file_id__parameters_get","parameters":[{"name":"file_id","in":"path","required":true,"schema":{"type":"integer","title":"File Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StrategyParametersResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["admin-setup"],"summary":"Save Strategy Parameters","description":"Save parameter overrides to DB (does NOT touch the file on disk yet).","operationId":"save_strategy_parameters_admin_setup_freqtrade_strategy__file_id__parameters_put","parameters":[{"name":"file_id","in":"path","required":true,"schema":{"type":"integer","title":"File Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StrategyParametersSave"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MessageResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["admin-setup"],"summary":"Reset Strategy Parameters","description":"Remove all saved parameter overrides for a strategy file.","operationId":"reset_strategy_parameters_admin_setup_freqtrade_strategy__file_id__parameters_delete","parameters":[{"name":"file_id","in":"path","required":true,"schema":{"type":"integer","title":"File Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MessageResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/setup/freqtrade/strategy/{file_id}/parameters/apply":{"post":{"tags":["admin-setup"],"summary":"Apply Strategy Parameters","description":"Write saved parameter overrides directly into the strategy .py file on disk.","operationId":"apply_strategy_parameters_admin_setup_freqtrade_strategy__file_id__parameters_apply_post","parameters":[{"name":"file_id","in":"path","required":true,"schema":{"type":"integer","title":"File Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MessageResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/setup/freqtrade/strategy/{file_id}/parameters/add":{"post":{"tags":["admin-setup"],"summary":"Add Strategy Parameter","description":"Add a new parameter attribute to the strategy .py file on disk.","operationId":"add_strategy_parameter_admin_setup_freqtrade_strategy__file_id__parameters_add_post","parameters":[{"name":"file_id","in":"path","required":true,"schema":{"type":"integer","title":"File Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParameterAdd"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MessageResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/setup/freqtrade/strategy/{file_id}/parameters/{param_name}":{"patch":{"tags":["admin-setup"],"summary":"Edit Strategy Parameter","description":"Rename and/or change the value of a parameter directly in the strategy file.","operationId":"edit_strategy_parameter_admin_setup_freqtrade_strategy__file_id__parameters__param_name__patch","parameters":[{"name":"file_id","in":"path","required":true,"schema":{"type":"integer","title":"File Id"}},{"name":"param_name","in":"path","required":true,"schema":{"type":"string","title":"Param Name"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParameterEdit"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MessageResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["admin-setup"],"summary":"Delete Strategy Parameter","description":"Remove a parameter attribute from the strategy .py file on disk.","operationId":"delete_strategy_parameter_admin_setup_freqtrade_strategy__file_id__parameters__param_name__delete","parameters":[{"name":"file_id","in":"path","required":true,"schema":{"type":"integer","title":"File Id"}},{"name":"param_name","in":"path","required":true,"schema":{"type":"string","title":"Param Name"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MessageResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/setup/freqtrade/config/{file_id}/pairlist":{"get":{"tags":["admin-setup"],"summary":"Get Config Pairlist","description":"Read pair_whitelist and pair_blacklist from a config JSON file.","operationId":"get_config_pairlist_admin_setup_freqtrade_config__file_id__pairlist_get","parameters":[{"name":"file_id","in":"path","required":true,"schema":{"type":"integer","title":"File Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PairlistResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["admin-setup"],"summary":"Save Config Pairlist","description":"Overwrite pair_whitelist and pair_blacklist in a config JSON file on disk.","operationId":"save_config_pairlist_admin_setup_freqtrade_config__file_id__pairlist_put","parameters":[{"name":"file_id","in":"path","required":true,"schema":{"type":"integer","title":"File Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PairlistUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MessageResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/setup/site-settings":{"get":{"tags":["admin-setup"],"summary":"Get Site Settings","description":"Get all site settings (admin).","operationId":"get_site_settings_admin_setup_site_settings_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Get Site Settings Admin Setup Site Settings Get"}}}}}},"put":{"tags":["admin-setup"],"summary":"Update Site Settings","description":"Update site settings (admin). Accepts a flat dict of key-value pairs.","operationId":"update_site_settings_admin_setup_site_settings_put","requestBody":{"content":{"application/json":{"schema":{"type":"object","title":"Payload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MessageResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/setup/branding/upload":{"post":{"tags":["admin-setup"],"summary":"Upload Branding File","description":"Upload logo or favicon; stored in storage/branding/ (included in backups).","operationId":"upload_branding_file_admin_setup_branding_upload_post","parameters":[{"name":"branding_type","in":"query","required":false,"schema":{"type":"string","default":"logo","title":"Branding Type"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_upload_branding_file_admin_setup_branding_upload_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/setup/roles":{"get":{"tags":["admin-setup"],"summary":"List Staff Roles","operationId":"list_staff_roles_admin_setup_roles_get","parameters":[{"name":"search","in":"query","required":false,"schema":{"type":"string","default":"","title":"Search"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","default":1,"title":"Page"}},{"name":"page_size","in":"query","required":false,"schema":{"type":"integer","default":25,"title":"Page Size"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StaffRoleListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["admin-setup"],"summary":"Create Staff Role","operationId":"create_staff_role_admin_setup_roles_post","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StaffRoleCreate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StaffRoleResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/setup/roles/{role_id}":{"get":{"tags":["admin-setup"],"summary":"Get Staff Role","operationId":"get_staff_role_admin_setup_roles__role_id__get","parameters":[{"name":"role_id","in":"path","required":true,"schema":{"type":"integer","title":"Role Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StaffRoleResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["admin-setup"],"summary":"Update Staff Role","operationId":"update_staff_role_admin_setup_roles__role_id__put","parameters":[{"name":"role_id","in":"path","required":true,"schema":{"type":"integer","title":"Role Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StaffRoleUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StaffRoleResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["admin-setup"],"summary":"Delete Staff Role","operationId":"delete_staff_role_admin_setup_roles__role_id__delete","parameters":[{"name":"role_id","in":"path","required":true,"schema":{"type":"integer","title":"Role Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MessageResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/setup/roles/{role_id}/users":{"get":{"tags":["admin-setup"],"summary":"List Staff Role Users","operationId":"list_staff_role_users_admin_setup_roles__role_id__users_get","parameters":[{"name":"role_id","in":"path","required":true,"schema":{"type":"integer","title":"Role Id"}},{"name":"search","in":"query","required":false,"schema":{"type":"string","default":"","title":"Search"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","default":1,"title":"Page"}},{"name":"page_size","in":"query","required":false,"schema":{"type":"integer","default":25,"title":"Page Size"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StaffRoleMemberListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/setup/roles/{role_id}/users/assign":{"post":{"tags":["admin-setup"],"summary":"Assign User To Staff Role","operationId":"assign_user_to_staff_role_admin_setup_roles__role_id__users_assign_post","parameters":[{"name":"role_id","in":"path","required":true,"schema":{"type":"integer","title":"Role Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StaffRoleAssignUserRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MessageResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/setup/roles/{role_id}/users/unassign":{"post":{"tags":["admin-setup"],"summary":"Unassign User From Staff Role","operationId":"unassign_user_from_staff_role_admin_setup_roles__role_id__users_unassign_post","parameters":[{"name":"role_id","in":"path","required":true,"schema":{"type":"integer","title":"Role Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StaffRoleAssignUserRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MessageResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/setup/email":{"get":{"tags":["admin-setup"],"summary":"Get Email Settings","description":"Return SMTP settings, template configuration, and recent email log history.","operationId":"get_email_settings_admin_setup_email_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EmailSettingsResponse"}}}}}},"put":{"tags":["admin-setup"],"summary":"Update Email Settings","description":"Persist SMTP settings and email template configuration in site_settings.","operationId":"update_email_settings_admin_setup_email_put","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EmailSettingsUpdate"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EmailSettingsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/setup/email/test-connection":{"post":{"tags":["admin-setup"],"summary":"Test Email Connection","description":"Attempt an SMTP connection using the current form values or saved settings.","operationId":"test_email_connection_admin_setup_email_test_connection_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EmailConnectionTestRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EmailActionResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/setup/email/send-test":{"post":{"tags":["admin-setup"],"summary":"Send Test Email","description":"Send a test email using the saved settings or the current form values.","operationId":"send_test_email_admin_setup_email_send_test_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EmailSendTestRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EmailActionResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/setup/email/alerts":{"get":{"tags":["admin-setup"],"summary":"Get Email Alerts","description":"Return email alert settings.","operationId":"get_email_alerts_admin_setup_email_alerts_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EmailAlertsResponse"}}}}}},"put":{"tags":["admin-setup"],"summary":"Update Email Alerts","description":"Update email alert settings.","operationId":"update_email_alerts_admin_setup_email_alerts_put","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EmailAlertsUpdate"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EmailAlertsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/public/site-settings":{"get":{"tags":["public"],"summary":"Get Public Site Settings","description":"Get site settings (public, no auth). Only exposes safe keys.","operationId":"get_public_site_settings_public_site_settings_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Get Public Site Settings Public Site Settings Get"}}}}}}},"/public/branding/{filename}":{"get":{"tags":["public"],"summary":"Serve Branding File","description":"Serve branding assets (logo, favicon) without auth.","operationId":"serve_branding_file_public_branding__filename__get","parameters":[{"name":"filename","in":"path","required":true,"schema":{"type":"string","title":"Filename"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/setup/telegram-alerts":{"get":{"summary":"Get Admin Alert Settings","operationId":"get_admin_alert_settings_admin_setup_telegram_alerts_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminAlertSettingsResponse"}}}}}},"put":{"summary":"Update Admin Alert Settings","operationId":"update_admin_alert_settings_admin_setup_telegram_alerts_put","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminAlertSettingsUpdate"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminAlertSettingsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/setup/telegram-alerts/test":{"post":{"summary":"Send Test Admin Alert","description":"Send a test message via the configured Telegram channel and return the\nactual Telegram API result (or the reason it was blocked locally).","operationId":"send_test_admin_alert_admin_setup_telegram_alerts_test_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminAlertTestResponse"}}}}}}},"/admin/setup/telegram-alerts/events":{"get":{"summary":"List Recent Events","operationId":"list_recent_events_admin_setup_telegram_alerts_events_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"default":50,"title":"Limit"}},{"name":"event_type","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Event Type"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/BotEventLogItem"},"title":"Response List Recent Events Admin Setup Telegram Alerts Events Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/setup/telegram-alerts/commands/register":{"post":{"summary":"Register Command Webhook","description":"Register the inbound webhook with Telegram + push the command menu.\n\nGenerates a fresh ``webhook_secret`` and persists it. Telegram\nechoes that secret on every inbound POST so we can verify the\nrequest authenticity without HMAC.","operationId":"register_command_webhook_admin_setup_telegram_alerts_commands_register_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/_CommandsSetupRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/_CommandsSetupResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/setup/telegram-alerts/commands/deregister":{"post":{"summary":"Deregister Command Webhook","operationId":"deregister_command_webhook_admin_setup_telegram_alerts_commands_deregister_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/_CommandsSetupResponse"}}}}}}},"/":{"get":{"summary":"Read Root","description":"Root endpoint","operationId":"read_root__get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}}},"components":{"schemas":{"AccountApiKeyResponse":{"properties":{"id":{"type":"integer","title":"Id"},"exchange":{"type":"string","title":"Exchange"},"label":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Label"},"key_masked":{"type":"string","title":"Key Masked"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"}},"type":"object","required":["id","exchange","key_masked","created_at","updated_at"],"title":"AccountApiKeyResponse"},"AccountApiKeyUpsert":{"properties":{"exchange":{"type":"string","title":"Exchange"},"api_key":{"type":"string","title":"Api Key"},"api_secret":{"type":"string","title":"Api Secret"},"label":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Label"}},"type":"object","required":["exchange","api_key","api_secret"],"title":"AccountApiKeyUpsert"},"ActivityLogItem":{"properties":{"id":{"type":"integer","title":"Id"},"action":{"type":"string","title":"Action"},"user":{"type":"string","title":"User"},"email":{"type":"string","title":"Email"},"details":{"type":"string","title":"Details"},"category":{"type":"string","title":"Category"},"severity":{"type":"string","title":"Severity"},"timestamp":{"type":"string","format":"date-time","title":"Timestamp"}},"type":"object","required":["id","action","user","email","details","category","severity","timestamp"],"title":"ActivityLogItem"},"ActivityLogListResponse":{"properties":{"items":{"items":{"$ref":"#/components/schemas/ActivityLogItem"},"type":"array","title":"Items","default":[]},"total":{"type":"integer","title":"Total","default":0},"page":{"type":"integer","title":"Page","default":1},"page_size":{"type":"integer","title":"Page Size","default":20}},"type":"object","title":"ActivityLogListResponse"},"ActivityLogStatsResponse":{"properties":{"total_events":{"type":"integer","title":"Total Events","default":0},"auth_events":{"type":"integer","title":"Auth Events","default":0},"warnings":{"type":"integer","title":"Warnings","default":0},"critical":{"type":"integer","title":"Critical","default":0}},"type":"object","title":"ActivityLogStatsResponse"},"AdminAlertSettingsResponse":{"properties":{"telegram_enabled":{"type":"boolean","title":"Telegram Enabled"},"telegram_token_set":{"type":"boolean","title":"Telegram Token Set"},"telegram_chat_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Telegram Chat Id"},"alert_new_order_enabled":{"type":"boolean","title":"Alert New Order Enabled"},"alert_dca_enabled":{"type":"boolean","title":"Alert Dca Enabled"},"alert_movers_enabled":{"type":"boolean","title":"Alert Movers Enabled"},"movers_interval_minutes":{"type":"integer","title":"Movers Interval Minutes"},"alert_pnl_threshold_enabled":{"type":"boolean","title":"Alert Pnl Threshold Enabled"},"alert_pnl_threshold_pct":{"type":"number","title":"Alert Pnl Threshold Pct"},"alert_drawdown_enabled":{"type":"boolean","title":"Alert Drawdown Enabled"},"alert_drawdown_pct":{"type":"number","title":"Alert Drawdown Pct"},"alert_bot_offline_enabled":{"type":"boolean","title":"Alert Bot Offline Enabled"},"alert_bot_offline_minutes":{"type":"integer","title":"Alert Bot Offline Minutes"},"alert_server_health_enabled":{"type":"boolean","title":"Alert Server Health Enabled"},"alert_daily_summary_enabled":{"type":"boolean","title":"Alert Daily Summary Enabled"},"daily_summary_hour_utc":{"type":"integer","title":"Daily Summary Hour Utc"},"quiet_hours_enabled":{"type":"boolean","title":"Quiet Hours Enabled"},"quiet_hours_start_utc":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Quiet Hours Start Utc"},"quiet_hours_end_utc":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Quiet Hours End Utc"},"min_stake_usd_filter":{"type":"number","title":"Min Stake Usd Filter"},"commands_enabled":{"type":"boolean","title":"Commands Enabled","default":false},"webhook_secret_set":{"type":"boolean","title":"Webhook Secret Set","default":false},"silenced_until":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Silenced Until"},"authorized_user_ids":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorized User Ids"},"keyboard_enabled":{"type":"boolean","title":"Keyboard Enabled","default":false},"updated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Updated At"}},"type":"object","required":["telegram_enabled","telegram_token_set","alert_new_order_enabled","alert_dca_enabled","alert_movers_enabled","movers_interval_minutes","alert_pnl_threshold_enabled","alert_pnl_threshold_pct","alert_drawdown_enabled","alert_drawdown_pct","alert_bot_offline_enabled","alert_bot_offline_minutes","alert_server_health_enabled","alert_daily_summary_enabled","daily_summary_hour_utc","quiet_hours_enabled","min_stake_usd_filter"],"title":"AdminAlertSettingsResponse"},"AdminAlertSettingsUpdate":{"properties":{"telegram_enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Telegram Enabled"},"telegram_token":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Telegram Token"},"telegram_chat_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Telegram Chat Id"},"alert_new_order_enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Alert New Order Enabled"},"alert_dca_enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Alert Dca Enabled"},"alert_movers_enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Alert Movers Enabled"},"movers_interval_minutes":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Movers Interval Minutes"},"alert_pnl_threshold_enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Alert Pnl Threshold Enabled"},"alert_pnl_threshold_pct":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Alert Pnl Threshold Pct"},"alert_drawdown_enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Alert Drawdown Enabled"},"alert_drawdown_pct":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Alert Drawdown Pct"},"alert_bot_offline_enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Alert Bot Offline Enabled"},"alert_bot_offline_minutes":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Alert Bot Offline Minutes"},"alert_server_health_enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Alert Server Health Enabled"},"alert_daily_summary_enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Alert Daily Summary Enabled"},"daily_summary_hour_utc":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Daily Summary Hour Utc"},"quiet_hours_enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Quiet Hours Enabled"},"quiet_hours_start_utc":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Quiet Hours Start Utc"},"quiet_hours_end_utc":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Quiet Hours End Utc"},"min_stake_usd_filter":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Min Stake Usd Filter"},"commands_enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Commands Enabled"},"authorized_user_ids":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorized User Ids"},"keyboard_enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Keyboard Enabled"}},"type":"object","title":"AdminAlertSettingsUpdate"},"AdminAlertTestResponse":{"properties":{"sent":{"type":"boolean","title":"Sent"},"detail":{"type":"string","title":"Detail"}},"type":"object","required":["sent","detail"],"title":"AdminAlertTestResponse"},"AdminBotDeploymentDetailResponse":{"properties":{"bot_id":{"type":"integer","title":"Bot Id"},"bot_name":{"type":"string","title":"Bot Name"},"user_id":{"type":"integer","title":"User Id"},"status":{"type":"string","title":"Status"},"provider":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Provider"},"region":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Region"},"server_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Server Type"},"ssh_key_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ssh Key Name"},"server_ip":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Server Ip"},"backend_ip":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Backend Ip"},"deployed_path":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Deployed Path"},"deployment_log":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Deployment Log"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"}},"type":"object","required":["bot_id","bot_name","user_id","status","updated_at"],"title":"AdminBotDeploymentDetailResponse"},"AdminContractTemplateResponse":{"properties":{"title":{"type":"string","title":"Title"},"body":{"type":"string","title":"Body"},"version":{"type":"integer","title":"Version"},"updated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Updated At"},"total_signatures":{"type":"integer","title":"Total Signatures","default":0},"active_signatures":{"type":"integer","title":"Active Signatures","default":0}},"type":"object","required":["title","body","version"],"title":"AdminContractTemplateResponse"},"AdminContractTemplateUpdate":{"properties":{"title":{"type":"string","maxLength":200,"minLength":2,"title":"Title"},"body":{"type":"string","maxLength":200000,"minLength":10,"title":"Body"},"bump_version":{"type":"boolean","title":"Bump Version","description":"When true, force all users to re-sign by incrementing version.","default":false}},"type":"object","required":["title","body"],"title":"AdminContractTemplateUpdate"},"AdminCustomerActivityItem":{"properties":{"id":{"type":"integer","title":"Id"},"action":{"type":"string","title":"Action"},"category":{"type":"string","title":"Category"},"severity":{"type":"string","title":"Severity"},"details":{"type":"string","title":"Details"},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["id","action","category","severity","details","created_at"],"title":"AdminCustomerActivityItem"},"AdminCustomerBillingItem":{"properties":{"id":{"type":"integer","title":"Id"},"invoice_number":{"type":"string","title":"Invoice Number"},"bot_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Bot Name"},"invoice_type":{"type":"string","title":"Invoice Type"},"status":{"type":"string","title":"Status"},"amount":{"type":"number","title":"Amount"},"cycle_start":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Cycle Start"},"cycle_end":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Cycle End"},"issued_date":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Issued Date"},"due_date":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Due Date"},"paid_date":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Paid Date"},"payment_method":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Payment Method"},"currency":{"type":"string","title":"Currency","default":"USD"},"notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Notes"},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["id","invoice_number","invoice_type","status","amount","created_at"],"title":"AdminCustomerBillingItem"},"AdminCustomerBotItem":{"properties":{"id":{"type":"integer","title":"Id"},"name":{"type":"string","title":"Name"},"bot_slug":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Bot Slug"},"url_token":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Url Token"},"exchange":{"type":"string","title":"Exchange"},"mode":{"type":"string","title":"Mode"},"strategy":{"type":"string","title":"Strategy"},"unrealized_pnl":{"type":"number","title":"Unrealized Pnl","default":0.0},"profit":{"type":"number","title":"Profit","default":0.0},"trades":{"type":"integer","title":"Trades","default":0},"uptime_seconds":{"type":"integer","title":"Uptime Seconds","default":0},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["id","name","exchange","mode","strategy","created_at"],"title":"AdminCustomerBotItem"},"AdminCustomerContractEntry":{"properties":{"id":{"type":"integer","title":"Id"},"template_version":{"type":"integer","title":"Template Version"},"template_title":{"type":"string","title":"Template Title"},"full_name_signed":{"type":"string","title":"Full Name Signed"},"ip_address":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ip Address"},"revoked":{"type":"boolean","title":"Revoked","default":false},"revoked_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Revoked At"},"revoke_reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Revoke Reason"},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["id","template_version","template_title","full_name_signed","created_at"],"title":"AdminCustomerContractEntry"},"AdminCustomerDetailResponse":{"properties":{"user":{"$ref":"#/components/schemas/UserResponse"},"current_plan":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Current Plan"},"subscription_status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Subscription Status"},"total_bots":{"type":"integer","title":"Total Bots","default":0},"active_bots":{"type":"integer","title":"Active Bots","default":0},"total_invoices":{"type":"integer","title":"Total Invoices","default":0},"unpaid_invoices":{"type":"integer","title":"Unpaid Invoices","default":0},"total_paid_amount":{"type":"number","title":"Total Paid Amount","default":0.0},"bots":{"items":{"$ref":"#/components/schemas/AdminCustomerBotItem"},"type":"array","title":"Bots"},"billing":{"items":{"$ref":"#/components/schemas/AdminCustomerBillingItem"},"type":"array","title":"Billing"},"activity":{"items":{"$ref":"#/components/schemas/AdminCustomerActivityItem"},"type":"array","title":"Activity"},"contract_history":{"items":{"$ref":"#/components/schemas/AdminCustomerContractEntry"},"type":"array","title":"Contract History"}},"type":"object","required":["user"],"title":"AdminCustomerDetailResponse"},"AdminCustomerPlanOption":{"properties":{"id":{"type":"integer","title":"Id"},"name":{"type":"string","title":"Name"},"slug":{"type":"string","title":"Slug"}},"type":"object","required":["id","name","slug"],"title":"AdminCustomerPlanOption"},"AdminDashboardResponse":{"properties":{"kpi":{"$ref":"#/components/schemas/AdminKpiStats"},"revenue_chart":{"items":{"$ref":"#/components/schemas/ChartPoint"},"type":"array","title":"Revenue Chart","default":[]},"user_growth_chart":{"items":{"$ref":"#/components/schemas/ChartPoint"},"type":"array","title":"User Growth Chart","default":[]},"bot_activity_chart":{"items":{"$ref":"#/components/schemas/ChartPoint"},"type":"array","title":"Bot Activity Chart","default":[]},"subscription_distribution":{"items":{"$ref":"#/components/schemas/SubscriptionDistItem"},"type":"array","title":"Subscription Distribution","default":[]},"recent_transactions":{"items":{"$ref":"#/components/schemas/RecentTransactionItem"},"type":"array","title":"Recent Transactions","default":[]},"recent_users":{"items":{"$ref":"#/components/schemas/RecentUserItem"},"type":"array","title":"Recent Users","default":[]},"open_tickets":{"items":{"$ref":"#/components/schemas/OpenTicketItem"},"type":"array","title":"Open Tickets","default":[]}},"type":"object","required":["kpi"],"title":"AdminDashboardResponse"},"AdminFeedbackItemResponse":{"properties":{"id":{"type":"integer","title":"Id"},"user_id":{"type":"integer","title":"User Id"},"user_name":{"type":"string","title":"User Name"},"user_email":{"type":"string","title":"User Email"},"type":{"type":"string","title":"Type"},"subject":{"type":"string","title":"Subject"},"message":{"type":"string","title":"Message"},"rating":{"type":"integer","title":"Rating"},"status":{"type":"string","title":"Status"},"upvotes":{"type":"integer","title":"Upvotes"},"admin_reply":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Admin Reply"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"}},"type":"object","required":["id","user_id","user_name","user_email","type","subject","message","rating","status","upvotes","created_at","updated_at"],"title":"AdminFeedbackItemResponse"},"AdminFeedbackUpdateRequest":{"properties":{"status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"},"admin_reply":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Admin Reply"}},"type":"object","title":"AdminFeedbackUpdateRequest"},"AdminKpiStats":{"properties":{"total_revenue":{"type":"number","title":"Total Revenue","default":0.0},"revenue_change_pct":{"type":"number","title":"Revenue Change Pct","default":0.0},"total_users":{"type":"integer","title":"Total Users","default":0},"new_users_this_month":{"type":"integer","title":"New Users This Month","default":0},"active_bots":{"type":"integer","title":"Active Bots","default":0},"total_bots":{"type":"integer","title":"Total Bots","default":0},"active_subscriptions":{"type":"integer","title":"Active Subscriptions","default":0},"subscription_change_pct":{"type":"number","title":"Subscription Change Pct","default":0.0},"monthly_profit_share":{"type":"number","title":"Monthly Profit Share","default":0.0},"open_tickets":{"type":"integer","title":"Open Tickets","default":0},"avg_response_hours":{"type":"number","title":"Avg Response Hours","default":0.0}},"type":"object","title":"AdminKpiStats"},"AdminReferralOverview":{"properties":{"total_referrers":{"type":"integer","title":"Total Referrers"},"active_referrers":{"type":"integer","title":"Active Referrers"},"total_referrals":{"type":"integer","title":"Total Referrals"},"active_referrals":{"type":"integer","title":"Active Referrals"},"total_commissions":{"type":"number","title":"Total Commissions"},"pending_payouts":{"type":"number","title":"Pending Payouts"},"this_month_referrals":{"type":"integer","title":"This Month Referrals"},"this_month_commissions":{"type":"number","title":"This Month Commissions"},"conversion_rate":{"type":"number","title":"Conversion Rate"},"program_enabled":{"type":"boolean","title":"Program Enabled"},"payouts_enabled":{"type":"boolean","title":"Payouts Enabled"}},"type":"object","required":["total_referrers","active_referrers","total_referrals","active_referrals","total_commissions","pending_payouts","this_month_referrals","this_month_commissions","conversion_rate","program_enabled","payouts_enabled"],"title":"AdminReferralOverview"},"AdminReferralUserResponse":{"properties":{"user_id":{"type":"integer","title":"User Id"},"user_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Name"},"user_email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Email"},"code":{"type":"string","title":"Code"},"total_referrals":{"type":"integer","title":"Total Referrals"},"active_referrals":{"type":"integer","title":"Active Referrals"},"total_earned":{"type":"number","title":"Total Earned"},"pending_payout":{"type":"number","title":"Pending Payout"},"tier":{"type":"string","title":"Tier"},"is_active":{"type":"boolean","title":"Is Active"},"is_flagged":{"type":"boolean","title":"Is Flagged"},"joined":{"type":"string","format":"date-time","title":"Joined"}},"type":"object","required":["user_id","code","total_referrals","active_referrals","total_earned","pending_payout","tier","is_active","is_flagged","joined"],"title":"AdminReferralUserResponse"},"AdminReferralUsersListResponse":{"properties":{"users":{"items":{"$ref":"#/components/schemas/AdminReferralUserResponse"},"type":"array","title":"Users"},"total":{"type":"integer","title":"Total"}},"type":"object","required":["users","total"],"title":"AdminReferralUsersListResponse"},"AdminResetPassword":{"properties":{"new_password":{"type":"string","title":"New Password"}},"type":"object","required":["new_password"],"title":"AdminResetPassword"},"AdminSubscriptionsListResponse":{"properties":{"subscriptions":{"items":{"$ref":"#/components/schemas/UserSubscriptionResponse"},"type":"array","title":"Subscriptions"},"total":{"type":"integer","title":"Total"},"active":{"type":"integer","title":"Active"},"paused":{"type":"integer","title":"Paused"},"mrr":{"type":"number","title":"Mrr"}},"type":"object","required":["subscriptions","total","active","paused","mrr"],"title":"AdminSubscriptionsListResponse"},"AdminSupportOverview":{"properties":{"total_tickets":{"type":"integer","title":"Total Tickets"},"open_count":{"type":"integer","title":"Open Count"},"in_progress_count":{"type":"integer","title":"In Progress Count"},"resolved_count":{"type":"integer","title":"Resolved Count"},"closed_count":{"type":"integer","title":"Closed Count"},"urgent_count":{"type":"integer","title":"Urgent Count"},"this_week_tickets":{"type":"integer","title":"This Week Tickets"},"avg_messages_per_ticket":{"type":"number","title":"Avg Messages Per Ticket"}},"type":"object","required":["total_tickets","open_count","in_progress_count","resolved_count","closed_count","urgent_count","this_week_tickets","avg_messages_per_ticket"],"title":"AdminSupportOverview"},"AdminTradingBotCreate":{"properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"provision_draft_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Provision Draft Id"},"exchange":{"type":"string","title":"Exchange"},"pair":{"type":"string","title":"Pair"},"strategy":{"type":"string","title":"Strategy"},"dry_run":{"type":"boolean","title":"Dry Run","default":true},"exchange_api_key":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Exchange Api Key"},"exchange_api_secret":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Exchange Api Secret"},"stake_currency":{"type":"string","title":"Stake Currency","default":"USDT"},"stake_amount":{"type":"string","title":"Stake Amount","default":"100"},"max_open_trades":{"type":"integer","title":"Max Open Trades","default":3},"trade_size":{"type":"string","title":"Trade Size","default":"fixed"},"stop_loss":{"type":"integer","title":"Stop Loss","default":99},"dca_stop_loss":{"type":"integer","title":"Dca Stop Loss","default":50},"leverage":{"type":"integer","title":"Leverage","default":1},"strategy_timeframe_flags":{"additionalProperties":{"type":"boolean"},"type":"object","title":"Strategy Timeframe Flags"},"parameters":{"type":"object","title":"Parameters"},"user_id":{"type":"integer","title":"User Id"},"auto_provision_server":{"type":"boolean","title":"Auto Provision Server","default":true},"admin_notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Admin Notes"},"priority":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Priority"}},"type":"object","required":["exchange","pair","strategy","user_id"],"title":"AdminTradingBotCreate"},"AdminUserCreate":{"properties":{"email":{"type":"string","format":"email","title":"Email"},"password":{"type":"string","title":"Password"},"full_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Full Name"},"phone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Phone"},"role":{"type":"string","title":"Role","default":"user"}},"type":"object","required":["email","password"],"title":"AdminUserCreate"},"AdminUserUpdate":{"properties":{"username":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Username"},"full_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Full Name"},"email":{"anyOf":[{"type":"string","format":"email"},{"type":"null"}],"title":"Email"},"phone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Phone"},"role":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Role"},"is_active":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Active"}},"type":"object","title":"AdminUserUpdate"},"AnnouncementCreateRequest":{"properties":{"title":{"type":"string","title":"Title"},"content":{"type":"string","title":"Content"},"type":{"type":"string","title":"Type","default":"info"},"audience":{"type":"string","title":"Audience","default":"all"},"status":{"type":"string","title":"Status","default":"draft"},"pinned":{"type":"boolean","title":"Pinned","default":false},"send_email":{"type":"boolean","title":"Send Email","default":false},"scheduled_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Scheduled At"}},"type":"object","required":["title","content"],"title":"AnnouncementCreateRequest"},"AnnouncementListResponse":{"properties":{"items":{"items":{"$ref":"#/components/schemas/AnnouncementResponse"},"type":"array","title":"Items","default":[]},"total":{"type":"integer","title":"Total","default":0}},"type":"object","title":"AnnouncementListResponse"},"AnnouncementResponse":{"properties":{"id":{"type":"integer","title":"Id"},"title":{"type":"string","title":"Title"},"content":{"type":"string","title":"Content"},"type":{"type":"string","title":"Type"},"audience":{"type":"string","title":"Audience"},"status":{"type":"string","title":"Status"},"pinned":{"type":"boolean","title":"Pinned"},"send_email":{"type":"boolean","title":"Send Email"},"views":{"type":"integer","title":"Views"},"author":{"type":"string","title":"Author"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"},"published_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Published At"},"scheduled_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Scheduled At"}},"type":"object","required":["id","title","content","type","audience","status","pinned","send_email","views","author","created_at","updated_at"],"title":"AnnouncementResponse"},"AnnouncementStatsResponse":{"properties":{"published":{"type":"integer","title":"Published","default":0},"drafts":{"type":"integer","title":"Drafts","default":0},"scheduled":{"type":"integer","title":"Scheduled","default":0},"total_views":{"type":"integer","title":"Total Views","default":0}},"type":"object","title":"AnnouncementStatsResponse"},"AnnouncementUpdateRequest":{"properties":{"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"},"content":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Content"},"type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Type"},"audience":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Audience"},"status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"},"pinned":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Pinned"},"send_email":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Send Email"},"scheduled_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Scheduled At"}},"type":"object","title":"AnnouncementUpdateRequest"},"BackupCodesResponse":{"properties":{"backup_codes":{"items":{"type":"string"},"type":"array","title":"Backup Codes"}},"type":"object","required":["backup_codes"],"title":"BackupCodesResponse"},"BillingAddressCreate":{"properties":{"name":{"type":"string","maxLength":200,"minLength":1,"title":"Name"},"company":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"title":"Company"},"address_line1":{"type":"string","maxLength":300,"minLength":1,"title":"Address Line1"},"address_line2":{"anyOf":[{"type":"string","maxLength":300},{"type":"null"}],"title":"Address Line2"},"city":{"type":"string","maxLength":100,"minLength":1,"title":"City"},"state":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}],"title":"State"},"postal_code":{"type":"string","maxLength":20,"minLength":1,"title":"Postal Code"},"country":{"type":"string","maxLength":100,"minLength":1,"title":"Country"},"phone":{"anyOf":[{"type":"string","maxLength":30},{"type":"null"}],"title":"Phone"},"email":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"title":"Email"},"is_default":{"type":"boolean","title":"Is Default","default":false}},"type":"object","required":["name","address_line1","city","postal_code","country"],"title":"BillingAddressCreate"},"BillingAddressResponse":{"properties":{"id":{"type":"integer","title":"Id"},"user_id":{"type":"integer","title":"User Id"},"name":{"type":"string","title":"Name"},"company":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Company"},"address_line1":{"type":"string","title":"Address Line1"},"address_line2":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Address Line2"},"city":{"type":"string","title":"City"},"state":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"State"},"postal_code":{"type":"string","title":"Postal Code"},"country":{"type":"string","title":"Country"},"phone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Phone"},"email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email"},"is_default":{"type":"boolean","title":"Is Default"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"}},"type":"object","required":["id","user_id","name","address_line1","city","postal_code","country","is_default","created_at","updated_at"],"title":"BillingAddressResponse"},"BillingAddressUpdate":{"properties":{"name":{"anyOf":[{"type":"string","maxLength":200,"minLength":1},{"type":"null"}],"title":"Name"},"company":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"title":"Company"},"address_line1":{"anyOf":[{"type":"string","maxLength":300,"minLength":1},{"type":"null"}],"title":"Address Line1"},"address_line2":{"anyOf":[{"type":"string","maxLength":300},{"type":"null"}],"title":"Address Line2"},"city":{"anyOf":[{"type":"string","maxLength":100,"minLength":1},{"type":"null"}],"title":"City"},"state":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}],"title":"State"},"postal_code":{"anyOf":[{"type":"string","maxLength":20,"minLength":1},{"type":"null"}],"title":"Postal Code"},"country":{"anyOf":[{"type":"string","maxLength":100,"minLength":1},{"type":"null"}],"title":"Country"},"phone":{"anyOf":[{"type":"string","maxLength":30},{"type":"null"}],"title":"Phone"},"email":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"title":"Email"},"is_default":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Default"}},"type":"object","title":"BillingAddressUpdate"},"BillingCycleCreate":{"properties":{"user_id":{"type":"integer","title":"User Id"},"bot_id":{"type":"integer","title":"Bot Id"},"exchange":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Exchange"},"cycle_number":{"type":"integer","title":"Cycle Number","default":1},"start_date":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Start Date"},"end_date":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"End Date"},"starting_balance":{"type":"number","title":"Starting Balance","default":0.0},"ending_balance":{"type":"number","title":"Ending Balance","default":0.0},"gross_profit":{"type":"number","title":"Gross Profit","default":0.0},"platform_share_pct":{"type":"number","title":"Platform Share Pct","default":30.0},"platform_share":{"type":"number","title":"Platform Share","default":0.0},"user_profit":{"type":"number","title":"User Profit","default":0.0},"status":{"type":"string","title":"Status","default":"active"},"invoice_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Invoice Id"}},"type":"object","required":["user_id","bot_id"],"title":"BillingCycleCreate"},"BillingCycleUpdate":{"properties":{"ending_balance":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Ending Balance"},"gross_profit":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Gross Profit"},"platform_share":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Platform Share"},"user_profit":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"User Profit"},"status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"},"invoice_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Invoice Id"},"end_date":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"End Date"}},"type":"object","title":"BillingCycleUpdate"},"BinanceValidationRequest":{"properties":{"api_key":{"type":"string","title":"Api Key"},"api_secret":{"type":"string","title":"Api Secret"}},"type":"object","required":["api_key","api_secret"],"title":"BinanceValidationRequest"},"BinanceValidationResponse":{"properties":{"valid":{"type":"boolean","title":"Valid","default":true},"binance_id":{"type":"string","title":"Binance Id"},"spot_total_wallet_balance":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Spot Total Wallet Balance"},"futures_total_wallet_balance":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Futures Total Wallet Balance"}},"type":"object","required":["binance_id"],"title":"BinanceValidationResponse"},"BlockPairRequest":{"properties":{"duration_minutes":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Duration Minutes"},"reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reason"}},"type":"object","title":"BlockPairRequest"},"Body_admin_database_backup_upload_admin_utilities_database_backup_upload_post":{"properties":{"file":{"type":"string","format":"binary","title":"File"}},"type":"object","required":["file"],"title":"Body_admin_database_backup_upload_admin_utilities_database_backup_upload_post"},"Body_admin_upload_media_admin_utilities_media_upload_post":{"properties":{"file":{"type":"string","format":"binary","title":"File"},"visibility":{"type":"string","title":"Visibility","default":"private"}},"type":"object","required":["file"],"title":"Body_admin_upload_media_admin_utilities_media_upload_post"},"Body_upload_branding_file_admin_setup_branding_upload_post":{"properties":{"file":{"type":"string","format":"binary","title":"File"}},"type":"object","required":["file"],"title":"Body_upload_branding_file_admin_setup_branding_upload_post"},"Body_upload_freqtrade_file_admin_setup_freqtrade_file__file_type__post":{"properties":{"file":{"type":"string","format":"binary","title":"File"}},"type":"object","required":["file"],"title":"Body_upload_freqtrade_file_admin_setup_freqtrade_file__file_type__post"},"BotConfigUpdate":{"properties":{"pair":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Pair"},"blocked_pairs":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Blocked Pairs"},"stake_amount":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Stake Amount"},"max_open_trades":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Open Trades"},"dry_run_wallet":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Dry Run Wallet"},"trade_size":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Trade Size"},"stop_loss":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Stop Loss"},"dca_stop_loss":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Dca Stop Loss"},"leverage":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Leverage"},"use_custom_stoploss":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Use Custom Stoploss"},"position_adjustment_enable":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Position Adjustment Enable"},"max_entry_position_adjustment":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Entry Position Adjustment"},"dca_reentry_min_profit":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Dca Reentry Min Profit"},"dca_reentry_max_drawdown":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Dca Reentry Max Drawdown"},"sudden_chg_guard_enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Sudden Chg Guard Enabled"},"sudden_chg_threshold":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Sudden Chg Threshold"},"sudden_chg_lookback":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Sudden Chg Lookback"},"dca_sudden_chg_guard_enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Dca Sudden Chg Guard Enabled"},"dca_sudden_chg_threshold":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Dca Sudden Chg Threshold"},"dca_sudden_chg_lookback":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Dca Sudden Chg Lookback"},"use_chg_filter":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Use Chg Filter"},"chg_30m_enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Chg 30M Enabled"},"chg_1h_enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Chg 1H Enabled"},"chg_4h_enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Chg 4H Enabled"},"chg_30m_min":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Chg 30M Min"},"chg_30m_max":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Chg 30M Max"},"chg_1h_min":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Chg 1H Min"},"chg_1h_max":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Chg 1H Max"},"chg_4h_min":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Chg 4H Min"},"chg_4h_max":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Chg 4H Max"},"dca_chg_30m_min":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Dca Chg 30M Min"},"dca_chg_30m_max":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Dca Chg 30M Max"},"dca_chg_1h_min":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Dca Chg 1H Min"},"dca_chg_1h_max":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Dca Chg 1H Max"},"dca_chg_4h_min":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Dca Chg 4H Min"},"dca_chg_4h_max":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Dca Chg 4H Max"},"use_chg_exit_buffer":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Use Chg Exit Buffer"},"chg_30m_exit_buffer_enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Chg 30M Exit Buffer Enabled"},"chg_30m_exit_buffer":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Chg 30M Exit Buffer"},"chg_1h_exit_buffer_enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Chg 1H Exit Buffer Enabled"},"chg_1h_exit_buffer":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Chg 1H Exit Buffer"},"chg_4h_exit_buffer_enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Chg 4H Exit Buffer Enabled"},"chg_4h_exit_buffer":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Chg 4H Exit Buffer"},"breakout_guard_enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Breakout Guard Enabled"},"breakout_guard_30m_enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Breakout Guard 30M Enabled"},"breakout_guard_30m_timeframe":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Breakout Guard 30M Timeframe"},"breakout_guard_30m_lookback":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Breakout Guard 30M Lookback"},"breakout_guard_30m_cooldown_candles":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Breakout Guard 30M Cooldown Candles"},"breakout_guard_1h_enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Breakout Guard 1H Enabled"},"breakout_guard_1h_timeframe":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Breakout Guard 1H Timeframe"},"breakout_guard_1h_lookback":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Breakout Guard 1H Lookback"},"breakout_guard_1h_cooldown_candles":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Breakout Guard 1H Cooldown Candles"},"breakout_guard_4h_enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Breakout Guard 4H Enabled"},"breakout_guard_4h_timeframe":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Breakout Guard 4H Timeframe"},"breakout_guard_4h_lookback":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Breakout Guard 4H Lookback"},"breakout_guard_4h_cooldown_candles":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Breakout Guard 4H Cooldown Candles"},"entry_30m_enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Entry 30M Enabled"},"entry_30m_rsi_long":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Entry 30M Rsi Long"},"entry_30m_rsi_short":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Entry 30M Rsi Short"},"entry_5m_rsi_long_30m":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Entry 5M Rsi Long 30M"},"entry_5m_rsi_short_30m":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Entry 5M Rsi Short 30M"},"entry_1h_enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Entry 1H Enabled"},"entry_1h_rsi_long":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Entry 1H Rsi Long"},"entry_1h_rsi_short":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Entry 1H Rsi Short"},"entry_5m_rsi_long_1h":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Entry 5M Rsi Long 1H"},"entry_5m_rsi_short_1h":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Entry 5M Rsi Short 1H"},"entry_4h_enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Entry 4H Enabled"},"entry_4h_rsi_long":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Entry 4H Rsi Long"},"entry_4h_rsi_short":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Entry 4H Rsi Short"},"entry_5m_rsi_long_4h":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Entry 5M Rsi Long 4H"},"entry_5m_rsi_short_4h":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Entry 5M Rsi Short 4H"},"telegram_enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Telegram Enabled"},"telegram_token":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Telegram Token"},"telegram_chat_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Telegram Chat Id"},"telegram_authorized_users":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Telegram Authorized Users"}},"type":"object","title":"BotConfigUpdate","description":"Payload for in-place bot configuration update (no redeployment of server)."},"BotCreationDraftResponse":{"properties":{"step":{"type":"integer","title":"Step"},"form_data":{"type":"object","title":"Form Data"},"provision_draft_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Provision Draft Id"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"}},"type":"object","required":["step","form_data","updated_at"],"title":"BotCreationDraftResponse"},"BotCreationDraftSave":{"properties":{"step":{"type":"integer","title":"Step"},"form_data":{"type":"object","title":"Form Data"},"provision_draft_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Provision Draft Id"}},"type":"object","required":["step","form_data"],"title":"BotCreationDraftSave"},"BotCreationStrategyResponse":{"properties":{"id":{"type":"integer","title":"Id"},"filename":{"type":"string","title":"Filename"},"strategy_name":{"type":"string","title":"Strategy Name"},"is_default":{"type":"boolean","title":"Is Default"}},"type":"object","required":["id","filename","strategy_name","is_default"],"title":"BotCreationStrategyResponse"},"BotCreationStrategyTimeframesResponse":{"properties":{"strategy_id":{"type":"integer","title":"Strategy Id"},"strategy_name":{"type":"string","title":"Strategy Name"},"options":{"items":{"$ref":"#/components/schemas/StrategyTimeframeOption"},"type":"array","title":"Options"}},"type":"object","required":["strategy_id","strategy_name","options"],"title":"BotCreationStrategyTimeframesResponse"},"BotEventLogItem":{"properties":{"id":{"type":"integer","title":"Id"},"bot_id":{"type":"integer","title":"Bot Id"},"event_type":{"type":"string","title":"Event Type"},"pair":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Pair"},"trade_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Trade Id"},"profit_pct":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Profit Pct"},"payload":{"anyOf":[{},{"type":"null"}],"title":"Payload"},"sent_to_telegram":{"type":"boolean","title":"Sent To Telegram"},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["id","bot_id","event_type","sent_to_telegram","created_at"],"title":"BotEventLogItem"},"BotMonitorEntry":{"properties":{"bot_id":{"type":"integer","title":"Bot Id"},"bot_name":{"type":"string","title":"Bot Name"},"bot_slug":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Bot Slug"},"user_id":{"type":"integer","title":"User Id"},"username":{"type":"string","title":"Username"},"status":{"type":"string","title":"Status"},"open_trades":{"type":"integer","title":"Open Trades"},"pair":{"type":"string","title":"Pair"}},"type":"object","required":["bot_id","bot_name","user_id","username","status","open_trades","pair"],"title":"BotMonitorEntry"},"BotNameTemplateResponse":{"properties":{"prefix":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Prefix"},"next_number":{"type":"integer","title":"Next Number","default":1},"suffix":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Suffix"}},"type":"object","title":"BotNameTemplateResponse"},"ChangePassword":{"properties":{"current_password":{"type":"string","title":"Current Password"},"new_password":{"type":"string","title":"New Password"}},"type":"object","required":["current_password","new_password"],"title":"ChangePassword"},"ChartPoint":{"properties":{"label":{"type":"string","title":"Label"},"value":{"type":"number","title":"Value","default":0.0},"value2":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Value2"}},"type":"object","required":["label"],"title":"ChartPoint"},"ContractAcceptRequest":{"properties":{"full_name":{"type":"string","maxLength":200,"minLength":2,"title":"Full Name","description":"Typed name acting as legally binding signature"},"accepted_terms":{"type":"boolean","title":"Accepted Terms","description":"Must be true"}},"type":"object","required":["full_name","accepted_terms"],"title":"ContractAcceptRequest"},"ContractStatusResponse":{"properties":{"status":{"type":"string","title":"Status"},"signed_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Signed At"},"signed_template_version":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Signed Template Version"},"full_name_signed":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Full Name Signed"},"template_version":{"type":"integer","title":"Template Version"},"template_title":{"type":"string","title":"Template Title"},"template_body":{"type":"string","title":"Template Body"},"template_updated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Template Updated At"},"requires_resign":{"type":"boolean","title":"Requires Resign","default":false}},"type":"object","required":["status","template_version","template_title","template_body"],"title":"ContractStatusResponse","description":"Status of the user's contract acceptance plus the latest published contract template."},"CouponCreate":{"properties":{"code":{"type":"string","maxLength":50,"minLength":2,"title":"Code"},"discount_type":{"type":"string","title":"Discount Type","default":"percentage"},"discount_value":{"type":"number","minimum":0.0,"title":"Discount Value"},"max_uses":{"type":"integer","minimum":0.0,"title":"Max Uses","default":0},"expires_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Expires At"},"is_active":{"type":"boolean","title":"Is Active","default":true},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"}},"type":"object","required":["code","discount_value"],"title":"CouponCreate"},"CouponListResponse":{"properties":{"coupons":{"items":{"$ref":"#/components/schemas/CouponResponse"},"type":"array","title":"Coupons"},"total":{"type":"integer","title":"Total"},"active":{"type":"integer","title":"Active"}},"type":"object","required":["coupons","total","active"],"title":"CouponListResponse"},"CouponResponse":{"properties":{"id":{"type":"integer","title":"Id"},"code":{"type":"string","title":"Code"},"discount_type":{"type":"string","title":"Discount Type"},"discount_value":{"type":"number","title":"Discount Value"},"max_uses":{"type":"integer","title":"Max Uses"},"current_uses":{"type":"integer","title":"Current Uses"},"expires_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Expires At"},"is_active":{"type":"boolean","title":"Is Active"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"}},"type":"object","required":["id","code","discount_type","discount_value","max_uses","current_uses","is_active","created_at","updated_at"],"title":"CouponResponse"},"CouponUpdate":{"properties":{"code":{"anyOf":[{"type":"string","maxLength":50,"minLength":2},{"type":"null"}],"title":"Code"},"discount_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Discount Type"},"discount_value":{"anyOf":[{"type":"number","minimum":0.0},{"type":"null"}],"title":"Discount Value"},"max_uses":{"anyOf":[{"type":"integer","minimum":0.0},{"type":"null"}],"title":"Max Uses"},"expires_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Expires At"},"is_active":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Active"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"}},"type":"object","title":"CouponUpdate"},"CouponValidationResponse":{"properties":{"valid":{"type":"boolean","title":"Valid"},"code":{"type":"string","title":"Code"},"discount_type":{"type":"string","title":"Discount Type"},"discount_value":{"type":"number","title":"Discount Value"},"discount_label":{"type":"string","title":"Discount Label"},"calculated_amount":{"type":"number","title":"Calculated Amount"},"original_amount":{"type":"number","title":"Original Amount"}},"type":"object","required":["valid","code","discount_type","discount_value","discount_label","calculated_amount","original_amount"],"title":"CouponValidationResponse"},"CsvExportHistoryItem":{"properties":{"id":{"type":"integer","title":"Id"},"export_ref":{"type":"string","title":"Export Ref"},"source_id":{"type":"string","title":"Source Id"},"source_label":{"type":"string","title":"Source Label"},"records":{"type":"integer","title":"Records"},"size_bytes":{"type":"integer","title":"Size Bytes"},"date":{"type":"string","format":"date-time","title":"Date"},"status":{"type":"string","title":"Status"},"download_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Download Url"}},"type":"object","required":["id","export_ref","source_id","source_label","records","size_bytes","date","status"],"title":"CsvExportHistoryItem"},"CsvExportHistoryResponse":{"properties":{"jobs":{"items":{"$ref":"#/components/schemas/CsvExportHistoryItem"},"type":"array","title":"Jobs","default":[]}},"type":"object","title":"CsvExportHistoryResponse"},"CsvExportPreviewResponse":{"properties":{"source_id":{"type":"string","title":"Source Id"},"source_label":{"type":"string","title":"Source Label"},"records":{"type":"integer","title":"Records"},"fields_selected":{"type":"integer","title":"Fields Selected"},"estimated_size_bytes":{"type":"integer","title":"Estimated Size Bytes"}},"type":"object","required":["source_id","source_label","records","fields_selected","estimated_size_bytes"],"title":"CsvExportPreviewResponse"},"CsvExportSourceItem":{"properties":{"id":{"type":"string","title":"Id"},"label":{"type":"string","title":"Label"},"description":{"type":"string","title":"Description"},"records":{"type":"integer","title":"Records"},"fields":{"items":{"type":"string"},"type":"array","title":"Fields","default":[]}},"type":"object","required":["id","label","description","records"],"title":"CsvExportSourceItem"},"CsvExportSourcesResponse":{"properties":{"sources":{"items":{"$ref":"#/components/schemas/CsvExportSourceItem"},"type":"array","title":"Sources","default":[]}},"type":"object","title":"CsvExportSourcesResponse"},"CsvExportStartRequest":{"properties":{"source_id":{"type":"string","title":"Source Id"},"date_range":{"type":"string","title":"Date Range","default":"all"},"delimiter":{"type":"string","title":"Delimiter","default":"comma"},"include_headers":{"type":"boolean","title":"Include Headers","default":true},"utf8_bom":{"type":"boolean","title":"Utf8 Bom","default":false},"fields":{"items":{"type":"string"},"type":"array","title":"Fields","default":[]}},"type":"object","required":["source_id"],"title":"CsvExportStartRequest"},"CsvExportStartResponse":{"properties":{"message":{"type":"string","title":"Message"},"job":{"$ref":"#/components/schemas/CsvExportHistoryItem"}},"type":"object","required":["message","job"],"title":"CsvExportStartResponse"},"DatabaseBackupHistoryItem":{"properties":{"id":{"type":"integer","title":"Id"},"backup_ref":{"type":"string","title":"Backup Ref"},"mode":{"type":"string","title":"Mode"},"backup_type":{"type":"string","title":"Backup Type"},"status":{"type":"string","title":"Status"},"size_bytes":{"type":"integer","title":"Size Bytes"},"db_tables":{"type":"integer","title":"Db Tables"},"db_records":{"type":"integer","title":"Db Records"},"fs_files":{"type":"integer","title":"Fs Files"},"fs_bytes":{"type":"integer","title":"Fs Bytes"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"download_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Download Url"},"error_message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error Message"}},"type":"object","required":["id","backup_ref","mode","backup_type","status","size_bytes","db_tables","db_records","fs_files","fs_bytes","created_at"],"title":"DatabaseBackupHistoryItem"},"DatabaseBackupHistoryResponse":{"properties":{"jobs":{"items":{"$ref":"#/components/schemas/DatabaseBackupHistoryItem"},"type":"array","title":"Jobs","default":[]}},"type":"object","title":"DatabaseBackupHistoryResponse"},"DatabaseBackupPreviewItem":{"properties":{"table_name":{"type":"string","title":"Table Name"},"column_count":{"type":"integer","title":"Column Count"},"record_count":{"type":"integer","title":"Record Count"},"columns":{"items":{"type":"string"},"type":"array","title":"Columns"}},"type":"object","required":["table_name","column_count","record_count","columns"],"title":"DatabaseBackupPreviewItem"},"DatabaseBackupPreviewResponse":{"properties":{"backup_ref":{"type":"string","title":"Backup Ref"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"mode":{"type":"string","title":"Mode"},"database_tables":{"items":{"$ref":"#/components/schemas/DatabaseBackupPreviewItem"},"type":"array","title":"Database Tables","default":[]},"filesystem_summary":{"anyOf":[{"additionalProperties":{"type":"integer"},"type":"object"},{"type":"null"}],"title":"Filesystem Summary"}},"type":"object","required":["backup_ref","created_at","mode"],"title":"DatabaseBackupPreviewResponse"},"DatabaseBackupRestoreRequest":{"properties":{"job_id":{"type":"integer","title":"Job Id","description":"ID of the backup job to restore from"},"include_database":{"type":"boolean","title":"Include Database","default":true},"include_filesystem":{"type":"boolean","title":"Include Filesystem","default":true}},"type":"object","required":["job_id"],"title":"DatabaseBackupRestoreRequest"},"DatabaseBackupRestoreResponse":{"properties":{"message":{"type":"string","title":"Message"},"tables_restored":{"type":"integer","title":"Tables Restored","default":0},"records_restored":{"type":"integer","title":"Records Restored","default":0},"files_restored":{"type":"integer","title":"Files Restored","default":0},"restore_summary":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Restore Summary"}},"type":"object","required":["message"],"title":"DatabaseBackupRestoreResponse"},"DatabaseBackupSettingsResponse":{"properties":{"auto_backup":{"type":"boolean","title":"Auto Backup","default":true},"schedule":{"type":"string","title":"Schedule","default":"daily"},"backup_time_utc":{"type":"string","title":"Backup Time Utc","default":"14:00"},"retention_days":{"type":"integer","title":"Retention Days","default":30},"updated_at":{"type":"string","format":"date-time","title":"Updated At"}},"type":"object","required":["updated_at"],"title":"DatabaseBackupSettingsResponse"},"DatabaseBackupSettingsUpdate":{"properties":{"auto_backup":{"type":"boolean","title":"Auto Backup","default":true},"schedule":{"type":"string","title":"Schedule","default":"daily"},"backup_time_utc":{"type":"string","title":"Backup Time Utc","default":"14:00"},"retention_days":{"type":"integer","maximum":365.0,"minimum":1.0,"title":"Retention Days","default":30}},"type":"object","title":"DatabaseBackupSettingsUpdate"},"DatabaseBackupStartRequest":{"properties":{"mode":{"type":"string","title":"Mode","default":"both"},"backup_type":{"type":"string","title":"Backup Type","default":"manual"}},"type":"object","title":"DatabaseBackupStartRequest"},"DatabaseBackupStartResponse":{"properties":{"message":{"type":"string","title":"Message"},"job":{"$ref":"#/components/schemas/DatabaseBackupHistoryItem"}},"type":"object","required":["message","job"],"title":"DatabaseBackupStartResponse"},"DatabaseBackupSummaryResponse":{"properties":{"total_backups":{"type":"integer","title":"Total Backups","default":0},"successful_backups":{"type":"integer","title":"Successful Backups","default":0},"failed_backups":{"type":"integer","title":"Failed Backups","default":0},"storage_used_bytes":{"type":"integer","title":"Storage Used Bytes","default":0},"latest_db_tables":{"type":"integer","title":"Latest Db Tables","default":0},"latest_db_records":{"type":"integer","title":"Latest Db Records","default":0},"latest_fs_files":{"type":"integer","title":"Latest Fs Files","default":0},"latest_fs_bytes":{"type":"integer","title":"Latest Fs Bytes","default":0}},"type":"object","title":"DatabaseBackupSummaryResponse"},"EmailActionResponse":{"properties":{"message":{"type":"string","title":"Message"},"status":{"type":"string","title":"Status","default":"success"},"smtp_connected":{"type":"boolean","title":"Smtp Connected","default":false},"details":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Details"}},"type":"object","required":["message"],"title":"EmailActionResponse"},"EmailAlertsResponse":{"properties":{"alerts":{"items":{"type":"object"},"type":"array","title":"Alerts"}},"type":"object","required":["alerts"],"title":"EmailAlertsResponse"},"EmailAlertsUpdate":{"properties":{"email_alerts":{"anyOf":[{"additionalProperties":{"additionalProperties":{"type":"boolean"},"type":"object"},"type":"object"},{"type":"null"}],"title":"Email Alerts"}},"type":"object","title":"EmailAlertsUpdate"},"EmailConnectionTestRequest":{"properties":{"smtp_server":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Smtp Server"},"smtp_port":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Smtp Port"},"smtp_user":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Smtp User"},"smtp_password":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Smtp Password"},"smtp_encryption":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Smtp Encryption"},"email_from_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email From Name"},"email_from_email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email From Email"},"email_reply_to":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email Reply To"},"email_rate_limit_per_hour":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Email Rate Limit Per Hour"},"email_logs_enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Email Logs Enabled"},"email_dry_run":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Email Dry Run"},"admin_email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Admin Email"},"templates":{"anyOf":[{"items":{"$ref":"#/components/schemas/EmailTemplateSetting"},"type":"array"},{"type":"null"}],"title":"Templates"}},"type":"object","title":"EmailConnectionTestRequest"},"EmailLogResponse":{"properties":{"id":{"type":"integer","title":"Id"},"operation":{"type":"string","title":"Operation"},"recipient":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Recipient"},"subject":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Subject"},"status":{"type":"string","title":"Status"},"details":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Details"},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["id","operation","status","created_at"],"title":"EmailLogResponse"},"EmailSendTestRequest":{"properties":{"smtp_server":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Smtp Server"},"smtp_port":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Smtp Port"},"smtp_user":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Smtp User"},"smtp_password":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Smtp Password"},"smtp_encryption":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Smtp Encryption"},"email_from_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email From Name"},"email_from_email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email From Email"},"email_reply_to":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email Reply To"},"email_rate_limit_per_hour":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Email Rate Limit Per Hour"},"email_logs_enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Email Logs Enabled"},"email_dry_run":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Email Dry Run"},"admin_email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Admin Email"},"templates":{"anyOf":[{"items":{"$ref":"#/components/schemas/EmailTemplateSetting"},"type":"array"},{"type":"null"}],"title":"Templates"},"recipient_email":{"type":"string","format":"email","title":"Recipient Email"},"subject":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Subject"},"body":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Body"},"template_key":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Template Key"}},"type":"object","required":["recipient_email"],"title":"EmailSendTestRequest"},"EmailSettingsResponse":{"properties":{"smtp_server":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Smtp Server"},"smtp_port":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Smtp Port"},"smtp_user":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Smtp User"},"smtp_password":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Smtp Password"},"smtp_encryption":{"type":"string","title":"Smtp Encryption","default":"tls"},"email_from_name":{"type":"string","title":"Email From Name","default":"BotPrimeX"},"email_from_email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email From Email"},"email_reply_to":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email Reply To"},"email_rate_limit_per_hour":{"type":"integer","title":"Email Rate Limit Per Hour","default":500},"email_logs_enabled":{"type":"boolean","title":"Email Logs Enabled","default":true},"email_dry_run":{"type":"boolean","title":"Email Dry Run","default":false},"admin_email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Admin Email"},"smtp_connected":{"type":"boolean","title":"Smtp Connected","default":false},"total_templates":{"type":"integer","title":"Total Templates","default":0},"active_templates":{"type":"integer","title":"Active Templates","default":0},"sent_today":{"type":"integer","title":"Sent Today","default":0},"last_test_status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Test Status"},"last_test_message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Test Message"},"templates":{"items":{"$ref":"#/components/schemas/EmailTemplateSetting"},"type":"array","title":"Templates","default":[]},"recent_logs":{"items":{"$ref":"#/components/schemas/EmailLogResponse"},"type":"array","title":"Recent Logs","default":[]}},"type":"object","title":"EmailSettingsResponse"},"EmailSettingsUpdate":{"properties":{"smtp_server":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Smtp Server"},"smtp_port":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Smtp Port"},"smtp_user":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Smtp User"},"smtp_password":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Smtp Password"},"smtp_encryption":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Smtp Encryption"},"email_from_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email From Name"},"email_from_email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email From Email"},"email_reply_to":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email Reply To"},"email_rate_limit_per_hour":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Email Rate Limit Per Hour"},"email_logs_enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Email Logs Enabled"},"email_dry_run":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Email Dry Run"},"admin_email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Admin Email"},"templates":{"anyOf":[{"items":{"$ref":"#/components/schemas/EmailTemplateSetting"},"type":"array"},{"type":"null"}],"title":"Templates"}},"type":"object","title":"EmailSettingsUpdate"},"EmailTemplateSetting":{"properties":{"id":{"type":"string","title":"Id"},"key":{"type":"string","title":"Key"},"name":{"type":"string","title":"Name"},"subject":{"type":"string","title":"Subject"},"body":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Body"},"enabled":{"type":"boolean","title":"Enabled","default":true},"category":{"type":"string","title":"Category","default":"account"},"last_edited":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Edited"}},"type":"object","required":["id","key","name","subject"],"title":"EmailTemplateSetting"},"EmailUpdate":{"properties":{"new_email":{"type":"string","format":"email","title":"New Email"}},"type":"object","required":["new_email"],"title":"EmailUpdate"},"EnabledExchangesResponse":{"properties":{"exchanges":{"items":{"type":"string"},"type":"array","title":"Exchanges"}},"type":"object","required":["exchanges"],"title":"EnabledExchangesResponse"},"FeedbackCreateRequest":{"properties":{"type":{"type":"string","title":"Type"},"subject":{"type":"string","title":"Subject"},"message":{"type":"string","title":"Message"},"rating":{"type":"integer","maximum":5.0,"minimum":0.0,"title":"Rating","default":0}},"type":"object","required":["type","subject","message"],"title":"FeedbackCreateRequest"},"FeedbackItemResponse":{"properties":{"id":{"type":"integer","title":"Id"},"type":{"type":"string","title":"Type"},"subject":{"type":"string","title":"Subject"},"message":{"type":"string","title":"Message"},"rating":{"type":"integer","title":"Rating"},"status":{"type":"string","title":"Status"},"upvotes":{"type":"integer","title":"Upvotes"},"admin_reply":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Admin Reply"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"}},"type":"object","required":["id","type","subject","message","rating","status","upvotes","created_at","updated_at"],"title":"FeedbackItemResponse"},"ForceExitPairBody":{"properties":{"pair":{"type":"string","title":"Pair"},"ordertype":{"type":"string","title":"Ordertype","default":"market"}},"type":"object","required":["pair"],"title":"ForceExitPairBody"},"ForgotPasswordRequest":{"properties":{"email":{"type":"string","format":"email","title":"Email"}},"type":"object","required":["email"],"title":"ForgotPasswordRequest"},"FreqtradeFileDetailResponse":{"properties":{"id":{"type":"integer","title":"Id"},"file_type":{"type":"string","title":"File Type"},"filename":{"type":"string","title":"Filename"},"size_bytes":{"type":"integer","title":"Size Bytes"},"is_default":{"type":"boolean","title":"Is Default"},"show_in_bot_creation":{"type":"boolean","title":"Show In Bot Creation","default":false},"uploaded_at":{"type":"string","format":"date-time","title":"Uploaded At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"},"pair_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Pair Count"},"content":{"type":"string","title":"Content"}},"type":"object","required":["id","file_type","filename","size_bytes","is_default","uploaded_at","updated_at","content"],"title":"FreqtradeFileDetailResponse","description":"Full file metadata including content for the inline editor."},"FreqtradeFileResponse":{"properties":{"id":{"type":"integer","title":"Id"},"file_type":{"type":"string","title":"File Type"},"filename":{"type":"string","title":"Filename"},"size_bytes":{"type":"integer","title":"Size Bytes"},"is_default":{"type":"boolean","title":"Is Default"},"show_in_bot_creation":{"type":"boolean","title":"Show In Bot Creation","default":false},"uploaded_at":{"type":"string","format":"date-time","title":"Uploaded At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"},"pair_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Pair Count"}},"type":"object","required":["id","file_type","filename","size_bytes","is_default","uploaded_at","updated_at"],"title":"FreqtradeFileResponse","description":"Metadata for an uploaded Freqtrade file (no content)."},"FreqtradeFileUpdate":{"properties":{"content":{"type":"string","title":"Content"},"filename":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Filename"}},"type":"object","required":["content"],"title":"FreqtradeFileUpdate"},"FreqtradeFilesListResponse":{"properties":{"docker_compose":{"items":{"$ref":"#/components/schemas/FreqtradeFileResponse"},"type":"array","title":"Docker Compose"},"strategy":{"items":{"$ref":"#/components/schemas/FreqtradeFileResponse"},"type":"array","title":"Strategy"},"config_json":{"items":{"$ref":"#/components/schemas/FreqtradeFileResponse"},"type":"array","title":"Config Json"},"ssh_key":{"items":{"$ref":"#/components/schemas/FreqtradeFileResponse"},"type":"array","title":"Ssh Key"}},"type":"object","required":["docker_compose","strategy","config_json","ssh_key"],"title":"FreqtradeFilesListResponse"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"HetznerConfigResponse":{"properties":{"hetzner_api_key_set":{"type":"boolean","title":"Hetzner Api Key Set"},"hetzner_project_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Hetzner Project Name"},"deployment_path":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Deployment Path"},"bot_name_prefix":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Bot Name Prefix"},"next_bot_number":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Next Bot Number"},"bot_name_suffix":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Bot Name Suffix"},"number_pad_length":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Number Pad Length"},"id_prefix":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Id Prefix"},"hetzner_region":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Hetzner Region"},"hetzner_server_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Hetzner Server Type"},"hetzner_ssh_key_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Hetzner Ssh Key Name"},"ft_username":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ft Username"},"ft_password_set":{"type":"boolean","title":"Ft Password Set","default":false},"ft_port":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Ft Port"},"trusted_ips":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Trusted Ips"},"firewall_push":{"anyOf":[{"items":{"type":"object"},"type":"array"},{"type":"null"}],"title":"Firewall Push"},"updated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Updated At"}},"type":"object","required":["hetzner_api_key_set"],"title":"HetznerConfigResponse"},"HetznerDetailsUpdate":{"properties":{"hetzner_api_key":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Hetzner Api Key"},"hetzner_project_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Hetzner Project Name"},"deployment_path":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Deployment Path"},"bot_name_prefix":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Bot Name Prefix"},"next_bot_number":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Next Bot Number"},"bot_name_suffix":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Bot Name Suffix"},"number_pad_length":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Number Pad Length"},"id_prefix":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Id Prefix"},"hetzner_region":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Hetzner Region"},"hetzner_server_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Hetzner Server Type"},"hetzner_ssh_key_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Hetzner Ssh Key Name"},"ft_username":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ft Username"},"ft_password":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ft Password"},"ft_port":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Ft Port"},"trusted_ips":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Trusted Ips"}},"type":"object","title":"HetznerDetailsUpdate"},"InvoiceCreate":{"properties":{"user_id":{"type":"integer","title":"User Id"},"bot_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Bot Id"},"invoice_type":{"type":"string","title":"Invoice Type","default":"profit_share"},"status":{"type":"string","title":"Status","default":"draft"},"amount":{"type":"number","title":"Amount","default":0.0},"profit_generated":{"type":"number","title":"Profit Generated","default":0.0},"profit_share_pct":{"type":"number","title":"Profit Share Pct","default":30.0},"cycle_start":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Cycle Start"},"cycle_end":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Cycle End"},"issued_date":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Issued Date"},"due_date":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Due Date"},"paid_date":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Paid Date"},"payment_method":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Payment Method"},"currency":{"type":"string","title":"Currency","default":"USD"},"notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Notes"}},"type":"object","required":["user_id"],"title":"InvoiceCreate"},"InvoiceExportHistoryItem":{"properties":{"id":{"type":"integer","title":"Id"},"export_ref":{"type":"string","title":"Export Ref"},"date":{"type":"string","format":"date-time","title":"Date"},"format":{"type":"string","title":"Format"},"records":{"type":"integer","title":"Records"},"status":{"type":"string","title":"Status"},"size_bytes":{"type":"integer","title":"Size Bytes"},"date_range":{"type":"string","title":"Date Range"},"download_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Download Url"}},"type":"object","required":["id","export_ref","date","format","records","status","size_bytes","date_range"],"title":"InvoiceExportHistoryItem"},"InvoiceExportHistoryResponse":{"properties":{"jobs":{"items":{"$ref":"#/components/schemas/InvoiceExportHistoryItem"},"type":"array","title":"Jobs","default":[]}},"type":"object","title":"InvoiceExportHistoryResponse"},"InvoiceExportStartRequest":{"properties":{"format":{"type":"string","title":"Format","default":"pdf"},"date_range":{"type":"string","title":"Date Range","default":"last3m"},"invoice_type":{"type":"string","title":"Invoice Type","default":"all"},"status_filter":{"type":"string","title":"Status Filter","default":"all"},"include_line_items":{"type":"boolean","title":"Include Line Items","default":true},"include_payment_history":{"type":"boolean","title":"Include Payment History","default":true},"include_bot_details":{"type":"boolean","title":"Include Bot Details","default":false}},"type":"object","title":"InvoiceExportStartRequest"},"InvoiceExportStartResponse":{"properties":{"message":{"type":"string","title":"Message"},"job":{"$ref":"#/components/schemas/InvoiceExportHistoryItem"}},"type":"object","required":["message","job"],"title":"InvoiceExportStartResponse"},"InvoiceExportSummaryResponse":{"properties":{"matching_invoices":{"type":"integer","title":"Matching Invoices"},"paid":{"type":"integer","title":"Paid"},"pending":{"type":"integer","title":"Pending"},"overdue":{"type":"integer","title":"Overdue"},"cancelled":{"type":"integer","title":"Cancelled"},"total_value":{"type":"number","title":"Total Value"},"estimated_size_bytes":{"type":"integer","title":"Estimated Size Bytes"}},"type":"object","required":["matching_invoices","paid","pending","overdue","cancelled","total_value","estimated_size_bytes"],"title":"InvoiceExportSummaryResponse"},"InvoiceUpdate":{"properties":{"status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"},"amount":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Amount"},"profit_generated":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Profit Generated"},"profit_share_pct":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Profit Share Pct"},"cycle_start":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Cycle Start"},"cycle_end":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Cycle End"},"issued_date":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Issued Date"},"due_date":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Due Date"},"paid_date":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Paid Date"},"payment_method":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Payment Method"},"notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Notes"}},"type":"object","title":"InvoiceUpdate"},"KbArticleCreate":{"properties":{"title":{"type":"string","title":"Title"},"category":{"type":"string","title":"Category"},"content":{"type":"string","title":"Content"},"is_published":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Published","default":true}},"type":"object","required":["title","category","content"],"title":"KbArticleCreate"},"KbArticleResponse":{"properties":{"id":{"type":"integer","title":"Id"},"title":{"type":"string","title":"Title"},"category":{"type":"string","title":"Category"},"content":{"type":"string","title":"Content"},"views":{"type":"integer","title":"Views"},"is_published":{"type":"boolean","title":"Is Published"},"created_by":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Created By"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"}},"type":"object","required":["id","title","category","content","views","is_published","created_at","updated_at"],"title":"KbArticleResponse"},"KbArticleUpdate":{"properties":{"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"},"category":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Category"},"content":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Content"},"is_published":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Published"}},"type":"object","title":"KbArticleUpdate"},"ManualBotAdd":{"properties":{"server_ip":{"type":"string","title":"Server Ip"},"port":{"type":"integer","title":"Port","default":8001},"bot_name":{"type":"string","title":"Bot Name","default":"freqtrade"},"username":{"type":"string","title":"Username","default":"admin"},"password":{"type":"string","title":"Password","default":"admin"},"user_id":{"type":"integer","title":"User Id"}},"type":"object","required":["server_ip","user_id"],"title":"ManualBotAdd"},"MediaFileResponse":{"properties":{"id":{"type":"integer","title":"Id"},"name":{"type":"string","title":"Name"},"media_type":{"type":"string","title":"Media Type"},"mime_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Mime Type"},"visibility":{"type":"string","title":"Visibility"},"size_bytes":{"type":"integer","title":"Size Bytes"},"uploaded_by":{"type":"integer","title":"Uploaded By"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"encrypted_url":{"type":"string","title":"Encrypted Url"}},"type":"object","required":["id","name","media_type","visibility","size_bytes","uploaded_by","created_at","encrypted_url"],"title":"MediaFileResponse"},"MediaListResponse":{"properties":{"files":{"items":{"$ref":"#/components/schemas/MediaFileResponse"},"type":"array","title":"Files","default":[]},"total":{"type":"integer","title":"Total","default":0}},"type":"object","title":"MediaListResponse"},"MediaUploadResponse":{"properties":{"message":{"type":"string","title":"Message"},"file":{"$ref":"#/components/schemas/MediaFileResponse"}},"type":"object","required":["message","file"],"title":"MediaUploadResponse"},"MediaUrlResponse":{"properties":{"encrypted_url":{"type":"string","title":"Encrypted Url"}},"type":"object","required":["encrypted_url"],"title":"MediaUrlResponse"},"MessageResponse":{"properties":{"message":{"type":"string","title":"Message"}},"type":"object","required":["message"],"title":"MessageResponse"},"NotificationItemResponse":{"properties":{"id":{"type":"integer","title":"Id"},"category":{"type":"string","title":"Category"},"kind":{"type":"string","title":"Kind"},"title":{"type":"string","title":"Title"},"message":{"type":"string","title":"Message"},"link":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Link"},"is_read":{"type":"boolean","title":"Is Read"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"read_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Read At"}},"type":"object","required":["id","category","kind","title","message","is_read","created_at"],"title":"NotificationItemResponse"},"NotificationListResponse":{"properties":{"unread_count":{"type":"integer","title":"Unread Count"},"items":{"items":{"$ref":"#/components/schemas/NotificationItemResponse"},"type":"array","title":"Items"}},"type":"object","required":["unread_count","items"],"title":"NotificationListResponse"},"NotificationPreferencesResponse":{"properties":{"account":{"type":"boolean","title":"Account"},"security":{"type":"boolean","title":"Security"},"trading":{"type":"boolean","title":"Trading"},"billing":{"type":"boolean","title":"Billing"},"referral":{"type":"boolean","title":"Referral"},"support":{"type":"boolean","title":"Support"},"marketing":{"type":"boolean","title":"Marketing"},"system":{"type":"boolean","title":"System"}},"type":"object","required":["account","security","trading","billing","referral","support","marketing","system"],"title":"NotificationPreferencesResponse"},"NotificationPreferencesUpdate":{"properties":{"account":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Account"},"security":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Security"},"trading":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Trading"},"billing":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Billing"},"referral":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Referral"},"support":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Support"},"marketing":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Marketing"},"system":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"System"}},"type":"object","title":"NotificationPreferencesUpdate"},"OpenTicketItem":{"properties":{"id":{"type":"string","title":"Id"},"subject":{"type":"string","title":"Subject"},"user_name":{"type":"string","title":"User Name"},"priority":{"type":"string","title":"Priority"},"time":{"type":"string","title":"Time"}},"type":"object","required":["id","subject","user_name","priority","time"],"title":"OpenTicketItem"},"PairBlockInfo":{"properties":{"id":{"type":"integer","title":"Id"},"pair":{"type":"string","title":"Pair"},"blocked_until":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Blocked Until"},"reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reason"},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["id","pair","created_at"],"title":"PairBlockInfo"},"PairBlockResponse":{"properties":{"pair":{"type":"string","title":"Pair"},"block":{"anyOf":[{"$ref":"#/components/schemas/PairBlockInfo"},{"type":"null"}]},"ok_count":{"type":"integer","title":"Ok Count","default":0},"total":{"type":"integer","title":"Total","default":0},"results":{"additionalProperties":{"type":"string"},"type":"object","title":"Results","default":{}}},"type":"object","required":["pair"],"title":"PairBlockResponse"},"PairCandle":{"properties":{"time":{"type":"integer","title":"Time"},"open":{"type":"number","title":"Open"},"high":{"type":"number","title":"High"},"low":{"type":"number","title":"Low"},"close":{"type":"number","title":"Close"},"volume":{"type":"number","title":"Volume"}},"type":"object","required":["time","open","high","low","close","volume"],"title":"PairCandle"},"PairCandleResponse":{"properties":{"pair":{"type":"string","title":"Pair"},"timeframe":{"type":"string","title":"Timeframe"},"candles":{"items":{"$ref":"#/components/schemas/PairCandle"},"type":"array","title":"Candles"}},"type":"object","required":["pair","timeframe","candles"],"title":"PairCandleResponse"},"PairMonitorRow":{"properties":{"pair":{"type":"string","title":"Pair"},"bot_count":{"type":"integer","title":"Bot Count"},"total_open_trades":{"type":"integer","title":"Total Open Trades"},"bots":{"items":{"$ref":"#/components/schemas/BotMonitorEntry"},"type":"array","title":"Bots"},"block":{"anyOf":[{"$ref":"#/components/schemas/PairBlockInfo"},{"type":"null"}]}},"type":"object","required":["pair","bot_count","total_open_trades","bots"],"title":"PairMonitorRow"},"PairTickerInfo":{"properties":{"pair":{"type":"string","title":"Pair"},"symbol":{"type":"string","title":"Symbol"},"price_change_pct":{"type":"number","title":"Price Change Pct"},"last_price":{"type":"number","title":"Last Price"},"high_24h":{"type":"number","title":"High 24H"},"low_24h":{"type":"number","title":"Low 24H"},"volume_24h":{"type":"number","title":"Volume 24H"},"quote_volume_24h":{"type":"number","title":"Quote Volume 24H"}},"type":"object","required":["pair","symbol","price_change_pct","last_price","high_24h","low_24h","volume_24h","quote_volume_24h"],"title":"PairTickerInfo"},"PairlistResponse":{"properties":{"file_id":{"type":"integer","title":"File Id"},"filename":{"type":"string","title":"Filename"},"pair_whitelist":{"items":{"type":"string"},"type":"array","title":"Pair Whitelist"},"pair_blacklist":{"items":{"type":"string"},"type":"array","title":"Pair Blacklist"},"exchange_enabled":{"additionalProperties":{"type":"boolean"},"type":"object","title":"Exchange Enabled"}},"type":"object","required":["file_id","filename","pair_whitelist","pair_blacklist","exchange_enabled"],"title":"PairlistResponse"},"PairlistUpdate":{"properties":{"pair_whitelist":{"items":{"type":"string"},"type":"array","title":"Pair Whitelist"},"pair_blacklist":{"items":{"type":"string"},"type":"array","title":"Pair Blacklist"},"exchange_enabled":{"anyOf":[{"additionalProperties":{"type":"boolean"},"type":"object"},{"type":"null"}],"title":"Exchange Enabled"}},"type":"object","required":["pair_whitelist","pair_blacklist"],"title":"PairlistUpdate"},"ParameterAdd":{"properties":{"name":{"type":"string","title":"Name"},"value":{"title":"Value"},"type":{"type":"string","title":"Type"},"group":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Group","default":"General"}},"type":"object","required":["name","value","type"],"title":"ParameterAdd"},"ParameterEdit":{"properties":{"new_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"New Name"},"value":{"anyOf":[{},{"type":"null"}],"title":"Value"}},"type":"object","title":"ParameterEdit"},"ParameterGroup":{"properties":{"name":{"type":"string","title":"Name"},"params":{"items":{"$ref":"#/components/schemas/ParameterItem"},"type":"array","title":"Params"}},"type":"object","required":["name","params"],"title":"ParameterGroup"},"ParameterItem":{"properties":{"name":{"type":"string","title":"Name"},"value":{"title":"Value"},"type":{"type":"string","title":"Type"},"overridden":{"type":"boolean","title":"Overridden","default":false}},"type":"object","required":["name","value","type"],"title":"ParameterItem"},"PaymentCreate":{"properties":{"invoice_id":{"type":"integer","title":"Invoice Id"},"user_id":{"type":"integer","title":"User Id"},"amount":{"type":"number","title":"Amount"},"method":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Method"},"status":{"type":"string","title":"Status","default":"pending"},"tx_hash":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tx Hash"},"network":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Network"},"paid_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Paid At"},"confirmed_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Confirmed At"},"note":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Note"}},"type":"object","required":["invoice_id","user_id","amount"],"title":"PaymentCreate"},"PaymentUpdate":{"properties":{"status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"},"tx_hash":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tx Hash"},"network":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Network"},"confirmed_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Confirmed At"},"note":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Note"}},"type":"object","title":"PaymentUpdate"},"ProfileUpdate":{"properties":{"full_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Full Name"},"phone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Phone"},"preferred_currency":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Preferred Currency"},"first_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"First Name"},"last_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Name"},"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"},"date_of_birth":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Date Of Birth"},"country":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Country"},"phone_country_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Phone Country Code"},"phone_number":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Phone Number"}},"type":"object","title":"ProfileUpdate"},"ProfitBotPerformanceItem":{"properties":{"name":{"type":"string","title":"Name"},"cycles":{"type":"integer","title":"Cycles","default":0},"grossProfit":{"type":"number","title":"Grossprofit","default":0.0},"platformShare":{"type":"number","title":"Platformshare","default":0.0},"avgReturn":{"type":"number","title":"Avgreturn","default":0.0},"status":{"type":"string","title":"Status","default":"stopped"}},"type":"object","required":["name"],"title":"ProfitBotPerformanceItem"},"ProfitMonthlyItem":{"properties":{"month":{"type":"string","title":"Month"},"grossProfit":{"type":"number","title":"Grossprofit","default":0.0},"platformShare":{"type":"number","title":"Platformshare","default":0.0},"userProfit":{"type":"number","title":"Userprofit","default":0.0},"cycles":{"type":"integer","title":"Cycles","default":0},"avgReturn":{"type":"number","title":"Avgreturn","default":0.0},"bots":{"type":"integer","title":"Bots","default":0}},"type":"object","required":["month"],"title":"ProfitMonthlyItem"},"ProfitReportResponse":{"properties":{"monthly_data":{"items":{"$ref":"#/components/schemas/ProfitMonthlyItem"},"type":"array","title":"Monthly Data","default":[]},"bot_performance":{"items":{"$ref":"#/components/schemas/ProfitBotPerformanceItem"},"type":"array","title":"Bot Performance","default":[]}},"type":"object","title":"ProfitReportResponse"},"RecentTransactionItem":{"properties":{"id":{"type":"string","title":"Id"},"user_name":{"type":"string","title":"User Name"},"user_initials":{"type":"string","title":"User Initials"},"type":{"type":"string","title":"Type"},"amount":{"type":"number","title":"Amount"},"status":{"type":"string","title":"Status"},"time":{"type":"string","title":"Time"}},"type":"object","required":["id","user_name","user_initials","type","amount","status","time"],"title":"RecentTransactionItem"},"RecentUserItem":{"properties":{"name":{"type":"string","title":"Name"},"email":{"type":"string","title":"Email"},"plan":{"type":"string","title":"Plan"},"joined":{"type":"string","title":"Joined"},"initials":{"type":"string","title":"Initials"}},"type":"object","required":["name","email","plan","joined","initials"],"title":"RecentUserItem"},"ReferralPayoutCreate":{"properties":{"amount":{"type":"number","title":"Amount"},"method":{"type":"string","title":"Method"},"note":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Note"}},"type":"object","required":["amount","method"],"title":"ReferralPayoutCreate"},"ReferralSettingsResponse":{"properties":{"id":{"type":"integer","title":"Id"},"bronze_min":{"type":"integer","title":"Bronze Min"},"bronze_max":{"type":"integer","title":"Bronze Max"},"bronze_commission":{"type":"number","title":"Bronze Commission"},"bronze_bonus":{"type":"number","title":"Bronze Bonus"},"silver_min":{"type":"integer","title":"Silver Min"},"silver_max":{"type":"integer","title":"Silver Max"},"silver_commission":{"type":"number","title":"Silver Commission"},"silver_bonus":{"type":"number","title":"Silver Bonus"},"gold_min":{"type":"integer","title":"Gold Min"},"gold_max":{"type":"integer","title":"Gold Max"},"gold_commission":{"type":"number","title":"Gold Commission"},"gold_bonus":{"type":"number","title":"Gold Bonus"},"diamond_min":{"type":"integer","title":"Diamond Min"},"diamond_commission":{"type":"number","title":"Diamond Commission"},"diamond_bonus":{"type":"number","title":"Diamond Bonus"},"min_payout_amount":{"type":"number","title":"Min Payout Amount"},"payout_methods":{"items":{"type":"string"},"type":"array","title":"Payout Methods"},"program_enabled":{"type":"boolean","title":"Program Enabled"},"payouts_enabled":{"type":"boolean","title":"Payouts Enabled"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"}},"type":"object","required":["id","bronze_min","bronze_max","bronze_commission","bronze_bonus","silver_min","silver_max","silver_commission","silver_bonus","gold_min","gold_max","gold_commission","gold_bonus","diamond_min","diamond_commission","diamond_bonus","min_payout_amount","payout_methods","program_enabled","payouts_enabled","updated_at"],"title":"ReferralSettingsResponse"},"ReferralSettingsUpdate":{"properties":{"bronze_commission":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Bronze Commission"},"bronze_bonus":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Bronze Bonus"},"bronze_max":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Bronze Max"},"silver_commission":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Silver Commission"},"silver_bonus":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Silver Bonus"},"silver_min":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Silver Min"},"silver_max":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Silver Max"},"gold_commission":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Gold Commission"},"gold_bonus":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Gold Bonus"},"gold_min":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Gold Min"},"gold_max":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Gold Max"},"diamond_commission":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Diamond Commission"},"diamond_bonus":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Diamond Bonus"},"diamond_min":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Diamond Min"},"min_payout_amount":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Min Payout Amount"},"payout_methods":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Payout Methods"},"program_enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Program Enabled"},"payouts_enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Payouts Enabled"}},"type":"object","title":"ReferralSettingsUpdate"},"ResetPasswordRequest":{"properties":{"token":{"type":"string","title":"Token"},"new_password":{"type":"string","title":"New Password"}},"type":"object","required":["token","new_password"],"title":"ResetPasswordRequest"},"ServerProvisionDraftCreate":{"properties":{"bot_name":{"type":"string","title":"Bot Name"}},"type":"object","required":["bot_name"],"title":"ServerProvisionDraftCreate"},"ServerProvisionDraftResponse":{"properties":{"id":{"type":"integer","title":"Id"},"bot_name":{"type":"string","title":"Bot Name"},"server_name":{"type":"string","title":"Server Name"},"region":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Region"},"server_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Server Type"},"ssh_key_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ssh Key Name"},"server_ip":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Server Ip"},"backend_ip":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Backend Ip"},"status":{"type":"string","title":"Status"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"}},"type":"object","required":["id","bot_name","server_name","status","created_at","updated_at"],"title":"ServerProvisionDraftResponse"},"SessionListResponse":{"properties":{"sessions":{"items":{"$ref":"#/components/schemas/SessionResponse"},"type":"array","title":"Sessions"}},"type":"object","required":["sessions"],"title":"SessionListResponse"},"SessionResponse":{"properties":{"id":{"type":"integer","title":"Id"},"ip_address":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ip Address"},"user_agent":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Agent"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"last_active":{"type":"string","format":"date-time","title":"Last Active"},"is_current":{"type":"boolean","title":"Is Current","default":false}},"type":"object","required":["id","created_at","last_active"],"title":"SessionResponse"},"SettlementCreate":{"properties":{"period_label":{"type":"string","title":"Period Label"},"period_start":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Period Start"},"period_end":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Period End"},"total_invoiced":{"type":"number","title":"Total Invoiced","default":0.0},"total_collected":{"type":"number","title":"Total Collected","default":0.0},"outstanding_amount":{"type":"number","title":"Outstanding Amount","default":0.0},"platform_share":{"type":"number","title":"Platform Share","default":0.0},"payouts_processed":{"type":"integer","title":"Payouts Processed","default":0},"total_payouts":{"type":"integer","title":"Total Payouts","default":0},"status":{"type":"string","title":"Status","default":"pending"},"note":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Note"}},"type":"object","required":["period_label"],"title":"SettlementCreate"},"SettlementUpdate":{"properties":{"status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"},"total_collected":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Total Collected"},"outstanding_amount":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Outstanding Amount"},"payouts_processed":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Payouts Processed"},"total_payouts":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Total Payouts"},"note":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Note"},"settled_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Settled At"}},"type":"object","title":"SettlementUpdate"},"StaffRoleAssignUserRequest":{"properties":{"user_id":{"type":"integer","minimum":1.0,"title":"User Id"}},"type":"object","required":["user_id"],"title":"StaffRoleAssignUserRequest"},"StaffRoleCreate":{"properties":{"name":{"type":"string","maxLength":120,"minLength":1,"title":"Name"},"description":{"anyOf":[{"type":"string","maxLength":1000},{"type":"null"}],"title":"Description"},"permissions":{"items":{"type":"string"},"type":"array","title":"Permissions"}},"type":"object","required":["name"],"title":"StaffRoleCreate"},"StaffRoleListResponse":{"properties":{"roles":{"items":{"$ref":"#/components/schemas/StaffRoleResponse"},"type":"array","title":"Roles"},"total":{"type":"integer","title":"Total","default":0},"page":{"type":"integer","title":"Page","default":1},"page_size":{"type":"integer","title":"Page Size","default":25},"total_pages":{"type":"integer","title":"Total Pages","default":1},"total_staff":{"type":"integer","title":"Total Staff","default":0},"custom_roles":{"type":"integer","title":"Custom Roles","default":0}},"type":"object","title":"StaffRoleListResponse"},"StaffRoleMemberListResponse":{"properties":{"users":{"items":{"$ref":"#/components/schemas/StaffRoleMemberResponse"},"type":"array","title":"Users"},"total":{"type":"integer","title":"Total","default":0},"page":{"type":"integer","title":"Page","default":1},"page_size":{"type":"integer","title":"Page Size","default":25},"total_pages":{"type":"integer","title":"Total Pages","default":1}},"type":"object","title":"StaffRoleMemberListResponse"},"StaffRoleMemberResponse":{"properties":{"id":{"type":"integer","title":"Id"},"full_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Full Name"},"email":{"type":"string","format":"email","title":"Email"},"is_active":{"type":"boolean","title":"Is Active"},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["id","email","is_active","created_at"],"title":"StaffRoleMemberResponse"},"StaffRoleResponse":{"properties":{"id":{"type":"integer","title":"Id"},"name":{"type":"string","title":"Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"permissions":{"items":{"type":"string"},"type":"array","title":"Permissions"},"permissions_count":{"type":"integer","title":"Permissions Count","default":0},"total_users":{"type":"integer","title":"Total Users","default":0},"is_system":{"type":"boolean","title":"Is System","default":false},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"}},"type":"object","required":["id","name","created_at","updated_at"],"title":"StaffRoleResponse"},"StaffRoleUpdate":{"properties":{"name":{"anyOf":[{"type":"string","maxLength":120,"minLength":1},{"type":"null"}],"title":"Name"},"description":{"anyOf":[{"type":"string","maxLength":1000},{"type":"null"}],"title":"Description"},"permissions":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Permissions"}},"type":"object","title":"StaffRoleUpdate"},"StopEntriesBody":{"properties":{"duration_minutes":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Duration Minutes"}},"type":"object","title":"StopEntriesBody"},"StrategyParametersResponse":{"properties":{"file_id":{"type":"integer","title":"File Id"},"groups":{"items":{"$ref":"#/components/schemas/ParameterGroup"},"type":"array","title":"Groups"},"has_overrides":{"type":"boolean","title":"Has Overrides"},"timeframe_tags":{"additionalProperties":{"type":"string"},"type":"object","title":"Timeframe Tags"},"updated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Updated At"}},"type":"object","required":["file_id","groups","has_overrides"],"title":"StrategyParametersResponse"},"StrategyParametersSave":{"properties":{"parameters":{"type":"object","title":"Parameters"},"timeframe_tags":{"anyOf":[{"additionalProperties":{"type":"string"},"type":"object"},{"type":"null"}],"title":"Timeframe Tags"}},"type":"object","required":["parameters"],"title":"StrategyParametersSave"},"StrategyTimeframeOption":{"properties":{"key":{"type":"string","title":"Key"},"label":{"type":"string","title":"Label"},"enabled":{"type":"boolean","title":"Enabled"}},"type":"object","required":["key","label","enabled"],"title":"StrategyTimeframeOption"},"StrategyVisibilityUpdate":{"properties":{"show_in_bot_creation":{"type":"boolean","title":"Show In Bot Creation"}},"type":"object","required":["show_in_bot_creation"],"title":"StrategyVisibilityUpdate"},"SubscriptionActivityItem":{"properties":{"user":{"type":"string","title":"User"},"action":{"type":"string","title":"Action"},"from_plan":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"From Plan"},"to_plan":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"To Plan"},"date":{"type":"string","title":"Date"}},"type":"object","required":["user","action","date"],"title":"SubscriptionActivityItem"},"SubscriptionDistItem":{"properties":{"name":{"type":"string","title":"Name"},"count":{"type":"integer","title":"Count","default":0}},"type":"object","required":["name"],"title":"SubscriptionDistItem"},"SubscriptionMonthlyItem":{"properties":{"month":{"type":"string","title":"Month"},"newSubs":{"type":"integer","title":"Newsubs","default":0},"churned":{"type":"integer","title":"Churned","default":0},"active":{"type":"integer","title":"Active","default":0},"mrr":{"type":"number","title":"Mrr","default":0.0},"starter":{"type":"integer","title":"Starter","default":0},"pro":{"type":"integer","title":"Pro","default":0},"enterprise":{"type":"integer","title":"Enterprise","default":0},"trials":{"type":"integer","title":"Trials","default":0}},"type":"object","required":["month"],"title":"SubscriptionMonthlyItem"},"SubscriptionPlanBreakdownItem":{"properties":{"plan":{"type":"string","title":"Plan"},"price":{"type":"number","title":"Price","default":0.0},"active":{"type":"integer","title":"Active","default":0},"color":{"type":"string","title":"Color","default":"bg-blue-500"},"percentage":{"type":"integer","title":"Percentage","default":0}},"type":"object","required":["plan"],"title":"SubscriptionPlanBreakdownItem"},"SubscriptionPlanCreate":{"properties":{"name":{"type":"string","title":"Name"},"slug":{"type":"string","title":"Slug"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"price_monthly":{"type":"string","title":"Price Monthly","default":"0"},"price_yearly":{"type":"string","title":"Price Yearly","default":"0"},"max_bots":{"type":"integer","title":"Max Bots","default":1},"trial_days":{"type":"integer","title":"Trial Days","default":0},"features":{"items":{"type":"string"},"type":"array","title":"Features"},"is_active":{"type":"boolean","title":"Is Active","default":true},"is_popular":{"type":"boolean","title":"Is Popular","default":false},"sort_order":{"type":"integer","title":"Sort Order","default":0}},"type":"object","required":["name","slug"],"title":"SubscriptionPlanCreate"},"SubscriptionPlanResponse":{"properties":{"id":{"type":"integer","title":"Id"},"name":{"type":"string","title":"Name"},"slug":{"type":"string","title":"Slug"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"price_monthly":{"type":"string","title":"Price Monthly"},"price_yearly":{"type":"string","title":"Price Yearly"},"max_bots":{"type":"integer","title":"Max Bots"},"trial_days":{"type":"integer","title":"Trial Days"},"features":{"items":{"type":"string"},"type":"array","title":"Features"},"is_active":{"type":"boolean","title":"Is Active"},"is_popular":{"type":"boolean","title":"Is Popular"},"sort_order":{"type":"integer","title":"Sort Order"},"subscriber_count":{"type":"integer","title":"Subscriber Count","default":0},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"}},"type":"object","required":["id","name","slug","price_monthly","price_yearly","max_bots","trial_days","features","is_active","is_popular","sort_order","created_at","updated_at"],"title":"SubscriptionPlanResponse"},"SubscriptionPlanUpdate":{"properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"slug":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Slug"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"price_monthly":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Price Monthly"},"price_yearly":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Price Yearly"},"max_bots":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Bots"},"trial_days":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Trial Days"},"features":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Features"},"is_active":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Active"},"is_popular":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Popular"},"sort_order":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Sort Order"}},"type":"object","title":"SubscriptionPlanUpdate"},"SubscriptionReportResponse":{"properties":{"monthly_data":{"items":{"$ref":"#/components/schemas/SubscriptionMonthlyItem"},"type":"array","title":"Monthly Data","default":[]},"plan_breakdown":{"items":{"$ref":"#/components/schemas/SubscriptionPlanBreakdownItem"},"type":"array","title":"Plan Breakdown","default":[]},"recent_activity":{"items":{"$ref":"#/components/schemas/SubscriptionActivityItem"},"type":"array","title":"Recent Activity","default":[]}},"type":"object","title":"SubscriptionReportResponse"},"SupportMessageResponse":{"properties":{"id":{"type":"integer","title":"Id"},"ticket_id":{"type":"integer","title":"Ticket Id"},"sender_id":{"type":"integer","title":"Sender Id"},"sender_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sender Name"},"is_staff":{"type":"boolean","title":"Is Staff"},"body":{"type":"string","title":"Body"},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["id","ticket_id","sender_id","is_staff","body","created_at"],"title":"SupportMessageResponse"},"SupportTicketCreate":{"properties":{"subject":{"type":"string","title":"Subject"},"category":{"type":"string","title":"Category"},"priority":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Priority","default":"medium"},"message":{"type":"string","title":"Message"}},"type":"object","required":["subject","category","message"],"title":"SupportTicketCreate"},"SupportTicketDetailResponse":{"properties":{"id":{"type":"integer","title":"Id"},"ticket_number":{"type":"string","title":"Ticket Number"},"user_id":{"type":"integer","title":"User Id"},"user_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Name"},"user_email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Email"},"user_phone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Phone"},"user_role":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Role"},"user_is_active":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"User Is Active"},"user_created_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"User Created At"},"subject":{"type":"string","title":"Subject"},"category":{"type":"string","title":"Category"},"priority":{"type":"string","title":"Priority"},"status":{"type":"string","title":"Status"},"assigned_to":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Assigned To"},"messages":{"items":{"$ref":"#/components/schemas/SupportMessageResponse"},"type":"array","title":"Messages"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"}},"type":"object","required":["id","ticket_number","user_id","subject","category","priority","status","messages","created_at","updated_at"],"title":"SupportTicketDetailResponse"},"SupportTicketResponse":{"properties":{"id":{"type":"integer","title":"Id"},"ticket_number":{"type":"string","title":"Ticket Number"},"user_id":{"type":"integer","title":"User Id"},"user_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Name"},"user_email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Email"},"user_phone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Phone"},"user_role":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Role"},"user_is_active":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"User Is Active"},"user_created_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"User Created At"},"subject":{"type":"string","title":"Subject"},"category":{"type":"string","title":"Category"},"priority":{"type":"string","title":"Priority"},"status":{"type":"string","title":"Status"},"message_count":{"type":"integer","title":"Message Count"},"assigned_to":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Assigned To"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"}},"type":"object","required":["id","ticket_number","user_id","subject","category","priority","status","message_count","created_at","updated_at"],"title":"SupportTicketResponse"},"SupportTicketUpdate":{"properties":{"status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"},"priority":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Priority"},"assigned_to":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Assigned To"}},"type":"object","title":"SupportTicketUpdate"},"SupportTicketsListResponse":{"properties":{"tickets":{"items":{"$ref":"#/components/schemas/SupportTicketResponse"},"type":"array","title":"Tickets"},"total":{"type":"integer","title":"Total"},"open_count":{"type":"integer","title":"Open Count"},"in_progress_count":{"type":"integer","title":"In Progress Count"},"resolved_count":{"type":"integer","title":"Resolved Count"},"closed_count":{"type":"integer","title":"Closed Count"}},"type":"object","required":["tickets","total","open_count","in_progress_count","resolved_count","closed_count"],"title":"SupportTicketsListResponse"},"TicketMessageCreate":{"properties":{"body":{"type":"string","title":"Body"},"status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"}},"type":"object","required":["body"],"title":"TicketMessageCreate"},"Token":{"properties":{"access_token":{"type":"string","title":"Access Token"},"token_type":{"type":"string","title":"Token Type"},"user":{"$ref":"#/components/schemas/UserResponse"}},"type":"object","required":["access_token","token_type","user"],"title":"Token"},"TradingBotCreate":{"properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"provision_draft_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Provision Draft Id"},"exchange":{"type":"string","title":"Exchange"},"pair":{"type":"string","title":"Pair"},"strategy":{"type":"string","title":"Strategy"},"dry_run":{"type":"boolean","title":"Dry Run","default":true},"exchange_api_key":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Exchange Api Key"},"exchange_api_secret":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Exchange Api Secret"},"stake_currency":{"type":"string","title":"Stake Currency","default":"USDT"},"stake_amount":{"type":"string","title":"Stake Amount","default":"100"},"max_open_trades":{"type":"integer","title":"Max Open Trades","default":3},"trade_size":{"type":"string","title":"Trade Size","default":"fixed"},"stop_loss":{"type":"integer","title":"Stop Loss","default":99},"dca_stop_loss":{"type":"integer","title":"Dca Stop Loss","default":50},"leverage":{"type":"integer","title":"Leverage","default":1},"strategy_timeframe_flags":{"additionalProperties":{"type":"boolean"},"type":"object","title":"Strategy Timeframe Flags"},"parameters":{"type":"object","title":"Parameters"}},"type":"object","required":["exchange","pair","strategy"],"title":"TradingBotCreate"},"TradingBotResponse":{"properties":{"id":{"type":"integer","title":"Id"},"user_id":{"type":"integer","title":"User Id"},"name":{"type":"string","title":"Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"exchange":{"type":"string","title":"Exchange"},"pair":{"type":"string","title":"Pair"},"strategy":{"type":"string","title":"Strategy"},"dry_run":{"type":"boolean","title":"Dry Run"},"stake_currency":{"type":"string","title":"Stake Currency"},"stake_amount":{"type":"string","title":"Stake Amount"},"max_open_trades":{"type":"integer","title":"Max Open Trades"},"trade_size":{"type":"string","title":"Trade Size"},"stop_loss":{"type":"integer","title":"Stop Loss"},"dca_stop_loss":{"type":"integer","title":"Dca Stop Loss"},"leverage":{"type":"integer","title":"Leverage"},"strategy_timeframe_flags":{"additionalProperties":{"type":"boolean"},"type":"object","title":"Strategy Timeframe Flags"},"parameters":{"type":"object","title":"Parameters"},"bot_slug":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Bot Slug"},"url_token":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Url Token"},"ft_username":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ft Username"},"ft_password_set":{"type":"boolean","title":"Ft Password Set","default":false},"ft_port":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Ft Port"},"bot_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Bot Url"},"status":{"type":"string","title":"Status"},"deployment_status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Deployment Status"},"server_ip":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Server Ip"},"backend_ip":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Backend Ip"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"},"started_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Started At"},"is_manual":{"type":"boolean","title":"Is Manual","default":false}},"type":"object","required":["id","user_id","name","exchange","pair","strategy","dry_run","stake_currency","stake_amount","max_open_trades","trade_size","stop_loss","dca_stop_loss","leverage","status","created_at","updated_at"],"title":"TradingBotResponse"},"TwoFactorEnableRequest":{"properties":{"code":{"type":"string","title":"Code"}},"type":"object","required":["code"],"title":"TwoFactorEnableRequest"},"TwoFactorSetupResponse":{"properties":{"secret":{"type":"string","title":"Secret"},"otpauth_url":{"type":"string","title":"Otpauth Url"},"qr_code":{"type":"string","title":"Qr Code"}},"type":"object","required":["secret","otpauth_url","qr_code"],"title":"TwoFactorSetupResponse"},"TwoFactorVerify":{"properties":{"temp_token":{"type":"string","title":"Temp Token"},"code":{"type":"string","title":"Code"}},"type":"object","required":["temp_token","code"],"title":"TwoFactorVerify"},"UserBotItem":{"properties":{"id":{"type":"integer","title":"Id"},"name":{"type":"string","title":"Name"},"pair":{"type":"string","title":"Pair"},"status":{"type":"string","title":"Status"},"exchange":{"type":"string","title":"Exchange"},"strategy":{"type":"string","title":"Strategy"},"leverage":{"type":"integer","title":"Leverage","default":1},"created_at":{"type":"string","title":"Created At"}},"type":"object","required":["id","name","pair","status","exchange","strategy","created_at"],"title":"UserBotItem"},"UserCreate":{"properties":{"email":{"type":"string","format":"email","title":"Email"},"full_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Full Name"},"password":{"type":"string","title":"Password"},"first_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"First Name"},"last_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Name"},"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"},"date_of_birth":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Date Of Birth"},"country":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Country"},"phone_country_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Phone Country Code"},"phone_number":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Phone Number"},"referral_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Referral Code"},"terms_accepted":{"type":"boolean","title":"Terms Accepted","default":false},"name_acknowledged":{"type":"boolean","title":"Name Acknowledged","default":false},"marketing_consent":{"type":"boolean","title":"Marketing Consent","default":false}},"type":"object","required":["email","password"],"title":"UserCreate"},"UserDashboardResponse":{"properties":{"kpi":{"$ref":"#/components/schemas/UserKpiStats"},"portfolio_chart":{"items":{"$ref":"#/components/schemas/ChartPoint"},"type":"array","title":"Portfolio Chart","default":[]},"performance_chart":{"items":{"$ref":"#/components/schemas/ChartPoint"},"type":"array","title":"Performance Chart","default":[]},"bots":{"items":{"$ref":"#/components/schemas/UserBotItem"},"type":"array","title":"Bots","default":[]}},"type":"object","required":["kpi"],"title":"UserDashboardResponse"},"UserKpiStats":{"properties":{"portfolio_value":{"type":"number","title":"Portfolio Value","default":0.0},"portfolio_change_pct":{"type":"number","title":"Portfolio Change Pct","default":0.0},"total_profit":{"type":"number","title":"Total Profit","default":0.0},"profit_change_pct":{"type":"number","title":"Profit Change Pct","default":0.0},"today_pnl":{"type":"number","title":"Today Pnl","default":0.0},"active_bots":{"type":"integer","title":"Active Bots","default":0},"total_bots":{"type":"integer","title":"Total Bots","default":0},"total_trades":{"type":"integer","title":"Total Trades","default":0},"avg_win_rate":{"type":"number","title":"Avg Win Rate","default":0.0},"current_plan":{"type":"string","title":"Current Plan","default":"None"},"cycle_days_left":{"type":"integer","title":"Cycle Days Left","default":0},"referral_earnings":{"type":"number","title":"Referral Earnings","default":0.0}},"type":"object","title":"UserKpiStats"},"UserLogin":{"properties":{"email":{"type":"string","format":"email","title":"Email"},"password":{"type":"string","title":"Password"}},"type":"object","required":["email","password"],"title":"UserLogin"},"UserReferralProfile":{"properties":{"code":{"type":"string","title":"Code"},"referral_link":{"type":"string","title":"Referral Link"},"total_invited":{"type":"integer","title":"Total Invited"},"active_referrals":{"type":"integer","title":"Active Referrals"},"pending_referrals":{"type":"integer","title":"Pending Referrals"},"total_earnings":{"type":"number","title":"Total Earnings"},"pending_earnings":{"type":"number","title":"Pending Earnings"},"confirmed_earnings":{"type":"number","title":"Confirmed Earnings"},"this_month_earnings":{"type":"number","title":"This Month Earnings"},"conversion_rate":{"type":"number","title":"Conversion Rate"},"tier":{"type":"string","title":"Tier"},"next_tier":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Tier"},"referrals_to_next_tier":{"type":"integer","title":"Referrals To Next Tier"},"min_payout_amount":{"type":"number","title":"Min Payout Amount"},"payout_methods":{"items":{"type":"string"},"type":"array","title":"Payout Methods"},"payouts_enabled":{"type":"boolean","title":"Payouts Enabled"}},"type":"object","required":["code","referral_link","total_invited","active_referrals","pending_referrals","total_earnings","pending_earnings","confirmed_earnings","this_month_earnings","conversion_rate","tier","referrals_to_next_tier","min_payout_amount","payout_methods","payouts_enabled"],"title":"UserReferralProfile"},"UserResponse":{"properties":{"email":{"type":"string","format":"email","title":"Email"},"full_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Full Name"},"id":{"type":"integer","title":"Id"},"user_uid":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Uid"},"username":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Username"},"first_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"First Name"},"last_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Name"},"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"},"date_of_birth":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Date Of Birth"},"country":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Country"},"phone_country_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Phone Country Code"},"phone_number":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Phone Number"},"referral_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Referral Code"},"terms_accepted":{"type":"boolean","title":"Terms Accepted","default":false},"name_acknowledged":{"type":"boolean","title":"Name Acknowledged","default":false},"marketing_consent":{"type":"boolean","title":"Marketing Consent","default":false},"phone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Phone"},"binance_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Binance Id"},"binance_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Binance Name"},"preferred_currency":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Preferred Currency"},"is_active":{"type":"boolean","title":"Is Active"},"is_verified":{"type":"boolean","title":"Is Verified"},"role":{"type":"string","title":"Role"},"totp_enabled":{"type":"boolean","title":"Totp Enabled","default":false},"verification_status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Verification Status"},"contract_status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Contract Status"},"contract_signed_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Contract Signed At"},"pending_email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Pending Email"},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["email","id","is_active","is_verified","role","created_at"],"title":"UserResponse"},"UserSubscriptionCreate":{"properties":{"user_id":{"type":"integer","title":"User Id"},"plan_id":{"type":"integer","title":"Plan Id"},"billing_cycle":{"type":"string","title":"Billing Cycle","default":"monthly"},"status":{"type":"string","title":"Status","default":"active"},"notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Notes"}},"type":"object","required":["user_id","plan_id"],"title":"UserSubscriptionCreate"},"UserSubscriptionResponse":{"properties":{"id":{"type":"integer","title":"Id"},"user_id":{"type":"integer","title":"User Id"},"user_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Name"},"user_email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Email"},"plan_id":{"type":"integer","title":"Plan Id"},"plan_name":{"type":"string","title":"Plan Name"},"plan_slug":{"type":"string","title":"Plan Slug"},"billing_cycle":{"type":"string","title":"Billing Cycle"},"status":{"type":"string","title":"Status"},"price":{"type":"string","title":"Price"},"max_bots":{"type":"integer","title":"Max Bots","default":1},"trial_ends_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Trial Ends At"},"current_period_start":{"type":"string","format":"date-time","title":"Current Period Start"},"current_period_end":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Current Period End"},"cancelled_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Cancelled At"},"notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Notes"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"}},"type":"object","required":["id","user_id","plan_id","plan_name","plan_slug","billing_cycle","status","price","current_period_start","created_at","updated_at"],"title":"UserSubscriptionResponse"},"UserSubscriptionUpdate":{"properties":{"status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"},"plan_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Plan Id"},"billing_cycle":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Billing Cycle"},"notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Notes"}},"type":"object","title":"UserSubscriptionUpdate"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"},"VeriffSessionCreateRequest":{"properties":{"redirect_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Redirect Url"},"user_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"User Id"}},"type":"object","title":"VeriffSessionCreateRequest"},"VeriffSessionResponse":{"properties":{"provider":{"type":"string","title":"Provider","default":"veriff"},"session_id":{"type":"string","title":"Session Id"},"verification_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Verification Url"},"status":{"type":"string","title":"Status","default":"pending"},"callback_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Callback Url"}},"type":"object","required":["session_id"],"title":"VeriffSessionResponse"},"VerifyEmailRequest":{"properties":{"token":{"type":"string","title":"Token"}},"type":"object","required":["token"],"title":"VerifyEmailRequest"},"_CommandsSetupRequest":{"properties":{"public_url":{"type":"string","title":"Public Url"}},"type":"object","required":["public_url"],"title":"_CommandsSetupRequest"},"_CommandsSetupResponse":{"properties":{"ok":{"type":"boolean","title":"Ok"},"detail":{"type":"string","title":"Detail"},"webhook_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Webhook Url"}},"type":"object","required":["ok","detail"],"title":"_CommandsSetupResponse"}},"securitySchemes":{"HTTPBearer":{"type":"http","scheme":"bearer"}}},"tags":[{"name":"auth","description":"Login, signup, 2FA, password reset, social login."},{"name":"account","description":"Profile, sessions, API keys, KYC, contract."},{"name":"bots","description":"User-facing trading bot lifecycle."},{"name":"admin","description":"Admin-only management endpoints."},{"name":"billing","description":"Subscription plans, invoices, payments, settlements."},{"name":"support","description":"Tickets, knowledge base, feedback."},{"name":"websockets","description":"Live push channels (ticket-authenticated)."},{"name":"system","description":"Health, observability, system info."}]}