{"openapi":"3.1.0","info":{"title":"xPortfolios API","description":"Published portfolio targets, dated model results and clearly labelled retrospective reviews. Partner routes require a scoped Bearer key and record delivery receipts; acknowledgement means receipt, not trade execution. Entitled partners can download saved decisions as IBKR Rebalance CSV, an unsized BasketTrader review template, generic CSV or XLSX, individually or in a complete ZIP. Platform import verification is published in /platforms.json and /guides/ibkr/.","version":"1.0.0"},"paths":{"/api/health/live":{"get":{"summary":"Live","operationId":"live_api_health_live_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/health/ready":{"get":{"summary":"Ready","operationId":"ready_api_health_ready_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v1/delivery":{"get":{"summary":"Delivery Status","operationId":"delivery_status_api_v1_delivery_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v1/status":{"get":{"summary":"Operational Status","operationId":"operational_status_api_v1_status_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v1/demo":{"get":{"summary":"Demo","operationId":"demo_api_v1_demo_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v1/preview/portfolios":{"get":{"summary":"Catalogue","description":"Approved product identities and explicit empty states; no investment targets.","operationId":"catalogue_api_v1_preview_portfolios_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v1/preview/portfolios/{slug}":{"get":{"summary":"Portfolio","operationId":"portfolio_api_v1_preview_portfolios__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"}}}}}}},"/api/v1/portfolios":{"get":{"summary":"Public Catalogue","operationId":"public_catalogue_api_v1_portfolios_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v1/portfolios/{slug}":{"get":{"summary":"Public Portfolio","operationId":"public_portfolio_api_v1_portfolios__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"}}}}}}},"/api/v1/portfolios/{slug}/targets":{"get":{"summary":"Public Targets","operationId":"public_targets_api_v1_portfolios__slug__targets_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"}}}}}}},"/api/v1/portfolios/{slug}/history":{"get":{"summary":"Public History","operationId":"public_history_api_v1_portfolios__slug__history_get","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","title":"Slug"}},{"name":"after","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"After"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":50,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/portfolios/{slug}/performance":{"get":{"summary":"Public Performance","operationId":"public_performance_api_v1_portfolios__slug__performance_get","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","title":"Slug"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":1500,"minimum":1,"default":252,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/partner/portfolios":{"get":{"summary":"Partner Catalogue","operationId":"partner_catalogue_api_v1_partner_portfolios_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"PartnerKey":[]}]}},"/api/v1/partner/portfolios/{slug}":{"get":{"summary":"Partner Portfolio","operationId":"partner_portfolio_api_v1_partner_portfolios__slug__get","security":[{"PartnerKey":[]}],"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"}}}}}}},"/api/v1/partner/portfolios/{slug}/targets":{"get":{"summary":"Partner Targets","operationId":"partner_targets_api_v1_partner_portfolios__slug__targets_get","security":[{"PartnerKey":[]}],"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"}}}}}}},"/api/v1/partner/portfolios/{slug}/files/{format}":{"get":{"summary":"Partner File","description":"Download ibkr-rebalance, ibkr-basket (unsized review template), csv or xlsx.\n\nDefaults to the latest saved decision. Historical IDs and corrections remain\nseparately addressable; X-Superseded-By flags a historical decision replaced later.\nWeights apply to the entire account, group or model sleeve selected in the platform.","operationId":"partner_file_api_v1_partner_portfolios__slug__files__format__get","security":[{"PartnerKey":[]}],"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","title":"Slug"}},{"name":"format","in":"path","required":true,"schema":{"type":"string","title":"Format"}},{"name":"rebalance_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Rebalance Id"}}],"responses":{"200":{"description":"Saved decision file. X-Rebalance-ID remains stable across valuation updates. A download records receipt, not execution; importing/sizing orders remains the partner's responsibility.","content":{"text/csv":{"schema":{"type":"string","format":"binary"}},"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet":{"schema":{"type":"string","format":"binary"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/partner/files/{format}.zip":{"get":{"summary":"Partner Files Zip","description":"Download all entitled latest decisions. An unavailable file fails the complete ZIP.\n\nmanifest.json identifies every decision, correction, file hash and allocation basis.\nEvery member records the same idempotent receipt as an individual targets download.","operationId":"partner_files_zip_api_v1_partner_files__format__zip_get","security":[{"PartnerKey":[]}],"parameters":[{"name":"format","in":"path","required":true,"schema":{"type":"string","title":"Format"}}],"responses":{"200":{"description":"All entitled portfolios from one complete saved snapshot, with a decision manifest.","content":{"application/zip":{"schema":{"type":"string","format":"binary"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/partner/portfolios/{slug}/history":{"get":{"summary":"Partner History","operationId":"partner_history_api_v1_partner_portfolios__slug__history_get","security":[{"PartnerKey":[]}],"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","title":"Slug"}},{"name":"after","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"After"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":50,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/partner/portfolios/{slug}/performance":{"get":{"summary":"Partner Performance","operationId":"partner_performance_api_v1_partner_portfolios__slug__performance_get","security":[{"PartnerKey":[]}],"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","title":"Slug"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":1500,"minimum":1,"default":252,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/partner/portfolios/{slug}/acknowledgements/{rebalance_id}":{"post":{"summary":"Acknowledge","operationId":"acknowledge_api_v1_partner_portfolios__slug__acknowledgements__rebalance_id__post","security":[{"PartnerKey":[]}],"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","title":"Slug"}},{"name":"rebalance_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Rebalance Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/enquiries":{"post":{"summary":"Enquiry","operationId":"enquiry_api_v1_enquiries_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Enquiry"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/demo/availability":{"get":{"summary":"Demo Availability","operationId":"demo_availability_api_v1_demo_availability_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v1/demo/email":{"post":{"summary":"Email Demo","operationId":"email_demo_api_v1_demo_email_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EmailDemo"}}},"required":true},"responses":{"202":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/demo/message":{"post":{"summary":"Message Demo","operationId":"message_demo_api_v1_demo_message_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MessageDemo"}}},"required":true},"responses":{"202":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/demo/status":{"get":{"summary":"Demo Status","operationId":"demo_status_api_v1_demo_status_get","parameters":[{"name":"token","in":"query","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"}}}}}}},"/api/v1/demo/sample.csv":{"get":{"summary":"Sample Csv","operationId":"sample_csv_api_v1_demo_sample_csv_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v1/portal/login":{"post":{"summary":"Login","operationId":"login_api_v1_portal_login_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Login"}}},"required":true},"responses":{"202":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/portal/exchange":{"post":{"summary":"Exchange","operationId":"exchange_api_v1_portal_exchange_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Exchange"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/portal/logout":{"post":{"summary":"Logout","operationId":"logout_api_v1_portal_logout_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v1/portal/me":{"get":{"summary":"Me","operationId":"me_api_v1_portal_me_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v1/portal/logo.svg":{"get":{"summary":"Logo","operationId":"logo_api_v1_portal_logo_svg_get","responses":{"200":{"description":"Successful Response"}}}},"/api/v1/portal/portfolios":{"get":{"summary":"Portfolios","operationId":"portfolios_api_v1_portal_portfolios_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v1/portal/portfolios/{slug}":{"get":{"summary":"Portfolio","operationId":"portfolio_api_v1_portal_portfolios__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"}}}}}}},"/api/v1/portal/portfolios/{slug}/files/{format}":{"get":{"summary":"Portfolio File","operationId":"portfolio_file_api_v1_portal_portfolios__slug__files__format__get","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","title":"Slug"}},{"name":"format","in":"path","required":true,"schema":{"type":"string","title":"Format"}},{"name":"rebalance_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Rebalance Id"}}],"responses":{"200":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/portal/files/{format}.zip":{"get":{"summary":"All Files","operationId":"all_files_api_v1_portal_files__format__zip_get","parameters":[{"name":"format","in":"path","required":true,"schema":{"type":"string","title":"Format"}}],"responses":{"200":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/portal/portfolios/{slug}/{action}/{rebalance_id}":{"post":{"summary":"Reported Action","operationId":"reported_action_api_v1_portal_portfolios__slug___action___rebalance_id__post","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","title":"Slug"}},{"name":"action","in":"path","required":true,"schema":{"enum":["acknowledge","executed"],"type":"string","title":"Action"}},{"name":"rebalance_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Rebalance Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Action"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/portal/contacts":{"get":{"summary":"Team","operationId":"team_api_v1_portal_contacts_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}},"post":{"summary":"Change Contact","operationId":"change_contact_api_v1_portal_contacts_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContactChange"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/portal/status":{"get":{"summary":"Portal Status","operationId":"portal_status_api_v1_portal_status_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v1/partner/status":{"get":{"summary":"Partner Status","operationId":"partner_status_api_v1_partner_status_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"PartnerKey":[]}]}},"/api/v1/portal/demo/me":{"get":{"summary":"Me","operationId":"me_api_v1_portal_demo_me_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v1/portal/demo/logo.svg":{"get":{"summary":"Logo","operationId":"logo_api_v1_portal_demo_logo_svg_get","responses":{"200":{"description":"Successful Response"}}}},"/api/v1/portal/demo/portfolios":{"get":{"summary":"Portfolios","operationId":"portfolios_api_v1_portal_demo_portfolios_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v1/portal/demo/portfolios/{slug}":{"get":{"summary":"Portfolio","operationId":"portfolio_api_v1_portal_demo_portfolios__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"}}}}}}},"/api/v1/portal/demo/portfolios/{slug}/files/{format}":{"get":{"summary":"Sample File","operationId":"sample_file_api_v1_portal_demo_portfolios__slug__files__format__get","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","title":"Slug"}},{"name":"format","in":"path","required":true,"schema":{"type":"string","title":"Format"}}],"responses":{"200":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/portal/demo/status":{"get":{"summary":"Status","operationId":"status_api_v1_portal_demo_status_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}}},"components":{"schemas":{"Action":{"properties":{"note":{"type":"string","maxLength":1000,"title":"Note","default":""}},"additionalProperties":false,"type":"object","title":"Action"},"ChannelChange":{"properties":{"channel":{"type":"string","enum":["email","sms","whatsapp"],"title":"Channel"},"enabled":{"type":"boolean","title":"Enabled"},"evidence":{"type":"string","maxLength":500,"minLength":1,"title":"Evidence"},"reply_message_id":{"anyOf":[{"type":"string","maxLength":34},{"type":"null"}],"title":"Reply Message Id"},"opt_in_template_sid":{"anyOf":[{"type":"string","maxLength":34},{"type":"null"}],"title":"Opt In Template Sid"},"opted_in_at":{"anyOf":[{"type":"string","maxLength":40},{"type":"null"}],"title":"Opted In At"}},"additionalProperties":false,"type":"object","required":["channel","enabled","evidence"],"title":"ChannelChange"},"ContactChange":{"properties":{"contact_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Contact Id"},"name":{"anyOf":[{"type":"string","maxLength":120,"minLength":1},{"type":"null"}],"title":"Name"},"email":{"anyOf":[{"type":"string","maxLength":254,"pattern":"^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$"},{"type":"null"}],"title":"Email"},"phone":{"anyOf":[{"type":"string","maxLength":16,"pattern":"^\\+[1-9][0-9]{7,14}$"},{"type":"null"}],"title":"Phone"},"role":{"anyOf":[{"type":"string","enum":["staff","admin"]},{"type":"null"}],"title":"Role"},"portal_enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Portal Enabled"},"disabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Disabled"},"channels":{"items":{"$ref":"#/components/schemas/ChannelChange"},"type":"array","maxItems":3,"title":"Channels"}},"additionalProperties":false,"type":"object","title":"ContactChange"},"EmailDemo":{"properties":{"email":{"type":"string","maxLength":254,"minLength":5,"pattern":"^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$","title":"Email"},"consent":{"type":"boolean","title":"Consent","default":false},"company_website":{"type":"string","maxLength":254,"title":"Company Website","default":""}},"additionalProperties":false,"type":"object","required":["email"],"title":"EmailDemo"},"Enquiry":{"properties":{"name":{"type":"string","maxLength":120,"minLength":2,"title":"Name"},"email":{"type":"string","maxLength":254,"minLength":5,"pattern":"^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$","title":"Email"},"organization":{"type":"string","maxLength":180,"minLength":2,"title":"Organization"},"message":{"type":"string","maxLength":3000,"minLength":10,"title":"Message"},"client_type":{"type":"string","enum":["","Broker","Advisor","Robo-advisor","Other"],"title":"Client Type","default":""},"platform":{"type":"string","enum":["","IBKR","Saxo","Swissquote","EXANTE","Alpaca","GTN","Other","Not sure"],"title":"Platform","default":""},"country":{"type":"string","maxLength":100,"title":"Country","default":""},"phone":{"type":"string","maxLength":40,"pattern":"^[0-9+() .-]*$","title":"Phone","default":""},"department":{"type":"string","enum":["","Management","Business development","Trading & dealing","Technology & integration","Operations","Compliance","Other"],"title":"Department","default":""},"job_title":{"type":"string","maxLength":120,"title":"Job Title","default":""},"website":{"type":"string","maxLength":254,"pattern":"^(https?://[^\\s]+)?$","title":"Website","default":""},"integration_methods":{"items":{"type":"string","enum":["JSON","CSV","Webhooks","SFTP"]},"type":"array","maxItems":4,"title":"Integration Methods"}},"additionalProperties":false,"type":"object","required":["name","email","organization","message"],"title":"Enquiry"},"Exchange":{"properties":{"token":{"type":"string","maxLength":43,"pattern":"^[A-Za-z0-9_-]{43}$","title":"Token"}},"additionalProperties":false,"type":"object","required":["token"],"title":"Exchange"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"Login":{"properties":{"email":{"type":"string","maxLength":254,"minLength":5,"pattern":"^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$","title":"Email"},"company_website":{"type":"string","maxLength":254,"title":"Company Website","default":""}},"additionalProperties":false,"type":"object","required":["email"],"title":"Login"},"MessageDemo":{"properties":{"phone":{"type":"string","maxLength":16,"minLength":9,"pattern":"^\\+[1-9][0-9]{7,14}$","title":"Phone"},"channel":{"type":"string","enum":["sms","whatsapp"],"title":"Channel"},"consent":{"type":"boolean","title":"Consent","default":false},"company_website":{"type":"string","maxLength":254,"title":"Company Website","default":""}},"additionalProperties":false,"type":"object","required":["phone","channel"],"title":"MessageDemo"},"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"}},"securitySchemes":{"PartnerKey":{"type":"http","scheme":"bearer"}}}}