{"openapi":"3.1.0","info":{"title":"CoraPilot","description":"CoraPilot secure personal-assistance platform with tiered plans, admin controls, Stripe billing hooks and containerized assistant orchestration.","version":"0.1.0"},"paths":{"/health":{"get":{"summary":"Health","operationId":"health_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Health Health Get"}}}}}}},"/":{"get":{"summary":"Root","description":"Serve the homepage.","operationId":"root__get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/portal/":{"get":{"summary":"Portal Index","description":"Serve the portal index page.","operationId":"portal_index_portal__get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/llms.txt":{"get":{"summary":"Llms Txt","description":"AI-facing site guide (the emerging llms.txt convention) describing what\nCoraPilot is and exactly how an AI system connects over MCP.","operationId":"llms_txt_llms_txt_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/robots.txt":{"get":{"summary":"Robots Txt","operationId":"robots_txt_robots_txt_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/8f3c1a9d4b7e42f0a6c5d8e1b2f3a4c9.txt":{"get":{"summary":"Indexnow Key File","description":"IndexNow ownership key file (Bing/Yandex/Seznam/Naver instant indexing).","operationId":"indexnow_key_file_8f3c1a9d4b7e42f0a6c5d8e1b2f3a4c9_txt_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/.well-known/mcp-registry-auth":{"get":{"summary":"Mcp Registry Auth","description":"Domain-ownership proof for publishing to the Official MCP Registry.","operationId":"mcp_registry_auth__well_known_mcp_registry_auth_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/sitemap.xml":{"get":{"summary":"Sitemap Xml","operationId":"sitemap_xml_sitemap_xml_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/.well-known/mcp-registry.json":{"get":{"summary":"Mcp Registry Json","description":"Serve the MCP registry descriptor (server.json) used for registry listings.","operationId":"mcp_registry_json__well_known_mcp_registry_json_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/security":{"get":{"summary":"Security Page","description":"Serve the security / how-it-works page.","operationId":"security_page_security_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/privacy":{"get":{"summary":"Privacy Page","description":"Serve the public privacy policy.","operationId":"privacy_page_privacy_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/terms":{"get":{"summary":"Terms Page","description":"Serve the public terms of service.","operationId":"terms_page_terms_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/thank-you":{"get":{"summary":"Thank You Page","description":"Post-purchase confirmation page (Stripe redirects here after checkout).\n\nThis is the URL to give Google Ads as the conversion / purchase page. When\ngoogle_ads_conversion_id is configured, the Google tag + conversion event\nare injected so the conversion fires on page load.","operationId":"thank_you_page_thank_you_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/connect-whatsapp-to-claude":{"get":{"summary":"Landing Connect Whatsapp To Claude","operationId":"landing_connect_whatsapp_to_claude_connect_whatsapp_to_claude_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/search-whatsapp-with-ai":{"get":{"summary":"Landing Search Whatsapp With Ai","operationId":"landing_search_whatsapp_with_ai_search_whatsapp_with_ai_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/chatgpt-whatsapp-integration":{"get":{"summary":"Landing Chatgpt Whatsapp Integration","operationId":"landing_chatgpt_whatsapp_integration_chatgpt_whatsapp_integration_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/blog":{"get":{"summary":"Blog Index","description":"Serve the blog listing page.","operationId":"blog_index_blog_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/blog/{slug}":{"get":{"summary":"Blog Post","description":"Serve an individual blog article by slug.","operationId":"blog_post_blog__slug__get","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","title":"Slug"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/auth/register":{"post":{"tags":["auth"],"summary":"Register","operationId":"register_auth_register_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RegisterRequest"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TokenResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/auth/login":{"post":{"tags":["auth"],"summary":"Login","operationId":"login_auth_login_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserLogin"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TokenResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/auth/login/2fa":{"post":{"tags":["auth"],"summary":"Login 2Fa","description":"Step 2 of login when 2FA is enabled — verify the emailed code.","operationId":"login_2fa_auth_login_2fa_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TwoFactorLoginRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TokenResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/auth/me":{"get":{"tags":["auth"],"summary":"Me","operationId":"me_auth_me_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserOut"}}}}},"security":[{"HTTPBearer":[]}]},"put":{"tags":["auth"],"summary":"Update Me","description":"Update the current user's personal info (name).","operationId":"update_me_auth_me_put","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProfileUpdateRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/auth/password-reset/request":{"post":{"tags":["auth"],"summary":"Request Password Reset","description":"Send a 6-digit password reset code to the user's email.","operationId":"request_password_reset_auth_password_reset_request_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PasswordResetRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/auth/password-reset/confirm":{"post":{"tags":["auth"],"summary":"Confirm Password Reset","description":"Verify the reset code and set a new password.","operationId":"confirm_password_reset_auth_password_reset_confirm_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PasswordResetConfirm"}}},"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/enable":{"post":{"tags":["auth"],"summary":"Enable 2Fa","description":"Start enabling 2FA — sends a verification code to confirm.","operationId":"enable_2fa_auth_2fa_enable_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TwoFactorEnableRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/auth/2fa/confirm-enable":{"post":{"tags":["auth"],"summary":"Confirm Enable 2Fa","description":"Confirm 2FA activation with the emailed code.","operationId":"confirm_enable_2fa_auth_2fa_confirm_enable_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TwoFactorVerifyRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/auth/2fa/disable":{"post":{"tags":["auth"],"summary":"Disable 2Fa","description":"Disable 2FA — requires a valid code for security.","operationId":"disable_2fa_auth_2fa_disable_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TwoFactorVerifyRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/auth/change-password":{"post":{"tags":["auth"],"summary":"Change Password","description":"Change password for the logged-in user.","operationId":"change_password_auth_change_password_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChangePasswordRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/admin/users":{"get":{"tags":["admin"],"summary":"List Users","operationId":"list_users_admin_users_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/UserOut"},"type":"array","title":"Response List Users Admin Users Get"}}}}},"security":[{"HTTPBearer":[]}]},"post":{"tags":["admin"],"summary":"Create User","operationId":"create_user_admin_users_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserCreateByAdmin"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/admin/accounts":{"get":{"tags":["admin"],"summary":"List Accounts","operationId":"list_accounts_admin_accounts_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Response List Accounts Admin Accounts Get"}}}}},"security":[{"HTTPBearer":[]}]},"post":{"tags":["admin"],"summary":"Create Account","operationId":"create_account_admin_accounts_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AccountCreateByAdmin"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Create Account Admin Accounts Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/admin/accounts/{account_id}/provision":{"post":{"tags":["admin"],"summary":"Provision Account Container","description":"Provision and start a container for an account.","operationId":"provision_account_container_admin_accounts__account_id__provision_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"account_id","in":"path","required":true,"schema":{"type":"integer","title":"Account Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Provision Account Container Admin Accounts  Account Id  Provision Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/accounts/{account_id}":{"patch":{"tags":["admin"],"summary":"Update Account","operationId":"update_account_admin_accounts__account_id__patch","security":[{"HTTPBearer":[]}],"parameters":[{"name":"account_id","in":"path","required":true,"schema":{"type":"integer","title":"Account Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AccountUpdateByAdmin"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AccountOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["admin"],"summary":"Delete Account","description":"Delete an account and all its containers.","operationId":"delete_account_admin_accounts__account_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"account_id","in":"path","required":true,"schema":{"type":"integer","title":"Account Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Delete Account Admin Accounts  Account Id  Delete"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/accounts/{account_id}/subscription":{"get":{"tags":["admin"],"summary":"Get Subscription","operationId":"get_subscription_admin_accounts__account_id__subscription_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"account_id","in":"path","required":true,"schema":{"type":"integer","title":"Account Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SubscriptionOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["admin"],"summary":"Admin Set Subscription","description":"Admin: change a customer's WhatsApp subscription (status, extend, or a plan preset).","operationId":"admin_set_subscription_admin_accounts__account_id__subscription_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"account_id","in":"path","required":true,"schema":{"type":"integer","title":"Account Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SubscriptionAdminUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Admin Set Subscription Admin Accounts  Account Id  Subscription Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/plans":{"get":{"tags":["admin"],"summary":"List Plans","operationId":"list_plans_admin_plans_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response List Plans Admin Plans Get"}}}}},"security":[{"HTTPBearer":[]}]}},"/admin/customers":{"get":{"tags":["admin"],"summary":"List Customers","description":"Customer list joining account, owner and subscription for the admin table.","operationId":"list_customers_admin_customers_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Response List Customers Admin Customers Get"}}}}},"security":[{"HTTPBearer":[]}]}},"/admin/customers/{account_id}":{"get":{"tags":["admin"],"summary":"Customer Detail","description":"Full detail for one customer: signup info, account, subscription and stats.","operationId":"customer_detail_admin_customers__account_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"account_id","in":"path","required":true,"schema":{"type":"integer","title":"Account Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Customer Detail Admin Customers  Account Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/service-subscriptions/{sub_id}":{"post":{"tags":["admin"],"summary":"Admin Set Service Subscription","description":"Admin: set a product subscription (e.g. Google Ads) to a plan preset —\nsubscribed 1 year, subscribed permanently, or 7-day free trial.","operationId":"admin_set_service_subscription_admin_service_subscriptions__sub_id__post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"sub_id","in":"path","required":true,"schema":{"type":"integer","title":"Sub Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ServiceSubAdminUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Admin Set Service Subscription Admin Service Subscriptions  Sub Id  Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/metrics":{"get":{"tags":["admin"],"summary":"Admin Metrics","description":"Dashboard metrics: totals, weekly/monthly signups and estimated monthly revenue.","operationId":"admin_metrics_admin_metrics_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Admin Metrics Admin Metrics Get"}}}}},"security":[{"HTTPBearer":[]}]}},"/admin/audit-logs":{"get":{"tags":["admin"],"summary":"List Audit Logs","operationId":"list_audit_logs_admin_audit_logs_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Response List Audit Logs Admin Audit Logs Get"}}}}},"security":[{"HTTPBearer":[]}]}},"/admin/logs":{"get":{"tags":["admin"],"summary":"List App Logs","description":"List application logs for debugging.","operationId":"list_app_logs_admin_logs_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"level","in":"query","required":false,"schema":{"type":"string","default":"","title":"Level"}},{"name":"source","in":"query","required":false,"schema":{"type":"string","default":"","title":"Source"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":200,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","additionalProperties":true},"title":"Response List App Logs Admin Logs Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["admin"],"summary":"Clear App Logs","description":"Clear all application logs.","operationId":"clear_app_logs_admin_logs_delete","security":[{"HTTPBearer":[]}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Clear App Logs Admin Logs Delete"}}}}}}},"/admin/instances":{"get":{"tags":["admin"],"summary":"List All Instances","description":"List all assistant instances with container status.","operationId":"list_all_instances_admin_instances_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Response List All Instances Admin Instances Get"}}}}},"security":[{"HTTPBearer":[]}]}},"/admin/instances/{instance_id}/status":{"get":{"tags":["admin"],"summary":"Get Instance Status","description":"Get detailed container status for an instance.","operationId":"get_instance_status_admin_instances__instance_id__status_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"instance_id","in":"path","required":true,"schema":{"type":"integer","title":"Instance Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Instance Status Admin Instances  Instance Id  Status Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/instances/{instance_id}/start":{"post":{"tags":["admin"],"summary":"Start Instance Container","description":"Start a container for an instance.","operationId":"start_instance_container_admin_instances__instance_id__start_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"instance_id","in":"path","required":true,"schema":{"type":"integer","title":"Instance Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Start Instance Container Admin Instances  Instance Id  Start Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/instances/{instance_id}/stop":{"post":{"tags":["admin"],"summary":"Stop Instance Container","description":"Stop a container for an instance.","operationId":"stop_instance_container_admin_instances__instance_id__stop_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"instance_id","in":"path","required":true,"schema":{"type":"integer","title":"Instance Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Stop Instance Container Admin Instances  Instance Id  Stop Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/instances/{instance_id}/restart":{"post":{"tags":["admin"],"summary":"Restart Instance Container","description":"Restart a container for an instance.","operationId":"restart_instance_container_admin_instances__instance_id__restart_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"instance_id","in":"path","required":true,"schema":{"type":"integer","title":"Instance Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Restart Instance Container Admin Instances  Instance Id  Restart Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/instances/{instance_id}/pause":{"post":{"tags":["admin"],"summary":"Pause Instance Container","description":"Pause a container for an instance.","operationId":"pause_instance_container_admin_instances__instance_id__pause_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"instance_id","in":"path","required":true,"schema":{"type":"integer","title":"Instance Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Pause Instance Container Admin Instances  Instance Id  Pause Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/instances/{instance_id}/unpause":{"post":{"tags":["admin"],"summary":"Unpause Instance Container","description":"Unpause a container for an instance.","operationId":"unpause_instance_container_admin_instances__instance_id__unpause_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"instance_id","in":"path","required":true,"schema":{"type":"integer","title":"Instance Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Unpause Instance Container Admin Instances  Instance Id  Unpause Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/instances/{instance_id}/container":{"delete":{"tags":["admin"],"summary":"Remove Instance Container","description":"Remove (delete) a container for an instance.","operationId":"remove_instance_container_admin_instances__instance_id__container_delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"instance_id","in":"path","required":true,"schema":{"type":"integer","title":"Instance Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Remove Instance Container Admin Instances  Instance Id  Container Delete"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/containers":{"get":{"tags":["admin"],"summary":"List All Docker Containers","description":"List only Docker containers deployed by this app (from AssistantInstance records).","operationId":"list_all_docker_containers_admin_containers_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response List All Docker Containers Admin Containers Get"}}}}},"security":[{"HTTPBearer":[]}]}},"/admin/users/{user_id}":{"delete":{"tags":["admin"],"summary":"Delete User","description":"Delete a user, their owned accounts, and all related data.","operationId":"delete_user_admin_users__user_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"integer","title":"User Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Delete User Admin Users  User Id  Delete"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/users/{user_id}/password-reset":{"post":{"tags":["admin"],"summary":"Admin Trigger Password Reset","description":"Generate a password reset code for a user and email it to them.","operationId":"admin_trigger_password_reset_admin_users__user_id__password_reset_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"integer","title":"User Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Admin Trigger Password Reset Admin Users  User Id  Password Reset Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/settings":{"get":{"tags":["admin"],"summary":"Get Platform Settings","description":"Return current platform settings (secrets are masked).","operationId":"get_platform_settings_admin_settings_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Get Platform Settings Admin Settings Get"}}}}},"security":[{"HTTPBearer":[]}]},"put":{"tags":["admin"],"summary":"Update Platform Settings","description":"Update platform settings (writes to .env, takes effect on next restart).","operationId":"update_platform_settings_admin_settings_put","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Payload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Update Platform Settings Admin Settings Put"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/admin/a0-settings":{"get":{"tags":["admin"],"summary":"Get A0 Settings","description":"Proxy Agent Zero settings_get – returns full settings + additional metadata.","operationId":"get_a0_settings_admin_a0_settings_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Get A0 Settings Admin A0 Settings Get"}}}}},"security":[{"HTTPBearer":[]}]},"put":{"tags":["admin"],"summary":"Update A0 Settings","description":"Proxy Agent Zero settings_set – saves model/memory/speech config.","operationId":"update_a0_settings_admin_a0_settings_put","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Payload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Update A0 Settings Admin A0 Settings Put"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/admin/evolution-status":{"get":{"tags":["admin"],"summary":"Evolution Api Status","description":"Check whether the Evolution API container is running and reachable.","operationId":"evolution_api_status_admin_evolution_status_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Evolution Api Status Admin Evolution Status Get"}}}}},"security":[{"HTTPBearer":[]}]}},"/customer/account":{"get":{"tags":["customer"],"summary":"Get My Account","operationId":"get_my_account_customer_account_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AccountOut"}}}}},"security":[{"HTTPBearer":[]}]}},"/customer/ensure-instance":{"post":{"tags":["customer"],"summary":"Ensure Instance","description":"Return the customer's active assistant instance, provisioning one if needed.","operationId":"ensure_instance_customer_ensure_instance_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Ensure Instance Customer Ensure Instance Post"}}}}},"security":[{"HTTPBearer":[]}]}},"/customer/onboarding":{"get":{"tags":["customer"],"summary":"Get Onboarding","operationId":"get_onboarding_customer_onboarding_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OnboardingRequest"}}}}},"security":[{"HTTPBearer":[]}]},"put":{"tags":["customer"],"summary":"Upsert Onboarding","operationId":"upsert_onboarding_customer_onboarding_put","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OnboardingRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Upsert Onboarding Customer Onboarding Put"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/customer/communication":{"put":{"tags":["customer"],"summary":"Update Communication Channels","operationId":"update_communication_channels_customer_communication_put","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommunicationUpdateRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Update Communication Channels Customer Communication Put"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/customer/plans":{"get":{"tags":["customer"],"summary":"Plans","operationId":"plans_customer_plans_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/PlanOut"},"type":"array","title":"Response Plans Customer Plans Get"}}}}}}},"/customer/subscription":{"get":{"tags":["customer"],"summary":"Subscription","operationId":"subscription_customer_subscription_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SubscriptionOut"}}}}},"security":[{"HTTPBearer":[]}]}},"/customer/profiles/{profile}":{"get":{"tags":["customer"],"summary":"Profile Capabilities","operationId":"profile_capabilities_customer_profiles__profile__get","parameters":[{"name":"profile","in":"path","required":true,"schema":{"type":"string","title":"Profile"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Profile Capabilities Customer Profiles  Profile  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/customer/agent-setup":{"get":{"tags":["customer"],"summary":"Get Agent Setup","description":"Get agent setup status for the user's account.","operationId":"get_agent_setup_customer_agent_setup_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentSetupOut"}}}}},"security":[{"HTTPBearer":[]}]},"put":{"tags":["customer"],"summary":"Update Agent Setup","description":"Update agent setup (name, responses, mark complete).","operationId":"update_agent_setup_customer_agent_setup_put","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentSetupRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Update Agent Setup Customer Agent Setup Put"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/customer/agent-setup/questions":{"get":{"tags":["customer"],"summary":"Get Setup Questions Endpoint","description":"Get the question set for the user's account profile.","operationId":"get_setup_questions_endpoint_customer_agent_setup_questions_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Get Setup Questions Endpoint Customer Agent Setup Questions Get"}}}}},"security":[{"HTTPBearer":[]}]}},"/customer/skills":{"get":{"tags":["customer"],"summary":"Get Customer Skills","description":"Get skills configuration for the customer's account.","operationId":"get_customer_skills_customer_skills_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Get Customer Skills Customer Skills Get"}}}}},"security":[{"HTTPBearer":[]}]}},"/billing/config":{"get":{"tags":["billing"],"summary":"Billing Config","description":"Public billing config for the frontend (publishable key is safe to expose).","operationId":"billing_config_billing_config_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Billing Config Billing Config Get"}}}}}}},"/billing/services":{"get":{"tags":["billing"],"summary":"List Services","description":"Pricing for the available services + this customer's service subscriptions.","operationId":"list_services_billing_services_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response List Services Billing Services Get"}}}}},"security":[{"HTTPBearer":[]}]}},"/billing/services/subscribe":{"post":{"tags":["billing"],"summary":"Subscribe Service","description":"Start a Google Ads service subscription — either a free trial or a paid\nsubscription (which can be purchased multiple times, one per Google Ads account).","operationId":"subscribe_service_billing_services_subscribe_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ServiceSubscribeRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckoutSessionResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/billing/referral":{"get":{"tags":["billing"],"summary":"Referral Info","description":"Return the customer's referral code, share link and reward counts.","operationId":"referral_info_billing_referral_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Referral Info Billing Referral Get"}}}}},"security":[{"HTTPBearer":[]}]}},"/billing/referral/invite":{"post":{"tags":["billing"],"summary":"Referral Invite","description":"Email a friend the customer's referral link.","operationId":"referral_invite_billing_referral_invite_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReferralInviteRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Referral Invite Billing Referral Invite Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/billing/checkout-session":{"post":{"tags":["billing"],"summary":"Checkout Session","operationId":"checkout_session_billing_checkout_session_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckoutSessionRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckoutSessionResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/billing/subscribe":{"post":{"tags":["billing"],"summary":"Subscribe","description":"Start a Stripe Checkout for the flat monthly/yearly subscription.","operationId":"subscribe_billing_subscribe_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SubscribeRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckoutSessionResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/billing/status":{"get":{"tags":["billing"],"summary":"Subscription Status","description":"Trial/subscription status for the account (days left, whether they must subscribe).","operationId":"subscription_status_billing_status_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"account_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Account Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SubscriptionStatusOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/billing/usage":{"post":{"tags":["billing"],"summary":"Add Usage Record","operationId":"add_usage_record_billing_usage_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UsageRecordRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Add Usage Record Billing Usage Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/billing/usage-summary":{"get":{"tags":["billing"],"summary":"Usage Summary","operationId":"usage_summary_billing_usage_summary_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"account_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Account Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UsageSummary"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/billing/webhook":{"post":{"tags":["billing"],"summary":"Stripe Webhook","operationId":"stripe_webhook_billing_webhook_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Stripe Webhook Billing Webhook Post"}}}}}}},"/billing/usage-breakdown":{"get":{"tags":["billing"],"summary":"Usage Breakdown","description":"Get detailed usage breakdown by source and date.","operationId":"usage_breakdown_billing_usage_breakdown_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"days","in":"query","required":false,"schema":{"type":"integer","default":30,"title":"Days"}},{"name":"account_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Account Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Usage Breakdown Billing Usage Breakdown Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/assistants/launch":{"post":{"tags":["assistants"],"summary":"Launch Assistant","operationId":"launch_assistant_assistants_launch_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AssistantLaunchRequest"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AssistantInstanceOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/assistants/deploy-agent-zero":{"post":{"tags":["assistants"],"summary":"Deploy Agent Zero","operationId":"deploy_agent_zero_assistants_deploy_agent_zero_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AssistantLaunchRequest"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AssistantInstanceOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/assistants/instance/{assistant_instance_id}":{"get":{"tags":["assistants"],"summary":"Get Assistant Instance","operationId":"get_assistant_instance_assistants_instance__assistant_instance_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"assistant_instance_id","in":"path","required":true,"schema":{"type":"integer","title":"Assistant Instance Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AssistantInstanceOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/assistants/account/{account_id}":{"get":{"tags":["assistants"],"summary":"List Account Assistants","operationId":"list_account_assistants_assistants_account__account_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"account_id","in":"path","required":true,"schema":{"type":"integer","title":"Account Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/AssistantInstanceOut"},"title":"Response List Account Assistants Assistants Account  Account Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/assistants/account/{account_id}/wrapper-config":{"get":{"tags":["assistants"],"summary":"Get Account Wrapper Config","operationId":"get_account_wrapper_config_assistants_account__account_id__wrapper_config_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"account_id","in":"path","required":true,"schema":{"type":"integer","title":"Account Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WrapperConfigOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["assistants"],"summary":"Update Account Wrapper Config","operationId":"update_account_wrapper_config_assistants_account__account_id__wrapper_config_put","security":[{"HTTPBearer":[]}],"parameters":[{"name":"account_id","in":"path","required":true,"schema":{"type":"integer","title":"Account Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WrapperConfigUpdateRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WrapperConfigOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/assistants/security/baseline":{"get":{"tags":["assistants"],"summary":"Security Baseline","operationId":"security_baseline_assistants_security_baseline_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Security Baseline Assistants Security Baseline Get"}}}}}}},"/assistants/account/{account_id}/ai-config":{"get":{"tags":["assistants"],"summary":"Get Account Ai Config","description":"Get AI configuration for an account.","operationId":"get_account_ai_config_assistants_account__account_id__ai_config_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"account_id","in":"path","required":true,"schema":{"type":"integer","title":"Account Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AIConfigOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["assistants"],"summary":"Update Account Ai Config","description":"Update AI configuration for an account.","operationId":"update_account_ai_config_assistants_account__account_id__ai_config_put","security":[{"HTTPBearer":[]}],"parameters":[{"name":"account_id","in":"path","required":true,"schema":{"type":"integer","title":"Account Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AIConfigRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AIConfigOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/assistants/{instance_id}/chat":{"post":{"tags":["chat"],"summary":"Send Message","description":"Send a chat message to the assistant.","operationId":"send_message_assistants__instance_id__chat_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"instance_id","in":"path","required":true,"schema":{"type":"integer","title":"Instance Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChatMessageIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Send Message Assistants  Instance Id  Chat Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/assistants/{instance_id}/chat/history":{"get":{"tags":["chat"],"summary":"Get Chat History","description":"Get chat history for an instance.","operationId":"get_chat_history_assistants__instance_id__chat_history_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"instance_id","in":"path","required":true,"schema":{"type":"integer","title":"Instance Id"}},{"name":"conversation_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Conversation Id"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":50,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","additionalProperties":true},"title":"Response Get Chat History Assistants  Instance Id  Chat History Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/assistants/{instance_id}/chat/conversations":{"get":{"tags":["chat"],"summary":"List Conversations","description":"List all conversations for an instance.","operationId":"list_conversations_assistants__instance_id__chat_conversations_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"instance_id","in":"path","required":true,"schema":{"type":"integer","title":"Instance Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","additionalProperties":true},"title":"Response List Conversations Assistants  Instance Id  Chat Conversations Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/assistants/{instance_id}/files/upload":{"post":{"tags":["files"],"summary":"Upload File","description":"Upload a file to the assistant's file locker.","operationId":"upload_file_assistants__instance_id__files_upload_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"instance_id","in":"path","required":true,"schema":{"type":"integer","title":"Instance Id"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_upload_file_assistants__instance_id__files_upload_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Upload File Assistants  Instance Id  Files Upload Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/assistants/{instance_id}/files":{"get":{"tags":["files"],"summary":"List Files","description":"List all files in the file locker.","operationId":"list_files_assistants__instance_id__files_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"instance_id","in":"path","required":true,"schema":{"type":"integer","title":"Instance Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","additionalProperties":true},"title":"Response List Files Assistants  Instance Id  Files Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/assistants/{instance_id}/files/{file_id}/download":{"get":{"tags":["files"],"summary":"Download File","description":"Download a file from the file locker.","operationId":"download_file_assistants__instance_id__files__file_id__download_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"instance_id","in":"path","required":true,"schema":{"type":"integer","title":"Instance Id"}},{"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"}}}}}}},"/assistants/{instance_id}/files/{file_id}":{"delete":{"tags":["files"],"summary":"Delete File","description":"Delete a file from the file locker.","operationId":"delete_file_assistants__instance_id__files__file_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"instance_id","in":"path","required":true,"schema":{"type":"integer","title":"Instance Id"}},{"name":"file_id","in":"path","required":true,"schema":{"type":"integer","title":"File Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Delete File Assistants  Instance Id  Files  File Id  Delete"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/oauth/providers":{"get":{"tags":["oauth"],"summary":"List Providers","description":"Return which OAuth providers are configured and available.","operationId":"list_providers_oauth_providers_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response List Providers Oauth Providers Get"}}}}}}},"/oauth/{provider}/auth-url":{"get":{"tags":["oauth"],"summary":"Get Auth Url","description":"Return the OAuth authorization URL for a provider.\nThe frontend redirects the browser to this URL.","operationId":"get_auth_url_oauth__provider__auth_url_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"provider","in":"path","required":true,"schema":{"type":"string","title":"Provider"}},{"name":"scope","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"default":"email","title":"Scope"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Auth Url Oauth  Provider  Auth Url Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/oauth/{provider}/authorize":{"get":{"tags":["oauth"],"summary":"Authorize Oauth","description":"Initiate OAuth flow by redirecting the browser directly.","operationId":"authorize_oauth_oauth__provider__authorize_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"provider","in":"path","required":true,"schema":{"type":"string","title":"Provider"}},{"name":"scope","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Scope"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/oauth/{provider}/callback":{"get":{"tags":["oauth"],"summary":"Oauth Callback","description":"Handle the OAuth callback, exchange the code, store tokens.","operationId":"oauth_callback_oauth__provider__callback_get","parameters":[{"name":"provider","in":"path","required":true,"schema":{"type":"string","title":"Provider"}},{"name":"code","in":"query","required":false,"schema":{"type":"string","title":"Code"}},{"name":"state","in":"query","required":false,"schema":{"type":"string","title":"State"}},{"name":"error","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error"}},{"name":"error_description","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error Description"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/oauth/tokens":{"get":{"tags":["oauth"],"summary":"List Oauth Tokens","description":"List all OAuth tokens for the user's account.","operationId":"list_oauth_tokens_oauth_tokens_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response List Oauth Tokens Oauth Tokens Get"}}}}},"security":[{"HTTPBearer":[]}]}},"/oauth/tokens/{token_id}":{"delete":{"tags":["oauth"],"summary":"Revoke Oauth Token","description":"Revoke and delete an OAuth token.","operationId":"revoke_oauth_token_oauth_tokens__token_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"token_id","in":"path","required":true,"schema":{"type":"integer","title":"Token Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Revoke Oauth Token Oauth Tokens  Token Id  Delete"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/oauth/tokens/{token_id}/preferred":{"put":{"tags":["oauth"],"summary":"Set Preferred Token","description":"Mark a token as the preferred one for its provider.","operationId":"set_preferred_token_oauth_tokens__token_id__preferred_put","security":[{"HTTPBearer":[]}],"parameters":[{"name":"token_id","in":"path","required":true,"schema":{"type":"integer","title":"Token Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Set Preferred Token Oauth Tokens  Token Id  Preferred Put"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/whatsapp/mcp":{"get":{"tags":["whatsapp"],"summary":"Get Mcp Connection","description":"Return this account's MCP connection URL (for Claude/ChatGPT to connect).","operationId":"get_mcp_connection_whatsapp_mcp_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Get Mcp Connection Whatsapp Mcp Get"}}}}},"security":[{"HTTPBearer":[]}]}},"/whatsapp/mcp/legacy":{"put":{"tags":["whatsapp"],"summary":"Set Mcp Legacy","description":"Enable/disable the legacy token-in-URL access (off by default).","operationId":"set_mcp_legacy_whatsapp_mcp_legacy_put","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LegacyToggle"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Set Mcp Legacy Whatsapp Mcp Legacy Put"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/whatsapp/mcp/regenerate":{"post":{"tags":["whatsapp"],"summary":"Regenerate Mcp Token","description":"Rotate the legacy MCP token (invalidates the previous key-URL).","operationId":"regenerate_mcp_token_whatsapp_mcp_regenerate_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Regenerate Mcp Token Whatsapp Mcp Regenerate Post"}}}}},"security":[{"HTTPBearer":[]}]}},"/whatsapp/sync-groups":{"post":{"tags":["whatsapp"],"summary":"Sync Groups","description":"Refresh the account's WhatsApp group list (names) in the background.","operationId":"sync_groups_whatsapp_sync_groups_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Sync Groups Whatsapp Sync Groups Post"}}}}},"security":[{"HTTPBearer":[]}]}},"/whatsapp/connect":{"post":{"tags":["whatsapp"],"summary":"Connect Whatsapp","description":"Create a WhatsApp instance and return the QR code for pairing.","operationId":"connect_whatsapp_whatsapp_connect_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Connect Whatsapp Whatsapp Connect Post"}}}}},"security":[{"HTTPBearer":[]}]}},"/whatsapp/qrcode":{"get":{"tags":["whatsapp"],"summary":"Get Qrcode","description":"Get the current QR code (poll this until status is 'open').","operationId":"get_qrcode_whatsapp_qrcode_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Get Qrcode Whatsapp Qrcode Get"}}}}},"security":[{"HTTPBearer":[]}]}},"/whatsapp/status":{"get":{"tags":["whatsapp"],"summary":"Whatsapp Status","description":"Get WhatsApp connection status for the customer's account.","operationId":"whatsapp_status_whatsapp_status_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Whatsapp Status Whatsapp Status Get"}}}}},"security":[{"HTTPBearer":[]}]}},"/whatsapp/stats":{"get":{"tags":["whatsapp"],"summary":"Whatsapp Stats","description":"WhatsApp sync stats for the connection panel.\n\nReturns connection timing plus message/group/contact counts and a preview\nof the most recently synced message, so users can see the connector is\nalive and how much it has synced.","operationId":"whatsapp_stats_whatsapp_stats_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Whatsapp Stats Whatsapp Stats Get"}}}}},"security":[{"HTTPBearer":[]}]}},"/whatsapp/groups/resync":{"post":{"tags":["whatsapp"],"summary":"Resync Groups","description":"Manually refresh WhatsApp group names/metadata (used when groups show no name).","operationId":"resync_groups_whatsapp_groups_resync_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Resync Groups Whatsapp Groups Resync Post"}}}}},"security":[{"HTTPBearer":[]}]}},"/whatsapp/disconnect":{"post":{"tags":["whatsapp"],"summary":"Disconnect Whatsapp","description":"Disconnect and remove the WhatsApp instance.\n\nAlso wipes all stored WhatsApp messages for this account so the next\nconnection starts from a clean slate (no history from a prior device).","operationId":"disconnect_whatsapp_whatsapp_disconnect_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Disconnect Whatsapp Whatsapp Disconnect Post"}}}}},"security":[{"HTTPBearer":[]}]}},"/whatsapp/messages":{"get":{"tags":["whatsapp"],"summary":"List Messages","description":"Return recent WhatsApp messages stored for this account.\n\nThe agent uses this to know what messages the user has received\nwithout auto-replying to any of them.","operationId":"list_messages_whatsapp_messages_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":50,"title":"Limit"}},{"name":"unread_only","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Unread Only"}},{"name":"contact","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by phone number","title":"Contact"},"description":"Filter by phone number"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response List Messages Whatsapp Messages Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/whatsapp/send":{"post":{"tags":["whatsapp"],"summary":"Send Whatsapp Message","description":"Send a WhatsApp message on behalf of the user.\n\nThis is called when the user explicitly tells the agent to send a\nmessage (e.g. \"Reply to John on WhatsApp saying I'll be late\").\nThe agent must NEVER call this on its own without the user's instruction.","operationId":"send_whatsapp_message_whatsapp_send_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SendMessageRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Send Whatsapp Message Whatsapp Send Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/.well-known/mcp.json":{"get":{"tags":["mcp"],"summary":"Mcp Manifest","description":"Machine-readable descriptor so AI systems can discover and auto-configure\nthis MCP server (endpoint, auth discovery, setup steps and tools).","operationId":"mcp_manifest__well_known_mcp_json_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/mcp":{"get":{"tags":["mcp"],"summary":"Mcp Challenge","description":"GET on the MCP endpoint returns a 401 auth challenge (discovery).","operationId":"mcp_challenge_mcp_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}},"post":{"tags":["mcp"],"summary":"Mcp Oauth Endpoint","description":"OAuth-authenticated MCP endpoint (recommended). Requires a Bearer token.","operationId":"mcp_oauth_endpoint_mcp_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/mcp/{token}":{"post":{"tags":["mcp"],"summary":"Mcp Token Endpoint","description":"Legacy token-in-URL endpoint (for clients that can't do OAuth).","operationId":"mcp_token_endpoint_mcp__token__post","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"}}}}}}},"/.well-known/oauth-authorization-server/{rest}":{"get":{"tags":["mcp-oauth"],"summary":"As Metadata","operationId":"as_metadata__well_known_oauth_authorization_server__rest__get","parameters":[{"name":"rest","in":"path","required":true,"schema":{"type":"string","title":"Rest"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/.well-known/oauth-authorization-server":{"get":{"tags":["mcp-oauth"],"summary":"As Metadata","operationId":"as_metadata__well_known_oauth_authorization_server_get","parameters":[{"name":"rest","in":"query","required":false,"schema":{"type":"string","default":"","title":"Rest"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/.well-known/oauth-protected-resource/{rest}":{"get":{"tags":["mcp-oauth"],"summary":"Pr Metadata","operationId":"pr_metadata__well_known_oauth_protected_resource__rest__get","parameters":[{"name":"rest","in":"path","required":true,"schema":{"type":"string","title":"Rest"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/.well-known/oauth-protected-resource":{"get":{"tags":["mcp-oauth"],"summary":"Pr Metadata","operationId":"pr_metadata__well_known_oauth_protected_resource_get","parameters":[{"name":"rest","in":"query","required":false,"schema":{"type":"string","default":"","title":"Rest"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/oauth/register":{"post":{"tags":["mcp-oauth"],"summary":"Register Client","operationId":"register_client_oauth_register_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/oauth/authorize":{"get":{"tags":["mcp-oauth"],"summary":"Authorize Get","operationId":"authorize_get_oauth_authorize_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}},"post":{"tags":["mcp-oauth"],"summary":"Authorize Post","operationId":"authorize_post_oauth_authorize_post","requestBody":{"content":{"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/Body_authorize_post_oauth_authorize_post"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/oauth/token":{"post":{"tags":["mcp-oauth"],"summary":"Token","operationId":"token_oauth_token_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/google-ads/connect":{"get":{"tags":["google-ads"],"summary":"Connect","description":"Return the Google consent URL to start connecting Google Ads.","operationId":"connect_google_ads_connect_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Connect Google Ads Connect Get"}}}}},"security":[{"HTTPBearer":[]}]}},"/google-ads/callback":{"get":{"tags":["google-ads"],"summary":"Callback","description":"OAuth redirect target: exchange the code and store the refresh token.","operationId":"callback_google_ads_callback_get","parameters":[{"name":"state","in":"query","required":false,"schema":{"type":"string","default":"","title":"State"}},{"name":"code","in":"query","required":false,"schema":{"type":"string","default":"","title":"Code"}},{"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"}}}}}}},"/google-ads/status":{"get":{"tags":["google-ads"],"summary":"Status","description":"Connection status: whether Google is linked, accessible customer ids, and\neach subscription's linked customer + write flag.","operationId":"status_google_ads_status_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Status Google Ads Status Get"}}}}},"security":[{"HTTPBearer":[]}]}},"/google-ads/subscriptions/{sub_id}/link":{"post":{"tags":["google-ads"],"summary":"Link Subscription","description":"Link a Google Ads subscription to a specific Google Ads customer id.","operationId":"link_subscription_google_ads_subscriptions__sub_id__link_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"sub_id","in":"path","required":true,"schema":{"type":"integer","title":"Sub Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LinkRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Link Subscription Google Ads Subscriptions  Sub Id  Link Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/google-ads/subscriptions/{sub_id}/write":{"post":{"tags":["google-ads"],"summary":"Toggle Write","description":"Allow/deny the AI making changes (writes) for a linked subscription.","operationId":"toggle_write_google_ads_subscriptions__sub_id__write_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"sub_id","in":"path","required":true,"schema":{"type":"integer","title":"Sub Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WriteToggle"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Toggle Write Google Ads Subscriptions  Sub Id  Write Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/google-ads/disconnect":{"post":{"tags":["google-ads"],"summary":"Disconnect","description":"Remove the stored Google connection (subscriptions/links are kept).","operationId":"disconnect_google_ads_disconnect_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Disconnect Google Ads Disconnect Post"}}}}},"security":[{"HTTPBearer":[]}]}},"/ads/mcp":{"get":{"tags":["ads-mcp"],"summary":"Ads Mcp Challenge","operationId":"ads_mcp_challenge_ads_mcp_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}},"post":{"tags":["ads-mcp"],"summary":"Ads Mcp Endpoint","operationId":"ads_mcp_endpoint_ads_mcp_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/webhooks/whatsapp/evolution":{"post":{"tags":["whatsapp-webhook"],"summary":"Evolution Webhook","description":"Receive messages from Evolution API and store them (read via MCP tools).\n\nEvolution API v1 sends payloads like:\n{\n  \"event\": \"messages.upsert\",\n  \"instance\": \"wa-account-14\",\n  \"data\": {\n    \"key\": {\"remoteJid\": \"1234567890@s.whatsapp.net\", \"fromMe\": false, ...},\n    \"message\": {\"conversation\": \"Hello\"},\n    \"pushName\": \"John\",\n    ...\n  }\n}","operationId":"evolution_webhook_webhooks_whatsapp_evolution_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Evolution Webhook Webhooks Whatsapp Evolution Post"}}}}}}},"/portal/styles.css":{"get":{"summary":"Get Portal Css","description":"Serve portal CSS file.","operationId":"get_portal_css_portal_styles_css_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/portal/app.js":{"get":{"summary":"Get Portal App Js","description":"Serve portal app.js file.","operationId":"get_portal_app_js_portal_app_js_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/portal/customer-tabs.js":{"get":{"summary":"Get Portal Tabs Js","description":"Serve portal customer-tabs.js file.","operationId":"get_portal_tabs_js_portal_customer_tabs_js_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/portal/skills-dashboard.js":{"get":{"summary":"Get Portal Skills Js","description":"Serve portal skills-dashboard.js file.","operationId":"get_portal_skills_js_portal_skills_dashboard_js_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/portal/{file_path}":{"get":{"summary":"Get Portal File","description":"Serve other portal static files (images, fonts, etc.).","operationId":"get_portal_file_portal__file_path__get","parameters":[{"name":"file_path","in":"path","required":true,"schema":{"type":"string","title":"File Path"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}}},"components":{"schemas":{"AIConfigOut":{"properties":{"account_id":{"type":"integer","title":"Account Id"},"provider":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Provider"},"model":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Model"},"model_routing":{"additionalProperties":{"type":"string"},"type":"object","title":"Model Routing"},"api_keys_configured":{"items":{"type":"string"},"type":"array","title":"Api Keys Configured","description":"List of providers with API keys set"}},"type":"object","required":["account_id"],"title":"AIConfigOut","description":"AI configuration for an account."},"AIConfigRequest":{"properties":{"provider":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Provider","description":"AI provider: 'openai', 'anthropic', etc."},"model":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Model","description":"Default AI model: 'gpt-4', 'claude-3-opus', etc."},"model_routing":{"anyOf":[{"additionalProperties":{"type":"string"},"type":"object"},{"type":"null"}],"title":"Model Routing","description":"Task-to-model mapping: {'task': 'model'}"},"api_keys":{"anyOf":[{"additionalProperties":{"type":"string"},"type":"object"},{"type":"null"}],"title":"Api Keys","description":"API keys per provider: {'openai': 'sk-...', 'anthropic': 'sk-ant-...'}"}},"type":"object","title":"AIConfigRequest","description":"Request to update AI configuration for an account."},"AccountCreateByAdmin":{"properties":{"owner_user_id":{"type":"integer","title":"Owner User Id"},"name":{"type":"string","maxLength":255,"minLength":2,"title":"Name"},"plan_code":{"$ref":"#/components/schemas/PlanCode"},"assistant_profile":{"$ref":"#/components/schemas/AssistantProfile"}},"type":"object","required":["owner_user_id","name","plan_code","assistant_profile"],"title":"AccountCreateByAdmin"},"AccountOut":{"properties":{"id":{"type":"integer","title":"Id"},"name":{"type":"string","title":"Name"},"owner_user_id":{"type":"integer","title":"Owner User Id"},"plan_code":{"$ref":"#/components/schemas/PlanCode"},"assistant_profile":{"$ref":"#/components/schemas/AssistantProfile"},"job_description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Job Description"},"linkedin_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Linkedin Url"},"tools":{"items":{"type":"string"},"type":"array","title":"Tools"},"email_access_granted":{"type":"boolean","title":"Email Access Granted"},"communication_channels":{"additionalProperties":true,"type":"object","title":"Communication Channels"},"agent_zero_overrides":{"additionalProperties":true,"type":"object","title":"Agent Zero Overrides"},"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","name","owner_user_id","plan_code","assistant_profile","tools","email_access_granted","communication_channels","agent_zero_overrides","created_at","updated_at"],"title":"AccountOut"},"AccountUpdateByAdmin":{"properties":{"name":{"anyOf":[{"type":"string","maxLength":255,"minLength":2},{"type":"null"}],"title":"Name"},"plan_code":{"anyOf":[{"$ref":"#/components/schemas/PlanCode"},{"type":"null"}]},"assistant_profile":{"anyOf":[{"$ref":"#/components/schemas/AssistantProfile"},{"type":"null"}]},"email_access_granted":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Email Access Granted"},"is_active":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Active"}},"type":"object","title":"AccountUpdateByAdmin"},"AgentSetupOut":{"properties":{"account_id":{"type":"integer","title":"Account Id"},"agent_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Agent Name"},"setup_complete":{"type":"boolean","title":"Setup Complete"},"setup_responses":{"additionalProperties":true,"type":"object","title":"Setup Responses"}},"type":"object","required":["account_id","setup_complete"],"title":"AgentSetupOut"},"AgentSetupRequest":{"properties":{"agent_name":{"anyOf":[{"type":"string","maxLength":100,"minLength":1},{"type":"null"}],"title":"Agent Name"},"setup_responses":{"additionalProperties":true,"type":"object","title":"Setup Responses"},"question_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Question Id"},"answer":{"anyOf":[{},{"type":"null"}],"title":"Answer"}},"type":"object","title":"AgentSetupRequest"},"AssistantInstanceOut":{"properties":{"id":{"type":"integer","title":"Id"},"account_id":{"type":"integer","title":"Account Id"},"status":{"type":"string","title":"Status"},"container_image":{"type":"string","title":"Container Image"},"runtime_reference":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Runtime Reference"},"runtime_mode":{"type":"string","title":"Runtime Mode"},"cpu_limit":{"type":"number","title":"Cpu Limit"},"memory_mb_limit":{"type":"integer","title":"Memory Mb Limit"},"security_profile":{"additionalProperties":true,"type":"object","title":"Security Profile"},"wrapper_config_reference":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Wrapper Config Reference"},"wrapper_config":{"additionalProperties":true,"type":"object","title":"Wrapper Config"},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["id","account_id","status","container_image","runtime_reference","runtime_mode","cpu_limit","memory_mb_limit","security_profile","wrapper_config_reference","wrapper_config","created_at"],"title":"AssistantInstanceOut"},"AssistantLaunchRequest":{"properties":{"account_id":{"type":"integer","title":"Account Id"},"image":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Image"},"config_overrides":{"additionalProperties":true,"type":"object","title":"Config Overrides"}},"type":"object","required":["account_id"],"title":"AssistantLaunchRequest"},"AssistantProfile":{"type":"string","enum":["family","business","child_safety"],"title":"AssistantProfile","description":"Assistant profile types."},"Body_authorize_post_oauth_authorize_post":{"properties":{"email":{"type":"string","title":"Email"},"password":{"type":"string","title":"Password"},"client_id":{"type":"string","title":"Client Id"},"redirect_uri":{"type":"string","title":"Redirect Uri"},"state":{"type":"string","title":"State","default":""},"code_challenge":{"type":"string","title":"Code Challenge","default":""},"code_challenge_method":{"type":"string","title":"Code Challenge Method","default":""},"scope":{"type":"string","title":"Scope","default":""},"resource":{"type":"string","title":"Resource","default":""}},"type":"object","required":["email","password","client_id","redirect_uri"],"title":"Body_authorize_post_oauth_authorize_post"},"Body_upload_file_assistants__instance_id__files_upload_post":{"properties":{"file":{"type":"string","format":"binary","title":"File"}},"type":"object","required":["file"],"title":"Body_upload_file_assistants__instance_id__files_upload_post"},"ChangePasswordRequest":{"properties":{"current_password":{"type":"string","maxLength":128,"minLength":8,"title":"Current Password"},"new_password":{"type":"string","maxLength":128,"minLength":10,"title":"New Password"}},"type":"object","required":["current_password","new_password"],"title":"ChangePasswordRequest","description":"Change password for authenticated user."},"ChatMessageIn":{"properties":{"message":{"type":"string","maxLength":10000,"minLength":1,"title":"Message"},"conversation_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Conversation Id"}},"type":"object","required":["message"],"title":"ChatMessageIn","description":"Chat message from the user."},"CheckoutSessionRequest":{"properties":{"account_id":{"type":"integer","title":"Account Id"},"success_url":{"type":"string","title":"Success Url","default":"https://example.com/billing/success"},"cancel_url":{"type":"string","title":"Cancel Url","default":"https://example.com/billing/cancel"}},"type":"object","required":["account_id"],"title":"CheckoutSessionRequest"},"CheckoutSessionResponse":{"properties":{"checkout_url":{"type":"string","title":"Checkout Url"},"mode":{"type":"string","title":"Mode"},"using_mock":{"type":"boolean","title":"Using Mock","default":false}},"type":"object","required":["checkout_url","mode"],"title":"CheckoutSessionResponse"},"CommunicationUpdateRequest":{"properties":{"whatsapp_number":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Whatsapp Number"},"email_tag_address":{"anyOf":[{"type":"string","format":"email"},{"type":"null"}],"title":"Email Tag Address"},"voice_number":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Voice Number"}},"type":"object","title":"CommunicationUpdateRequest"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"LegacyToggle":{"properties":{"enabled":{"type":"boolean","title":"Enabled"}},"type":"object","required":["enabled"],"title":"LegacyToggle"},"LinkRequest":{"properties":{"customer_id":{"type":"string","title":"Customer Id"},"label":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Label"}},"type":"object","required":["customer_id"],"title":"LinkRequest"},"OnboardingRequest":{"properties":{"worker_job_description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Worker Job Description"},"linkedin_profile_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Linkedin Profile Url"},"tool_stack":{"items":{"type":"string"},"type":"array","title":"Tool Stack"},"family_priorities":{"items":{"type":"string"},"type":"array","title":"Family Priorities"},"school_sites":{"items":{"type":"string"},"type":"array","title":"School Sites"},"child_monitored_accounts":{"items":{"type":"string"},"type":"array","title":"Child Monitored Accounts"},"parent_escalation_email":{"anyOf":[{"type":"string","format":"email"},{"type":"null"}],"title":"Parent Escalation Email"},"allow_email_send":{"type":"boolean","title":"Allow Email Send","default":false},"allow_email_read_calendar":{"type":"boolean","title":"Allow Email Read Calendar","default":false},"communication_preferences":{"additionalProperties":true,"type":"object","title":"Communication Preferences"}},"type":"object","title":"OnboardingRequest"},"PasswordResetConfirm":{"properties":{"email":{"type":"string","format":"email","title":"Email"},"code":{"type":"string","maxLength":6,"minLength":6,"title":"Code"},"new_password":{"type":"string","maxLength":128,"minLength":10,"title":"New Password"}},"type":"object","required":["email","code","new_password"],"title":"PasswordResetConfirm"},"PasswordResetRequest":{"properties":{"email":{"type":"string","format":"email","title":"Email"}},"type":"object","required":["email"],"title":"PasswordResetRequest"},"PlanCode":{"type":"string","enum":["whatsapp","whatsapp_annual","business","enterprise"],"title":"PlanCode","description":"WhatsApp product plan codes (4 types)."},"PlanOut":{"properties":{"code":{"$ref":"#/components/schemas/PlanCode"},"monthly_price_cents":{"type":"integer","title":"Monthly Price Cents"},"usage_price_per_unit_cents":{"type":"integer","title":"Usage Price Per Unit Cents"},"name":{"type":"string","title":"Name"},"description":{"type":"string","title":"Description"}},"type":"object","required":["code","monthly_price_cents","usage_price_per_unit_cents","name","description"],"title":"PlanOut"},"ProfileUpdateRequest":{"properties":{"full_name":{"type":"string","maxLength":255,"minLength":2,"title":"Full Name"}},"type":"object","required":["full_name"],"title":"ProfileUpdateRequest"},"ReferralInviteRequest":{"properties":{"email":{"type":"string","format":"email","title":"Email"}},"type":"object","required":["email"],"title":"ReferralInviteRequest"},"RegisterRequest":{"properties":{"email":{"type":"string","format":"email","title":"Email"},"password":{"type":"string","maxLength":128,"minLength":10,"title":"Password"},"full_name":{"type":"string","maxLength":255,"minLength":2,"title":"Full Name"},"account_name":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}],"title":"Account Name"},"plan_code":{"anyOf":[{"$ref":"#/components/schemas/PlanCode"},{"type":"null"}]},"ref":{"anyOf":[{"type":"string","maxLength":32},{"type":"null"}],"title":"Ref"},"services":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Services"}},"type":"object","required":["email","password","full_name"],"title":"RegisterRequest"},"RoleEnum":{"type":"string","enum":["admin","customer"],"title":"RoleEnum","description":"User role types."},"SendMessageRequest":{"properties":{"to_number":{"type":"string","title":"To Number"},"text":{"type":"string","title":"Text"}},"type":"object","required":["to_number","text"],"title":"SendMessageRequest"},"ServiceSubAdminUpdate":{"properties":{"plan":{"type":"string","title":"Plan"}},"type":"object","required":["plan"],"title":"ServiceSubAdminUpdate"},"ServiceSubscribeRequest":{"properties":{"product":{"type":"string","title":"Product","default":"google_ads"},"interval":{"type":"string","title":"Interval","default":"month"},"label":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Label"},"trial":{"type":"boolean","title":"Trial","default":false},"customer_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Customer Id"}},"type":"object","title":"ServiceSubscribeRequest"},"SubscribeRequest":{"properties":{"account_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Account Id"},"interval":{"type":"string","title":"Interval","default":"year"},"success_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Success Url"},"cancel_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cancel Url"}},"type":"object","title":"SubscribeRequest"},"SubscriptionAdminUpdate":{"properties":{"status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"},"extend_days":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Extend Days"},"plan":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Plan"}},"type":"object","title":"SubscriptionAdminUpdate"},"SubscriptionOut":{"properties":{"id":{"type":"integer","title":"Id"},"account_id":{"type":"integer","title":"Account Id"},"monthly_price_cents":{"type":"integer","title":"Monthly Price Cents"},"usage_price_per_unit_cents":{"type":"integer","title":"Usage Price Per Unit Cents"},"status":{"$ref":"#/components/schemas/SubscriptionStatus"},"current_period_start":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Current Period Start"},"current_period_end":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Current Period End"}},"type":"object","required":["id","account_id","monthly_price_cents","usage_price_per_unit_cents","status","current_period_start","current_period_end"],"title":"SubscriptionOut"},"SubscriptionStatus":{"type":"string","enum":["active","canceled","past_due","trialing"],"title":"SubscriptionStatus","description":"Subscription status values."},"SubscriptionStatusOut":{"properties":{"status":{"type":"string","title":"Status"},"on_trial":{"type":"boolean","title":"On Trial"},"trial_days_left":{"type":"integer","title":"Trial Days Left"},"needs_subscription":{"type":"boolean","title":"Needs Subscription"},"current_period_end":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Current Period End"},"price_monthly_cents":{"type":"integer","title":"Price Monthly Cents"},"price_yearly_cents":{"type":"integer","title":"Price Yearly Cents"},"trial_days":{"type":"integer","title":"Trial Days"}},"type":"object","required":["status","on_trial","trial_days_left","needs_subscription","price_monthly_cents","price_yearly_cents","trial_days"],"title":"SubscriptionStatusOut"},"TokenResponse":{"properties":{"access_token":{"type":"string","title":"Access Token"},"token_type":{"type":"string","title":"Token Type","default":"bearer"},"expires_in_seconds":{"type":"integer","title":"Expires In Seconds"}},"type":"object","required":["access_token","expires_in_seconds"],"title":"TokenResponse"},"TwoFactorEnableRequest":{"properties":{},"type":"object","title":"TwoFactorEnableRequest","description":"Sent by authenticated user to enable 2FA."},"TwoFactorLoginRequest":{"properties":{"email":{"type":"string","format":"email","title":"Email"},"code":{"type":"string","maxLength":6,"minLength":6,"title":"Code"}},"type":"object","required":["email","code"],"title":"TwoFactorLoginRequest","description":"Login step 2: verify 2FA code after password check."},"TwoFactorVerifyRequest":{"properties":{"code":{"type":"string","maxLength":6,"minLength":6,"title":"Code"}},"type":"object","required":["code"],"title":"TwoFactorVerifyRequest","description":"Verify a 2FA code (used both for enabling and for login)."},"UsageRecordRequest":{"properties":{"account_id":{"type":"integer","title":"Account Id"},"units":{"type":"number","exclusiveMinimum":0.0,"title":"Units"},"unit_type":{"type":"string","maxLength":50,"minLength":2,"title":"Unit Type","default":"compute_minute"},"source":{"type":"string","maxLength":100,"minLength":2,"title":"Source","default":"assistant_execution"}},"type":"object","required":["account_id","units"],"title":"UsageRecordRequest"},"UsageSummary":{"properties":{"account_id":{"type":"integer","title":"Account Id"},"current_cycle_units":{"type":"number","title":"Current Cycle Units"},"usage_cost_cents":{"type":"integer","title":"Usage Cost Cents"},"fixed_monthly_cents":{"type":"integer","title":"Fixed Monthly Cents"},"projected_total_cents":{"type":"integer","title":"Projected Total Cents"}},"type":"object","required":["account_id","current_cycle_units","usage_cost_cents","fixed_monthly_cents","projected_total_cents"],"title":"UsageSummary"},"UserCreateByAdmin":{"properties":{"email":{"type":"string","format":"email","title":"Email"},"password":{"type":"string","maxLength":128,"minLength":10,"title":"Password"},"full_name":{"type":"string","maxLength":255,"minLength":2,"title":"Full Name"},"role":{"$ref":"#/components/schemas/RoleEnum","default":"customer"}},"type":"object","required":["email","password","full_name"],"title":"UserCreateByAdmin"},"UserLogin":{"properties":{"email":{"type":"string","format":"email","title":"Email"},"password":{"type":"string","maxLength":128,"minLength":8,"title":"Password"}},"type":"object","required":["email","password"],"title":"UserLogin"},"UserOut":{"properties":{"id":{"type":"integer","title":"Id"},"email":{"type":"string","format":"email","title":"Email"},"full_name":{"type":"string","title":"Full Name"},"role":{"$ref":"#/components/schemas/RoleEnum"},"is_active":{"type":"boolean","title":"Is Active"},"two_factor_enabled":{"type":"boolean","title":"Two Factor Enabled","default":false},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["id","email","full_name","role","is_active","created_at"],"title":"UserOut"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"},"input":{"title":"Input"},"ctx":{"type":"object","title":"Context"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"},"WrapperConfigOut":{"properties":{"account_id":{"type":"integer","title":"Account Id"},"source":{"type":"string","title":"Source"},"overrides":{"additionalProperties":true,"type":"object","title":"Overrides"},"config":{"additionalProperties":true,"type":"object","title":"Config"}},"type":"object","required":["account_id","source","overrides","config"],"title":"WrapperConfigOut"},"WrapperConfigUpdateRequest":{"properties":{"overrides":{"additionalProperties":true,"type":"object","title":"Overrides"}},"type":"object","title":"WrapperConfigUpdateRequest"},"WriteToggle":{"properties":{"write_enabled":{"type":"boolean","title":"Write Enabled"}},"type":"object","required":["write_enabled"],"title":"WriteToggle"}},"securitySchemes":{"HTTPBearer":{"type":"http","scheme":"bearer"}}}}