{"openapi":"3.1.0","info":{"title":"AI Virtual Assistant MVP","description":"[x-app-py] `/home/admin/ai_virtual_assistant/app.py`\n\n[x-project-fingerprint] `ai_virtual-assistant-cursor-en-title-20260428`\n\n[revision] `20260428-openapi-meta-stamp`","version":"0.1.0","x-ai-virtual-assistant-app-py":"/home/admin/ai_virtual_assistant/app.py","x-ai-virtual-assistant-fingerprint":"ai_virtual-assistant-cursor-en-title-20260428"},"paths":{"/api/partner/v1/health":{"get":{"tags":["partner-v1"],"summary":"Partner V1 Health","operationId":"partner_v1_health_api_partner_v1_health_get","parameters":[{"name":"X-Partner-ID","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Partner-Id"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Partner V1 Health Api Partner V1 Health Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/partner/v1/users/{partner_user_id}":{"get":{"tags":["partner-v1"],"summary":"Get User","operationId":"get_user_api_partner_v1_users__partner_user_id__get","parameters":[{"name":"partner_user_id","in":"path","required":true,"schema":{"type":"string","title":"Partner User Id"}},{"name":"X-Partner-ID","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Partner-Id"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get User Api Partner V1 Users  Partner User Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["partner-v1"],"summary":"Put User","operationId":"put_user_api_partner_v1_users__partner_user_id__put","parameters":[{"name":"partner_user_id","in":"path","required":true,"schema":{"type":"string","title":"Partner User Id"}},{"name":"X-Partner-ID","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Partner-Id"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserPutBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Put User Api Partner V1 Users  Partner User Id  Put"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/partner/v1/users/{partner_user_id}/characters":{"get":{"tags":["partner-v1"],"summary":"List User Characters","operationId":"list_user_characters_api_partner_v1_users__partner_user_id__characters_get","parameters":[{"name":"partner_user_id","in":"path","required":true,"schema":{"type":"string","title":"Partner User Id"}},{"name":"include_deleted","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Include Deleted"}},{"name":"include","in":"query","required":false,"schema":{"type":"string","description":"comma: snapshot,profile,relationship","default":"","title":"Include"},"description":"comma: snapshot,profile,relationship"},{"name":"X-Partner-ID","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Partner-Id"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response List User Characters Api Partner V1 Users  Partner User Id  Characters Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["partner-v1"],"summary":"Create Character","operationId":"create_character_api_partner_v1_users__partner_user_id__characters_post","parameters":[{"name":"partner_user_id","in":"path","required":true,"schema":{"type":"string","title":"Partner User Id"}},{"name":"X-Partner-ID","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Partner-Id"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CharacterCreateBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Create Character Api Partner V1 Users  Partner User Id  Characters Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/partner/v1/characters/{ava_character_id}":{"get":{"tags":["partner-v1"],"summary":"Get Character","operationId":"get_character_api_partner_v1_characters__ava_character_id__get","parameters":[{"name":"ava_character_id","in":"path","required":true,"schema":{"type":"string","title":"Ava Character Id"}},{"name":"include","in":"query","required":false,"schema":{"type":"string","default":"","title":"Include"}},{"name":"X-Partner-ID","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Partner-Id"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Character Api Partner V1 Characters  Ava Character Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["partner-v1"],"summary":"Patch Character","operationId":"patch_character_api_partner_v1_characters__ava_character_id__patch","parameters":[{"name":"ava_character_id","in":"path","required":true,"schema":{"type":"string","title":"Ava Character Id"}},{"name":"X-Partner-ID","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Partner-Id"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CharacterPatchBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Patch Character Api Partner V1 Characters  Ava Character Id  Patch"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["partner-v1"],"summary":"Delete Character","operationId":"delete_character_api_partner_v1_characters__ava_character_id__delete","parameters":[{"name":"ava_character_id","in":"path","required":true,"schema":{"type":"string","title":"Ava Character Id"}},{"name":"X-Partner-ID","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Partner-Id"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Delete Character Api Partner V1 Characters  Ava Character Id  Delete"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/partner/v1/users/{partner_user_id}/drafts/companion":{"get":{"tags":["partner-v1"],"summary":"Get Draft","operationId":"get_draft_api_partner_v1_users__partner_user_id__drafts_companion_get","parameters":[{"name":"partner_user_id","in":"path","required":true,"schema":{"type":"string","title":"Partner User Id"}},{"name":"X-Partner-ID","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Partner-Id"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Draft Api Partner V1 Users  Partner User Id  Drafts Companion Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["partner-v1"],"summary":"Put Draft","operationId":"put_draft_api_partner_v1_users__partner_user_id__drafts_companion_put","parameters":[{"name":"partner_user_id","in":"path","required":true,"schema":{"type":"string","title":"Partner User Id"}},{"name":"X-Partner-ID","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Partner-Id"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DraftPutBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Put Draft Api Partner V1 Users  Partner User Id  Drafts Companion Put"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["partner-v1"],"summary":"Delete Draft","operationId":"delete_draft_api_partner_v1_users__partner_user_id__drafts_companion_delete","parameters":[{"name":"partner_user_id","in":"path","required":true,"schema":{"type":"string","title":"Partner User Id"}},{"name":"X-Partner-ID","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Partner-Id"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Delete Draft Api Partner V1 Users  Partner User Id  Drafts Companion Delete"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/partner/v1/users/{partner_user_id}/chats":{"get":{"tags":["partner-v1"],"summary":"List Chats","operationId":"list_chats_api_partner_v1_users__partner_user_id__chats_get","parameters":[{"name":"partner_user_id","in":"path","required":true,"schema":{"type":"string","title":"Partner User Id"}},{"name":"ava_character_id","in":"query","required":false,"schema":{"type":"string","default":"","title":"Ava Character Id"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":50,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Offset"}},{"name":"X-Partner-ID","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Partner-Id"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response List Chats Api Partner V1 Users  Partner User Id  Chats Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["partner-v1"],"summary":"Append Chat","operationId":"append_chat_api_partner_v1_users__partner_user_id__chats_post","parameters":[{"name":"partner_user_id","in":"path","required":true,"schema":{"type":"string","title":"Partner User Id"}},{"name":"X-Partner-ID","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Partner-Id"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChatAppendBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Append Chat Api Partner V1 Users  Partner User Id  Chats Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/partner/v1/chats/{message_id}":{"delete":{"tags":["partner-v1"],"summary":"Delete Chat","operationId":"delete_chat_api_partner_v1_chats__message_id__delete","parameters":[{"name":"message_id","in":"path","required":true,"schema":{"type":"string","title":"Message Id"}},{"name":"X-Partner-ID","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Partner-Id"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Delete Chat Api Partner V1 Chats  Message Id  Delete"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/partner/v1/users/{partner_user_id}/characters/{ava_character_id}/relationship":{"get":{"tags":["partner-v1"],"summary":"Get Relationship","operationId":"get_relationship_api_partner_v1_users__partner_user_id__characters__ava_character_id__relationship_get","parameters":[{"name":"partner_user_id","in":"path","required":true,"schema":{"type":"string","title":"Partner User Id"}},{"name":"ava_character_id","in":"path","required":true,"schema":{"type":"string","title":"Ava Character Id"}},{"name":"X-Partner-ID","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Partner-Id"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Relationship Api Partner V1 Users  Partner User Id  Characters  Ava Character Id  Relationship Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["partner-v1"],"summary":"Patch Relationship","operationId":"patch_relationship_api_partner_v1_users__partner_user_id__characters__ava_character_id__relationship_patch","parameters":[{"name":"partner_user_id","in":"path","required":true,"schema":{"type":"string","title":"Partner User Id"}},{"name":"ava_character_id","in":"path","required":true,"schema":{"type":"string","title":"Ava Character Id"}},{"name":"X-Partner-ID","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Partner-Id"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RelationshipPatchBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Patch Relationship Api Partner V1 Users  Partner User Id  Characters  Ava Character Id  Relationship Patch"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/partner/v1/users/{partner_user_id}/scenes":{"get":{"tags":["partner-v1"],"summary":"List Scenes","operationId":"list_scenes_api_partner_v1_users__partner_user_id__scenes_get","parameters":[{"name":"partner_user_id","in":"path","required":true,"schema":{"type":"string","title":"Partner User Id"}},{"name":"X-Partner-ID","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Partner-Id"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response List Scenes Api Partner V1 Users  Partner User Id  Scenes Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["partner-v1"],"summary":"Create Scene","operationId":"create_scene_api_partner_v1_users__partner_user_id__scenes_post","parameters":[{"name":"partner_user_id","in":"path","required":true,"schema":{"type":"string","title":"Partner User Id"}},{"name":"X-Partner-ID","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Partner-Id"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SceneCreateBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Create Scene Api Partner V1 Users  Partner User Id  Scenes Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/gacha/deleted-characters":{"get":{"tags":["gacha"],"summary":"Api Gacha Deleted Characters List","operationId":"api_gacha_deleted_characters_list_api_gacha_deleted_characters_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Api Gacha Deleted Characters List Api Gacha Deleted Characters Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/gacha/deleted-characters":{"get":{"tags":["gacha"],"summary":"Gacha Deleted Characters List","operationId":"gacha_deleted_characters_list_gacha_deleted_characters_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Gacha Deleted Characters List Gacha Deleted Characters Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/gacha/deleted-characters/{archive_id}/restore":{"post":{"tags":["gacha"],"summary":"Api Gacha Deleted Character Restore","operationId":"api_gacha_deleted_character_restore_api_gacha_deleted_characters__archive_id__restore_post","parameters":[{"name":"archive_id","in":"path","required":true,"schema":{"type":"string","title":"Archive Id"}},{"name":"locale","in":"query","required":false,"schema":{"type":"string","default":"","title":"Locale"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/GachaCharacterRestoreReq"},{"type":"null"}],"title":"Req"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Api Gacha Deleted Character Restore Api Gacha Deleted Characters  Archive Id  Restore Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/gacha/deleted-characters/{archive_id}/restore":{"post":{"tags":["gacha"],"summary":"Gacha Deleted Character Restore","operationId":"gacha_deleted_character_restore_gacha_deleted_characters__archive_id__restore_post","parameters":[{"name":"archive_id","in":"path","required":true,"schema":{"type":"string","title":"Archive Id"}},{"name":"locale","in":"query","required":false,"schema":{"type":"string","default":"","title":"Locale"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/GachaCharacterRestoreReq"},{"type":"null"}],"title":"Req"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Gacha Deleted Character Restore Gacha Deleted Characters  Archive Id  Restore Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/encounter/characters":{"get":{"tags":["encounter"],"summary":"Api Encounter Characters List","operationId":"api_encounter_characters_list_api_encounter_characters_get","parameters":[{"name":"include_deleted","in":"query","required":false,"schema":{"type":"boolean","description":"为 false 时仅返回 active 邂逅角色","default":true,"title":"Include Deleted"},"description":"为 false 时仅返回 active 邂逅角色"},{"name":"locale","in":"query","required":false,"schema":{"type":"string","default":"","title":"Locale"}},{"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 Api Encounter Characters List Api Encounter Characters Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/encounter/characters":{"get":{"tags":["encounter"],"summary":"Encounter Characters List","operationId":"encounter_characters_list_encounter_characters_get","parameters":[{"name":"include_deleted","in":"query","required":false,"schema":{"type":"boolean","default":true,"title":"Include Deleted"}},{"name":"locale","in":"query","required":false,"schema":{"type":"string","default":"","title":"Locale"}},{"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 Encounter Characters List Encounter Characters Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/":{"get":{"summary":"Index","description":"返回单页前端工作台 UI；禁止强缓存，便于开发/升级后立即可见脚本。","operationId":"index__get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/login.html":{"get":{"summary":"Login Page Html Redirect","description":"兼容书签：跳转到实际可稳定访问的静态登录页。","operationId":"login_page_html_redirect_login_html_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/login":{"get":{"summary":"Login Page Short","description":"短路径跳转到登录页。","operationId":"login_page_short_login_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}},"post":{"summary":"Login Root","operationId":"login_root_login_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LoginReq"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Login Root Login Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/dev":{"get":{"summary":"Dev Console","description":"开发者控制台：健康检查、/meta、LLM 与路由一览（静态页，禁止强缓存）。","operationId":"dev_console_dev_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/home":{"get":{"summary":"Home Page","description":"登录后首页：深色角色卡片栅格 + 双入口卡片（静态页）。","operationId":"home_page_home_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/my-ai":{"get":{"summary":"My Ai Page","description":"我的 AI：角色列表页（收藏夹/删除/进入聊天）。","operationId":"my_ai_page_my_ai_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/encounters":{"get":{"summary":"Encounter Library Page","description":"用户邂逅角色库列表页（展示索引；canonical 在 AVA API）。","operationId":"encounter_library_page_encounters_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/my-ai/new":{"get":{"summary":"My Ai Create Page","description":"我的 AI：角色创建向导（MVP，初步可用版）。","operationId":"my_ai_create_page_my_ai_new_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/my-ai/wizard-choices":{"get":{"tags":["my-ai"],"summary":"Api My Ai Wizard Choices","operationId":"api_my_ai_wizard_choices_api_my_ai_wizard_choices_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Api My Ai Wizard Choices Api My Ai Wizard Choices Get"}}}}}}},"/api/my-ai/wizard-body-options":{"get":{"tags":["my-ai"],"summary":"Api My Ai Wizard Body Options","operationId":"api_my_ai_wizard_body_options_api_my_ai_wizard_body_options_get","parameters":[{"name":"style","in":"query","required":false,"schema":{"type":"string","default":"","title":"Style"}},{"name":"gender","in":"query","required":false,"schema":{"type":"string","default":"","title":"Gender"}},{"name":"age","in":"query","required":false,"schema":{"type":"string","default":"","title":"Age"}},{"name":"ethnicity","in":"query","required":false,"schema":{"type":"string","default":"","title":"Ethnicity"}},{"name":"locale","in":"query","required":false,"schema":{"type":"string","default":"zh-Hans","title":"Locale"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Api My Ai Wizard Body Options Api My Ai Wizard Body Options Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/my-ai/wizard-body-options":{"get":{"tags":["my-ai"],"summary":"My Ai Wizard Body Options Alias","operationId":"my_ai_wizard_body_options_alias_my_ai_wizard_body_options_get","parameters":[{"name":"style","in":"query","required":false,"schema":{"type":"string","default":"","title":"Style"}},{"name":"gender","in":"query","required":false,"schema":{"type":"string","default":"","title":"Gender"}},{"name":"age","in":"query","required":false,"schema":{"type":"string","default":"","title":"Age"}},{"name":"ethnicity","in":"query","required":false,"schema":{"type":"string","default":"","title":"Ethnicity"}},{"name":"locale","in":"query","required":false,"schema":{"type":"string","default":"zh-Hans","title":"Locale"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response My Ai Wizard Body Options Alias My Ai Wizard Body Options Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/my-ai/wizard-archive-options":{"get":{"tags":["my-ai"],"summary":"Api My Ai Wizard Archive Options","operationId":"api_my_ai_wizard_archive_options_api_my_ai_wizard_archive_options_get","parameters":[{"name":"style","in":"query","required":false,"schema":{"type":"string","default":"","title":"Style"}},{"name":"ethnicity","in":"query","required":false,"schema":{"type":"string","default":"","title":"Ethnicity"}},{"name":"locale","in":"query","required":false,"schema":{"type":"string","default":"zh-Hans","title":"Locale"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Api My Ai Wizard Archive Options Api My Ai Wizard Archive Options Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/my-ai/wizard-archive-options":{"get":{"tags":["my-ai"],"summary":"My Ai Wizard Archive Options Alias","operationId":"my_ai_wizard_archive_options_alias_my_ai_wizard_archive_options_get","parameters":[{"name":"style","in":"query","required":false,"schema":{"type":"string","default":"","title":"Style"}},{"name":"ethnicity","in":"query","required":false,"schema":{"type":"string","default":"","title":"Ethnicity"}},{"name":"locale","in":"query","required":false,"schema":{"type":"string","default":"zh-Hans","title":"Locale"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response My Ai Wizard Archive Options Alias My Ai Wizard Archive Options Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/my-ai/wizard-education-display-meta":{"get":{"tags":["my-ai"],"summary":"Api My Ai Wizard Education Display Meta","operationId":"api_my_ai_wizard_education_display_meta_my_ai_wizard_education_display_meta_get","parameters":[{"name":"locale","in":"query","required":false,"schema":{"type":"string","default":"zh-Hans","title":"Locale"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Api My Ai Wizard Education Display Meta My Ai Wizard Education Display Meta Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/my-ai/wizard-education-display-meta":{"get":{"tags":["my-ai"],"summary":"Api My Ai Wizard Education Display Meta","operationId":"api_my_ai_wizard_education_display_meta_api_my_ai_wizard_education_display_meta_get","parameters":[{"name":"locale","in":"query","required":false,"schema":{"type":"string","default":"zh-Hans","title":"Locale"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Api My Ai Wizard Education Display Meta Api My Ai Wizard Education Display Meta Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/my-ai/wizard-personality-options":{"get":{"tags":["my-ai"],"summary":"Api My Ai Wizard Personality Options","operationId":"api_my_ai_wizard_personality_options_my_ai_wizard_personality_options_get","parameters":[{"name":"style","in":"query","required":false,"schema":{"type":"string","default":"","title":"Style"}},{"name":"ethnicity","in":"query","required":false,"schema":{"type":"string","default":"","title":"Ethnicity"}},{"name":"locale","in":"query","required":false,"schema":{"type":"string","default":"zh-Hans","title":"Locale"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Api My Ai Wizard Personality Options My Ai Wizard Personality Options Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/my-ai/wizard-personality-options":{"get":{"tags":["my-ai"],"summary":"Api My Ai Wizard Personality Options","operationId":"api_my_ai_wizard_personality_options_api_my_ai_wizard_personality_options_get","parameters":[{"name":"style","in":"query","required":false,"schema":{"type":"string","default":"","title":"Style"}},{"name":"ethnicity","in":"query","required":false,"schema":{"type":"string","default":"","title":"Ethnicity"}},{"name":"locale","in":"query","required":false,"schema":{"type":"string","default":"zh-Hans","title":"Locale"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Api My Ai Wizard Personality Options Api My Ai Wizard Personality Options Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/my-ai/wizard-relationship-options":{"get":{"tags":["my-ai"],"summary":"Api My Ai Wizard Relationship Options","operationId":"api_my_ai_wizard_relationship_options_my_ai_wizard_relationship_options_get","parameters":[{"name":"style","in":"query","required":false,"schema":{"type":"string","default":"","title":"Style"}},{"name":"ethnicity","in":"query","required":false,"schema":{"type":"string","default":"","title":"Ethnicity"}},{"name":"locale","in":"query","required":false,"schema":{"type":"string","default":"zh-Hans","title":"Locale"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Api My Ai Wizard Relationship Options My Ai Wizard Relationship Options Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/wizard-relationship-options":{"get":{"tags":["my-ai"],"summary":"Api My Ai Wizard Relationship Options","operationId":"api_my_ai_wizard_relationship_options_api_v1_wizard_relationship_options_get","parameters":[{"name":"style","in":"query","required":false,"schema":{"type":"string","default":"","title":"Style"}},{"name":"ethnicity","in":"query","required":false,"schema":{"type":"string","default":"","title":"Ethnicity"}},{"name":"locale","in":"query","required":false,"schema":{"type":"string","default":"zh-Hans","title":"Locale"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Api My Ai Wizard Relationship Options Api V1 Wizard Relationship Options Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/my-ai/wizard-relationship-options":{"get":{"tags":["my-ai"],"summary":"Api My Ai Wizard Relationship Options","operationId":"api_my_ai_wizard_relationship_options_api_my_ai_wizard_relationship_options_get","parameters":[{"name":"style","in":"query","required":false,"schema":{"type":"string","default":"","title":"Style"}},{"name":"ethnicity","in":"query","required":false,"schema":{"type":"string","default":"","title":"Ethnicity"}},{"name":"locale","in":"query","required":false,"schema":{"type":"string","default":"zh-Hans","title":"Locale"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Api My Ai Wizard Relationship Options Api My Ai Wizard Relationship Options Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/my-ai/wizard-roleplay-prompt":{"post":{"tags":["my-ai"],"summary":"Api My Ai Wizard Roleplay Prompt","description":"从向导 profile 组合风格通用扮演 Prompt（供 Dify / Partner 调试）。","operationId":"api_my_ai_wizard_roleplay_prompt_api_my_ai_wizard_roleplay_prompt_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Body"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Api My Ai Wizard Roleplay Prompt Api My Ai Wizard Roleplay Prompt Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/my-ai/wizard-roleplay-prompt/preview":{"get":{"tags":["my-ai"],"summary":"Api My Ai Wizard Roleplay Prompt Preview","operationId":"api_my_ai_wizard_roleplay_prompt_preview_api_my_ai_wizard_roleplay_prompt_preview_get","parameters":[{"name":"style","in":"query","required":false,"schema":{"type":"string","default":"日本动画片","title":"Style"}},{"name":"ethnicity","in":"query","required":false,"schema":{"type":"string","default":"精灵","title":"Ethnicity"}},{"name":"job","in":"query","required":false,"schema":{"type":"string","default":"精灵魔法使","title":"Job"}},{"name":"education","in":"query","required":false,"schema":{"type":"string","default":"私立樱花幻术学院","title":"Education"}},{"name":"outfit","in":"query","required":false,"schema":{"type":"string","default":"学院风魔法少女服","title":"Outfit"}},{"name":"name","in":"query","required":false,"schema":{"type":"string","default":"测试角色","title":"Name"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Api My Ai Wizard Roleplay Prompt Preview Api My Ai Wizard Roleplay Prompt Preview Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/my-ai/fill-coherent":{"post":{"tags":["my-ai"],"summary":"Api My Ai Fill Coherent","operationId":"api_my_ai_fill_coherent_api_my_ai_fill_coherent_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MyAiFillReq"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Api My Ai Fill Coherent Api My Ai Fill Coherent Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/my-ai/wizard-choices":{"get":{"tags":["my-ai"],"summary":"My Ai Wizard Choices Alias","operationId":"my_ai_wizard_choices_alias_my_ai_wizard_choices_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response My Ai Wizard Choices Alias My Ai Wizard Choices Get"}}}}}}},"/my-ai/fill-coherent":{"post":{"tags":["my-ai"],"summary":"My Ai Fill Coherent Alias","operationId":"my_ai_fill_coherent_alias_my_ai_fill_coherent_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MyAiFillReq"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response My Ai Fill Coherent Alias My Ai Fill Coherent Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/meta":{"get":{"summary":"Meta","description":"供前端展示：LLM 当前状态、模型与 base 等。","operationId":"meta_meta_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Meta Meta Get"}}}}}}},"/health":{"get":{"summary":"Health","description":"存活探针；附带 revision 与路径，便于确认是否跑在最新代码上。","operationId":"health_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Health Health Get"}}}}}}},"/__diag/build":{"get":{"summary":"Diag Build","description":"诊断：若 /health 仍像旧版而此处能返回 revision，说明命中了本仓库最新 app。","operationId":"diag_build___diag_build_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Diag Build   Diag Build Get"}}}}}}},"/__diag/routes":{"get":{"summary":"Diag Http Routes","description":"列出已注册方法与路径；用于确认 /api/scene/create 是否在本进程内（不依赖 /docs 缓存）。","operationId":"diag_http_routes___diag_routes_get","parameters":[{"name":"full","in":"query","required":false,"schema":{"type":"boolean","description":"为 true 时返回全部 HTTP 路由（开发者控制台用）；默认仍只返回摘要以减小体积。","default":false,"title":"Full"},"description":"为 true 时返回全部 HTTP 路由（开发者控制台用）；默认仍只返回摘要以减小体积。"},{"name":"compact","in":"query","required":false,"schema":{"type":"boolean","description":"为 true 时输出单行 JSON（便于脚本解析）；默认多行缩进便于阅读。","default":false,"title":"Compact"},"description":"为 true 时输出单行 JSON（便于脚本解析）；默认多行缩进便于阅读。"},{"name":"html","in":"query","required":false,"schema":{"type":"boolean","description":"为 true 时返回简单 HTML 页（自带换行与样式，不依赖浏览器对 JSON 的「美观输出」）。","default":false,"title":"Html"},"description":"为 true 时返回简单 HTML 页（自带换行与样式，不依赖浏览器对 JSON 的「美观输出」）。"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/__diag/langgraph":{"get":{"summary":"Diag Langgraph","description":"LangGraph 轻量观测：命中率、意图分布、长记忆开关统计（进程内计数，重启清零）。","operationId":"diag_langgraph___diag_langgraph_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Diag Langgraph   Diag Langgraph Get"}}}}}}},"/config/llm":{"post":{"summary":"Config Llm","description":"热更新 OpenAI 兼容配置。","operationId":"config_llm_config_llm_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LLMConfigReq"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Config Llm Config Llm Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/config/llm/model":{"post":{"summary":"Config Llm Model","description":"切换模型：若命中 app_config 中 llm_model_presets（与 model 或 id 一致），\n同时切换 base_url、extra_headers，并按网关解析环境变量密钥。\n否则仅替换 model，保持当前 base_url（兼容自定义模型名）。","operationId":"config_llm_model_config_llm_model_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LLMModelReq"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Config Llm Model Config Llm Model Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/llm/models":{"get":{"summary":"Llm Models","description":"代理 GET {OPENAI_BASE_URL}/models，便于对齐各 OpenAI 兼容网关的模型列表 JSON。\n需在环境变量或 POST /config/llm 中已配置 api_key 与 base_url。\n\n部分聚合网关（如部分 Zen/中转）不提供可用 /models 或返回空列表：此时仍返回当前模型与\nOPENAI_MODEL_FALLBACK_LIST，避免前端下拉只剩一项；若上游完全失败则降级为同类候选并带 degraded。","operationId":"llm_models_llm_models_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Llm Models Llm Models Get"}}}}}}},"/scene/bar":{"post":{"tags":["scene"],"summary":"Create Bar Scene","description":"创建新酒吧场景：随机 NPC + 随机今夜氛围（mood_summary 等），返回场景 JSON。","operationId":"create_bar_scene_scene_bar_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateSceneReq"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Create Bar Scene Scene Bar Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/scene/create":{"get":{"tags":["scene"],"summary":"Scene Create Get Notice","operationId":"scene_create_get_notice_scene_create_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Scene Create Get Notice Scene Create Get"}}}}}},"post":{"tags":["scene"],"summary":"Create Scene Universal","description":"创建场景：体裁 + 可选背景；固定 NPC 含老板娘与丽莎。","operationId":"create_scene_universal_scene_create_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateUniversalSceneReq"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Create Scene Universal Scene Create Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/scene/create":{"get":{"tags":["scene"],"summary":"Api Scene Create Get Notice","operationId":"api_scene_create_get_notice_api_scene_create_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Api Scene Create Get Notice Api Scene Create Get"}}}}}},"post":{"tags":["scene"],"summary":"Api Scene Create","description":"与 POST /scene/create 相同（部分反向代理只对 /api/* 正确转发 POST）。","operationId":"api_scene_create_api_scene_create_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateUniversalSceneReq"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Api Scene Create Api Scene Create Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/scene/random-roll":{"post":{"tags":["scene"],"summary":"Api Scene Random Roll","description":"首页随机邂逅：抽卡生成 N 个随机 NPC（无固定 lore 角色、暂不创建场景）。","operationId":"api_scene_random_roll_api_scene_random_roll_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RandomNpcRollReq"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Api Scene Random Roll Api Scene Random Roll Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/scene/random-roll":{"post":{"tags":["scene"],"summary":"Scene Random Roll","operationId":"scene_random_roll_scene_random_roll_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RandomNpcRollReq"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Scene Random Roll Scene Random Roll Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/scene/random-roll/saved":{"get":{"tags":["scene"],"summary":"Api Scene Random Roll Saved","operationId":"api_scene_random_roll_saved_api_scene_random_roll_saved_get","parameters":[{"name":"locale","in":"query","required":false,"schema":{"type":"string","default":"","title":"Locale"}},{"name":"light","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Light"}},{"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 Api Scene Random Roll Saved Api Scene Random Roll Saved Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/scene/random-roll/saved":{"get":{"tags":["scene"],"summary":"Scene Random Roll Saved","operationId":"scene_random_roll_saved_scene_random_roll_saved_get","parameters":[{"name":"locale","in":"query","required":false,"schema":{"type":"string","default":"","title":"Locale"}},{"name":"light","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Light"}},{"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 Scene Random Roll Saved Scene Random Roll Saved Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/gacha/config":{"get":{"tags":["gacha"],"summary":"Api Gacha Config","operationId":"api_gacha_config_api_gacha_config_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Api Gacha Config Api Gacha Config Get"}}}}}}},"/gacha/config":{"get":{"tags":["gacha"],"summary":"Gacha Config","operationId":"gacha_config_gacha_config_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Gacha Config Gacha Config Get"}}}}}}},"/api/gacha/display-lexicon":{"get":{"tags":["gacha"],"summary":"Api Gacha Display Lexicon","operationId":"api_gacha_display_lexicon_api_gacha_display_lexicon_get","parameters":[{"name":"locale","in":"query","required":false,"schema":{"type":"string","default":"en","title":"Locale"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Api Gacha Display Lexicon Api Gacha Display Lexicon Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/gacha/display-lexicon":{"get":{"tags":["gacha"],"summary":"Gacha Display Lexicon","operationId":"gacha_display_lexicon_gacha_display_lexicon_get","parameters":[{"name":"locale","in":"query","required":false,"schema":{"type":"string","default":"en","title":"Locale"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Gacha Display Lexicon Gacha Display Lexicon Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/gacha/companion/state":{"get":{"tags":["gacha"],"summary":"Api Gacha Companion State","operationId":"api_gacha_companion_state_api_gacha_companion_state_get","parameters":[{"name":"locale","in":"query","required":false,"schema":{"type":"string","default":"","title":"Locale"}},{"name":"light","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Light"}},{"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 Api Gacha Companion State Api Gacha Companion State Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/gacha/companion/wizard-meta":{"post":{"tags":["gacha"],"summary":"Api Gacha Companion Wizard Meta","operationId":"api_gacha_companion_wizard_meta_api_gacha_companion_wizard_meta_post","parameters":[{"name":"locale","in":"query","required":false,"schema":{"type":"string","default":"","title":"Locale"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GachaCompanionWizardMetaReq"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Api Gacha Companion Wizard Meta Api Gacha Companion Wizard Meta Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/gacha/companion/wizard-meta":{"post":{"tags":["gacha"],"summary":"Gacha Companion Wizard Meta","operationId":"gacha_companion_wizard_meta_gacha_companion_wizard_meta_post","parameters":[{"name":"locale","in":"query","required":false,"schema":{"type":"string","default":"","title":"Locale"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GachaCompanionWizardMetaReq"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Gacha Companion Wizard Meta Gacha Companion Wizard Meta Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/gacha/companion/basic-profile":{"get":{"tags":["gacha"],"summary":"Api Gacha Companion Basic Profile","operationId":"api_gacha_companion_basic_profile_api_gacha_companion_basic_profile_get","parameters":[{"name":"locale","in":"query","required":false,"schema":{"type":"string","default":"","title":"Locale"}},{"name":"view","in":"query","required":false,"schema":{"type":"string","description":"ui = browser-safe subset; llm = full profile + prompt_block","default":"ui","title":"View"},"description":"ui = browser-safe subset; llm = full profile + prompt_block"},{"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 Api Gacha Companion Basic Profile Api Gacha Companion Basic Profile Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/gacha/companion/basic-profile":{"get":{"tags":["gacha"],"summary":"Gacha Companion Basic Profile","operationId":"gacha_companion_basic_profile_gacha_companion_basic_profile_get","parameters":[{"name":"locale","in":"query","required":false,"schema":{"type":"string","default":"","title":"Locale"}},{"name":"view","in":"query","required":false,"schema":{"type":"string","default":"ui","title":"View"}},{"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 Gacha Companion Basic Profile Gacha Companion Basic Profile Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/gacha/companion/public-card":{"get":{"tags":["gacha"],"summary":"Api Gacha Companion Public Card","operationId":"api_gacha_companion_public_card_api_gacha_companion_public_card_get","parameters":[{"name":"locale","in":"query","required":false,"schema":{"type":"string","default":"","title":"Locale"}},{"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 Api Gacha Companion Public Card Api Gacha Companion Public Card Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/gacha/companion/public-card":{"get":{"tags":["gacha"],"summary":"Gacha Companion Public Card","operationId":"gacha_companion_public_card_gacha_companion_public_card_get","parameters":[{"name":"locale","in":"query","required":false,"schema":{"type":"string","default":"","title":"Locale"}},{"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 Gacha Companion Public Card Gacha Companion Public Card Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/partner/characters/{character_id}/public-card":{"get":{"tags":["partner"],"summary":"Api Partner Character Public Card","description":"第三方 APP：按 AVA character_id 拉取列表/详情展示卡（不含 LLM 长文）。","operationId":"api_partner_character_public_card_api_partner_characters__character_id__public_card_get","parameters":[{"name":"character_id","in":"path","required":true,"schema":{"type":"string","title":"Character Id"}},{"name":"locale","in":"query","required":false,"schema":{"type":"string","default":"","title":"Locale"}},{"name":"X-Partner-ID","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Partner-Id"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Api Partner Character Public Card Api Partner Characters  Character Id  Public Card Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/partner/characters/{character_id}/public-card":{"get":{"tags":["partner"],"summary":"Partner Character Public Card","operationId":"partner_character_public_card_partner_characters__character_id__public_card_get","parameters":[{"name":"character_id","in":"path","required":true,"schema":{"type":"string","title":"Character Id"}},{"name":"locale","in":"query","required":false,"schema":{"type":"string","default":"","title":"Locale"}},{"name":"X-Partner-ID","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Partner-Id"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Partner Character Public Card Partner Characters  Character Id  Public Card Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/gacha/companion/state":{"get":{"tags":["gacha"],"summary":"Gacha Companion State","operationId":"gacha_companion_state_gacha_companion_state_get","parameters":[{"name":"locale","in":"query","required":false,"schema":{"type":"string","default":"","title":"Locale"}},{"name":"light","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Light"}},{"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 Gacha Companion State Gacha Companion State Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/gacha/companion/roles":{"get":{"tags":["gacha"],"summary":"Api Gacha Companion Roles","operationId":"api_gacha_companion_roles_api_gacha_companion_roles_get","parameters":[{"name":"light","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Light"}},{"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 Api Gacha Companion Roles Api Gacha Companion Roles Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/gacha/companion/roles":{"get":{"tags":["gacha"],"summary":"Gacha Companion Roles","operationId":"gacha_companion_roles_gacha_companion_roles_get","parameters":[{"name":"light","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Light"}},{"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 Gacha Companion Roles Gacha Companion Roles Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/gacha/companion/draft/open":{"post":{"tags":["gacha"],"summary":"Api Gacha Companion Draft Open","operationId":"api_gacha_companion_draft_open_api_gacha_companion_draft_open_post","parameters":[{"name":"locale","in":"query","required":false,"schema":{"type":"string","default":"","title":"Locale"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GachaCompanionSceneReq"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Api Gacha Companion Draft Open Api Gacha Companion Draft Open Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/gacha/companion/draft/open":{"post":{"tags":["gacha"],"summary":"Gacha Companion Draft Open","operationId":"gacha_companion_draft_open_gacha_companion_draft_open_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GachaCompanionSceneReq"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Gacha Companion Draft Open Gacha Companion Draft Open Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/gacha/companion/event/start":{"post":{"tags":["gacha"],"summary":"Api Gacha Companion Event Start","operationId":"api_gacha_companion_event_start_api_gacha_companion_event_start_post","parameters":[{"name":"locale","in":"query","required":false,"schema":{"type":"string","default":"","title":"Locale"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GachaCompanionSceneReq"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Api Gacha Companion Event Start Api Gacha Companion Event Start Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/gacha/companion/event/start":{"post":{"tags":["gacha"],"summary":"Gacha Companion Event Start","operationId":"gacha_companion_event_start_gacha_companion_event_start_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GachaCompanionSceneReq"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Gacha Companion Event Start Gacha Companion Event Start Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/gacha/companion/avatar":{"post":{"tags":["gacha"],"summary":"Api Gacha Companion Avatar","operationId":"api_gacha_companion_avatar_api_gacha_companion_avatar_post","parameters":[{"name":"locale","in":"query","required":false,"schema":{"type":"string","default":"","title":"Locale"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GachaCompanionAvatarReq"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Api Gacha Companion Avatar Api Gacha Companion Avatar Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/gacha/companion/avatar":{"post":{"tags":["gacha"],"summary":"Gacha Companion Avatar","operationId":"gacha_companion_avatar_gacha_companion_avatar_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GachaCompanionAvatarReq"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Gacha Companion Avatar Gacha Companion Avatar Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/gacha/companion/avatar/callback":{"post":{"tags":["gacha"],"summary":"Api Gacha Companion Avatar Callback","description":"主服/前端生图完成回调：提交 image_url 或 error（front_api 模式）。","operationId":"api_gacha_companion_avatar_callback_api_gacha_companion_avatar_callback_post","parameters":[{"name":"locale","in":"query","required":false,"schema":{"type":"string","default":"","title":"Locale"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GachaCompanionAvatarCallbackReq"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Api Gacha Companion Avatar Callback Api Gacha Companion Avatar Callback Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/gacha/companion/avatar/callback":{"post":{"tags":["gacha"],"summary":"Gacha Companion Avatar Callback","operationId":"gacha_companion_avatar_callback_gacha_companion_avatar_callback_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GachaCompanionAvatarCallbackReq"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Gacha Companion Avatar Callback Gacha Companion Avatar Callback Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/gacha/companion/tags/roll":{"post":{"tags":["gacha"],"summary":"Api Gacha Companion Tags Roll","operationId":"api_gacha_companion_tags_roll_api_gacha_companion_tags_roll_post","parameters":[{"name":"locale","in":"query","required":false,"schema":{"type":"string","default":"","title":"Locale"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GachaCompanionChargeReq"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Api Gacha Companion Tags Roll Api Gacha Companion Tags Roll Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/gacha/companion/tags/roll":{"post":{"tags":["gacha"],"summary":"Gacha Companion Tags Roll","operationId":"gacha_companion_tags_roll_gacha_companion_tags_roll_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GachaCompanionChargeReq"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Gacha Companion Tags Roll Gacha Companion Tags Roll Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/gacha/companion/kink-preference-options":{"get":{"tags":["gacha"],"summary":"Api Gacha Companion Kink Preference Options","operationId":"api_gacha_companion_kink_preference_options_api_gacha_companion_kink_preference_options_get","parameters":[{"name":"locale","in":"query","required":false,"schema":{"type":"string","default":"zh-Hans","title":"Locale"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Api Gacha Companion Kink Preference Options Api Gacha Companion Kink Preference Options Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/gacha/companion/kink-preference-options":{"get":{"tags":["gacha"],"summary":"Gacha Companion Kink Preference Options Alias","operationId":"gacha_companion_kink_preference_options_alias_gacha_companion_kink_preference_options_get","parameters":[{"name":"locale","in":"query","required":false,"schema":{"type":"string","default":"zh-Hans","title":"Locale"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Gacha Companion Kink Preference Options Alias Gacha Companion Kink Preference Options Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/gacha/companion/custom-profile":{"post":{"tags":["gacha"],"summary":"Api Gacha Companion Custom Profile","operationId":"api_gacha_companion_custom_profile_api_gacha_companion_custom_profile_post","parameters":[{"name":"locale","in":"query","required":false,"schema":{"type":"string","default":"","title":"Locale"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GachaCompanionCustomProfileReq"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Api Gacha Companion Custom Profile Api Gacha Companion Custom Profile Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/gacha/companion/custom-profile":{"post":{"tags":["gacha"],"summary":"Gacha Companion Custom Profile","operationId":"gacha_companion_custom_profile_gacha_companion_custom_profile_post","parameters":[{"name":"locale","in":"query","required":false,"schema":{"type":"string","default":"","title":"Locale"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GachaCompanionCustomProfileReq"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Gacha Companion Custom Profile Gacha Companion Custom Profile Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/gacha/companion/persona/expand":{"post":{"tags":["gacha"],"summary":"Api Gacha Companion Persona Expand","operationId":"api_gacha_companion_persona_expand_api_gacha_companion_persona_expand_post","parameters":[{"name":"locale","in":"query","required":false,"schema":{"type":"string","default":"","title":"Locale"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GachaCompanionPersonaExpandReq"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Api Gacha Companion Persona Expand Api Gacha Companion Persona Expand Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/gacha/companion/persona/expand":{"post":{"tags":["gacha"],"summary":"Gacha Companion Persona Expand","operationId":"gacha_companion_persona_expand_gacha_companion_persona_expand_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GachaCompanionPersonaExpandReq"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Gacha Companion Persona Expand Gacha Companion Persona Expand Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/gacha/companion/export/image-prompt":{"post":{"tags":["gacha"],"summary":"Api Gacha Companion Export Image Prompt","operationId":"api_gacha_companion_export_image_prompt_api_gacha_companion_export_image_prompt_post","parameters":[{"name":"locale","in":"query","required":false,"schema":{"type":"string","default":"","title":"Locale"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GachaCompanionExportImagePromptReq"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Api Gacha Companion Export Image Prompt Api Gacha Companion Export Image Prompt Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/gacha/companion/export/image-prompt":{"post":{"tags":["gacha"],"summary":"Gacha Companion Export Image Prompt","operationId":"gacha_companion_export_image_prompt_gacha_companion_export_image_prompt_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GachaCompanionExportImagePromptReq"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Gacha Companion Export Image Prompt Gacha Companion Export Image Prompt Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/gacha/companion/export/persona-expand-prompt":{"post":{"tags":["gacha"],"summary":"Api Gacha Companion Export Persona Expand Prompt","operationId":"api_gacha_companion_export_persona_expand_prompt_api_gacha_companion_export_persona_expand_prompt_post","parameters":[{"name":"locale","in":"query","required":false,"schema":{"type":"string","default":"","title":"Locale"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GachaCompanionPersonaExpandReq"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Api Gacha Companion Export Persona Expand Prompt Api Gacha Companion Export Persona Expand Prompt Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/gacha/companion/export/persona-expand-prompt":{"post":{"tags":["gacha"],"summary":"Gacha Companion Export Persona Expand Prompt","operationId":"gacha_companion_export_persona_expand_prompt_gacha_companion_export_persona_expand_prompt_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GachaCompanionPersonaExpandReq"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Gacha Companion Export Persona Expand Prompt Gacha Companion Export Persona Expand Prompt Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/gacha/companion/persona/apply":{"post":{"tags":["gacha"],"summary":"Api Gacha Companion Persona Apply","operationId":"api_gacha_companion_persona_apply_api_gacha_companion_persona_apply_post","parameters":[{"name":"locale","in":"query","required":false,"schema":{"type":"string","default":"","title":"Locale"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GachaCompanionPersonaApplyReq"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Api Gacha Companion Persona Apply Api Gacha Companion Persona Apply Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/gacha/companion/persona/apply":{"post":{"tags":["gacha"],"summary":"Gacha Companion Persona Apply","operationId":"gacha_companion_persona_apply_gacha_companion_persona_apply_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GachaCompanionPersonaApplyReq"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Gacha Companion Persona Apply Gacha Companion Persona Apply Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/gacha/companion/backfill":{"post":{"tags":["gacha"],"summary":"Api Gacha Companion Backfill","operationId":"api_gacha_companion_backfill_api_gacha_companion_backfill_post","parameters":[{"name":"locale","in":"query","required":false,"schema":{"type":"string","default":"","title":"Locale"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/GachaCompanionBackfillReq"},{"type":"null"}],"title":"Req"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Api Gacha Companion Backfill Api Gacha Companion Backfill Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/gacha/companion/backfill":{"post":{"tags":["gacha"],"summary":"Gacha Companion Backfill","operationId":"gacha_companion_backfill_gacha_companion_backfill_post","parameters":[{"name":"locale","in":"query","required":false,"schema":{"type":"string","default":"","title":"Locale"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/GachaCompanionBackfillReq"},{"type":"null"}],"title":"Req"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Gacha Companion Backfill Gacha Companion Backfill Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/gacha/companion/tags/lock":{"post":{"tags":["gacha"],"summary":"Api Gacha Companion Tags Lock","operationId":"api_gacha_companion_tags_lock_api_gacha_companion_tags_lock_post","parameters":[{"name":"locale","in":"query","required":false,"schema":{"type":"string","default":"","title":"Locale"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GachaCompanionTagLockReq"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Api Gacha Companion Tags Lock Api Gacha Companion Tags Lock Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/gacha/companion/tags/lock":{"post":{"tags":["gacha"],"summary":"Gacha Companion Tags Lock","operationId":"gacha_companion_tags_lock_gacha_companion_tags_lock_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GachaCompanionTagLockReq"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Gacha Companion Tags Lock Gacha Companion Tags Lock Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/gacha/companion/tags/unlock":{"post":{"tags":["gacha"],"summary":"Api Gacha Companion Tags Unlock","operationId":"api_gacha_companion_tags_unlock_api_gacha_companion_tags_unlock_post","parameters":[{"name":"locale","in":"query","required":false,"schema":{"type":"string","default":"","title":"Locale"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GachaCompanionTagUnlockReq"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Api Gacha Companion Tags Unlock Api Gacha Companion Tags Unlock Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/gacha/companion/tags/unlock":{"post":{"tags":["gacha"],"summary":"Gacha Companion Tags Unlock","operationId":"gacha_companion_tags_unlock_gacha_companion_tags_unlock_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GachaCompanionTagUnlockReq"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Gacha Companion Tags Unlock Gacha Companion Tags Unlock Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/gacha/companion/draft/reset":{"post":{"tags":["gacha"],"summary":"Api Gacha Companion Draft Reset","operationId":"api_gacha_companion_draft_reset_api_gacha_companion_draft_reset_post","parameters":[{"name":"locale","in":"query","required":false,"schema":{"type":"string","default":"","title":"Locale"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/GachaCompanionDraftResetReq"},{"type":"null"}],"title":"Req"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Api Gacha Companion Draft Reset Api Gacha Companion Draft Reset Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/gacha/companion/draft/reset":{"post":{"tags":["gacha"],"summary":"Gacha Companion Draft Reset","operationId":"gacha_companion_draft_reset_gacha_companion_draft_reset_post","parameters":[{"name":"locale","in":"query","required":false,"schema":{"type":"string","default":"","title":"Locale"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/GachaCompanionDraftResetReq"},{"type":"null"}],"title":"Req"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Gacha Companion Draft Reset Gacha Companion Draft Reset Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/gacha/companion/confirm":{"post":{"tags":["gacha"],"summary":"Api Gacha Companion Confirm","operationId":"api_gacha_companion_confirm_api_gacha_companion_confirm_post","parameters":[{"name":"locale","in":"query","required":false,"schema":{"type":"string","default":"","title":"Locale"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/GachaCompanionConfirmReq"},{"type":"null"}],"title":"Req"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Api Gacha Companion Confirm Api Gacha Companion Confirm Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/gacha/companion/confirm":{"post":{"tags":["gacha"],"summary":"Gacha Companion Confirm","operationId":"gacha_companion_confirm_gacha_companion_confirm_post","parameters":[{"name":"locale","in":"query","required":false,"schema":{"type":"string","default":"","title":"Locale"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/GachaCompanionConfirmReq"},{"type":"null"}],"title":"Req"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Gacha Companion Confirm Gacha Companion Confirm Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/gacha/companion/delete":{"post":{"tags":["gacha"],"summary":"Api Gacha Companion Delete","operationId":"api_gacha_companion_delete_api_gacha_companion_delete_post","parameters":[{"name":"locale","in":"query","required":false,"schema":{"type":"string","default":"","title":"Locale"}},{"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 Api Gacha Companion Delete Api Gacha Companion Delete Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/gacha/companion/delete":{"post":{"tags":["gacha"],"summary":"Gacha Companion Delete","operationId":"gacha_companion_delete_gacha_companion_delete_post","parameters":[{"name":"locale","in":"query","required":false,"schema":{"type":"string","default":"","title":"Locale"}},{"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 Gacha Companion Delete Gacha Companion Delete Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/partner/encounters/spawn":{"post":{"tags":["partner"],"summary":"Api Partner Encounter Spawn","description":"第三方角色包 spawn：落盘 NPC + 同步邂逅 roll（见 docs/AVA_PARTNER_CHARACTER_SPEC_ZH.md）。","operationId":"api_partner_encounter_spawn_api_partner_encounters_spawn_post","parameters":[{"name":"locale","in":"query","required":false,"schema":{"type":"string","default":"","title":"Locale"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-Partner-ID","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Partner-Id"}},{"name":"X-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PartnerEncounterSpawnReq"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Api Partner Encounter Spawn Api Partner Encounters Spawn Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/gacha/wallet/debit-record":{"post":{"tags":["gacha"],"summary":"Api Gacha Wallet Debit Record","description":"主服完成扣费后可调用，用于留痕（不替代主服钱包）。","operationId":"api_gacha_wallet_debit_record_api_gacha_wallet_debit_record_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GachaWalletDebitReq"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Api Gacha Wallet Debit Record Api Gacha Wallet Debit Record Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/gacha/wallet/debit-record":{"post":{"tags":["gacha"],"summary":"Gacha Wallet Debit Record","operationId":"gacha_wallet_debit_record_gacha_wallet_debit_record_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GachaWalletDebitReq"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Gacha Wallet Debit Record Gacha Wallet Debit Record Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/gacha/character/{character_id}/purge":{"post":{"tags":["gacha"],"summary":"Api Gacha Character Purge","description":"彻底删除邂逅路人对话并释放单 NPC 锁定。","operationId":"api_gacha_character_purge_api_gacha_character__character_id__purge_post","parameters":[{"name":"character_id","in":"path","required":true,"schema":{"type":"string","title":"Character Id"}},{"name":"locale","in":"query","required":false,"schema":{"type":"string","default":"","title":"Locale"}},{"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 Api Gacha Character Purge Api Gacha Character  Character Id  Purge Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/gacha/character/{character_id}/purge":{"post":{"tags":["gacha"],"summary":"Gacha Character Purge","operationId":"gacha_character_purge_gacha_character__character_id__purge_post","parameters":[{"name":"character_id","in":"path","required":true,"schema":{"type":"string","title":"Character Id"}},{"name":"locale","in":"query","required":false,"schema":{"type":"string","default":"","title":"Locale"}},{"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 Gacha Character Purge Gacha Character  Character Id  Purge Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/scene/random-encounter/start":{"post":{"tags":["scene"],"summary":"Api Scene Random Encounter Start","description":"将抽卡结果写入一场随机邂逅场景，供工作台开聊。","operationId":"api_scene_random_encounter_start_api_scene_random_encounter_start_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RandomEncounterStartReq"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Api Scene Random Encounter Start Api Scene Random Encounter Start Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/scene/random-encounter/start":{"post":{"tags":["scene"],"summary":"Scene Random Encounter Start","operationId":"scene_random_encounter_start_scene_random_encounter_start_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RandomEncounterStartReq"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Scene Random Encounter Start Scene Random Encounter Start Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/scene/details/{scene_id}":{"get":{"tags":["scene"],"summary":"Get Scene","description":"按 ID 查询已保存场景。路径使用 /scene/details/… 避免与 POST /scene/create 在部分路由实现下冲突（误把 create 当成 scene_id 会 405）。","operationId":"get_scene_scene_details__scene_id__get","parameters":[{"name":"scene_id","in":"path","required":true,"schema":{"type":"string","title":"Scene Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Scene Scene Details  Scene Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/character/{character_id}/first-impression-scene":{"get":{"summary":"Get Character First Impression Scene","description":"邂逅角色 · 第一印象场景（进聊天首屏，不计入轮次）。","operationId":"get_character_first_impression_scene_character__character_id__first_impression_scene_get","parameters":[{"name":"character_id","in":"path","required":true,"schema":{"type":"string","title":"Character Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Character First Impression Scene Character  Character Id  First Impression Scene Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/character/{character_id}/opening":{"post":{"summary":"Post Character User Scene Opening","description":"Extended RP · 用户场景开场白（1–2 句纯中文，不计入 talk 轮次）。","operationId":"post_character_user_scene_opening_api_character__character_id__opening_post","parameters":[{"name":"character_id","in":"path","required":true,"schema":{"type":"string","title":"Character Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CharacterUserSceneOpeningReq"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Post Character User Scene Opening Api Character  Character Id  Opening Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/character/{character_id}/opening":{"post":{"summary":"Post Character User Scene Opening","description":"Extended RP · 用户场景开场白（1–2 句纯中文，不计入 talk 轮次）。","operationId":"post_character_user_scene_opening_character__character_id__opening_post","parameters":[{"name":"character_id","in":"path","required":true,"schema":{"type":"string","title":"Character Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CharacterUserSceneOpeningReq"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Post Character User Scene Opening Character  Character Id  Opening Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/character/{character_id}":{"get":{"summary":"Get Character","description":"查询单个角色完整 JSON。","operationId":"get_character_character__character_id__get","parameters":[{"name":"character_id","in":"path","required":true,"schema":{"type":"string","title":"Character Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Character Character  Character Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/register":{"post":{"summary":"Register Root","operationId":"register_root_register_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RegisterReq"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Register Root Register Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/auth/register":{"post":{"summary":"Auth Register","operationId":"auth_register_auth_register_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RegisterReq"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Auth Register Auth Register Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/auth/register":{"post":{"summary":"Api Auth Register","operationId":"api_auth_register_api_auth_register_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RegisterReq"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Api Auth Register Api Auth Register Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/auth/login":{"post":{"summary":"Auth Login","operationId":"auth_login_auth_login_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LoginReq"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Auth Login Auth Login Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/auth/login":{"post":{"summary":"Api Auth Login","operationId":"api_auth_login_api_auth_login_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LoginReq"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Api Auth Login Api Auth Login Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/logout":{"post":{"summary":"Logout Root","operationId":"logout_root_logout_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Logout Root Logout Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/auth/logout":{"post":{"summary":"Auth Logout","operationId":"auth_logout_auth_logout_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Auth Logout Auth Logout Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/auth/logout":{"post":{"summary":"Api Auth Logout","operationId":"api_auth_logout_api_auth_logout_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Api Auth Logout Api Auth Logout Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/me":{"get":{"summary":"Me Root","operationId":"me_root_me_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Me Root Me Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/auth/me":{"get":{"summary":"Auth Me","operationId":"auth_me_auth_me_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Auth Me Auth Me Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/auth/me":{"get":{"summary":"Api Auth Me","operationId":"api_auth_me_api_auth_me_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Api Auth Me Api Auth Me Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/user/chat/characters":{"get":{"summary":"User Chat Characters","operationId":"user_chat_characters_user_chat_characters_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response User Chat Characters User Chat Characters Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/user/chat/{character_id}/history":{"get":{"summary":"User Chat History","operationId":"user_chat_history_user_chat__character_id__history_get","parameters":[{"name":"character_id","in":"path","required":true,"schema":{"type":"string","title":"Character Id"}},{"name":"friend_chat_only","in":"query","required":false,"schema":{"type":"boolean","description":"仅返回加好友之后的轮次（需关系中有 friend_since_at）","default":false,"title":"Friend Chat Only"},"description":"仅返回加好友之后的轮次（需关系中有 friend_since_at）"},{"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 User Chat History User Chat  Character Id  History Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/user/chat/{character_id}/history":{"get":{"summary":"Api User Chat History","operationId":"api_user_chat_history_api_user_chat__character_id__history_get","parameters":[{"name":"character_id","in":"path","required":true,"schema":{"type":"string","title":"Character Id"}},{"name":"friend_chat_only","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Friend Chat Only"}},{"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 Api User Chat History Api User Chat  Character Id  History Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/user/chat/{character_id}/reset":{"post":{"summary":"User Chat Reset","operationId":"user_chat_reset_user_chat__character_id__reset_post","parameters":[{"name":"character_id","in":"path","required":true,"schema":{"type":"string","title":"Character Id"}},{"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 User Chat Reset User Chat  Character Id  Reset Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/user/chat/{character_id}/reset":{"post":{"summary":"Api User Chat Reset","operationId":"api_user_chat_reset_api_user_chat__character_id__reset_post","parameters":[{"name":"character_id","in":"path","required":true,"schema":{"type":"string","title":"Character Id"}},{"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 Api User Chat Reset Api User Chat  Character Id  Reset Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/relationship/{character_id}":{"get":{"summary":"Relationship Of Character","operationId":"relationship_of_character_relationship__character_id__get","parameters":[{"name":"character_id","in":"path","required":true,"schema":{"type":"string","title":"Character Id"}},{"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 Relationship Of Character Relationship  Character Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/relationship/{character_id}":{"get":{"summary":"Api Relationship Of Character","operationId":"api_relationship_of_character_api_relationship__character_id__get","parameters":[{"name":"character_id","in":"path","required":true,"schema":{"type":"string","title":"Character Id"}},{"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 Api Relationship Of Character Api Relationship  Character Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/relationship/{character_id}/desire/reset":{"post":{"summary":"Relationship Desire Reset","description":"重逢/再养成：把 Desire 拉回早期阶段（保留好感与聊天记录）。","operationId":"relationship_desire_reset_relationship__character_id__desire_reset_post","parameters":[{"name":"character_id","in":"path","required":true,"schema":{"type":"string","title":"Character Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DesireReencounterResetBody","default":{"user_id":"","clear_coercion_streak":true,"scene_id":""}}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Relationship Desire Reset Relationship  Character Id  Desire Reset Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/relationship/{character_id}/desire/reset":{"post":{"summary":"Api Relationship Desire Reset","operationId":"api_relationship_desire_reset_api_relationship__character_id__desire_reset_post","parameters":[{"name":"character_id","in":"path","required":true,"schema":{"type":"string","title":"Character Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DesireReencounterResetBody","default":{"user_id":"","clear_coercion_streak":true,"scene_id":""}}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Api Relationship Desire Reset Api Relationship  Character Id  Desire Reset Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/nurture/gift":{"post":{"summary":"Api Nurture Gift","description":"HTTP：为用户+角色应用一档养成礼物（写 EXP / 欲望 / 好感等到 dynamic_state）。","operationId":"api_nurture_gift_api_nurture_gift_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NurtureGiftBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Api Nurture Gift Api Nurture Gift Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/partner-nurture/bootstrap":{"get":{"summary":"Api Partner Nurture Bootstrap","description":"养成壳首屏合并接口：一次请求并行拉 Partner summary / gifts / rewards。","operationId":"api_partner_nurture_bootstrap_api_partner_nurture_bootstrap_get","parameters":[{"name":"character_id","in":"query","required":true,"schema":{"type":"string","title":"Character Id"}},{"name":"client_timezone","in":"query","required":false,"schema":{"type":"string","default":"","title":"Client Timezone"}},{"name":"client_utc_offset_minutes","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Client Utc Offset Minutes"}},{"name":"include_gifts","in":"query","required":false,"schema":{"type":"boolean","default":true,"title":"Include Gifts"}},{"name":"include_rewards","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Include Rewards"}},{"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 Api Partner Nurture Bootstrap Api Partner Nurture Bootstrap Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/partner-nurture/health":{"get":{"summary":"Api Partner Nurture Health","operationId":"api_partner_nurture_health_api_partner_nurture_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Api Partner Nurture Health Api Partner Nurture Health Get"}}}}}}},"/api/partner-nurture/gifts":{"get":{"summary":"Api Partner Nurture Gifts","description":"Partner 礼物 catalog + 当前用户/角色是否可送（供前端锁定未解锁档位）。","operationId":"api_partner_nurture_gifts_api_partner_nurture_gifts_get","parameters":[{"name":"character_id","in":"query","required":true,"schema":{"type":"string","title":"Character Id"}},{"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 Api Partner Nurture Gifts Api Partner Nurture Gifts Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/partner-nurture/last-gift-sync":{"get":{"summary":"Api Partner Nurture Last Gift Sync","description":"送礼后台 Partner 同步结果（HTTP 已先返回时，前端可轮询此接口展示 400 等业务错误）。","operationId":"api_partner_nurture_last_gift_sync_api_partner_nurture_last_gift_sync_get","parameters":[{"name":"character_id","in":"query","required":true,"schema":{"type":"string","title":"Character Id"}},{"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 Api Partner Nurture Last Gift Sync Api Partner Nurture Last Gift Sync Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/partner-nurture/summary":{"get":{"summary":"Api Partner Nurture Summary","description":"读取 derivative 养成壳当前 summary（需 ENABLE_PARTNER_NURTURE_BRIDGE=1）。","operationId":"api_partner_nurture_summary_api_partner_nurture_summary_get","parameters":[{"name":"character_id","in":"query","required":true,"schema":{"type":"string","title":"Character Id"}},{"name":"client_timezone","in":"query","required":false,"schema":{"type":"string","default":"","title":"Client Timezone"}},{"name":"client_utc_offset_minutes","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Client Utc Offset Minutes"}},{"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 Api Partner Nurture Summary Api Partner Nurture Summary Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/partner-nurture/rewards":{"get":{"summary":"Api Partner Nurture Rewards","operationId":"api_partner_nurture_rewards_api_partner_nurture_rewards_get","parameters":[{"name":"character_id","in":"query","required":true,"schema":{"type":"string","title":"Character Id"}},{"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 Api Partner Nurture Rewards Api Partner Nurture Rewards Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/partner-nurture/checkin-calendar":{"get":{"summary":"Api Partner Nurture Checkin Calendar","operationId":"api_partner_nurture_checkin_calendar_api_partner_nurture_checkin_calendar_get","parameters":[{"name":"character_id","in":"query","required":true,"schema":{"type":"string","title":"Character Id"}},{"name":"year","in":"query","required":true,"schema":{"type":"integer","title":"Year"}},{"name":"month","in":"query","required":true,"schema":{"type":"integer","title":"Month"}},{"name":"client_timezone","in":"query","required":false,"schema":{"type":"string","default":"","title":"Client Timezone"}},{"name":"client_utc_offset_minutes","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Client Utc Offset Minutes"}},{"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 Api Partner Nurture Checkin Calendar Api Partner Nurture Checkin Calendar Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/partner-nurture/rewards/claim":{"post":{"summary":"Api Partner Nurture Rewards Claim","operationId":"api_partner_nurture_rewards_claim_api_partner_nurture_rewards_claim_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PartnerRewardClaimBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Api Partner Nurture Rewards Claim Api Partner Nurture Rewards Claim Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/talk":{"post":{"summary":"Talk","description":"同步对话：一次请求返回完整 reply；内含引擎 talk（含养成 prepare/finalize 等副作用）。","operationId":"talk_talk_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TalkReq"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Talk Talk Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/talk/stream":{"post":{"summary":"Talk Stream","description":"流式对话（SSE）：事件流与同步 talk 同源引擎逻辑，含 client_timezone 等参数透传。","operationId":"talk_stream_talk_stream_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TalkReq"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/friends/invite":{"post":{"summary":"Invite","description":"好友邀请。","operationId":"invite_friends_invite_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/InviteReq"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Invite Friends Invite Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/friends/{user_id}":{"get":{"summary":"List Friends","description":"列出某用户的好友关系记录。","operationId":"list_friends_friends__user_id__get","parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"string","title":"User Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response List Friends Friends  User Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/memory/{character_id}":{"get":{"summary":"List Memories","description":"列出某角色的近期记忆。","operationId":"list_memories_memory__character_id__get","parameters":[{"name":"character_id","in":"path","required":true,"schema":{"type":"string","title":"Character Id"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":10,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response List Memories Memory  Character Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/memory/_status":{"get":{"summary":"Memory Status","description":"Qdrant long-memory backend status (non-breaking, read-only).","operationId":"memory_status_memory__status_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Memory Status Memory  Status Get"}}}}}}},"/api/memory/status":{"get":{"summary":"Api Memory Status","operationId":"api_memory_status_api_memory_status_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Api Memory Status Api Memory Status Get"}}}}}}},"/memory/upsert":{"post":{"summary":"Memory Upsert","operationId":"memory_upsert_memory_upsert_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MemoryUpsertReq"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Memory Upsert Memory Upsert Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/memory/upsert":{"post":{"summary":"Api Memory Upsert","operationId":"api_memory_upsert_api_memory_upsert_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MemoryUpsertReq"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Api Memory Upsert Api Memory Upsert Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/memory/search":{"post":{"summary":"Memory Search","operationId":"memory_search_memory_search_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MemorySearchReq"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Memory Search Memory Search Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/memory/search":{"post":{"summary":"Api Memory Search","operationId":"api_memory_search_api_memory_search_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MemorySearchReq"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Api Memory Search Api Memory Search Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/memory/debug/recent":{"get":{"summary":"Memory Debug Recent","operationId":"memory_debug_recent_memory_debug_recent_get","parameters":[{"name":"character_id","in":"query","required":false,"schema":{"type":"string","description":"Optional character scope","default":"","title":"Character Id"},"description":"Optional character scope"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":50,"minimum":1,"default":10,"title":"Limit"}},{"name":"memory_types","in":"query","required":false,"schema":{"type":"string","description":"Comma-separated memory types","default":"","title":"Memory Types"},"description":"Comma-separated memory types"},{"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 Memory Debug Recent Memory Debug Recent Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/memory/debug/recent":{"get":{"summary":"Api Memory Debug Recent","operationId":"api_memory_debug_recent_api_memory_debug_recent_get","parameters":[{"name":"character_id","in":"query","required":false,"schema":{"type":"string","default":"","title":"Character Id"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":50,"minimum":1,"default":10,"title":"Limit"}},{"name":"memory_types","in":"query","required":false,"schema":{"type":"string","default":"","title":"Memory Types"}},{"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 Api Memory Debug Recent Api Memory Debug Recent Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/module/memory/highlights":{"get":{"summary":"Module Memory Highlights","operationId":"module_memory_highlights_api_module_memory_highlights_get","parameters":[{"name":"character_id","in":"query","required":true,"schema":{"type":"string","minLength":1,"title":"Character Id"}},{"name":"user_id","in":"query","required":false,"schema":{"type":"string","default":"","title":"User Id"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":50,"minimum":1,"default":20,"title":"Limit"}},{"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 Module Memory Highlights Api Module Memory Highlights Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/module/memory/npc":{"get":{"summary":"Module Memory Npc","operationId":"module_memory_npc_api_module_memory_npc_get","parameters":[{"name":"character_id","in":"query","required":true,"schema":{"type":"string","minLength":1,"title":"Character Id"}},{"name":"user_id","in":"query","required":false,"schema":{"type":"string","default":"","title":"User Id"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":50,"minimum":1,"default":20,"title":"Limit"}},{"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 Module Memory Npc Api Module Memory Npc Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/persona/extract":{"post":{"tags":["persona"],"summary":"Api Persona Extract","description":"独立侧写服务：给定近期对话与其它 APP 传来的上下文，返回与 ``dynamic_state.persona_json`` 同结构的 JSON。\n需 ``ENABLE_PERSONA_EXTRACT_API=1``；可选 ``PERSONA_EXTRACT_API_KEY``（则必须带 ``X-Persona-Extract-Key``）。","operationId":"api_persona_extract_persona_extract_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-Persona-Extract-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Persona-Extract-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PersonaExtractReq"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Api Persona Extract Persona Extract Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/persona/extract":{"post":{"tags":["persona"],"summary":"Api Persona Extract","description":"独立侧写服务：给定近期对话与其它 APP 传来的上下文，返回与 ``dynamic_state.persona_json`` 同结构的 JSON。\n需 ``ENABLE_PERSONA_EXTRACT_API=1``；可选 ``PERSONA_EXTRACT_API_KEY``（则必须带 ``X-Persona-Extract-Key``）。","operationId":"api_persona_extract_api_persona_extract_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-Persona-Extract-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Persona-Extract-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PersonaExtractReq"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Api Persona Extract Api Persona Extract Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/persona/vault/extract":{"post":{"tags":["persona"],"summary":"Api Persona Vault Extract","description":"Persona Vault 提取 API：只做提取 + 分级 + 协议化，不做关系阶段可见性过滤。","operationId":"api_persona_vault_extract_api_persona_vault_extract_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-Persona-Extract-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Persona-Extract-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PersonaExtractReq"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Api Persona Vault Extract Api Persona Vault Extract Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/persona/vault/upsert":{"post":{"tags":["persona"],"summary":"Api Persona Vault Upsert","description":"Persona Vault 持久化 API：把已提取 traits 增量 merge 到本地 vault。","operationId":"api_persona_vault_upsert_api_persona_vault_upsert_post","parameters":[{"name":"X-Persona-Extract-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Persona-Extract-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PersonaVaultUpsertReq"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Api Persona Vault Upsert Api Persona Vault Upsert Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/persona/vault/get":{"get":{"tags":["persona"],"summary":"Api Persona Vault Get","description":"读取本地持久化 Persona Vault。","operationId":"api_persona_vault_get_api_persona_vault_get_get","parameters":[{"name":"user_id","in":"query","required":false,"schema":{"type":"string","default":"","title":"User Id"}},{"name":"character_id","in":"query","required":false,"schema":{"type":"string","default":"","title":"Character Id"}},{"name":"include_traits","in":"query","required":false,"schema":{"type":"boolean","default":true,"title":"Include Traits"}},{"name":"X-Persona-Extract-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Persona-Extract-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Api Persona Vault Get Api Persona Vault Get Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/persona/vault/level/compute":{"post":{"tags":["persona"],"summary":"Api Persona Vault Level Compute","description":"独立计算 Persona Asset Level：不读取、不写入持久化 vault。","operationId":"api_persona_vault_level_compute_api_persona_vault_level_compute_post","parameters":[{"name":"X-Persona-Extract-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Persona-Extract-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PersonaVaultLevelComputeReq"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Api Persona Vault Level Compute Api Persona Vault Level Compute Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/persona/vault/level":{"get":{"tags":["persona"],"summary":"Api Persona Vault Level Get","description":"读取持久化 Persona Vault 的 asset_level；旧文档缺失时即时重算返回。","operationId":"api_persona_vault_level_get_api_persona_vault_level_get","parameters":[{"name":"user_id","in":"query","required":false,"schema":{"type":"string","default":"","title":"User Id"}},{"name":"character_id","in":"query","required":false,"schema":{"type":"string","default":"","title":"Character Id"}},{"name":"X-Persona-Extract-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Persona-Extract-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Api Persona Vault Level Get Api Persona Vault Level Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/persona/vault/level/refresh":{"post":{"tags":["persona"],"summary":"Api Persona Vault Level Refresh","description":"从持久化 vault 重算 asset_level，并可写回 vault/audit。","operationId":"api_persona_vault_level_refresh_api_persona_vault_level_refresh_post","parameters":[{"name":"X-Persona-Extract-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Persona-Extract-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PersonaVaultLevelRefreshReq"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Api Persona Vault Level Refresh Api Persona Vault Level Refresh Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/persona/vault/extract-and-upsert":{"post":{"tags":["persona"],"summary":"Api Persona Vault Extract And Upsert","description":"先抽取 Persona Vault traits，再增量持久化到本地 vault。","operationId":"api_persona_vault_extract_and_upsert_api_persona_vault_extract_and_upsert_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-Persona-Extract-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Persona-Extract-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PersonaVaultExtractUpsertReq"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Api Persona Vault Extract And Upsert Api Persona Vault Extract And Upsert Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/persona/vault/audit":{"get":{"tags":["persona"],"summary":"Api Persona Vault Audit","description":"查询本地 Persona Vault 审计事件。","operationId":"api_persona_vault_audit_api_persona_vault_audit_get","parameters":[{"name":"user_id","in":"query","required":false,"schema":{"type":"string","default":"","title":"User Id"}},{"name":"character_id","in":"query","required":false,"schema":{"type":"string","default":"","title":"Character Id"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"default":50,"title":"Limit"}},{"name":"X-Persona-Extract-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Persona-Extract-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Api Persona Vault Audit Api Persona Vault Audit Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/persona/vault/resolve":{"post":{"tags":["persona"],"summary":"Api Persona Vault Resolve","description":"Persona Vault Resolve API：只做过滤 + 渲染，不重新抽取画像。","operationId":"api_persona_vault_resolve_api_persona_vault_resolve_post","parameters":[{"name":"X-Persona-Extract-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Persona-Extract-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PersonaVaultResolveReq"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Api Persona Vault Resolve Api Persona Vault Resolve Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/module/memory/user-profile":{"get":{"summary":"Module Memory User Profile","operationId":"module_memory_user_profile_api_module_memory_user_profile_get","parameters":[{"name":"user_id","in":"query","required":false,"schema":{"type":"string","default":"","title":"User Id"}},{"name":"character_id","in":"query","required":false,"schema":{"type":"string","default":"","title":"Character Id"}},{"name":"lite","in":"query","required":false,"schema":{"type":"boolean","description":"仅返回 nurturing_summary，供 Partner 养成壳快速刷新","default":false,"title":"Lite"},"description":"仅返回 nurturing_summary，供 Partner 养成壳快速刷新"},{"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 Module Memory User Profile Api Module Memory User Profile Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/module/memory/pin":{"post":{"summary":"Module Memory Pin","operationId":"module_memory_pin_api_module_memory_pin_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MemoryPinReq"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Module Memory Pin Api Module Memory Pin Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/module/memory/lifecycle":{"post":{"summary":"Module Memory Lifecycle","operationId":"module_memory_lifecycle_api_module_memory_lifecycle_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MemoryLifecycleReq"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Module Memory Lifecycle Api Module Memory Lifecycle Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/module/memory/lifecycle/batch":{"post":{"summary":"Module Memory Lifecycle Batch","operationId":"module_memory_lifecycle_batch_api_module_memory_lifecycle_batch_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MemoryLifecycleBatchReq"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Module Memory Lifecycle Batch Api Module Memory Lifecycle Batch Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/module/memory/recycle":{"get":{"summary":"Module Memory Recycle","operationId":"module_memory_recycle_api_module_memory_recycle_get","parameters":[{"name":"character_id","in":"query","required":true,"schema":{"type":"string","minLength":1,"title":"Character Id"}},{"name":"user_id","in":"query","required":false,"schema":{"type":"string","default":"","title":"User Id"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":40,"title":"Limit"}},{"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 Module Memory Recycle Api Module Memory Recycle Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/module/memory/auto-archive":{"post":{"summary":"Module Memory Auto Archive","operationId":"module_memory_auto_archive_api_module_memory_auto_archive_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MemoryAutoArchiveReq"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Module Memory Auto Archive Api Module Memory Auto Archive Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/module/memory/v2/config":{"get":{"summary":"Module Memory V2 Config","operationId":"module_memory_v2_config_api_module_memory_v2_config_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Module Memory V2 Config Api Module Memory V2 Config Get"}}}}}}},"/api/module/memory/v2/evolve":{"post":{"summary":"Module Memory V2 Evolve","operationId":"module_memory_v2_evolve_api_module_memory_v2_evolve_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MemoryV2CharacterReq"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Module Memory V2 Evolve Api Module Memory V2 Evolve Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/module/memory/v2/wake-latent":{"post":{"summary":"Module Memory V2 Wake Latent","operationId":"module_memory_v2_wake_latent_api_module_memory_v2_wake_latent_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MemoryV2CharacterReq"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Module Memory V2 Wake Latent Api Module Memory V2 Wake Latent Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/system/rules":{"get":{"summary":"System Rules","operationId":"system_rules_api_system_rules_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response System Rules Api System Rules Get"}}}}}},"post":{"summary":"System Rules Update","operationId":"system_rules_update_api_system_rules_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SystemPromptRulesReq"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response System Rules Update Api System Rules Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/system/templates":{"get":{"summary":"System Rule Templates","operationId":"system_rule_templates_api_system_templates_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response System Rule Templates Api System Templates Get"}}}}}}},"/api/system/rules/apply-template":{"post":{"summary":"System Rules Apply Template","operationId":"system_rules_apply_template_api_system_rules_apply_template_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SystemPromptTemplateApplyReq"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response System Rules Apply Template Api System Rules Apply Template Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/module/relationship/summary":{"get":{"summary":"Module Relationship Summary","operationId":"module_relationship_summary_api_module_relationship_summary_get","parameters":[{"name":"character_id","in":"query","required":true,"schema":{"type":"string","minLength":1,"title":"Character Id"}},{"name":"user_id","in":"query","required":false,"schema":{"type":"string","default":"","title":"User Id"}},{"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 Module Relationship Summary Api Module Relationship Summary Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/crew/run":{"post":{"summary":"Crew Run","operationId":"crew_run_api_crew_run_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CrewRunReq"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Crew Run Api Crew Run Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/crew/status/{run_id}":{"get":{"summary":"Crew Status","operationId":"crew_status_api_crew_status__run_id__get","parameters":[{"name":"run_id","in":"path","required":true,"schema":{"type":"string","title":"Run Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Crew Status Api Crew Status  Run Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/crew/config":{"get":{"summary":"Crew Config","operationId":"crew_config_api_crew_config_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Crew Config Api Crew Config Get"}}}}}},"post":{"summary":"Crew Config Update","operationId":"crew_config_update_api_crew_config_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CrewConfigReq"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Crew Config Update Api Crew Config Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}}},"components":{"schemas":{"CharacterCreateBody":{"properties":{"ava_character_id":{"type":"string","title":"Ava Character Id"},"public_card":{"additionalProperties":true,"type":"object","title":"Public Card"},"persona_snapshot":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Persona Snapshot"},"profile_stub":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Profile Stub"},"scene_kind":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Scene Kind"},"locale":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Locale"},"source":{"type":"string","title":"Source","default":"gacha_random_encounter"},"partner_character_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Partner Character Id"}},"type":"object","required":["ava_character_id"],"title":"CharacterCreateBody"},"CharacterPatchBody":{"properties":{"public_card":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Public Card"},"persona_snapshot":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Persona Snapshot"},"profile_stub":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Profile Stub"},"scene_kind":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Scene Kind"},"locale":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Locale"},"partner_character_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Partner Character Id"},"deleted":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Deleted"}},"type":"object","title":"CharacterPatchBody"},"CharacterUserSceneOpeningReq":{"properties":{"user_scene_zh":{"type":"string","minLength":4,"title":"User Scene Zh","description":"用户提供的开场场景描述（纯中文）"},"user_id":{"type":"string","title":"User Id","description":"用于读取 relationship / desire_level","default":"default_user"},"location":{"type":"string","title":"Location","description":"可选地点标签，写入 opening 元数据","default":""},"mood":{"type":"string","title":"Mood","description":"开场情绪","default":"表面乖巧暗中兴奋"}},"type":"object","required":["user_scene_zh"],"title":"CharacterUserSceneOpeningReq"},"ChatAppendBody":{"properties":{"ava_character_id":{"type":"string","title":"Ava Character Id"},"role":{"type":"string","title":"Role","default":"user"},"content":{"type":"string","title":"Content"},"scene_id":{"type":"string","title":"Scene Id","default":""},"locale":{"type":"string","title":"Locale","default":""}},"type":"object","required":["ava_character_id","content"],"title":"ChatAppendBody"},"CreateSceneReq":{"properties":{"random_npc_count":{"type":"integer","maximum":10.0,"minimum":1.0,"title":"Random Npc Count","default":3}},"type":"object","title":"CreateSceneReq","description":"创建酒吧场景：仅指定随机 NPC 数量（其余氛围由后端随机生成）。"},"CreateUniversalSceneReq":{"properties":{"random_npc_count":{"type":"integer","maximum":10.0,"minimum":1.0,"title":"Random Npc Count","default":3},"locale":{"type":"string","title":"Locale","description":"UI locale, e.g. zh-Hans or en","default":""},"scene_kind":{"type":"string","maxLength":48,"title":"Scene Kind","description":"bar | family_manor | urban_night | studio_quiet | custom_story 或其它英文标识","default":"bar"},"background_story":{"type":"string","maxLength":2000,"title":"Background Story","default":""}},"type":"object","title":"CreateUniversalSceneReq","description":"创建场景（酒吧或故事体裁）：可选背景故事写入 mood_summary（非酒吧）。"},"CrewConfigReq":{"properties":{"enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Enabled"},"backend":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Backend","description":"local | crewai"},"use_model":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Use Model"},"timeout_seconds":{"anyOf":[{"type":"integer","maximum":600.0,"minimum":5.0},{"type":"null"}],"title":"Timeout Seconds"},"max_retries":{"anyOf":[{"type":"integer","maximum":5.0,"minimum":0.0},{"type":"null"}],"title":"Max Retries"},"default_mode":{"anyOf":[{"type":"string","maxLength":80},{"type":"null"}],"title":"Default Mode"},"model":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"title":"Model"}},"type":"object","title":"CrewConfigReq"},"CrewRunReq":{"properties":{"task":{"type":"string","maxLength":2000,"minLength":1,"title":"Task"},"context":{"additionalProperties":true,"type":"object","title":"Context"},"mode":{"type":"string","maxLength":80,"title":"Mode","default":""},"async":{"type":"boolean","title":"Async","default":true}},"type":"object","required":["task"],"title":"CrewRunReq"},"DesireReencounterResetBody":{"properties":{"user_id":{"type":"string","title":"User Id","description":"Optional when Authorization Bearer is sent","default":""},"eroticism_score":{"anyOf":[{"type":"number","maximum":999.0,"minimum":0.0},{"type":"null"}],"title":"Eroticism Score","description":"Target eroticism_score; default DESIRE_REENCOUNTER_EROTICISM (usually 5)"},"clear_coercion_streak":{"type":"boolean","title":"Clear Coercion Streak","description":"Also clear Layer C coercion_streak","default":true},"scene_id":{"type":"string","maxLength":128,"title":"Scene Id","description":"Optional first_met_scene keep/override","default":""}},"type":"object","title":"DesireReencounterResetBody","description":"Explicit Desire re-encounter reset (does not wipe chat history)."},"DraftPutBody":{"properties":{"phase":{"type":"string","title":"Phase","default":""},"draft_payload":{"additionalProperties":true,"type":"object","title":"Draft Payload"}},"type":"object","title":"DraftPutBody"},"GachaCharacterRestoreReq":{"properties":{"charge":{"type":"boolean","title":"Charge","description":"为 true 时按 restore_cost 扣费","default":true}},"type":"object","title":"GachaCharacterRestoreReq"},"GachaCompanionAvatarCallbackReq":{"properties":{"job_id":{"type":"string","maxLength":120,"minLength":8,"title":"Job Id"},"image_url":{"type":"string","maxLength":2000,"title":"Image Url","default":""},"error":{"type":"string","maxLength":500,"title":"Error","default":""}},"type":"object","required":["job_id"],"title":"GachaCompanionAvatarCallbackReq"},"GachaCompanionAvatarReq":{"properties":{"my_ai_profile_id":{"type":"string","maxLength":120,"title":"My Ai Profile Id","default":""},"my_ai_profile":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"My Ai Profile"},"background_story":{"type":"string","maxLength":4000,"title":"Background Story","default":""},"display_name":{"type":"string","maxLength":120,"title":"Display Name","default":""},"random_avatar":{"type":"boolean","title":"Random Avatar","default":false},"sync_visual_from_profile":{"type":"boolean","title":"Sync Visual From Profile","default":false},"charge":{"type":"boolean","title":"Charge","default":true},"custom_erotic_profile":{"type":"string","maxLength":2800,"title":"Custom Erotic Profile","default":""},"skip_image":{"type":"boolean","title":"Skip Image","description":"为 true 时仅应用 my_ai_profile/档案，不调用生图；avatar_pending=true","default":false}},"type":"object","title":"GachaCompanionAvatarReq"},"GachaCompanionBackfillReq":{"properties":{"expand_backstory":{"type":"boolean","title":"Expand Backstory","description":"为 true 时对已确认角色补跑 backstory LLM（侧写/Encounter canon 始终会写入）","default":false}},"type":"object","title":"GachaCompanionBackfillReq"},"GachaCompanionChargeReq":{"properties":{"charge":{"type":"boolean","title":"Charge","default":true}},"type":"object","title":"GachaCompanionChargeReq"},"GachaCompanionConfirmReq":{"properties":{"delete":{"type":"boolean","title":"Delete","description":"为 true 时删除已确认的邂逅对象并重置为可再次创建","default":false},"skip_avatar":{"type":"boolean","title":"Skip Avatar","description":"为 true 时允许无 avatar_url 确认落盘；跳过后 avatar_pending=true，可后续补图","default":false}},"type":"object","title":"GachaCompanionConfirmReq"},"GachaCompanionCustomProfileReq":{"properties":{"tag_overrides":{"additionalProperties":{"type":"string"},"type":"object","title":"Tag Overrides","description":"field_key 或 tag index -> 新正文"},"sexual_preference":{"type":"string","maxLength":500,"title":"Sexual Preference","default":""},"sexual_orientation":{"type":"string","maxLength":300,"title":"Sexual Orientation","default":""},"core_tags":{"items":{"type":"string"},"type":"array","maxItems":12,"title":"Core Tags"},"relationship":{"type":"string","maxLength":500,"title":"Relationship","default":""},"background_story":{"type":"string","maxLength":2000,"title":"Background Story","default":""},"custom_erotic_profile":{"anyOf":[{"type":"string","maxLength":4000},{"type":"null"}],"title":"Custom Erotic Profile","description":"用户自定义的详细角色扮演描述（关系、性格、场景、具体玩法等），将直接注入到聊天行为指令中发给大模型，按用户原文使用；不传则不改写该字段"},"user_kink_tags":{"items":{"type":"string"},"type":"array","maxItems":24,"title":"User Kink Tags","description":"情色偏好标签（卡片库多选）"},"kink_intensity":{"type":"string","maxLength":16,"title":"Kink Intensity","description":"玩法强度：light | medium | high","default":"medium"},"charge":{"type":"boolean","title":"Charge","description":"生成后档案修改默认扣费","default":true},"random_field":{"type":"string","maxLength":48,"title":"Random Field","description":"仅随机指定字段：background_story | personality | erotic_core | kink_match | default_kink | core_tags 等","default":""}},"type":"object","title":"GachaCompanionCustomProfileReq"},"GachaCompanionDraftResetReq":{"properties":{"delete_confirmed":{"type":"boolean","title":"Delete Confirmed","description":"为 true 时删除已确认邂逅对象","default":false}},"type":"object","title":"GachaCompanionDraftResetReq"},"GachaCompanionExportImagePromptReq":{"properties":{"random_avatar":{"type":"boolean","title":"Random Avatar","description":"为 true 时随机生成 my_ai_profile 再导出 prompt","default":false},"my_ai_profile":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"My Ai Profile","description":"可选 wizard profile；缺省用当前邂逅草稿"},"seed":{"type":"string","maxLength":64,"title":"Seed","description":"可选 roll_seed；缺省随机","default":""}},"type":"object","title":"GachaCompanionExportImagePromptReq"},"GachaCompanionPersonaApplyReq":{"properties":{"persona_blurb_zh":{"type":"string","maxLength":800,"minLength":40,"title":"Persona Blurb Zh","description":"三方 LLM 扩写后的中文简介"},"source":{"type":"string","maxLength":40,"title":"Source","description":"来源标记，默认 partner_llm","default":"partner_llm"}},"type":"object","required":["persona_blurb_zh"],"title":"GachaCompanionPersonaApplyReq"},"GachaCompanionPersonaExpandReq":{"properties":{"regenerate":{"type":"boolean","title":"Regenerate","description":"为 true 时忽略已有简介并重新生成","default":false},"charge":{"type":"boolean","title":"Charge","description":"P2 暂不扣费，预留字段","default":false}},"type":"object","title":"GachaCompanionPersonaExpandReq"},"GachaCompanionSceneReq":{"properties":{"scene_kind":{"type":"string","maxLength":48,"title":"Scene Kind","default":"bar"}},"type":"object","title":"GachaCompanionSceneReq"},"GachaCompanionTagLockReq":{"properties":{"tag_index":{"type":"integer","maximum":20.0,"minimum":0.0,"title":"Tag Index"},"charge":{"type":"boolean","title":"Charge","default":true}},"type":"object","required":["tag_index"],"title":"GachaCompanionTagLockReq"},"GachaCompanionTagUnlockReq":{"properties":{"tag_index":{"type":"integer","maximum":20.0,"minimum":0.0,"title":"Tag Index"}},"type":"object","required":["tag_index"],"title":"GachaCompanionTagUnlockReq"},"GachaCompanionWizardMetaReq":{"properties":{"confirm_wizard_step":{"anyOf":[{"type":"integer","maximum":3.0,"minimum":1.0},{"type":"null"}],"title":"Confirm Wizard Step","description":"确认向导当前步骤 1-3"},"confirm_avatar_prompt_skip":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Confirm Avatar Prompt Skip","description":"是否已跳过「是否生成形象」提示（步骤 1）"}},"type":"object","title":"GachaCompanionWizardMetaReq"},"GachaWalletDebitReq":{"properties":{"amount":{"type":"integer","maximum":100000.0,"minimum":0.0,"title":"Amount","default":0},"reason":{"type":"string","maxLength":120,"title":"Reason","default":"gacha_reroll"}},"type":"object","title":"GachaWalletDebitReq"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"InviteReq":{"properties":{"user_id":{"type":"string","title":"User Id"},"character_id":{"type":"string","title":"Character Id"}},"type":"object","required":["user_id","character_id"],"title":"InviteReq","description":"尝试将某角色加为好友（需好感达标）。"},"LLMConfigReq":{"properties":{"api_key":{"type":"string","title":"Api Key"},"model":{"type":"string","title":"Model","default":"seed-1-8-251228"},"base_url":{"type":"string","title":"Base Url","default":"https://ark.ap-southeast.bytepluses.com/api/v3"},"extra_headers":{"anyOf":[{"additionalProperties":{"type":"string"},"type":"object"},{"type":"null"}],"title":"Extra Headers","description":"可选：合并到请求头的键值（部分中转/聚合网关需要额外头）。不传则保留当前内存中的 extra_headers。"}},"type":"object","required":["api_key"],"title":"LLMConfigReq","description":"运行时配置 OpenAI 兼容网关。"},"LLMModelReq":{"properties":{"model":{"type":"string","maxLength":200,"minLength":1,"title":"Model"}},"type":"object","required":["model"],"title":"LLMModelReq","description":"仅切换当前模型名，保留 key/base_url/headers。"},"LoginReq":{"properties":{"username":{"type":"string","title":"Username"},"password":{"type":"string","title":"Password"}},"type":"object","required":["username","password"],"title":"LoginReq"},"MemoryAutoArchiveReq":{"properties":{"user_id":{"type":"string","title":"User Id","description":"Optional when Authorization Bearer is sent","default":""},"character_id":{"type":"string","maxLength":120,"minLength":1,"title":"Character Id"},"dry_run":{"type":"boolean","title":"Dry Run","default":true},"trigger_total":{"anyOf":[{"type":"integer","maximum":1000.0,"minimum":12.0},{"type":"null"}],"title":"Trigger Total"},"keep_per_type":{"anyOf":[{"type":"integer","maximum":200.0,"minimum":1.0},{"type":"null"}],"title":"Keep Per Type"}},"type":"object","required":["character_id"],"title":"MemoryAutoArchiveReq"},"MemoryLifecycleBatchReq":{"properties":{"user_id":{"type":"string","title":"User Id","description":"Optional when Authorization Bearer is sent","default":""},"character_id":{"type":"string","maxLength":120,"minLength":1,"title":"Character Id"},"action":{"type":"string","title":"Action","description":"hide | archive | delete | restore","default":"archive"},"memory_types":{"items":{"type":"string"},"type":"array","title":"Memory Types"},"from_statuses":{"items":{"type":"string"},"type":"array","title":"From Statuses"},"query":{"type":"string","maxLength":300,"title":"Query","default":""},"limit":{"type":"integer","maximum":200.0,"minimum":1.0,"title":"Limit","default":40}},"type":"object","required":["character_id"],"title":"MemoryLifecycleBatchReq"},"MemoryLifecycleReq":{"properties":{"user_id":{"type":"string","title":"User Id","description":"Optional when Authorization Bearer is sent","default":""},"character_id":{"type":"string","maxLength":120,"minLength":1,"title":"Character Id"},"memory_id":{"type":"string","maxLength":200,"minLength":1,"title":"Memory Id"},"action":{"type":"string","title":"Action","description":"hide | archive | delete | restore","default":"archive"},"reason":{"type":"string","maxLength":500,"title":"Reason","default":""}},"type":"object","required":["character_id","memory_id"],"title":"MemoryLifecycleReq"},"MemoryPinReq":{"properties":{"user_id":{"type":"string","title":"User Id","description":"Optional when Authorization Bearer is sent","default":""},"character_id":{"type":"string","maxLength":120,"minLength":1,"title":"Character Id"},"text":{"type":"string","maxLength":2000,"minLength":1,"title":"Text"},"reason":{"type":"string","maxLength":500,"title":"Reason","default":""},"scene_id":{"type":"string","maxLength":120,"title":"Scene Id","default":""},"importance":{"type":"number","maximum":1.0,"minimum":0.0,"title":"Importance","default":0.95}},"type":"object","required":["character_id","text"],"title":"MemoryPinReq"},"MemorySearchReq":{"properties":{"user_id":{"type":"string","title":"User Id","description":"Optional when Authorization Bearer is sent","default":""},"query":{"type":"string","maxLength":2000,"minLength":1,"title":"Query"},"character_id":{"type":"string","maxLength":120,"title":"Character Id","default":""},"limit":{"type":"integer","maximum":50.0,"minimum":1.0,"title":"Limit","default":8},"memory_types":{"items":{"type":"string"},"type":"array","title":"Memory Types"}},"type":"object","required":["query"],"title":"MemorySearchReq"},"MemoryUpsertReq":{"properties":{"user_id":{"type":"string","title":"User Id","description":"Optional when Authorization Bearer is sent","default":""},"character_id":{"type":"string","minLength":1,"title":"Character Id"},"text":{"type":"string","maxLength":4000,"minLength":1,"title":"Text"},"memory_type":{"type":"string","maxLength":64,"title":"Memory Type","default":"fact"},"scene_id":{"type":"string","maxLength":120,"title":"Scene Id","default":""},"importance":{"type":"number","maximum":1.0,"minimum":0.0,"title":"Importance","default":0.5},"memory_id":{"type":"string","maxLength":80,"title":"Memory Id","default":""}},"type":"object","required":["character_id","text"],"title":"MemoryUpsertReq"},"MemoryV2CharacterReq":{"properties":{"user_id":{"type":"string","title":"User Id","description":"Optional when Authorization Bearer is sent","default":""},"character_id":{"type":"string","maxLength":120,"minLength":1,"title":"Character Id"},"limit":{"type":"integer","maximum":500.0,"minimum":1.0,"title":"Limit","default":200}},"type":"object","required":["character_id"],"title":"MemoryV2CharacterReq"},"MyAiFillReq":{"properties":{"profile":{"additionalProperties":true,"type":"object","title":"Profile"},"step_key":{"type":"string","maxLength":40,"title":"Step Key","default":""},"seed":{"type":"string","maxLength":80,"title":"Seed","default":""}},"type":"object","title":"MyAiFillReq"},"NurtureGiftBody":{"properties":{"character_id":{"type":"string","minLength":1,"title":"Character Id"},"tier":{"type":"string","title":"Tier","description":"free | common | advanced | luxury","default":"common"},"backpack_item_id":{"type":"string","maxLength":128,"title":"Backpack Item Id","description":"背包条目 ID；free 档（每日心礼）必须经背包使用","default":""},"client_timezone":{"type":"string","maxLength":80,"title":"Client Timezone","default":""},"client_utc_offset_minutes":{"anyOf":[{"type":"integer","maximum":840.0,"minimum":-840.0},{"type":"null"}],"title":"Client Utc Offset Minutes"}},"type":"object","required":["character_id"],"title":"NurtureGiftBody"},"PartnerEncounterSpawnReq":{"properties":{"partner_user_id":{"type":"string","maxLength":120,"title":"Partner User Id","default":""},"partner_character_id":{"type":"string","maxLength":120,"title":"Partner Character Id","default":""},"character_bundle":{"additionalProperties":true,"type":"object","title":"Character Bundle"},"world_context":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"World Context"},"spawn_options":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Spawn Options"}},"type":"object","required":["character_bundle"],"title":"PartnerEncounterSpawnReq"},"PartnerRewardClaimBody":{"properties":{"character_id":{"type":"string","minLength":1,"title":"Character Id"},"reward_key":{"type":"string","minLength":1,"title":"Reward Key"},"client_timezone":{"type":"string","maxLength":80,"title":"Client Timezone","default":""},"client_utc_offset_minutes":{"anyOf":[{"type":"integer","maximum":840.0,"minimum":-840.0},{"type":"null"}],"title":"Client Utc Offset Minutes"}},"type":"object","required":["character_id","reward_key"],"title":"PartnerRewardClaimBody"},"PersonaExtractReq":{"properties":{"conversation_history":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Conversation History","description":"OpenAI/FastChat 风格 [{'role':'user'|'assistant', 'content':'...'}, ...]，仅 user 言论参与推断"},"current_persona":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Current Persona"},"merged_profile_tags":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Merged Profile Tags","description":"与引擎 merged_user_profile_tags 同结构的规则标签摘要（likes/dislikes/boundaries/...）"},"legacy_sketch":{"type":"string","maxLength":1200,"title":"Legacy Sketch","default":""},"locale":{"type":"string","maxLength":48,"title":"Locale","default":""},"temperature":{"type":"number","maximum":1.0,"minimum":0.0,"title":"Temperature","default":0.25},"user_id":{"type":"string","title":"User Id","description":"persist 时使用；匿名抽取可省略","default":""},"character_id":{"type":"string","maxLength":120,"title":"Character Id","default":""},"persist":{"type":"boolean","title":"Persist","description":"为 true 时写入本机 dynamic_state.persona_json（需登录或显式 user_id）","default":false},"mirror_dynamic_user_profile":{"type":"boolean","title":"Mirror Dynamic User Profile","description":"persist 时顺带更新 relationships.dynamic_user_profile（摘要镜像）","default":false},"return_vault_traits":{"type":"boolean","title":"Return Vault Traits","description":"为 true 时额外返回 Persona Vault traits / summary（不自动持久化 vault）。","default":false},"return_rendered_context":{"type":"boolean","title":"Return Rendered Context","description":"为 true 且 return_vault_traits=true 时，额外返回平台无关的画像上下文片段。","default":false},"render_mode":{"type":"string","maxLength":20,"title":"Render Mode","description":"rendered_context 模式：full | compact | minimal。","default":"compact"}},"type":"object","required":["conversation_history"],"title":"PersonaExtractReq","description":"独立于 /talk 的侧写抽取：供第三方或脚本直接提交对话片段。\n``current_persona`` 为上一轮 ``persona_json`` 时可增量 merge。"},"PersonaVaultExtractUpsertReq":{"properties":{"conversation_history":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Conversation History","description":"OpenAI/FastChat 风格 [{'role':'user'|'assistant', 'content':'...'}, ...]，仅 user 言论参与推断"},"current_persona":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Current Persona"},"merged_profile_tags":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Merged Profile Tags","description":"与引擎 merged_user_profile_tags 同结构的规则标签摘要（likes/dislikes/boundaries/...）"},"legacy_sketch":{"type":"string","maxLength":1200,"title":"Legacy Sketch","default":""},"locale":{"type":"string","maxLength":48,"title":"Locale","default":""},"temperature":{"type":"number","maximum":1.0,"minimum":0.0,"title":"Temperature","default":0.25},"user_id":{"type":"string","title":"User Id","description":"persist 时使用；匿名抽取可省略","default":""},"character_id":{"type":"string","maxLength":120,"title":"Character Id","default":""},"persist":{"type":"boolean","title":"Persist","description":"为 true 时写入本机 dynamic_state.persona_json（需登录或显式 user_id）","default":false},"mirror_dynamic_user_profile":{"type":"boolean","title":"Mirror Dynamic User Profile","description":"persist 时顺带更新 relationships.dynamic_user_profile（摘要镜像）","default":false},"return_vault_traits":{"type":"boolean","title":"Return Vault Traits","description":"为 true 时额外返回 Persona Vault traits / summary（不自动持久化 vault）。","default":false},"return_rendered_context":{"type":"boolean","title":"Return Rendered Context","description":"为 true 且 return_vault_traits=true 时，额外返回平台无关的画像上下文片段。","default":false},"render_mode":{"type":"string","maxLength":20,"title":"Render Mode","description":"rendered_context 模式：full | compact | minimal。","default":"compact"},"merge":{"type":"boolean","title":"Merge","default":true},"source":{"type":"string","maxLength":120,"title":"Source","default":"api_extract_and_upsert"},"include_traits":{"type":"boolean","title":"Include Traits","default":true},"refresh_asset_level":{"type":"boolean","title":"Refresh Asset Level","default":true},"return_asset_level":{"type":"boolean","title":"Return Asset Level","default":false}},"type":"object","required":["conversation_history"],"title":"PersonaVaultExtractUpsertReq","description":"先执行画像提取，再把 Persona Vault traits upsert 到本地持久化 vault。"},"PersonaVaultLevelComputeReq":{"properties":{"traits":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Traits"},"audit_events":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Audit Events"},"user_id":{"type":"string","maxLength":120,"title":"User Id","default":""},"character_id":{"type":"string","maxLength":120,"title":"Character Id","default":""}},"type":"object","title":"PersonaVaultLevelComputeReq","description":"Stateless 画像资产等级计算：只根据 traits/audit_events 计算，不读写持久化 vault。"},"PersonaVaultLevelRefreshReq":{"properties":{"user_id":{"type":"string","maxLength":120,"minLength":1,"title":"User Id"},"character_id":{"type":"string","maxLength":120,"minLength":1,"title":"Character Id"},"persist":{"type":"boolean","title":"Persist","default":true},"source":{"type":"string","maxLength":120,"title":"Source","default":"api_level_refresh"}},"type":"object","required":["user_id","character_id"],"title":"PersonaVaultLevelRefreshReq","description":"从已持久化 vault 重算 asset_level，可选择写回 vault document 与 audit。"},"PersonaVaultResolveReq":{"properties":{"traits":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Traits"},"relationship_stage":{"type":"string","maxLength":40,"title":"Relationship Stage","default":"Stranger"},"access_level":{"anyOf":[{"type":"integer","maximum":6.0,"minimum":0.0},{"type":"null"}],"title":"Access Level"},"required_asset_version":{"type":"string","maxLength":40,"title":"Required Asset Version","description":"可选；传入后会校验服务端支持版本与 traits.asset_version，防止新旧资产结构混用。","default":""},"return_rendered_context":{"type":"boolean","title":"Return Rendered Context","default":false},"render_mode":{"type":"string","maxLength":20,"title":"Render Mode","default":"compact"}},"type":"object","title":"PersonaVaultResolveReq","description":"根据关系阶段 / 访问等级过滤 Persona Vault traits，并可选渲染平台无关上下文。"},"PersonaVaultUpsertReq":{"properties":{"user_id":{"type":"string","maxLength":120,"minLength":1,"title":"User Id"},"character_id":{"type":"string","maxLength":120,"minLength":1,"title":"Character Id"},"traits":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Traits"},"merge":{"type":"boolean","title":"Merge","default":true},"source":{"type":"string","maxLength":120,"title":"Source","default":"api"},"include_traits":{"type":"boolean","title":"Include Traits","default":true},"refresh_asset_level":{"type":"boolean","title":"Refresh Asset Level","default":true},"return_asset_level":{"type":"boolean","title":"Return Asset Level","default":false}},"type":"object","required":["user_id","character_id"],"title":"PersonaVaultUpsertReq","description":"把已提取的 Persona Vault traits 持久化到本地 vault，并可选择增量 merge。"},"RandomEncounterStartReq":{"properties":{"character_ids":{"items":{"type":"string"},"type":"array","maxItems":9,"minItems":1,"title":"Character Ids"},"selected_character_id":{"type":"string","maxLength":120,"title":"Selected Character Id","default":""},"scene_kind":{"type":"string","maxLength":48,"title":"Scene Kind","default":"studio_quiet"},"background_story":{"type":"string","maxLength":2000,"title":"Background Story","default":""}},"type":"object","required":["character_ids"],"title":"RandomEncounterStartReq"},"RandomNpcRollReq":{"properties":{"count":{"type":"integer","maximum":9.0,"minimum":1.0,"title":"Count","default":3},"scene_kind":{"type":"string","maxLength":48,"title":"Scene Kind","default":"studio_quiet"},"locale":{"type":"string","maxLength":32,"title":"Locale","default":""},"charge_roll":{"type":"boolean","title":"Charge Roll","description":"付费重抽：扣金币并生成新路人","default":false}},"type":"object","title":"RandomNpcRollReq"},"RegisterReq":{"properties":{"username":{"type":"string","maxLength":32,"minLength":3,"title":"Username"},"password":{"type":"string","maxLength":128,"minLength":6,"title":"Password"}},"type":"object","required":["username","password"],"title":"RegisterReq"},"RelationshipPatchBody":{"properties":{"desire":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Desire"},"eroticism_score":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Eroticism Score"},"favorability":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Favorability"},"trust":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Trust"},"coercion_streak":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Coercion Streak"},"payload":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Payload"}},"type":"object","title":"RelationshipPatchBody"},"SceneCreateBody":{"properties":{"scene_id":{"type":"string","title":"Scene Id"},"ava_character_id":{"type":"string","title":"Ava Character Id","default":""},"kind":{"type":"string","title":"Kind","default":""},"payload":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Payload"}},"type":"object","required":["scene_id"],"title":"SceneCreateBody"},"SystemPromptRulesReq":{"properties":{"enabled":{"type":"boolean","title":"Enabled","default":false},"text":{"type":"string","maxLength":12000,"title":"Text","default":""}},"type":"object","title":"SystemPromptRulesReq"},"SystemPromptTemplateApplyReq":{"properties":{"template_id":{"type":"string","maxLength":120,"minLength":1,"title":"Template Id"},"replace":{"type":"boolean","title":"Replace","description":"true=replace rules text; false=append","default":false}},"type":"object","required":["template_id"],"title":"SystemPromptTemplateApplyReq"},"TalkEngineReq":{"properties":{"eroticism_score":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Eroticism Score","description":"Absolute 0..999; when set, this turn skips automatic eroticism delta and uses this value."},"favorability":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Favorability","description":"Absolute 0..100; when set, skips favor delta for this turn."},"trust":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Trust","description":"Absolute 0..100; when set, skips trust delta for this turn."},"narrative_note":{"type":"string","title":"Narrative Note","description":"Injects Official engine narrative into the LLM prompt (e.g. day-2 state while keeping memory).","default":""},"prompt_profile":{"type":"string","title":"Prompt Profile","description":"Optional prompt budget profile, e.g. compact for group chat.","default":""}},"type":"object","title":"TalkEngineReq","description":"Local engine overrides for this turn (optional). Sets relationship fields authoritatively when provided."},"TalkReq":{"properties":{"user_id":{"type":"string","title":"User Id","description":"Optional when Authorization: Bearer is sent; may be empty","default":""},"scene_id":{"type":"string","title":"Scene Id"},"character_id":{"type":"string","title":"Character Id"},"message":{"type":"string","title":"Message","description":"Legacy single field; optional if user_dialogue / user_narration set","default":""},"user_dialogue":{"type":"string","title":"User Dialogue","description":"In-scene speech (split input). Combined with user_narration on the server.","default":""},"user_narration":{"type":"string","title":"User Narration","description":"Narration / environment / state (split input). Wrapped in 【】 for the model.","default":""},"locale":{"type":"string","title":"Locale","description":"UI locale, e.g. zh-Hans or en","default":""},"user_display_name":{"type":"string","title":"User Display Name","description":"User display name; empty sends User","default":""},"user_gender":{"type":"string","title":"User Gender","description":"e.g. male/female; used for narration branching","default":""},"engine":{"anyOf":[{"$ref":"#/components/schemas/TalkEngineReq"},{"type":"null"}],"description":"Optional local server-side state: absolute scores + narrative line for the model."},"client_timezone":{"type":"string","maxLength":80,"title":"Client Timezone","description":"IANA timezone for nurture calendar (e.g. Asia/Shanghai). Empty = UTC calendar.","default":""},"client_utc_offset_minutes":{"anyOf":[{"type":"integer","maximum":840.0,"minimum":-840.0},{"type":"null"}],"title":"Client Utc Offset Minutes","description":"Minutes east of UTC when client_timezone is empty (e.g. China 480). Browser: -Date.getTimezoneOffset()."}},"type":"object","required":["scene_id","character_id"],"title":"TalkReq","description":"与当前场景内某角色对话一轮（正文可来自 message 或 user_dialogue / user_narration）。"},"UserPutBody":{"properties":{"display_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Display Name"},"gender":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Gender"},"locale":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Locale"},"extra":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Extra"}},"type":"object","title":"UserPutBody"},"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"}}}}