{"openapi":"3.1.0","info":{"title":"FastAPI","version":"0.1.0"},"paths":{"/simulate-doctor":{"post":{"summary":"Simulate Doctor","description":"Standalone endpoint: simulates an expert doctor reply for testing.\n\nCompletely independent of the autogen graph — takes the current chat\nhistory and scenario context, returns a plain-text doctor response\nthat the frontend can inject as a user message.","operationId":"simulate_doctor_simulate_doctor_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SimDoctorRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/leaderboard":{"post":{"summary":"Get Leaderboard","description":"Get the leaderboard for a specific challenge.\n\nArgs:\n    request (LeaderboardRequest): Contains challenge_id and challenge_month_label for which to fetch leaderboard\n\nReturns:\n    LeaderboardResponse: Contains challenge_id and challenge_month_label and leaderboard data if available,\n    or message indicating insufficient data if leaderboard isn't ready yet.\n\nRaises:\n    HTTPException: With appropriate status code for various error cases","operationId":"get_leaderboard_api_leaderboard_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LeaderboardRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LeaderboardResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/test-notification":{"post":{"summary":"Send Test Notification","description":"Send test notification to specific users for a given scenario.\nDoes NOT log communication_log (unlike regular notifications).\n\nArgs:\n    request (TestNotificationRequest): Contains scenario_id and list of user emails (max 5)\n\nReturns:\n    TestNotificationResponse: Contains status and message\n\nRaises:\n    HTTPException: With appropriate status code for various error cases","operationId":"send_test_notification_api_test_notification_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TestNotificationRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TestNotificationResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/test-email":{"post":{"summary":"Send Test Email Endpoint","description":"Send test email to specific users by email.\nDoes NOT log user communication (unlike regular emails).\n\nArgs:\n    request (TestEmailRequest): Contains either scenario_id or collection_id, and list of user emails (max 5)\n\nReturns:\n    TestEmailResponse: Contains status and message\n\nRaises:\n    HTTPException: With appropriate status code for various error cases","operationId":"send_test_email_endpoint_api_test_email_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TestEmailRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TestEmailResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/feed":{"post":{"summary":"Feed","operationId":"feed_feed_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Payload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/search":{"post":{"summary":"Search Endpoint","operationId":"search_endpoint_search_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/text-to-speech":{"post":{"summary":"Unified Text To Speech","description":"Unified text-to-speech endpoint supporting Gemini and ElevenLabs providers.\n\nProvider is automatically detected from model_id:\n- Models starting with \"gemini\" → Gemini\n- All others → ElevenLabs\n\nFor single speaker:\n- Provide: text, model_id, voice_id\n\nFor multi-speaker (Gemini only):\n- Provide: transcript, model_id, speakers list (each with voice_id and optional prompt)","operationId":"unified_text_to_speech_text_to_speech_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnifiedTTSRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/elevenlabs/pronunciation-dictionary":{"get":{"summary":"Get Elevenlabs Pronunciation Dictionary","description":"Return the ElevenLabs pronunciation dictionary without exposing the API key\nto browser clients.","operationId":"get_elevenlabs_pronunciation_dictionary_elevenlabs_pronunciation_dictionary_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/elevenlabs/pronunciation-dictionary/rules":{"post":{"summary":"Add Elevenlabs Pronunciation Rule","description":"Add or replace a phoneme rule in the ElevenLabs pronunciation dictionary.","operationId":"add_elevenlabs_pronunciation_rule_elevenlabs_pronunciation_dictionary_rules_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ElevenLabsPronunciationRuleRequest"}}},"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":[]}]}},"/elevenlabs/pronunciation-dictionary/rules/delete":{"post":{"summary":"Delete Elevenlabs Pronunciation Rule","description":"Remove a phoneme rule from the ElevenLabs pronunciation dictionary.","operationId":"delete_elevenlabs_pronunciation_rule_elevenlabs_pronunciation_dictionary_rules_delete_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ElevenLabsPronunciationDeleteRequest"}}},"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":[]}]}},"/elevenlabs/text-to-dialogue":{"post":{"summary":"Elevenlabs Text To Dialogue","description":"Generate ElevenLabs dialogue audio server-side so API credentials never reach\nthe browser.","operationId":"elevenlabs_text_to_dialogue_elevenlabs_text_to_dialogue_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ElevenLabsDialogueRequest"}}},"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":[]}]}},"/voices":{"get":{"summary":"Get Voices","description":"Get list of available voices.\n\nQuery parameters:\n- model_id: Optional model name to detect provider (e.g., \"gemini-2.5-flash-preview-tts\" or \"eleven_turbo_v2\")\n          If not provided, defaults to ElevenLabs\n\nReturns a unified response format with provider and voices list.","operationId":"get_voices_voices_get","parameters":[{"name":"model_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Model Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/list":{"post":{"summary":"Get List","description":"List entities with pagination, permission checks, and metadata.\n\nSupports all entity types from both the Flask backend and the FastAPI backend:\n- Content types (Scenario, Collection, Chat, ScenarioSession): rich path with\n  pagination, filters, sort, access-level enrichment, and default bookmark creation.\n- Legacy types (User, UserActivity, TeamMember, Team, Notification, Task,\n  Character, and others): simple fetch path mirroring Flask backend behaviour.\n\nArgs:\n    request: FastAPI request object (for compatibility with decorators).\n    payload: Request body.\n    user: Authenticated user data.\n\nReturns:\n    Dictionary with 'data' (list of entities), 'total_count', and optional 'next_page_token'.\n\nRaises:\n    HTTPException: For invalid requests (400) or access denied (403).","operationId":"get_list_list_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Get List List Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/override_registration":{"post":{"summary":"Override Registration","description":"Manually override a user's registration validation status.\nCalled by admins to set is_validated, is_manual_override.","operationId":"override_registration_override_registration_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OverrideRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"404":{"description":"Not found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/pronunciations":{"post":{"summary":"Create Pronunciation","description":"Create a new pronunciation dictionary entry.\n\nReturns:\n    Created pronunciation dictionary entry","operationId":"create_pronunciation_pronunciations_post","security":[{"HTTPBearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PronunciationCreateRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"summary":"List Pronunciations","description":"List pronunciation dictionary entries with pagination and sorting.\n\nQuery parameters:\n    locale: Filter by locale (\"en-GB\" or \"en-US\")\n    grapheme: Search for specific grapheme (case-insensitive)\n    limit: Maximum number of results (default: 50, max: 500)\n    page_token: Token for pagination (from previous response)\n    sort_order: Sort order - \"ASC\" or \"DESC\" (default: \"ASC\")\n\nReturns:\n    Dictionary with pronunciations list, next_page_token, and has_more","operationId":"list_pronunciations_pronunciations_get","parameters":[{"name":"locale","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Locale"}},{"name":"grapheme","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Grapheme"}},{"name":"limit","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":50,"title":"Limit"}},{"name":"page_token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Page Token"}},{"name":"sort_order","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"default":"ASC","title":"Sort Order"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/pronunciations/lookup":{"get":{"summary":"Lookup Pronunciation","description":"Lookup a pronunciation dictionary entry by grapheme and locale.\nIf the pronunciation exists, return it with exists=true.\nIf it doesn't exist, return exists=false and a suggested IPA.\n\nReturns:\n    PronunciationLookupResponse","operationId":"lookup_pronunciation_pronunciations_lookup_get","parameters":[{"name":"grapheme","in":"query","required":true,"schema":{"type":"string","title":"Grapheme"}},{"name":"locale","in":"query","required":false,"schema":{"type":"string","default":"en-GB","title":"Locale"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PronunciationLookupResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/pronunciations/{pronunciation_id}":{"put":{"summary":"Update Pronunciation","description":"Update an existing pronunciation dictionary entry.\n\nReturns:\n    Updated pronunciation dictionary entry","operationId":"update_pronunciation_pronunciations__pronunciation_id__put","security":[{"HTTPBearer":[]}],"parameters":[{"name":"pronunciation_id","in":"path","required":true,"schema":{"type":"string","title":"Pronunciation Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PronunciationUpdateRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"summary":"Delete Pronunciation","description":"Soft delete a pronunciation dictionary entry.\n\nReturns:\n    Success message","operationId":"delete_pronunciation_pronunciations__pronunciation_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"pronunciation_id","in":"path","required":true,"schema":{"type":"string","title":"Pronunciation Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/pronunciations/highlight":{"post":{"summary":"Highlight Words","description":"Find words in the provided text that exist in the pronunciation dictionary.\n\nThis endpoint checks which words from the input text are present in the\npronunciation dictionary (either in Redis cache or Firestore).\n\nArgs:\n    request: HighlightWordsRequest with text and locale\n    \nReturns:\n    HighlightWordsResponse with list of words that exist in dictionary","operationId":"highlight_words_pronunciations_highlight_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HighlightWordsRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HighlightWordsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/challenge/status":{"get":{"summary":"Get Challenge Status","description":"Get the current challenge status for the authenticated user.\nIf no challenge exists, checks eligibility for online-eligible challenges (onboarding, monthly)\nand creates one if eligible. Reengagement challenges are NOT created here (batch job only).\n\nReturns:\n    - If no challenge: { \"has_challenge\": false }\n    - If pending challenge: { \"has_challenge\": true, \"status\": \"pending\", \"challenge\": {...} }\n    - If active challenge: { \"has_challenge\": true, \"status\": \"active\", \"challenge\": {...}, \"progress\": {...} }\n    - If completed/expired: { \"has_challenge\": false } (or optionally include for history)","operationId":"get_challenge_status_api_challenge_status_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChallengeStatusResponse"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/challenge/accept":{"post":{"summary":"Accept Challenge","description":"Accept a pending challenge with selected reward.\n\nChanges challenge status from \"pending\" to \"active\" and sets:\n- selected_reward\n- reward_amount (from selected_reward)\n- reward_type (derived from selected_reward.tag)\n- start_timestamp = now\n- end_timestamp = now + time_window_days\n- accepted_timestamp = now\n\nArgs:\n    request: Contains selected_reward (id, title, tag, amount)\n\nReturns:\n    Updated challenge object with status \"active\"\n\nRaises:\n    HTTPException: 404 if no pending challenge, 400 if invalid reward, etc.","operationId":"accept_challenge_api_challenge_accept_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AcceptChallengeRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AcceptChallengeResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/aems/events/list":{"post":{"tags":["AEMS"],"summary":"List Aems Events","description":"List AEMS events with optional filters, sort, and pagination.\nUses POST for consistency with the generic list API.","operationId":"list_aems_events_aems_events_list_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AEMSListRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response List Aems Events Aems Events List Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/aems/events/{event_id}":{"patch":{"tags":["AEMS"],"summary":"Update Aems Event","description":"Update an AEMS event's reviewer fields only: confirmed_adverse, reviewer_notes.\nSets reviewer_id and reviewer_email from the current user and reviewedAt to now.","operationId":"update_aems_event_aems_events__event_id__patch","security":[{"HTTPBearer":[]}],"parameters":[{"name":"event_id","in":"path","required":true,"schema":{"type":"string","title":"Event Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AEMSUpdateRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Update Aems Event Aems Events  Event Id  Patch"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/user":{"post":{"summary":"Get User By Email","description":"Look up a user by email. Returns uid + email if found, empty object if not.","operationId":"get_user_by_email_api_user_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserLookupRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserLookupResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/email-verification/send":{"post":{"summary":"Send Verification Code","description":"Generate a 6-digit code, persist it in Firestore with an expiry, and email it.","operationId":"send_verification_code_api_email_verification_send_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SendVerificationCodeRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SendVerificationCodeResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/email-verification/verify":{"post":{"summary":"Verify Email Code","description":"Validate the submitted code against the stored one.","operationId":"verify_email_code_api_email_verification_verify_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VerifyCodeRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VerifyCodeResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/email-verification/update-email":{"post":{"summary":"Update Firebase Email","description":"Update the user's email in Firebase Auth via the Admin SDK.\nOnly succeeds if the OTP verification for this email was completed.","operationId":"update_firebase_email_api_email_verification_update_email_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateEmailRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateEmailResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/reviewers/decision":{"post":{"summary":"Submit Review Decision","description":"A reviewer's Approve or Request changes as one save: the reviewer chip, the content status, the review task\nand, once every reviewer has approved, the publish task. The author's email is queued only after that save\ncommits, and an approval is announced only when the whole module is approved.","operationId":"submit_review_decision_reviewers_decision_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReviewDecisionRequest"}}},"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":[]}]}},"/update":{"put":{"summary":"Update","operationId":"update_update_put","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateRequest"}}},"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":[]}]},"post":{"summary":"Update","operationId":"update_update_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateRequest"}}},"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":[]}]}},"/reviewers/scenario":{"post":{"summary":"Add Scenario Reviewer","operationId":"add_scenario_reviewer_reviewers_scenario_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScenarioReviewerAssignmentRequest"}}},"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":[]}]}},"/get-upload-url":{"post":{"summary":"Get Upload Url","description":"API to generate signed URL and return public URL","operationId":"get_upload_url_get_upload_url_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetUploadUrlRequest"}}},"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":[]}]}},"/make-file-public":{"post":{"summary":"Make File Public","description":"API to make a file public after upload","operationId":"make_file_public_make_file_public_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MakeFilePublicRequest"}}},"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":[]}]}},"/upload":{"put":{"summary":"Upload","operationId":"upload_upload_put","requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_upload_upload_put"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]},"post":{"summary":"Upload","operationId":"upload_upload_post","requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_upload_upload_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/process_resource":{"put":{"summary":"Process Resource","operationId":"process_resource_process_resource_put","requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_process_resource_process_resource_put"}}},"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":[]}]},"post":{"summary":"Process Resource","operationId":"process_resource_process_resource_post","requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_process_resource_process_resource_post"}}},"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":[]}]}},"/request_demo":{"put":{"summary":"Request Demo","operationId":"request_demo_request_demo_put","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RequestDemoPayload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"summary":"Request Demo","operationId":"request_demo_request_demo_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RequestDemoPayload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/get-audio/{chat_id}/{msg_id}":{"get":{"summary":"Get Audio","operationId":"get_audio_get_audio__chat_id___msg_id__get","parameters":[{"name":"chat_id","in":"path","required":true,"schema":{"type":"string","title":"Chat Id"}},{"name":"msg_id","in":"path","required":true,"schema":{"type":"string","title":"Msg Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/resource/{resource_id}":{"get":{"summary":"Get Resource","operationId":"get_resource_resource__resource_id__get","parameters":[{"name":"resource_id","in":"path","required":true,"schema":{"type":"string","title":"Resource Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/get_signin_link":{"post":{"summary":"Get Signin Link","operationId":"get_signin_link_get_signin_link_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SigninLinkPayload"}}},"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":[]}]}},"/search-users":{"get":{"summary":"Search Users","description":"Search users by email prefix (case-insensitive).\nRequires at least 3 characters in the query parameter.","operationId":"search_users_search_users_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"query","in":"query","required":false,"schema":{"type":"string","default":"","title":"Query"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/autogen":{"post":{"summary":"Autogen","operationId":"autogen_autogen_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AutogenRequest"}}},"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":[]}]}},"/llm_task":{"post":{"summary":"Llm Task","operationId":"llm_task_llm_task_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LLMTaskRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/fish-add-entry":{"post":{"summary":"Fish Add Entry","operationId":"fish_add_entry_fish_add_entry_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FishEntryRequest"}}},"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":[]}]}},"/fish-delete-entry":{"post":{"summary":"Fish Delete Entry","description":"DELETE an entry on FourteenFish for the given Praktiki user.","operationId":"fish_delete_entry_fish_delete_entry_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FishEntryRequest"}}},"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":[]}]}},"/delete":{"post":{"summary":"Delete","description":"Delete a document from Firestore collection.","operationId":"delete_delete_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeleteRequest"}}},"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":[]}]}},"/team/create":{"put":{"summary":"Team Create","operationId":"team_create_team_create_put","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TeamCreateRequest"}}},"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":[]}]},"post":{"summary":"Team Create","operationId":"team_create_team_create_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TeamCreateRequest"}}},"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":[]}]}},"/team/member/invite":{"put":{"summary":"Team Member Invite","operationId":"team_member_invite_team_member_invite_put","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TeamMemberInviteRequest"}}},"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":[]}]},"post":{"summary":"Team Member Invite","operationId":"team_member_invite_team_member_invite_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TeamMemberInviteRequest"}}},"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":[]}]}},"/team/member/update":{"put":{"summary":"Team Member Update","operationId":"team_member_update_team_member_update_put","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TeamMemberUpdateRequest"}}},"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":[]}]},"post":{"summary":"Team Member Update","operationId":"team_member_update_team_member_update_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TeamMemberUpdateRequest"}}},"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":[]}]}},"/team/member/join":{"put":{"summary":"Team Member Join","operationId":"team_member_join_team_member_join_put","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TeamMemberJoinRequest"}}},"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":[]}]},"post":{"summary":"Team Member Join","operationId":"team_member_join_team_member_join_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TeamMemberJoinRequest"}}},"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":[]}]}},"/team/member/delete":{"put":{"summary":"Team Member Delete","operationId":"team_member_delete_team_member_delete_put","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TeamMemberDeleteRequest"}}},"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":[]}]},"post":{"summary":"Team Member Delete","operationId":"team_member_delete_team_member_delete_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TeamMemberDeleteRequest"}}},"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":[]}]}},"/team/member/assign":{"put":{"summary":"Team Member Assign","operationId":"team_member_assign_team_member_assign_put","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TeamMemberAssignRequest"}}},"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":[]}]},"post":{"summary":"Team Member Assign","operationId":"team_member_assign_team_member_assign_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TeamMemberAssignRequest"}}},"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":[]}]}},"/team/v2/users/list":{"post":{"tags":["team-v2"],"summary":"List Team Users","description":"Return a paginated list of users with a non-empty email.\n\nResponse shape: ``{data: [...], total_count: int, next_page_token?: str}``","operationId":"list_team_users_team_v2_users_list_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TeamUsersListRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response List Team Users Team V2 Users List Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/team/v2/users/{user_uid}":{"get":{"tags":["team-v2"],"summary":"Get Team User","description":"Return full user detail for a single user by UID.","operationId":"get_team_user_team_v2_users__user_uid__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"user_uid","in":"path","required":true,"schema":{"type":"string","title":"User Uid"}},{"name":"team_id","in":"query","required":true,"schema":{"type":"string","minLength":1,"description":"Kept for API compatibility","title":"Team Id"},"description":"Kept for API compatibility"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Team User Team V2 Users  User Uid  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["team-v2"],"summary":"Patch Team User","description":"Update ``is_creator`` and/or the registration validation state.\n\n``mark_validated`` accepts ``true`` (validate) or ``false`` (invalidate); both set\n``is_manual_override=True`` and update ``validation_timestamp``.\nAt least one field must be supplied.\nReturns the updated user detail.","operationId":"patch_team_user_team_v2_users__user_uid__patch","security":[{"HTTPBearer":[]}],"parameters":[{"name":"user_uid","in":"path","required":true,"schema":{"type":"string","title":"User Uid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TeamUserUpdateRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Patch Team User Team V2 Users  User Uid  Patch"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/team/v2/users/search-by-email":{"post":{"tags":["team-v2"],"summary":"Search Team User By Email","description":"Exact email lookup for a user.\n\nEmail is normalized to lowercase.\nReturns full user detail, or 404 if no match is found.","operationId":"search_team_user_by_email_team_v2_users_search_by_email_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TeamUserEmailSearchRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Search Team User By Email Team V2 Users Search By Email Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/specialities":{"get":{"summary":"Get Specialities","operationId":"get_specialities_specialities_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/specialities/{speciality_id}/topics":{"get":{"summary":"Get Topics","operationId":"get_topics_specialities__speciality_id__topics_get","parameters":[{"name":"speciality_id","in":"path","required":true,"schema":{"type":"string","title":"Speciality Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/specialities/{speciality_id}/topics/{topic_id}/subtopics":{"get":{"summary":"Get Subtopics","operationId":"get_subtopics_specialities__speciality_id__topics__topic_id__subtopics_get","parameters":[{"name":"speciality_id","in":"path","required":true,"schema":{"type":"string","title":"Speciality Id"}},{"name":"topic_id","in":"path","required":true,"schema":{"type":"string","title":"Topic Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/specialities/{speciality_id}/topics/{topic_id}":{"put":{"summary":"Update Topic","operationId":"update_topic_specialities__speciality_id__topics__topic_id__put","security":[{"HTTPBearer":[]}],"parameters":[{"name":"speciality_id","in":"path","required":true,"schema":{"type":"string","title":"Speciality Id"}},{"name":"topic_id","in":"path","required":true,"schema":{"type":"string","title":"Topic Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpsertNameRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"summary":"Delete Topic","operationId":"delete_topic_specialities__speciality_id__topics__topic_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"speciality_id","in":"path","required":true,"schema":{"type":"string","title":"Speciality Id"}},{"name":"topic_id","in":"path","required":true,"schema":{"type":"string","title":"Topic Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/specialities/{speciality_id}/topics/{topic_id}/subtopics/{subtopic_id}":{"put":{"summary":"Update Subtopic","operationId":"update_subtopic_specialities__speciality_id__topics__topic_id__subtopics__subtopic_id__put","security":[{"HTTPBearer":[]}],"parameters":[{"name":"speciality_id","in":"path","required":true,"schema":{"type":"string","title":"Speciality Id"}},{"name":"topic_id","in":"path","required":true,"schema":{"type":"string","title":"Topic Id"}},{"name":"subtopic_id","in":"path","required":true,"schema":{"type":"string","title":"Subtopic Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpsertNameRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"summary":"Delete Subtopic","operationId":"delete_subtopic_specialities__speciality_id__topics__topic_id__subtopics__subtopic_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"speciality_id","in":"path","required":true,"schema":{"type":"string","title":"Speciality Id"}},{"name":"topic_id","in":"path","required":true,"schema":{"type":"string","title":"Topic Id"}},{"name":"subtopic_id","in":"path","required":true,"schema":{"type":"string","title":"Subtopic Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/metrics":{"post":{"summary":"Metrics","operationId":"metrics_metrics_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MetricsRequest"}}},"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":[]}]}},"/content/validate":{"post":{"tags":["Content Validation"],"summary":"Validate Entity","operationId":"validate_entity_content_validate_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidateRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationResult"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/content/validate/{category}":{"post":{"tags":["Content Validation"],"summary":"Validate Entity Category","operationId":"validate_entity_category_content_validate__category__post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"category","in":"path","required":true,"schema":{"type":"string","title":"Category"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidateRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationResult"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/content/validation/{entity_id}":{"get":{"tags":["Content Validation"],"summary":"Get Stored Validation","description":"Return the most-recently-persisted validation result for a Scenario.\n\nReturns:\n    { exists: false, validation: null, stale: false }   — if never validated\n    { exists: true,  validation: <doc>, stale: false }  — if found","operationId":"get_stored_validation_content_validation__entity_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"entity_id","in":"path","required":true,"schema":{"type":"string","title":"Entity Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/content/validation/dismiss-warning":{"post":{"tags":["Content Validation"],"summary":"Dismiss Validation Warning","operationId":"dismiss_validation_warning_content_validation_dismiss_warning_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DismissValidationWarningRequest"}}},"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":[]}]}},"/content/validate/{entity_type}/{entity_id}":{"get":{"tags":["Content Validation"],"summary":"Validate Entity By Id","operationId":"validate_entity_by_id_content_validate__entity_type___entity_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"entity_type","in":"path","required":true,"schema":{"type":"string","title":"Entity Type"}},{"name":"entity_id","in":"path","required":true,"schema":{"type":"string","title":"Entity Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationResult"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/microsite/module/review-link":{"post":{"tags":["microsite"],"summary":"Post Module Review Link","description":"The module's review code for `/m/{id}?key=`, created on the first request and reused after.","operationId":"post_module_review_link_microsite_module_review_link_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ModuleReviewLinkRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Post Module Review Link Microsite Module Review Link Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/microsite/module/{scenario_id}":{"get":{"tags":["microsite"],"summary":"Get Module For Review","description":"The latest draft of a module, with the player's fields only, for whoever holds its review code.\nA missing or wrong code is the same not found as a missing module.","operationId":"get_module_for_review_microsite_module__scenario_id__get","parameters":[{"name":"scenario_id","in":"path","required":true,"schema":{"type":"string","title":"Scenario Id"}},{"name":"key","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Module For Review Microsite Module  Scenario Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/microsite/by-slug/{slug}":{"get":{"tags":["microsite"],"summary":"Get Microsite By Slug","operationId":"get_microsite_by_slug_microsite_by_slug__slug__get","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","title":"Slug"}},{"name":"code","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Code"}},{"name":"review_access_code","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Review Access Code"}},{"name":"hcp_accepted","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Hcp Accepted"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Microsite By Slug Microsite By Slug  Slug  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/microsite/by-id/{microsite_id}":{"get":{"tags":["microsite"],"summary":"Get Microsite By Id","operationId":"get_microsite_by_id_microsite_by_id__microsite_id__get","parameters":[{"name":"microsite_id","in":"path","required":true,"schema":{"type":"string","title":"Microsite Id"}},{"name":"code","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Code"}},{"name":"review_access_code","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Review Access Code"}},{"name":"hcp_accepted","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Hcp Accepted"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Microsite By Id Microsite By Id  Microsite Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/microsite/publish":{"post":{"tags":["microsite"],"summary":"Post Microsite Publish","description":"Publish changes: copy the draft to the doctor-facing snapshot.","operationId":"post_microsite_publish_microsite_publish_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MicrositePublishRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Post Microsite Publish Microsite Publish Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/microsite/discard":{"post":{"tags":["microsite"],"summary":"Post Microsite Discard","description":"Discard: copy the published snapshot back over the draft. Status and ownership stay live.","operationId":"post_microsite_discard_microsite_discard_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MicrositePublishRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Post Microsite Discard Microsite Discard Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/microsite/gate-event":{"post":{"tags":["microsite"],"summary":"Post Microsite Gate Event","description":"Log microsite funnel events (gate, registration, series Up next). No auth required.","operationId":"post_microsite_gate_event_microsite_gate_event_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MicrositeGateEventRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Post Microsite Gate Event Microsite Gate Event Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/microsite/gate-event/beacon":{"post":{"tags":["microsite"],"summary":"Post Microsite Gate Event Beacon","description":"Same as /microsite/gate-event for `navigator.sendBeacon`, which sends the JSON as text/plain.\n\nLets the page record a decline while it is already leaving.","operationId":"post_microsite_gate_event_beacon_microsite_gate_event_beacon_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Post Microsite Gate Event Beacon Microsite Gate Event Beacon Post"}}}}}}},"/microsite/holding-notify":{"post":{"tags":["microsite"],"summary":"Post Microsite Holding Notify","description":"Store holding-page Notify me signups. No auth required.","operationId":"post_microsite_holding_notify_microsite_holding_notify_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MicrositeHoldingNotifyRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Post Microsite Holding Notify Microsite Holding Notify Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/microsite/registration":{"post":{"tags":["microsite"],"summary":"Post Microsite Registration","description":"Registration sheet: shown / skipped / completed. Only `completed` needs a valid id_token.","operationId":"post_microsite_registration_microsite_registration_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MicrositeRegistrationRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Post Microsite Registration Microsite Registration Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/microsite/claim-guest-sessions":{"post":{"tags":["microsite"],"summary":"Post Microsite Claim Guest Sessions","description":"Move a guest's microsite progress to the account the caller just signed in to (PRA-255 item 29).\n\nOwnership: the caller's own token proves the account, and `guest_id_token` (verified, anonymous,\nanother uid) proves the guest. The guest token expires after an hour, so send it right after sign-in.","operationId":"post_microsite_claim_guest_sessions_microsite_claim_guest_sessions_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MicrositeClaimGuestRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Post Microsite Claim Guest Sessions Microsite Claim Guest Sessions Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/health":{"get":{"summary":"Health","description":"Shallow liveness probe for uptime monitoring (no auth required).","operationId":"health_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}}},"components":{"schemas":{"AEMSListRequest":{"properties":{"limit":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Limit","default":20},"page_token":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Page Token"},"filters":{"anyOf":[{"items":{"$ref":"#/components/schemas/apis__endpoints__aems_apis__FilterOption"},"type":"array"},{"type":"null"}],"title":"Filters"},"sort":{"anyOf":[{"$ref":"#/components/schemas/apis__endpoints__aems_apis__SortOption"},{"type":"null"}]}},"type":"object","title":"AEMSListRequest","description":"Request payload for listing AEMS events with pagination."},"AEMSUpdateRequest":{"properties":{"confirmed_adverse":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Confirmed Adverse"},"reviewer_notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reviewer Notes"}},"type":"object","title":"AEMSUpdateRequest","description":"Request body for PATCH update of an AEMS event (reviewer fields only)."},"AcceptChallengeRequest":{"properties":{"selected_reward":{"$ref":"#/components/schemas/RewardChoice"}},"type":"object","required":["selected_reward"],"title":"AcceptChallengeRequest","description":"Request model for accepting a challenge."},"AcceptChallengeResponse":{"properties":{"success":{"type":"boolean","title":"Success"},"challenge":{"additionalProperties":true,"type":"object","title":"Challenge"},"message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Message"}},"type":"object","required":["success","challenge"],"title":"AcceptChallengeResponse","description":"Response model for accepting a challenge."},"AutogenRequest":{"properties":{"entity_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Entity Type"},"entity":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Entity"},"context":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Context","default":{}}},"type":"object","title":"AutogenRequest"},"Body_process_resource_process_resource_post":{"properties":{"name":{"type":"string","title":"Name"},"resource_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Resource Type"},"content":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Content"},"content_richtext":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Content Richtext"},"dst_folder":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Dst Folder"},"file":{"anyOf":[{"type":"string","contentMediaType":"application/octet-stream"},{"type":"null"}],"title":"File"},"file_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"File Type"},"uri":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Uri"}},"type":"object","required":["name"],"title":"Body_process_resource_process_resource_post"},"Body_process_resource_process_resource_put":{"properties":{"name":{"type":"string","title":"Name"},"resource_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Resource Type"},"content":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Content"},"content_richtext":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Content Richtext"},"dst_folder":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Dst Folder"},"file":{"anyOf":[{"type":"string","contentMediaType":"application/octet-stream"},{"type":"null"}],"title":"File"},"file_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"File Type"},"uri":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Uri"}},"type":"object","required":["name"],"title":"Body_process_resource_process_resource_put"},"Body_upload_upload_post":{"properties":{"file":{"anyOf":[{"type":"string","contentMediaType":"application/octet-stream"},{"type":"null"}],"title":"File"},"audio":{"anyOf":[{"type":"string","contentMediaType":"application/octet-stream"},{"type":"null"}],"title":"Audio"},"type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Type"},"dstFolder":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Dstfolder"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"}},"type":"object","title":"Body_upload_upload_post"},"Body_upload_upload_put":{"properties":{"file":{"anyOf":[{"type":"string","contentMediaType":"application/octet-stream"},{"type":"null"}],"title":"File"},"audio":{"anyOf":[{"type":"string","contentMediaType":"application/octet-stream"},{"type":"null"}],"title":"Audio"},"type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Type"},"dstFolder":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Dstfolder"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"}},"type":"object","title":"Body_upload_upload_put"},"CategoryResult":{"properties":{"category":{"type":"string","title":"Category"},"passed":{"type":"boolean","title":"Passed"},"issues":{"items":{"$ref":"#/components/schemas/ValidationIssue"},"type":"array","title":"Issues","default":[]},"dismissed_issues":{"items":{"$ref":"#/components/schemas/ValidationIssue"},"type":"array","title":"Dismissed Issues","default":[]},"groups":{"items":{"$ref":"#/components/schemas/CheckGroup"},"type":"array","title":"Groups","default":[]},"summary":{"additionalProperties":{"type":"integer"},"type":"object","title":"Summary","default":{"error":0,"warning":0,"unchecked":0,"passed":0,"total":0}}},"type":"object","required":["category","passed"],"title":"CategoryResult"},"ChallengeProgress":{"properties":{"completed":{"type":"integer","title":"Completed"},"target":{"type":"integer","title":"Target"},"days_remaining":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Days Remaining"},"percentage":{"type":"number","title":"Percentage"}},"type":"object","required":["completed","target","percentage"],"title":"ChallengeProgress","description":"Challenge progress model."},"ChallengeStatusResponse":{"properties":{"has_challenge":{"type":"boolean","title":"Has Challenge"},"status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"},"challenge":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Challenge"},"progress":{"anyOf":[{"$ref":"#/components/schemas/ChallengeProgress"},{"type":"null"}]}},"type":"object","required":["has_challenge"],"title":"ChallengeStatusResponse","description":"Response model for challenge status."},"CheckGroup":{"properties":{"key":{"type":"string","title":"Key"},"label":{"type":"string","title":"Label"},"status":{"type":"string","enum":["error","warning","unchecked","passed"],"title":"Status"},"counts":{"additionalProperties":{"type":"integer"},"type":"object","title":"Counts","default":{"error":0,"warning":0,"passed":0,"info":0}},"issues":{"items":{"$ref":"#/components/schemas/ValidationIssue"},"type":"array","title":"Issues","default":[]}},"type":"object","required":["key","label","status"],"title":"CheckGroup","description":"A logical sub-check inside a category (e.g. 'Spelling & grammar' inside 'llm').\n\n`status` is the worst severity for the group as a whole (this is what\ncontributes 1 to the parent category's per-status count).\n\n`counts` reports the number of *individual checks* (per-card / per-field)\nin each severity bucket — these are CHECK counts, not GROUP counts.\nUse `counts.passed` for \"33 cards ok\" style sub-labels and `status`\nfor the group's traffic-light."},"DeleteRequest":{"properties":{"id":{"type":"string","title":"Id"},"entity_type":{"type":"string","title":"Entity Type"}},"type":"object","required":["id","entity_type"],"title":"DeleteRequest"},"DismissValidationWarningRequest":{"properties":{"scenario_id":{"type":"string","title":"Scenario Id"},"category":{"type":"string","title":"Category"},"field":{"type":"string","title":"Field"},"card_id":{"type":"string","title":"Card Id","default":""},"message":{"type":"string","title":"Message","default":""},"severity":{"type":"string","enum":["warning","error"],"title":"Severity","default":"warning"}},"type":"object","required":["scenario_id","category","field"],"title":"DismissValidationWarningRequest"},"ElevenLabsDialogueRequest":{"properties":{"inputs":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Inputs"},"output_format":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Output Format","default":"mp3_44100_128"},"model_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Model Id","default":"eleven_v3"},"language_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Language Code"},"settings":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Settings"},"seed":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Seed"},"apply_text_normalization":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Apply Text Normalization","default":"auto"},"use_pronunciation_dictionary":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Use Pronunciation Dictionary","default":false}},"type":"object","required":["inputs"],"title":"ElevenLabsDialogueRequest"},"ElevenLabsPronunciationDeleteRequest":{"properties":{"grapheme":{"type":"string","title":"Grapheme"}},"type":"object","required":["grapheme"],"title":"ElevenLabsPronunciationDeleteRequest"},"ElevenLabsPronunciationRuleRequest":{"properties":{"grapheme":{"type":"string","title":"Grapheme"},"phoneme":{"type":"string","title":"Phoneme"}},"type":"object","required":["grapheme","phoneme"],"title":"ElevenLabsPronunciationRuleRequest"},"FishEntryRequest":{"properties":{"payload":{"additionalProperties":true,"type":"object","title":"Payload"},"user_id":{"type":"string","title":"User Id"},"user_api_key":{"type":"string","title":"User Api Key"}},"type":"object","required":["payload","user_id","user_api_key"],"title":"FishEntryRequest"},"GetUploadUrlRequest":{"properties":{"file_name":{"type":"string","title":"File Name"},"destination_folder":{"type":"string","title":"Destination Folder"},"content_type":{"type":"string","title":"Content Type"}},"type":"object","required":["file_name","destination_folder","content_type"],"title":"GetUploadUrlRequest"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"HighlightWordsRequest":{"properties":{"text":{"type":"string","title":"Text"},"locale":{"type":"string","title":"Locale","default":"en-GB"}},"type":"object","required":["text"],"title":"HighlightWordsRequest"},"HighlightWordsResponse":{"properties":{"words":{"items":{"type":"string"},"type":"array","title":"Words"},"locale":{"type":"string","title":"Locale"}},"type":"object","required":["words","locale"],"title":"HighlightWordsResponse"},"LLMTaskRequest":{"properties":{"task_type":{"type":"string","title":"Task Type"},"card":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Card"},"context":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Context","default":{}},"hosts":{"anyOf":[{"items":{},"type":"array"},{"type":"null"}],"title":"Hosts","default":[]},"scenario":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Scenario","default":{}},"entity":{"anyOf":[{},{"type":"null"}],"title":"Entity"}},"type":"object","required":["task_type"],"title":"LLMTaskRequest"},"LeaderboardEntry":{"properties":{"rank":{"type":"integer","title":"Rank"},"name":{"type":"string","title":"Name"},"profession":{"type":"string","title":"Profession"},"module_completed":{"type":"integer","title":"Module Completed"}},"type":"object","required":["rank","name","profession","module_completed"],"title":"LeaderboardEntry"},"LeaderboardRequest":{"properties":{"challenge_id":{"type":"string","title":"Challenge Id"},"challenge_month_label":{"type":"string","title":"Challenge Month Label"},"force_refresh":{"type":"boolean","title":"Force Refresh","default":false}},"type":"object","required":["challenge_id","challenge_month_label"],"title":"LeaderboardRequest"},"LeaderboardResponse":{"properties":{"challenge_id":{"type":"string","title":"Challenge Id"},"challenge_month_label":{"type":"string","title":"Challenge Month Label"},"leaderboard":{"items":{"$ref":"#/components/schemas/LeaderboardEntry"},"type":"array","title":"Leaderboard"},"status":{"type":"string","title":"Status","default":"success"},"message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Message"}},"type":"object","required":["challenge_id","challenge_month_label","leaderboard"],"title":"LeaderboardResponse"},"ListRequest":{"properties":{"entity_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Entity Type"},"id":{"anyOf":[{"type":"string"},{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Id"},"keys":{"anyOf":[{"type":"string"},{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Keys"},"field_paths":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Field Paths"},"access_mode":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Access Mode"},"limit":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Limit","default":20},"page_token":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Page Token"},"filters":{"anyOf":[{"items":{"$ref":"#/components/schemas/apis__endpoints__list_apis__FilterOption"},"type":"array"},{"type":"null"}],"title":"Filters"},"sort":{"anyOf":[{"$ref":"#/components/schemas/apis__endpoints__list_apis__SortOption"},{"type":"null"}]},"type":{"anyOf":[{"type":"string"},{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Type"},"date_range":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Date Range"},"topic_ids":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Topic Ids"},"team_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Team Id"},"assignee_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Assignee Id"},"scenario_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Scenario Id"},"is_session_completed":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Session Completed"}},"type":"object","title":"ListRequest","description":"Request payload for listing entities with optional pagination and filtering."},"MakeFilePublicRequest":{"properties":{"file_name":{"type":"string","title":"File Name"},"destination_folder":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Destination Folder"}},"type":"object","required":["file_name"],"title":"MakeFilePublicRequest"},"MetricsRequest":{"properties":{"metrics_type":{"type":"string","title":"Metrics Type"},"filter_by":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Filter By","default":{}},"record_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Record Count","default":-1},"group_by":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Group By","default":"user"}},"type":"object","required":["metrics_type"],"title":"MetricsRequest"},"MicrositeClaimGuestRequest":{"properties":{"guest_id_token":{"type":"string","title":"Guest Id Token"}},"type":"object","required":["guest_id_token"],"title":"MicrositeClaimGuestRequest"},"MicrositeGateEventRequest":{"properties":{"utm_source":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Utm Source"},"utm_medium":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Utm Medium"},"utm_campaign":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Utm Campaign"},"utm_content":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Utm Content"},"utm_term":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Utm Term"},"campaign_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Campaign Id"},"action":{"type":"string","title":"Action"},"slug":{"type":"string","title":"Slug"},"microsite_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Microsite Id"},"is_preview":{"type":"boolean","title":"Is Preview","default":false},"device_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Device Id"},"id_token":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Id Token"},"session_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Session Id"}},"type":"object","required":["action","slug"],"title":"MicrositeGateEventRequest"},"MicrositeHoldingNotifyRequest":{"properties":{"slug":{"type":"string","title":"Slug"},"full_name":{"type":"string","title":"Full Name"},"imc_number":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Imc Number"},"email":{"type":"string","title":"Email"},"mobile":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Mobile"},"microsite_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Microsite Id"}},"type":"object","required":["slug","full_name","email"],"title":"MicrositeHoldingNotifyRequest"},"MicrositePublishRequest":{"properties":{"id":{"type":"string","title":"Id"}},"type":"object","required":["id"],"title":"MicrositePublishRequest"},"MicrositeRegistrationRequest":{"properties":{"utm_source":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Utm Source"},"utm_medium":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Utm Medium"},"utm_campaign":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Utm Campaign"},"utm_content":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Utm Content"},"utm_term":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Utm Term"},"campaign_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Campaign Id"},"action":{"type":"string","title":"Action"},"slug":{"type":"string","title":"Slug"},"microsite_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Microsite Id"},"is_preview":{"type":"boolean","title":"Is Preview","default":false},"device_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Device Id"},"id_token":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Id Token"},"session_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Session Id"},"full_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Full Name"},"imc_number":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Imc Number"},"email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email"},"mobile":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Mobile"},"consent_1":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Consent 1"},"consent_2":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Consent 2"},"consent_3":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Consent 3"},"wording_version":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Wording Version"},"source":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source"},"wording_shown":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Wording Shown"},"profession":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Profession"},"profession_other":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Profession Other"},"speciality":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Speciality"},"speciality_other":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Speciality Other"},"terms_version":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Terms Version"},"terms_accepted_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Terms Accepted At"}},"type":"object","required":["action","slug"],"title":"MicrositeRegistrationRequest"},"ModuleReviewLinkRequest":{"properties":{"scenario_id":{"type":"string","title":"Scenario Id"}},"type":"object","required":["scenario_id"],"title":"ModuleReviewLinkRequest"},"OverrideRequest":{"properties":{"user_id":{"type":"string","title":"User Id"},"is_validated":{"type":"boolean","title":"Is Validated"}},"type":"object","required":["user_id","is_validated"],"title":"OverrideRequest"},"PronunciationCreateRequest":{"properties":{"grapheme":{"type":"string","title":"Grapheme"},"phoneme_ipa":{"type":"string","title":"Phoneme Ipa"},"locale":{"type":"string","title":"Locale"}},"type":"object","required":["grapheme","phoneme_ipa","locale"],"title":"PronunciationCreateRequest"},"PronunciationLookupResponse":{"properties":{"grapheme":{"type":"string","title":"Grapheme"},"locale":{"type":"string","title":"Locale"},"phoneme_ipa":{"type":"string","title":"Phoneme Ipa"},"exists":{"type":"boolean","title":"Exists"}},"type":"object","required":["grapheme","locale","phoneme_ipa","exists"],"title":"PronunciationLookupResponse"},"PronunciationUpdateRequest":{"properties":{"phoneme_ipa":{"type":"string","title":"Phoneme Ipa"},"locale":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Locale"}},"type":"object","required":["phoneme_ipa"],"title":"PronunciationUpdateRequest"},"RequestDemoPayload":{"properties":{"entity":{"additionalProperties":true,"type":"object","title":"Entity"},"entity_type":{"type":"string","title":"Entity Type"}},"type":"object","required":["entity","entity_type"],"title":"RequestDemoPayload"},"ReviewDecisionRequest":{"properties":{"scenario_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Scenario Id"},"collection_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Collection Id"},"decision":{"type":"string","enum":["approved","changes_requested"],"title":"Decision"}},"type":"object","required":["decision"],"title":"ReviewDecisionRequest"},"RewardChoice":{"properties":{"id":{"type":"integer","title":"Id"},"title":{"type":"string","title":"Title"},"tag":{"type":"string","title":"Tag"},"amount":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Amount"},"type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Type"}},"type":"object","required":["id","title","tag"],"title":"RewardChoice","description":"Reward choice model."},"ScenarioReviewerAssignmentRequest":{"properties":{"scenario_id":{"type":"string","title":"Scenario Id"},"reviewer":{"additionalProperties":true,"type":"object","title":"Reviewer"},"task_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Task Id","default":""}},"type":"object","required":["scenario_id","reviewer"],"title":"ScenarioReviewerAssignmentRequest"},"SendVerificationCodeRequest":{"properties":{"email":{"type":"string","title":"Email"},"purpose":{"type":"string","title":"Purpose","default":"registration"}},"type":"object","required":["email"],"title":"SendVerificationCodeRequest"},"SendVerificationCodeResponse":{"properties":{"status":{"type":"string","title":"Status"},"message":{"type":"string","title":"Message"}},"type":"object","required":["status","message"],"title":"SendVerificationCodeResponse"},"SigninLinkPayload":{"properties":{"email":{"type":"string","title":"Email"},"redirect_url":{"type":"string","title":"Redirect Url"}},"type":"object","required":["email","redirect_url"],"title":"SigninLinkPayload"},"SimDoctorRequest":{"properties":{"messages":{"items":{},"type":"array","title":"Messages"},"speciality":{"type":"string","title":"Speciality","default":"General Practice"},"tags":{"items":{},"type":"array","title":"Tags","default":[]},"resources":{"type":"string","title":"Resources","default":""},"content_type":{"type":"string","title":"Content Type","default":"case"}},"type":"object","required":["messages"],"title":"SimDoctorRequest"},"SpeakerConfig":{"properties":{"speaker_name":{"type":"string","title":"Speaker Name"},"voice_id":{"type":"string","title":"Voice Id"},"prompt":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Prompt"}},"type":"object","required":["speaker_name","voice_id"],"title":"SpeakerConfig"},"TeamCreateRequest":{"properties":{"entity":{"additionalProperties":true,"type":"object","title":"Entity"}},"type":"object","required":["entity"],"title":"TeamCreateRequest"},"TeamMemberAssignRequest":{"properties":{"tasks":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Tasks"}},"type":"object","required":["tasks"],"title":"TeamMemberAssignRequest"},"TeamMemberDeleteRequest":{"properties":{"team_id":{"type":"string","title":"Team Id"},"memberships":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Memberships"}},"type":"object","required":["team_id","memberships"],"title":"TeamMemberDeleteRequest"},"TeamMemberInviteRequest":{"properties":{"team_id":{"type":"string","title":"Team Id"},"team_name":{"type":"string","title":"Team Name"},"member_email":{"type":"string","title":"Member Email"},"member_name":{"type":"string","title":"Member Name"}},"type":"object","required":["team_id","team_name","member_email","member_name"],"title":"TeamMemberInviteRequest"},"TeamMemberJoinRequest":{"properties":{"team_id":{"type":"string","title":"Team Id"},"notification_id":{"type":"string","title":"Notification Id"},"rejected":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Rejected","default":false}},"type":"object","required":["team_id","notification_id"],"title":"TeamMemberJoinRequest"},"TeamMemberUpdateRequest":{"properties":{"team_membership":{"additionalProperties":true,"type":"object","title":"Team Membership"}},"type":"object","required":["team_membership"],"title":"TeamMemberUpdateRequest"},"TeamUserEmailSearchRequest":{"properties":{"team_id":{"type":"string","minLength":1,"title":"Team Id"},"email":{"type":"string","minLength":1,"title":"Email"}},"type":"object","required":["team_id","email"],"title":"TeamUserEmailSearchRequest","description":"Exact email lookup for a user."},"TeamUserUpdateRequest":{"properties":{"team_id":{"type":"string","minLength":1,"title":"Team Id"},"is_creator":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Creator"},"mark_validated":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Mark Validated","description":"True = mark registration as validated (manual override). False = mark registration as not validated (manual override). Either value sets is_manual_override=True and updates validation_timestamp."}},"type":"object","required":["team_id"],"title":"TeamUserUpdateRequest","description":"Admin update: change is_creator flag and/or manually mark registration validated."},"TeamUsersListRequest":{"properties":{"team_id":{"type":"string","minLength":1,"title":"Team Id","description":"Kept for API compatibility"},"limit":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Limit","description":"Page size (1–100)","default":20},"page_token":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Page Token"}},"type":"object","required":["team_id"],"title":"TeamUsersListRequest","description":"Paginated list of users with a non-empty email."},"TestEmailRequest":{"properties":{"scenario_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Scenario Id"},"collection_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Collection Id"},"user_emails":{"items":{"type":"string"},"type":"array","title":"User Emails"}},"type":"object","required":["user_emails"],"title":"TestEmailRequest"},"TestEmailResponse":{"properties":{"status":{"type":"string","title":"Status"},"message":{"type":"string","title":"Message"}},"type":"object","required":["status","message"],"title":"TestEmailResponse"},"TestNotificationRequest":{"properties":{"scenario_id":{"type":"string","title":"Scenario Id"},"user_emails":{"items":{"type":"string"},"type":"array","title":"User Emails"}},"type":"object","required":["scenario_id","user_emails"],"title":"TestNotificationRequest"},"TestNotificationResponse":{"properties":{"status":{"type":"string","title":"Status"},"message":{"type":"string","title":"Message"}},"type":"object","required":["status","message"],"title":"TestNotificationResponse"},"UnifiedTTSRequest":{"properties":{"text":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Text"},"transcript":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Transcript"},"model_id":{"type":"string","title":"Model Id"},"voice_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Voice Id"},"grapheme":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Grapheme"},"phoneme_ipa":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Phoneme Ipa"},"speakers":{"anyOf":[{"items":{"$ref":"#/components/schemas/SpeakerConfig"},"type":"array"},{"type":"null"}],"title":"Speakers"},"temperature":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Temperature","default":1.0},"use_pronunciation_dictionary":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Use Pronunciation Dictionary","default":false},"locale":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Locale","default":"en-GB"}},"type":"object","required":["model_id"],"title":"UnifiedTTSRequest"},"UpdateEmailRequest":{"properties":{"email":{"type":"string","title":"Email"},"purpose":{"type":"string","title":"Purpose","default":"email_change"}},"type":"object","required":["email"],"title":"UpdateEmailRequest"},"UpdateEmailResponse":{"properties":{"status":{"type":"string","title":"Status"},"message":{"type":"string","title":"Message"}},"type":"object","required":["status","message"],"title":"UpdateEmailResponse"},"UpdateRequest":{"properties":{"entity":{"additionalProperties":true,"type":"object","title":"Entity"},"entity_type":{"type":"string","title":"Entity Type"},"force_version_overwrite":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Force Version Overwrite","default":false},"remove_from_inactive_email":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Remove From Inactive Email","default":false},"initiate_onboarding_email":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Initiate Onboarding Email","default":false}},"type":"object","required":["entity","entity_type"],"title":"UpdateRequest"},"UpsertNameRequest":{"properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"}},"type":"object","title":"UpsertNameRequest"},"UserLookupRequest":{"properties":{"email":{"type":"string","title":"Email"}},"type":"object","required":["email"],"title":"UserLookupRequest"},"UserLookupResponse":{"properties":{"uid":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Uid"},"email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email"}},"type":"object","title":"UserLookupResponse"},"ValidateRequest":{"properties":{"entity":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Entity"},"entity_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Entity Id"},"entity_type":{"type":"string","enum":["Scenario","Collection","Microsite"],"title":"Entity Type"},"categories":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Categories"}},"type":"object","required":["entity_type"],"title":"ValidateRequest"},"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"},"ValidationIssue":{"properties":{"category":{"type":"string","title":"Category"},"field":{"type":"string","title":"Field"},"severity":{"type":"string","enum":["error","warning","info","passed"],"title":"Severity"},"message":{"type":"string","title":"Message"},"card_index":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Card Index"},"card_title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Card Title"},"card_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Card Id"},"dismissed":{"type":"boolean","title":"Dismissed","default":false},"dismissed_by_uid":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Dismissed By Uid"},"dismissed_by_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Dismissed By Name"},"dismissed_at":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Dismissed At"}},"type":"object","required":["category","field","severity","message"],"title":"ValidationIssue"},"ValidationResult":{"properties":{"entity_id":{"type":"string","title":"Entity Id"},"entity_type":{"type":"string","title":"Entity Type"},"timestamp":{"type":"number","title":"Timestamp"},"overall_passed":{"type":"boolean","title":"Overall Passed"},"categories":{"items":{"$ref":"#/components/schemas/CategoryResult"},"type":"array","title":"Categories","default":[]},"summary":{"additionalProperties":{"type":"integer"},"type":"object","title":"Summary","default":{"error":0,"warning":0,"unchecked":0,"passed":0,"total":0}}},"type":"object","required":["entity_id","entity_type","timestamp","overall_passed"],"title":"ValidationResult"},"VerifyCodeRequest":{"properties":{"email":{"type":"string","title":"Email"},"code":{"type":"string","title":"Code"},"purpose":{"type":"string","title":"Purpose","default":"registration"}},"type":"object","required":["email","code"],"title":"VerifyCodeRequest"},"VerifyCodeResponse":{"properties":{"status":{"type":"string","title":"Status"},"message":{"type":"string","title":"Message"},"verified":{"type":"boolean","title":"Verified"}},"type":"object","required":["status","message","verified"],"title":"VerifyCodeResponse"},"apis__endpoints__aems_apis__FilterOption":{"properties":{"key":{"type":"string","title":"Key"},"value":{"title":"Value"},"op_string":{"type":"string","title":"Op String","default":"=="}},"type":"object","required":["key","value"],"title":"FilterOption","description":"One equality filter of the AE queue (PRA-260 #27): see FILTER_VALUES."},"apis__endpoints__aems_apis__SortOption":{"properties":{"field_path":{"type":"string","title":"Field Path"},"direction":{"type":"string","title":"Direction","default":"DESC"}},"type":"object","required":["field_path"],"title":"SortOption","description":"Sort option for AEMS event listing."},"apis__endpoints__list_apis__FilterOption":{"properties":{"key":{"type":"string","title":"Key"},"value":{"title":"Value"},"op_string":{"type":"string","title":"Op String","default":"=="}},"type":"object","required":["key","value"],"title":"FilterOption","description":"Filter option for content filtering."},"apis__endpoints__list_apis__SortOption":{"properties":{"field_path":{"type":"string","title":"Field Path"},"direction":{"type":"string","title":"Direction","default":"ASC"}},"type":"object","required":["field_path"],"title":"SortOption","description":"Sort option for content sorting."}},"securitySchemes":{"HTTPBearer":{"type":"http","scheme":"bearer"}}}}