{"openapi":"3.1.0","info":{"title":"Archivist Public API","description":"Public API for Archivist - Tabletop RPG Campaign Management","version":"1.0.0"},"paths":{"/health":{"get":{"tags":["system"],"summary":"Health Check","description":"Lightweight health check endpoint for Railway","operationId":"health_check_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/":{"get":{"tags":["system"],"summary":"Root","description":"Root endpoint with API information","operationId":"root__get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/health/database":{"get":{"tags":["system"],"summary":"Database Health Check","description":"Detailed database health check endpoint","operationId":"database_health_check_health_database_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/v1":{"get":{"tags":["system"],"summary":"Api V1 Info","description":"API v1 information","operationId":"api_v1_info_v1_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/v1/campaigns":{"get":{"tags":["campaigns","developer-api","product-api"],"summary":"List Campaigns","description":"List campaigns accessible to the authenticated user.","operationId":"list_campaigns_v1_campaigns_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":1,"title":"Page"}},{"name":"size","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":20,"title":"Size"}},{"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":{"$ref":"#/components/schemas/PaginatedResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["campaigns","developer-api","product-api"],"summary":"Create Campaign","description":"Create a new campaign.","operationId":"create_campaign_v1_campaigns_post","security":[{"HTTPBearer":[]}],"parameters":[{"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/WorldCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorldRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/campaigns/{campaign_id}/journal-tree":{"get":{"tags":["campaigns","developer-api","product-api"],"summary":"Get Campaign Journal Tree","operationId":"get_campaign_journal_tree_v1_campaigns__campaign_id__journal_tree_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"campaign_id","in":"path","required":true,"schema":{"type":"string","title":"Campaign 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":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/campaigns/{campaign_id}/home-feed":{"get":{"tags":["campaigns","developer-api","product-api","product-api"],"summary":"Get Campaign Home Feed","operationId":"get_campaign_home_feed_v1_campaigns__campaign_id__home_feed_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"campaign_id","in":"path","required":true,"schema":{"type":"string","title":"Campaign 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":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/campaigns/{campaign_id}/bootstrap":{"get":{"tags":["campaigns","developer-api","product-api"],"summary":"Get Campaign Bootstrap","operationId":"get_campaign_bootstrap_v1_campaigns__campaign_id__bootstrap_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"campaign_id","in":"path","required":true,"schema":{"type":"string","title":"Campaign 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":{"$ref":"#/components/schemas/CampaignBootstrapRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/campaigns/{campaign_id}/quest-log":{"get":{"tags":["campaigns","developer-api","product-api"],"summary":"Get Campaign Quest Log","operationId":"get_campaign_quest_log_v1_campaigns__campaign_id__quest_log_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"campaign_id","in":"path","required":true,"schema":{"type":"string","title":"Campaign 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":{"$ref":"#/components/schemas/QuestLogRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/campaigns/{campaign_id}/settings":{"get":{"tags":["campaigns","developer-api","product-api"],"summary":"Get Campaign Settings","operationId":"get_campaign_settings_v1_campaigns__campaign_id__settings_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"campaign_id","in":"path","required":true,"schema":{"type":"string","title":"Campaign 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":{"$ref":"#/components/schemas/CampaignSettingsRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["campaigns","developer-api","product-api"],"summary":"Patch Campaign Settings","operationId":"patch_campaign_settings_v1_campaigns__campaign_id__settings_patch","security":[{"HTTPBearer":[]}],"parameters":[{"name":"campaign_id","in":"path","required":true,"schema":{"type":"string","title":"Campaign 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/CampaignSettingsUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CampaignSettingsRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/campaigns/{campaign_id}/cast":{"get":{"tags":["campaigns","developer-api","product-api"],"summary":"Get Campaign Cast","operationId":"get_campaign_cast_v1_campaigns__campaign_id__cast_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"campaign_id","in":"path","required":true,"schema":{"type":"string","title":"Campaign 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":"array","items":{"$ref":"#/components/schemas/CastMemberRead"},"title":"Response Get Campaign Cast V1 Campaigns  Campaign Id  Cast Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["campaigns","developer-api","product-api"],"summary":"Create Campaign Cast Member","operationId":"create_campaign_cast_member_v1_campaigns__campaign_id__cast_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"campaign_id","in":"path","required":true,"schema":{"type":"string","title":"Campaign 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/CastMemberCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CastMemberCreateResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/campaigns/{campaign_id}/cast/{speaker_id}":{"patch":{"tags":["campaigns","developer-api","product-api"],"summary":"Patch Campaign Cast Member","operationId":"patch_campaign_cast_member_v1_campaigns__campaign_id__cast__speaker_id__patch","security":[{"HTTPBearer":[]}],"parameters":[{"name":"campaign_id","in":"path","required":true,"schema":{"type":"string","title":"Campaign Id"}},{"name":"speaker_id","in":"path","required":true,"schema":{"type":"string","title":"Speaker 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/CastMemberUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CastMemberRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["campaigns","developer-api","product-api"],"summary":"Delete Campaign Cast Member","operationId":"delete_campaign_cast_member_v1_campaigns__campaign_id__cast__speaker_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"campaign_id","in":"path","required":true,"schema":{"type":"string","title":"Campaign Id"}},{"name":"speaker_id","in":"path","required":true,"schema":{"type":"string","title":"Speaker Id"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/campaigns/{campaign_id}/cast/{speaker_id}/voice-profile":{"delete":{"tags":["campaigns","developer-api","product-api"],"summary":"Delete Campaign Cast Voice Profile","operationId":"delete_campaign_cast_voice_profile_v1_campaigns__campaign_id__cast__speaker_id__voice_profile_delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"campaign_id","in":"path","required":true,"schema":{"type":"string","title":"Campaign Id"}},{"name":"speaker_id","in":"path","required":true,"schema":{"type":"string","title":"Speaker 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":{"$ref":"#/components/schemas/VoiceProfileDeleteResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/campaigns/{campaign_id}/player-onboarding/claim-character":{"post":{"tags":["campaigns","developer-api","product-api"],"summary":"Claim Player Character","operationId":"claim_player_character_v1_campaigns__campaign_id__player_onboarding_claim_character_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"campaign_id","in":"path","required":true,"schema":{"type":"string","title":"Campaign 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/ClaimCharacterRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PlayerOnboardingResult"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/campaigns/{campaign_id}/player-onboarding/create-character":{"post":{"tags":["campaigns","developer-api","product-api"],"summary":"Create Onboarding Player Character","operationId":"create_onboarding_player_character_v1_campaigns__campaign_id__player_onboarding_create_character_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"campaign_id","in":"path","required":true,"schema":{"type":"string","title":"Campaign 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/CreatePlayerCharacterRequest"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PlayerOnboardingResult"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/campaigns/{campaign_id}/player-onboarding/claim-gm":{"post":{"tags":["campaigns","developer-api","product-api"],"summary":"Claim Player Gm","operationId":"claim_player_gm_v1_campaigns__campaign_id__player_onboarding_claim_gm_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"campaign_id","in":"path","required":true,"schema":{"type":"string","title":"Campaign 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":{"$ref":"#/components/schemas/PlayerOnboardingResult"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/campaigns/{campaign_id}/members":{"get":{"tags":["campaigns","developer-api","product-api"],"summary":"Get Campaign Members","operationId":"get_campaign_members_v1_campaigns__campaign_id__members_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"campaign_id","in":"path","required":true,"schema":{"type":"string","title":"Campaign 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":"array","items":{"$ref":"#/components/schemas/CampaignMemberRead"},"title":"Response Get Campaign Members V1 Campaigns  Campaign Id  Members Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/campaigns/{campaign_id}/artifacts":{"get":{"tags":["campaigns","developer-api","product-api","product-api"],"summary":"Get Campaign Artifacts","description":"Read-only campaign artifacts catalog (Hero Awards, Spotlights, Quotes, Key Moments, Session Handouts, Cast Analysis).\n\nProduct-view only. Entries carry either a pre-rendered `imageUrl` or\n`renderParams` for the public web card renderers.","operationId":"get_campaign_artifacts_v1_campaigns__campaign_id__artifacts_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"campaign_id","in":"path","required":true,"schema":{"type":"string","title":"Campaign Id"}},{"name":"type","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Comma-separated artifact types to include: hero-award, spotlight, quote, key-moment, handout, cast-analysis.","title":"Type"},"description":"Comma-separated artifact types to include: hero-award, spotlight, quote, key-moment, handout, cast-analysis."},{"name":"session_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Restrict results to a single game session.","title":"Session Id"},"description":"Restrict results to a single game session."},{"name":"character_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Restrict results to artifacts attributed to a single character. Matched by character name/aliases, since artifact rows carry a free-text character name rather than a foreign key.","title":"Character Id"},"description":"Restrict results to artifacts attributed to a single character. Matched by character name/aliases, since artifact rows carry a free-text character name rather than a foreign key."},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":1,"title":"Page"}},{"name":"size","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":20,"title":"Size"}},{"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":{"$ref":"#/components/schemas/ArtifactCatalogResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/campaigns/{campaign_id}/members/{user_id}":{"patch":{"tags":["campaigns","developer-api","product-api"],"summary":"Patch Campaign Member Admin","operationId":"patch_campaign_member_admin_v1_campaigns__campaign_id__members__user_id__patch","security":[{"HTTPBearer":[]}],"parameters":[{"name":"campaign_id","in":"path","required":true,"schema":{"type":"string","title":"Campaign Id"}},{"name":"user_id","in":"path","required":true,"schema":{"type":"string","title":"User 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/CampaignMemberAdminUpdate"}}}},"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["campaigns","developer-api","product-api"],"summary":"Delete Campaign Member","operationId":"delete_campaign_member_v1_campaigns__campaign_id__members__user_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"campaign_id","in":"path","required":true,"schema":{"type":"string","title":"Campaign Id"}},{"name":"user_id","in":"path","required":true,"schema":{"type":"string","title":"User Id"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/campaigns/{campaign_id}":{"get":{"tags":["campaigns","developer-api","product-api"],"summary":"Get Campaign","description":"Get a specific campaign by ID.","operationId":"get_campaign_v1_campaigns__campaign_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"campaign_id","in":"path","required":true,"schema":{"type":"string","title":"Campaign 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":{"anyOf":[{"$ref":"#/components/schemas/WorldRead"},{"$ref":"#/components/schemas/WorldReadProduct"},{"$ref":"#/components/schemas/WorldReadAgent"}],"title":"Response Get Campaign V1 Campaigns  Campaign Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["campaigns","developer-api","product-api"],"summary":"Patch Campaign","description":"Partially update a campaign.","operationId":"patch_campaign_v1_campaigns__campaign_id__patch","security":[{"HTTPBearer":[]}],"parameters":[{"name":"campaign_id","in":"path","required":true,"schema":{"type":"string","title":"Campaign 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/WorldUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorldRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["campaigns","developer-api","product-api"],"summary":"Delete Campaign","description":"Delete a campaign owned by the user.","operationId":"delete_campaign_v1_campaigns__campaign_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"campaign_id","in":"path","required":true,"schema":{"type":"string","title":"Campaign Id"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/campaigns/{campaign_id}/stats":{"get":{"tags":["campaigns","developer-api","product-api"],"summary":"Get Campaign Stats","description":"Get statistics for a campaign.","operationId":"get_campaign_stats_v1_campaigns__campaign_id__stats_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"campaign_id","in":"path","required":true,"schema":{"type":"string","title":"Campaign 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":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/campaigns/{campaign_id}/link-graph":{"get":{"tags":["campaigns","developer-api","product-api","product-api"],"summary":"Get Campaign Link Graph","description":"Whole wikilink graph for a campaign in a single response.\n\nProduct-view only. The paginated `/{campaign_id}/links` caps size at 100, so\na campaign with ~12k links costs the client ~120 requests just to resolve\n`[[...]]` markup. Rows are reduced to the resolver's inputs; callers that\nneed `id` or `created_at` (link editing) still use the paginated route.","operationId":"get_campaign_link_graph_v1_campaigns__campaign_id__link_graph_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"campaign_id","in":"path","required":true,"schema":{"type":"string","title":"Campaign 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":{"$ref":"#/components/schemas/CampaignLinkGraphRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/campaigns/{campaign_id}/links":{"get":{"tags":["campaigns","developer-api","product-api"],"summary":"List Campaign Links","operationId":"list_campaign_links_v1_campaigns__campaign_id__links_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"campaign_id","in":"path","required":true,"schema":{"type":"string","title":"Campaign Id"}},{"name":"to_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"To Id"}},{"name":"from_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"From Id"}},{"name":"to_type","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"To Type"}},{"name":"from_type","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"From Type"}},{"name":"alias","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Alias"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":1,"title":"Page"}},{"name":"size","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":20,"title":"Size"}},{"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":{"$ref":"#/components/schemas/PaginatedResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["campaigns","developer-api","product-api"],"summary":"Create Campaign Link","operationId":"create_campaign_link_v1_campaigns__campaign_id__links_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"campaign_id","in":"path","required":true,"schema":{"type":"string","title":"Campaign 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/LinkCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LinkRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/campaigns/{campaign_id}/links/{link_id}":{"patch":{"tags":["campaigns","developer-api","product-api"],"summary":"Patch Campaign Link","operationId":"patch_campaign_link_v1_campaigns__campaign_id__links__link_id__patch","security":[{"HTTPBearer":[]}],"parameters":[{"name":"campaign_id","in":"path","required":true,"schema":{"type":"string","title":"Campaign Id"}},{"name":"link_id","in":"path","required":true,"schema":{"type":"string","title":"Link 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/LinkUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LinkRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["campaigns","developer-api","product-api"],"summary":"Delete Campaign Link","operationId":"delete_campaign_link_v1_campaigns__campaign_id__links__link_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"campaign_id","in":"path","required":true,"schema":{"type":"string","title":"Campaign Id"}},{"name":"link_id","in":"path","required":true,"schema":{"type":"string","title":"Link Id"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/campaigns/{campaign_id}/invites":{"get":{"tags":["campaigns","developer-api","product-api","product-api"],"summary":"Get Campaign Invites","operationId":"get_campaign_invites_v1_campaigns__campaign_id__invites_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"campaign_id","in":"path","required":true,"schema":{"type":"string","title":"Campaign 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":"array","items":{"$ref":"#/components/schemas/CampaignInviteRead"},"title":"Response Get Campaign Invites V1 Campaigns  Campaign Id  Invites Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["campaigns","developer-api","product-api","product-api"],"summary":"Post Campaign Invite","operationId":"post_campaign_invite_v1_campaigns__campaign_id__invites_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"campaign_id","in":"path","required":true,"schema":{"type":"string","title":"Campaign 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/CampaignInviteCreate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CampaignInviteSendResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/campaigns/{campaign_id}/invites/{invite_id}":{"delete":{"tags":["campaigns","developer-api","product-api","product-api"],"summary":"Delete Campaign Invite","operationId":"delete_campaign_invite_v1_campaigns__campaign_id__invites__invite_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"campaign_id","in":"path","required":true,"schema":{"type":"string","title":"Campaign Id"}},{"name":"invite_id","in":"path","required":true,"schema":{"type":"string","title":"Invite 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":{"$ref":"#/components/schemas/CampaignInviteDeleteResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/invites/{token}":{"get":{"tags":["campaigns","product-api"],"summary":"Get Invite Preview","operationId":"get_invite_preview_v1_invites__token__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"token","in":"path","required":true,"schema":{"type":"string","title":"Token"}},{"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":{"$ref":"#/components/schemas/InvitePreviewRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/invites/{token}/accept":{"post":{"tags":["campaigns","product-api"],"summary":"Post Invite Accept","operationId":"post_invite_accept_v1_invites__token__accept_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"token","in":"path","required":true,"schema":{"type":"string","title":"Token"}},{"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":{"$ref":"#/components/schemas/InviteAcceptResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/characters":{"get":{"tags":["characters"],"summary":"List Characters","description":"List characters in a world with pagination and filtering.\n\n- **world_id**: Required world ID\n- **search**: Search by character name\n- **character_type**: Filter by type (PC, NPC, etc.)\n- **approved_only**: Show only approved characters\n- **sort**: 'name' for case-insensitive alphabetical order by character name; omitted keeps newest-first","operationId":"list_characters_v1_characters_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"campaign_id","in":"query","required":true,"schema":{"type":"string","description":"Campaign ID to filter characters","title":"Campaign Id"},"description":"Campaign ID to filter characters"},{"name":"search","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Search characters by name","title":"Search"},"description":"Search characters by name"},{"name":"character_type","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by character type (PC, NPC, etc.)","title":"Character Type"},"description":"Filter by character type (PC, NPC, etc.)"},{"name":"approved_only","in":"query","required":false,"schema":{"type":"boolean","description":"Show only approved characters","default":true,"title":"Approved Only"},"description":"Show only approved characters"},{"name":"with_links","in":"query","required":false,"schema":{"type":"boolean","description":"Return descriptions with [[wikilinks]] intact","default":false,"title":"With Links"},"description":"Return descriptions with [[wikilinks]] intact"},{"name":"fields","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Use 'card' for lightweight list items","title":"Fields"},"description":"Use 'card' for lightweight list items"},{"name":"sort","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Sort order. 'name' sorts case-insensitively by character name at the database level, applied before pagination. Omitted keeps the default (newest first).","title":"Sort"},"description":"Sort order. 'name' sorts case-insensitively by character name at the database level, applied before pagination. Omitted keeps the default (newest first)."},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":1,"title":"Page"}},{"name":"size","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":20,"title":"Size"}},{"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":{"$ref":"#/components/schemas/PaginatedResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["characters"],"summary":"Create Character","description":"Create a new character in a world.\n\nRequires write access to the world.","operationId":"create_character_v1_characters_post","security":[{"HTTPBearer":[]}],"parameters":[{"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/CharacterCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CharacterRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/characters/{character_id}":{"get":{"tags":["characters"],"summary":"Get Character","description":"Get a specific character by ID.","operationId":"get_character_v1_characters__character_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"character_id","in":"path","required":true,"schema":{"type":"string","title":"Character Id"}},{"name":"with_links","in":"query","required":false,"schema":{"type":"boolean","description":"Return description with [[wikilinks]] intact","default":false,"title":"With Links"},"description":"Return description with [[wikilinks]] intact"},{"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":{"anyOf":[{"$ref":"#/components/schemas/CharacterRead"},{"$ref":"#/components/schemas/CharacterReadProduct"},{"$ref":"#/components/schemas/CharacterReadAgent"}],"title":"Response Get Character V1 Characters  Character Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["characters"],"summary":"Patch Character","description":"Partially update a character.\n\nRequires write access to the associated world.","operationId":"patch_character_v1_characters__character_id__patch","security":[{"HTTPBearer":[]}],"parameters":[{"name":"character_id","in":"path","required":true,"schema":{"type":"string","title":"Character 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/CharacterUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CharacterRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["characters"],"summary":"Delete Character","description":"Delete a character.\n\nRequires write access to the associated world.","operationId":"delete_character_v1_characters__character_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"character_id","in":"path","required":true,"schema":{"type":"string","title":"Character Id"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/characters/{character_id}/arc":{"get":{"tags":["characters","product-api"],"summary":"Get Character Arc","description":"A character's arc facets, grouped under the campaign's arc themes.\n\nProduct-view only for now (not yet documented/tested for other views).\n\nThemes are always returned, including empty ones, so clients render a\nstable set of sections. Superseded facet revisions are folded into the\ncurrent facet's `versionCount`.","operationId":"get_character_arc_v1_characters__character_id__arc_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"character_id","in":"path","required":true,"schema":{"type":"string","title":"Character 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":{"$ref":"#/components/schemas/CharacterArcResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/characters/links/maintenance":{"post":{"tags":["characters"],"summary":"Trigger Character Links Maintenance","operationId":"trigger_character_links_maintenance_v1_characters_links_maintenance_post","security":[{"HTTPBearer":[]}],"parameters":[{"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":{"anyOf":[{"$ref":"#/components/schemas/LinkMaintenanceRequest"},{"$ref":"#/components/schemas/LinkMaintenanceUpdateRequest"}],"title":"Maintenance"}}}},"responses":{"202":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LinkMaintenanceResult"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/sessions":{"get":{"tags":["game sessions","developer-api","product-api"],"summary":"List Sessions","operationId":"list_sessions_v1_sessions_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"campaign_id","in":"query","required":true,"schema":{"type":"string","description":"Campaign ID to filter sessions","title":"Campaign Id"},"description":"Campaign ID to filter sessions"},{"name":"session_type","in":"query","required":false,"schema":{"anyOf":[{"$ref":"#/components/schemas/GameSessionType"},{"type":"null"}],"description":"Filter by session type","title":"Session Type"},"description":"Filter by session type"},{"name":"public_only","in":"query","required":false,"schema":{"type":"boolean","description":"Show only public sessions","default":false,"title":"Public Only"},"description":"Show only public sessions"},{"name":"with_links","in":"query","required":false,"schema":{"type":"boolean","description":"Return summaries with [[wikilinks]] intact","default":false,"title":"With Links"},"description":"Return summaries with [[wikilinks]] intact"},{"name":"review_stage","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Product view only: filter by ai session review stage","title":"Review Stage"},"description":"Product view only: filter by ai session review stage"},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":1,"title":"Page"}},{"name":"size","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":20,"title":"Size"}},{"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":{"$ref":"#/components/schemas/PaginatedResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["game sessions","product-api"],"summary":"Create Session","operationId":"create_session_v1_sessions_post","security":[{"HTTPBearer":[]}],"parameters":[{"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/GameSessionCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/GameSessionRead"},{"$ref":"#/components/schemas/GameSessionSummaryProduct"}],"title":"Response Create Session V1 Sessions Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/sessions/{session_id}":{"get":{"tags":["game sessions","developer-api","product-api"],"summary":"Get Session Detail","operationId":"get_session_detail_v1_sessions__session_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"session_id","in":"path","required":true,"schema":{"type":"string","title":"Session Id"}},{"name":"include_beats","in":"query","required":false,"schema":{"type":"boolean","description":"Include related beats","default":false,"title":"Include Beats"},"description":"Include related beats"},{"name":"include_moments","in":"query","required":false,"schema":{"type":"boolean","description":"Include related moments","default":false,"title":"Include Moments"},"description":"Include related moments"},{"name":"with_links","in":"query","required":false,"schema":{"type":"boolean","description":"Return summary, beat descriptions, and moment content with [[wikilinks]] intact","default":false,"title":"With Links"},"description":"Return summary, beat descriptions, and moment content with [[wikilinks]] intact"},{"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":{"anyOf":[{"$ref":"#/components/schemas/GameSessionDetail"},{"$ref":"#/components/schemas/GameSessionDetailAgent"},{"$ref":"#/components/schemas/GameSessionDetailProduct"}],"title":"Response Get Session Detail V1 Sessions  Session Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["game sessions","developer-api","product-api"],"summary":"Patch Session","operationId":"patch_session_v1_sessions__session_id__patch","security":[{"HTTPBearer":[]}],"parameters":[{"name":"session_id","in":"path","required":true,"schema":{"type":"string","title":"Session 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/GameSessionPatch"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/GameSessionRead"},{"$ref":"#/components/schemas/GameSessionSummaryProduct"}],"title":"Response Patch Session V1 Sessions  Session Id  Patch"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["game sessions","developer-api","product-api"],"summary":"Update Session","operationId":"update_session_v1_sessions__session_id__put","security":[{"HTTPBearer":[]}],"parameters":[{"name":"session_id","in":"path","required":true,"schema":{"type":"string","title":"Session 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/GameSessionUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/GameSessionRead"},{"$ref":"#/components/schemas/GameSessionSummaryProduct"}],"title":"Response Update Session V1 Sessions  Session Id  Put"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["game sessions","product-api"],"summary":"Delete Session","operationId":"delete_session_v1_sessions__session_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"session_id","in":"path","required":true,"schema":{"type":"string","title":"Session Id"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/sessions/{session_id}/cast-analysis":{"get":{"tags":["game sessions","developer-api","product-api"],"summary":"Get Session Cast Analysis","operationId":"get_session_cast_analysis_v1_sessions__session_id__cast_analysis_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"session_id","in":"path","required":true,"schema":{"type":"string","title":"Session 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":{"$ref":"#/components/schemas/CastAnalysisRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/sessions/{session_id}/handout":{"get":{"tags":["game sessions","developer-api","product-api"],"summary":"Get Session Handout","operationId":"get_session_handout_v1_sessions__session_id__handout_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"session_id","in":"path","required":true,"schema":{"type":"string","title":"Session 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":{"$ref":"#/components/schemas/SessionHandoutRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/sessions/{session_id}/artifact-pdf":{"get":{"tags":["game sessions","developer-api","product-api","product-api"],"summary":"Get Session Artifact Pdf","description":"Stream a saved session artifact PDF (handout or cast analysis).\n\nProduct-view only. Returns 404 when no PDF has been saved for the session —\nthere is no on-demand generation.","operationId":"get_session_artifact_pdf_v1_sessions__session_id__artifact_pdf_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"session_id","in":"path","required":true,"schema":{"type":"string","title":"Session Id"}},{"name":"type","in":"query","required":true,"schema":{"type":"string","description":"Artifact PDF type: 'handout' or 'cast-analysis'.","title":"Type"},"description":"Artifact PDF type: 'handout' or 'cast-analysis'."},{"name":"exists_only","in":"query","required":false,"schema":{"type":"boolean","description":"When true, returns JSON availability info instead of streaming the PDF.","default":false,"title":"Exists Only"},"description":"When true, returns JSON availability info instead of streaming the PDF."},{"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":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/sessions/{session_id}/transcript":{"get":{"tags":["game sessions","developer-api","product-api"],"summary":"Get Session Transcript","operationId":"get_session_transcript_v1_sessions__session_id__transcript_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"session_id","in":"path","required":true,"schema":{"type":"string","title":"Session Id"}},{"name":"format","in":"query","required":false,"schema":{"$ref":"#/components/schemas/TranscriptFormat","description":"Response format: 'json' (default) returns the structured JSON transcript; 'markdown' returns an agent-friendly markdown document.","default":"json"},"description":"Response format: 'json' (default) returns the structured JSON transcript; 'markdown' returns an agent-friendly markdown document."},{"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":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/sessions/{session_id}/hero-awards":{"post":{"tags":["game sessions","developer-api","product-api","product-api"],"summary":"Create Session Hero Award","operationId":"create_session_hero_award_v1_sessions__session_id__hero_awards_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"session_id","in":"path","required":true,"schema":{"type":"string","title":"Session 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/HeroAwardCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HeroAwardRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/users/me/push-tokens":{"post":{"tags":["users"],"summary":"Register Push Token","description":"Register or refresh this device for the signed-in mobile account.","operationId":"register_push_token_v1_users_me_push_tokens_post","security":[{"HTTPBearer":[]}],"parameters":[{"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/PushTokenRegistration"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PushTokenRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["users"],"summary":"Unregister Push Token","description":"Disable only this account's registration for the current device.","operationId":"unregister_push_token_v1_users_me_push_tokens_delete","security":[{"HTTPBearer":[]}],"parameters":[{"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/PushTokenUnregister"}}}},"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/users/me":{"get":{"tags":["users"],"summary":"Get Me","operationId":"get_me_v1_users_me_get","security":[{"HTTPBearer":[]}],"parameters":[{"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":{"$ref":"#/components/schemas/UserProfile"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/users/me/invitations":{"get":{"tags":["users"],"summary":"Get My Pending Invitations","operationId":"get_my_pending_invitations_v1_users_me_invitations_get","security":[{"HTTPBearer":[]}],"parameters":[{"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":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/users/me/invitations/accept-token":{"post":{"tags":["users"],"summary":"Accept My Invitation By Token","operationId":"accept_my_invitation_by_token_v1_users_me_invitations_accept_token_post","security":[{"HTTPBearer":[]}],"parameters":[{"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":{"type":"object","additionalProperties":true,"title":"Payload"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/users/me/invitations/{invitation_id}/accept":{"post":{"tags":["users"],"summary":"Accept My Invitation","operationId":"accept_my_invitation_v1_users_me_invitations__invitation_id__accept_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"invitation_id","in":"path","required":true,"schema":{"type":"string","title":"Invitation 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":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/users/me/invitations/{invitation_id}/decline":{"post":{"tags":["users"],"summary":"Decline My Invitation","operationId":"decline_my_invitation_v1_users_me_invitations__invitation_id__decline_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"invitation_id","in":"path","required":true,"schema":{"type":"string","title":"Invitation 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":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/factions":{"get":{"tags":["factions"],"summary":"List Factions","operationId":"list_factions_v1_factions_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"campaign_id","in":"query","required":true,"schema":{"type":"string","description":"Campaign ID to filter factions","title":"Campaign Id"},"description":"Campaign ID to filter factions"},{"name":"search","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Search factions by name","title":"Search"},"description":"Search factions by name"},{"name":"approved_only","in":"query","required":false,"schema":{"type":"boolean","description":"Show only approved factions","default":true,"title":"Approved Only"},"description":"Show only approved factions"},{"name":"with_links","in":"query","required":false,"schema":{"type":"boolean","description":"Return descriptions with [[wikilinks]] intact","default":false,"title":"With Links"},"description":"Return descriptions with [[wikilinks]] intact"},{"name":"sort","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Sort order. 'name' sorts case-insensitively by faction name at the database level, applied before pagination. Omitted keeps the default (newest first).","title":"Sort"},"description":"Sort order. 'name' sorts case-insensitively by faction name at the database level, applied before pagination. Omitted keeps the default (newest first)."},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":1,"title":"Page"}},{"name":"size","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":20,"title":"Size"}},{"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":{"$ref":"#/components/schemas/PaginatedResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["factions"],"summary":"Create Faction","operationId":"create_faction_v1_factions_post","security":[{"HTTPBearer":[]}],"parameters":[{"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/FactionCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FactionRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/factions/{faction_id}":{"get":{"tags":["factions"],"summary":"Get Faction","operationId":"get_faction_v1_factions__faction_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"faction_id","in":"path","required":true,"schema":{"type":"string","title":"Faction Id"}},{"name":"with_links","in":"query","required":false,"schema":{"type":"boolean","description":"Return description with [[wikilinks]] intact","default":false,"title":"With Links"},"description":"Return description with [[wikilinks]] intact"},{"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":{"anyOf":[{"$ref":"#/components/schemas/FactionRead"},{"$ref":"#/components/schemas/FactionReadProduct"}],"title":"Response Get Faction V1 Factions  Faction Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["factions"],"summary":"Patch Faction","description":"Partially update a faction.","operationId":"patch_faction_v1_factions__faction_id__patch","security":[{"HTTPBearer":[]}],"parameters":[{"name":"faction_id","in":"path","required":true,"schema":{"type":"string","title":"Faction 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/FactionUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FactionRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["factions"],"summary":"Delete Faction","operationId":"delete_faction_v1_factions__faction_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"faction_id","in":"path","required":true,"schema":{"type":"string","title":"Faction Id"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/factions/links/maintenance":{"post":{"tags":["factions"],"summary":"Trigger Faction Links Maintenance","operationId":"trigger_faction_links_maintenance_v1_factions_links_maintenance_post","security":[{"HTTPBearer":[]}],"parameters":[{"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":{"anyOf":[{"$ref":"#/components/schemas/LinkMaintenanceRequest"},{"$ref":"#/components/schemas/LinkMaintenanceUpdateRequest"}],"title":"Maintenance"}}}},"responses":{"202":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LinkMaintenanceResult"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/locations":{"get":{"tags":["locations"],"summary":"List Locations","operationId":"list_locations_v1_locations_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"campaign_id","in":"query","required":true,"schema":{"type":"string","description":"Campaign ID to filter locations","title":"Campaign Id"},"description":"Campaign ID to filter locations"},{"name":"search","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Search locations by name","title":"Search"},"description":"Search locations by name"},{"name":"approved_only","in":"query","required":false,"schema":{"type":"boolean","description":"Show only approved locations","default":true,"title":"Approved Only"},"description":"Show only approved locations"},{"name":"with_links","in":"query","required":false,"schema":{"type":"boolean","description":"Return descriptions with [[wikilinks]] intact","default":false,"title":"With Links"},"description":"Return descriptions with [[wikilinks]] intact"},{"name":"sort","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Sort order. 'name' sorts case-insensitively by location name at the database level, applied before pagination. Omitted keeps the default (newest first).","title":"Sort"},"description":"Sort order. 'name' sorts case-insensitively by location name at the database level, applied before pagination. Omitted keeps the default (newest first)."},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":1,"title":"Page"}},{"name":"size","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":20,"title":"Size"}},{"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":{"$ref":"#/components/schemas/PaginatedResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["locations"],"summary":"Create Location","operationId":"create_location_v1_locations_post","security":[{"HTTPBearer":[]}],"parameters":[{"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/LocationCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LocationRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/locations/{location_id}":{"get":{"tags":["locations"],"summary":"Get Location","operationId":"get_location_v1_locations__location_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"location_id","in":"path","required":true,"schema":{"type":"string","title":"Location Id"}},{"name":"with_links","in":"query","required":false,"schema":{"type":"boolean","description":"Return description with [[wikilinks]] intact","default":false,"title":"With Links"},"description":"Return description with [[wikilinks]] intact"},{"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":{"anyOf":[{"$ref":"#/components/schemas/LocationRead"},{"$ref":"#/components/schemas/LocationReadProduct"}],"title":"Response Get Location V1 Locations  Location Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["locations"],"summary":"Patch Location","description":"Partially update a location.","operationId":"patch_location_v1_locations__location_id__patch","security":[{"HTTPBearer":[]}],"parameters":[{"name":"location_id","in":"path","required":true,"schema":{"type":"string","title":"Location 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/LocationUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LocationRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["locations"],"summary":"Delete Location","operationId":"delete_location_v1_locations__location_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"location_id","in":"path","required":true,"schema":{"type":"string","title":"Location Id"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/locations/links/maintenance":{"post":{"tags":["locations"],"summary":"Trigger Location Links Maintenance","operationId":"trigger_location_links_maintenance_v1_locations_links_maintenance_post","security":[{"HTTPBearer":[]}],"parameters":[{"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":{"anyOf":[{"$ref":"#/components/schemas/LinkMaintenanceRequest"},{"$ref":"#/components/schemas/LinkMaintenanceUpdateRequest"}],"title":"Maintenance"}}}},"responses":{"202":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LinkMaintenanceResult"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/moments":{"get":{"tags":["moments"],"summary":"List Moments","operationId":"list_moments_v1_moments_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"campaign_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Campaign ID to filter moments","title":"Campaign Id"},"description":"Campaign ID to filter moments"},{"name":"session_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Session ID to filter moments","title":"Session Id"},"description":"Session ID to filter moments"},{"name":"search","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Search moments by label","title":"Search"},"description":"Search moments by label"},{"name":"character_ids","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Comma-separated character IDs","title":"Character Ids"},"description":"Comma-separated character IDs"},{"name":"location_ids","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Comma-separated location IDs","title":"Location Ids"},"description":"Comma-separated location IDs"},{"name":"faction_ids","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Comma-separated faction IDs","title":"Faction Ids"},"description":"Comma-separated faction IDs"},{"name":"item_ids","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Comma-separated item IDs","title":"Item Ids"},"description":"Comma-separated item IDs"},{"name":"session_ids","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Comma-separated session IDs","title":"Session Ids"},"description":"Comma-separated session IDs"},{"name":"categories","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Comma-separated categories. Key Moments typically use 'key-moment'.","title":"Categories"},"description":"Comma-separated categories. Key Moments typically use 'key-moment'."},{"name":"kind","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Moment kind filter (e.g. 'legacy' or 'key-moment'). Most Key Moments remain kind=legacy.","title":"Kind"},"description":"Moment kind filter (e.g. 'legacy' or 'key-moment'). Most Key Moments remain kind=legacy."},{"name":"with_links","in":"query","required":false,"schema":{"type":"boolean","description":"Return content with [[wikilinks]] intact","default":false,"title":"With Links"},"description":"Return content with [[wikilinks]] intact"},{"name":"fields","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Use 'card' for lightweight list items","title":"Fields"},"description":"Use 'card' for lightweight list items"},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":1,"title":"Page"}},{"name":"size","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":20,"title":"Size"}},{"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":{"$ref":"#/components/schemas/PaginatedResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["moments"],"summary":"Create Moment","operationId":"create_moment_v1_moments_post","security":[{"HTTPBearer":[]}],"parameters":[{"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/MomentCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MomentRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/moments/{moment_id}":{"get":{"tags":["moments"],"summary":"Get Moment","operationId":"get_moment_v1_moments__moment_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"moment_id","in":"path","required":true,"schema":{"type":"string","title":"Moment Id"}},{"name":"with_links","in":"query","required":false,"schema":{"type":"boolean","description":"Return content with [[wikilinks]] intact","default":false,"title":"With Links"},"description":"Return content with [[wikilinks]] intact"},{"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":{"anyOf":[{"$ref":"#/components/schemas/MomentRead"},{"$ref":"#/components/schemas/MomentSummaryProduct"}],"title":"Response Get Moment V1 Moments  Moment Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["moments"],"summary":"Patch Moment","operationId":"patch_moment_v1_moments__moment_id__patch","security":[{"HTTPBearer":[]}],"parameters":[{"name":"moment_id","in":"path","required":true,"schema":{"type":"string","title":"Moment 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/MomentUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MomentRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["moments"],"summary":"Delete Moment","operationId":"delete_moment_v1_moments__moment_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"moment_id","in":"path","required":true,"schema":{"type":"string","title":"Moment Id"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/moments/links/maintenance":{"post":{"tags":["moments"],"summary":"Trigger Moment Links Maintenance","operationId":"trigger_moment_links_maintenance_v1_moments_links_maintenance_post","security":[{"HTTPBearer":[]}],"parameters":[{"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":{"anyOf":[{"$ref":"#/components/schemas/LinkMaintenanceRequest"},{"$ref":"#/components/schemas/LinkMaintenanceUpdateRequest"}],"title":"Maintenance"}}}},"responses":{"202":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LinkMaintenanceResult"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/hero-awards":{"get":{"tags":["hero-awards"],"summary":"List Hero Awards","operationId":"list_hero_awards_v1_hero_awards_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"campaign_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Campaign ID to filter hero awards","title":"Campaign Id"},"description":"Campaign ID to filter hero awards"},{"name":"session_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Session ID to filter hero awards","title":"Session Id"},"description":"Session ID to filter hero awards"},{"name":"search","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Search title, description, or character name","title":"Search"},"description":"Search title, description, or character name"},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":1,"title":"Page"}},{"name":"size","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":20,"title":"Size"}},{"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":{"$ref":"#/components/schemas/PaginatedResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["hero-awards"],"summary":"Create Hero Award","operationId":"create_hero_award_v1_hero_awards_post","security":[{"HTTPBearer":[]}],"parameters":[{"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/HeroAwardCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HeroAwardRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/hero-awards/{award_id}":{"get":{"tags":["hero-awards"],"summary":"Get Hero Award","operationId":"get_hero_award_v1_hero_awards__award_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"award_id","in":"path","required":true,"schema":{"type":"string","title":"Award 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":{"$ref":"#/components/schemas/HeroAwardRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["hero-awards"],"summary":"Update Hero Award","operationId":"update_hero_award_v1_hero_awards__award_id__patch","security":[{"HTTPBearer":[]}],"parameters":[{"name":"award_id","in":"path","required":true,"schema":{"type":"string","title":"Award 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/HeroAwardUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HeroAwardRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["hero-awards"],"summary":"Delete Hero Award","operationId":"delete_hero_award_v1_hero_awards__award_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"award_id","in":"path","required":true,"schema":{"type":"string","title":"Award Id"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/quotes":{"get":{"tags":["quotes"],"summary":"List Quotes","operationId":"list_quotes_v1_quotes_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"campaign_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Campaign ID to filter quotes","title":"Campaign Id"},"description":"Campaign ID to filter quotes"},{"name":"session_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Session ID to filter quotes","title":"Session Id"},"description":"Session ID to filter quotes"},{"name":"search","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Search quote text, speaker, or context","title":"Search"},"description":"Search quote text, speaker, or context"},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":1,"title":"Page"}},{"name":"size","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":20,"title":"Size"}},{"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":{"$ref":"#/components/schemas/PaginatedResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["quotes"],"summary":"Create Quote","operationId":"create_quote_v1_quotes_post","security":[{"HTTPBearer":[]}],"parameters":[{"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/QuoteCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/QuoteRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/quotes/{quote_id}":{"get":{"tags":["quotes"],"summary":"Get Quote","operationId":"get_quote_v1_quotes__quote_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"quote_id","in":"path","required":true,"schema":{"type":"string","title":"Quote 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":{"$ref":"#/components/schemas/QuoteRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["quotes"],"summary":"Update Quote","operationId":"update_quote_v1_quotes__quote_id__patch","security":[{"HTTPBearer":[]}],"parameters":[{"name":"quote_id","in":"path","required":true,"schema":{"type":"string","title":"Quote 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/QuoteUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/QuoteRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["quotes"],"summary":"Delete Quote","operationId":"delete_quote_v1_quotes__quote_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"quote_id","in":"path","required":true,"schema":{"type":"string","title":"Quote Id"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/spotlights":{"get":{"tags":["spotlights"],"summary":"List Spotlights","operationId":"list_spotlights_v1_spotlights_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"campaign_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Campaign ID to filter spotlights","title":"Campaign Id"},"description":"Campaign ID to filter spotlights"},{"name":"session_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Session ID to filter spotlights","title":"Session Id"},"description":"Session ID to filter spotlights"},{"name":"search","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Search title, description, or character name","title":"Search"},"description":"Search title, description, or character name"},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":1,"title":"Page"}},{"name":"size","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":20,"title":"Size"}},{"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":{"$ref":"#/components/schemas/PaginatedResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["spotlights"],"summary":"Create Spotlight","operationId":"create_spotlight_v1_spotlights_post","security":[{"HTTPBearer":[]}],"parameters":[{"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/SpotlightCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SpotlightRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/spotlights/{spotlight_id}":{"get":{"tags":["spotlights"],"summary":"Get Spotlight","operationId":"get_spotlight_v1_spotlights__spotlight_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"spotlight_id","in":"path","required":true,"schema":{"type":"string","title":"Spotlight 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":{"$ref":"#/components/schemas/SpotlightRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["spotlights"],"summary":"Update Spotlight","operationId":"update_spotlight_v1_spotlights__spotlight_id__patch","security":[{"HTTPBearer":[]}],"parameters":[{"name":"spotlight_id","in":"path","required":true,"schema":{"type":"string","title":"Spotlight 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/SpotlightUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SpotlightRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["spotlights"],"summary":"Delete Spotlight","operationId":"delete_spotlight_v1_spotlights__spotlight_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"spotlight_id","in":"path","required":true,"schema":{"type":"string","title":"Spotlight Id"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/beats":{"get":{"tags":["beats"],"summary":"List Beats","operationId":"list_beats_v1_beats_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"campaign_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Campaign ID to filter beats","title":"Campaign Id"},"description":"Campaign ID to filter beats"},{"name":"session_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Session ID to filter beats","title":"Session Id"},"description":"Session ID to filter beats"},{"name":"include_hierarchy","in":"query","required":false,"schema":{"type":"boolean","description":"Return nested beat tree for session_id","default":false,"title":"Include Hierarchy"},"description":"Return nested beat tree for session_id"},{"name":"with_links","in":"query","required":false,"schema":{"type":"boolean","description":"Return descriptions with [[wikilinks]] intact","default":false,"title":"With Links"},"description":"Return descriptions with [[wikilinks]] intact"},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":1,"title":"Page"}},{"name":"size","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":20,"title":"Size"}},{"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":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["beats"],"summary":"Create Beat","operationId":"create_beat_v1_beats_post","security":[{"HTTPBearer":[]}],"parameters":[{"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/BeatCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BeatRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/beats/{beat_id}":{"get":{"tags":["beats"],"summary":"Get Beat","operationId":"get_beat_v1_beats__beat_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"beat_id","in":"path","required":true,"schema":{"type":"string","title":"Beat Id"}},{"name":"with_links","in":"query","required":false,"schema":{"type":"boolean","description":"Return description with [[wikilinks]] intact","default":false,"title":"With Links"},"description":"Return description with [[wikilinks]] intact"},{"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":{"$ref":"#/components/schemas/BeatRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["beats"],"summary":"Patch Beat","operationId":"patch_beat_v1_beats__beat_id__patch","security":[{"HTTPBearer":[]}],"parameters":[{"name":"beat_id","in":"path","required":true,"schema":{"type":"string","title":"Beat 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/BeatUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BeatRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["beats"],"summary":"Delete Beat","operationId":"delete_beat_v1_beats__beat_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"beat_id","in":"path","required":true,"schema":{"type":"string","title":"Beat Id"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/beats/reorder":{"post":{"tags":["beats"],"summary":"Reorder Beat","operationId":"reorder_beat_v1_beats_reorder_post","security":[{"HTTPBearer":[]}],"parameters":[{"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/BeatReorderRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BeatRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/beats/batch-edit":{"post":{"tags":["beats"],"summary":"Batch Edit Beats","operationId":"batch_edit_beats_v1_beats_batch_edit_post","security":[{"HTTPBearer":[]}],"parameters":[{"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/BeatBatchEditRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaginatedResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/items":{"get":{"tags":["items"],"summary":"List Items","operationId":"list_items_v1_items_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"campaign_id","in":"query","required":true,"schema":{"type":"string","description":"Campaign ID to filter items","title":"Campaign Id"},"description":"Campaign ID to filter items"},{"name":"search","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Search items by name","title":"Search"},"description":"Search items by name"},{"name":"approved_only","in":"query","required":false,"schema":{"type":"boolean","description":"Show only approved items","default":true,"title":"Approved Only"},"description":"Show only approved items"},{"name":"with_links","in":"query","required":false,"schema":{"type":"boolean","description":"Return descriptions with [[wikilinks]] intact","default":false,"title":"With Links"},"description":"Return descriptions with [[wikilinks]] intact"},{"name":"sort","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Sort order. 'name' sorts case-insensitively by item name at the database level, applied before pagination. Omitted keeps the default (newest first).","title":"Sort"},"description":"Sort order. 'name' sorts case-insensitively by item name at the database level, applied before pagination. Omitted keeps the default (newest first)."},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":1,"title":"Page"}},{"name":"size","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":20,"title":"Size"}},{"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":{"$ref":"#/components/schemas/PaginatedResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["items"],"summary":"Create Item","operationId":"create_item_v1_items_post","security":[{"HTTPBearer":[]}],"parameters":[{"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/ItemCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ItemRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/items/{item_id}":{"get":{"tags":["items"],"summary":"Get Item","operationId":"get_item_v1_items__item_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"item_id","in":"path","required":true,"schema":{"type":"string","title":"Item Id"}},{"name":"with_links","in":"query","required":false,"schema":{"type":"boolean","description":"Return description with [[wikilinks]] intact","default":false,"title":"With Links"},"description":"Return description with [[wikilinks]] intact"},{"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":{"anyOf":[{"$ref":"#/components/schemas/ItemRead"},{"$ref":"#/components/schemas/ItemReadProduct"}],"title":"Response Get Item V1 Items  Item Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["items"],"summary":"Patch Item","description":"Partially update an item.","operationId":"patch_item_v1_items__item_id__patch","security":[{"HTTPBearer":[]}],"parameters":[{"name":"item_id","in":"path","required":true,"schema":{"type":"string","title":"Item 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/ItemUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ItemRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["items"],"summary":"Delete Item","operationId":"delete_item_v1_items__item_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"item_id","in":"path","required":true,"schema":{"type":"string","title":"Item Id"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/items/links/maintenance":{"post":{"tags":["items"],"summary":"Trigger Item Links Maintenance","operationId":"trigger_item_links_maintenance_v1_items_links_maintenance_post","security":[{"HTTPBearer":[]}],"parameters":[{"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":{"anyOf":[{"$ref":"#/components/schemas/LinkMaintenanceRequest"},{"$ref":"#/components/schemas/LinkMaintenanceUpdateRequest"}],"title":"Maintenance"}}}},"responses":{"202":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LinkMaintenanceResult"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/quests":{"get":{"tags":["quests"],"summary":"List Quest Entries","operationId":"list_quest_entries_v1_quests_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"campaign_id","in":"query","required":true,"schema":{"type":"string","description":"Campaign ID to filter quests","title":"Campaign Id"},"description":"Campaign ID to filter quests"},{"name":"search","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Search quests by name, giver, or narrative fields","title":"Search"},"description":"Search quests by name, giver, or narrative fields"},{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by quest status","title":"Status"},"description":"Filter by quest status"},{"name":"quest_category","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by quest category","title":"Quest Category"},"description":"Filter by quest category"},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":1,"title":"Page"}},{"name":"size","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":20,"title":"Size"}},{"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":{"$ref":"#/components/schemas/PaginatedResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["quests"],"summary":"Create Quest Entry","operationId":"create_quest_entry_v1_quests_post","security":[{"HTTPBearer":[]}],"parameters":[{"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/QuestCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/QuestRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/quests/{quest_id}":{"get":{"tags":["quests"],"summary":"Get Quest Entry","operationId":"get_quest_entry_v1_quests__quest_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"quest_id","in":"path","required":true,"schema":{"type":"string","title":"Quest 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":{"$ref":"#/components/schemas/QuestRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["quests"],"summary":"Patch Quest Entry","operationId":"patch_quest_entry_v1_quests__quest_id__patch","security":[{"HTTPBearer":[]}],"parameters":[{"name":"quest_id","in":"path","required":true,"schema":{"type":"string","title":"Quest 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/QuestUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/QuestRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["quests"],"summary":"Delete Quest Entry","operationId":"delete_quest_entry_v1_quests__quest_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"quest_id","in":"path","required":true,"schema":{"type":"string","title":"Quest Id"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/journals":{"get":{"tags":["journals"],"summary":"List Journal Entries","operationId":"list_journal_entries_v1_journals_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"campaign_id","in":"query","required":true,"schema":{"type":"string","description":"World/Campaign ID to list journal entries","title":"Campaign Id"},"description":"World/Campaign ID to list journal entries"},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"description":"Page number","default":1,"title":"Page"},"description":"Page number"},{"name":"size","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"description":"Page size","default":20,"title":"Size"},"description":"Page size"},{"name":"with_links","in":"query","required":false,"schema":{"type":"boolean","description":"Return content with [[wikilinks]] intact","default":false,"title":"With Links"},"description":"Return content with [[wikilinks]] intact"},{"name":"format","in":"query","required":false,"schema":{"type":"string","pattern":"^(text|markdown)$","description":"'markdown' preserves headings, lists and paragraph breaks; 'text' (default) flattens them","default":"text","title":"Format"},"description":"'markdown' preserves headings, lists and paragraph breaks; 'text' (default) flattens them"},{"name":"fields","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Use 'card' for lightweight list items","title":"Fields"},"description":"Use 'card' for lightweight list items"},{"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":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["journals"],"summary":"Create Journal Entry","operationId":"create_journal_entry_v1_journals_post","security":[{"HTTPBearer":[]}],"parameters":[{"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/JournalEntryCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Create Journal Entry V1 Journals Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["journals"],"summary":"Update Journal Entry","operationId":"update_journal_entry_v1_journals_put","security":[{"HTTPBearer":[]}],"parameters":[{"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/JournalEntryPut"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Update Journal Entry V1 Journals Put"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["journals"],"summary":"Delete Journal Entry","operationId":"delete_journal_entry_v1_journals_delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"id","in":"query","required":true,"schema":{"type":"string","description":"Journal entry id","title":"Id"},"description":"Journal entry 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":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/journals/{entry_id}":{"get":{"tags":["journals"],"summary":"Get Journal Entry","operationId":"get_journal_entry_v1_journals__entry_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"entry_id","in":"path","required":true,"schema":{"type":"string","title":"Entry Id"}},{"name":"with_links","in":"query","required":false,"schema":{"type":"boolean","description":"Return content with [[wikilinks]] intact","default":false,"title":"With Links"},"description":"Return content with [[wikilinks]] intact"},{"name":"format","in":"query","required":false,"schema":{"type":"string","pattern":"^(text|markdown)$","description":"'markdown' preserves headings, lists and paragraph breaks; 'text' (default) flattens them","default":"text","title":"Format"},"description":"'markdown' preserves headings, lists and paragraph breaks; 'text' (default) flattens them"},{"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":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/journal-folders":{"get":{"tags":["journal-folders"],"summary":"List Journal Folders","operationId":"list_journal_folders_v1_journal_folders_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"campaign_id","in":"query","required":true,"schema":{"type":"string","description":"World/Campaign ID to list journal folders","title":"Campaign Id"},"description":"World/Campaign ID to list journal folders"},{"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":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["journal-folders"],"summary":"Create Journal Folder","operationId":"create_journal_folder_v1_journal_folders_post","security":[{"HTTPBearer":[]}],"parameters":[{"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/JournalFolderCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Create Journal Folder V1 Journal Folders Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["journal-folders"],"summary":"Update Journal Folder","operationId":"update_journal_folder_v1_journal_folders_put","security":[{"HTTPBearer":[]}],"parameters":[{"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/JournalFolderPut"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Update Journal Folder V1 Journal Folders Put"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["journal-folders"],"summary":"Delete Journal Folder","operationId":"delete_journal_folder_v1_journal_folders_delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"id","in":"query","required":true,"schema":{"type":"string","description":"Journal folder id","title":"Id"},"description":"Journal folder 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":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/journal-folders/{folder_id}":{"get":{"tags":["journal-folders"],"summary":"Get Journal Folder","operationId":"get_journal_folder_v1_journal_folders__folder_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"folder_id","in":"path","required":true,"schema":{"type":"string","title":"Folder 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":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/campaigns/{campaign_id}/recordings/setup":{"get":{"tags":["recordings","product-api"],"summary":"Get Recording Setup","operationId":"get_recording_setup_v1_campaigns__campaign_id__recordings_setup_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"campaign_id","in":"path","required":true,"schema":{"type":"string","title":"Campaign 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":{"$ref":"#/components/schemas/RecordingSetupResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/campaigns/{campaign_id}/recordings/setup/cast-members":{"post":{"tags":["recordings","product-api"],"summary":"Create Recording Cast Member","operationId":"create_recording_cast_member_v1_campaigns__campaign_id__recordings_setup_cast_members_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"campaign_id","in":"path","required":true,"schema":{"type":"string","title":"Campaign 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/RecordingSetupCastMemberRequest"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecordingSetupCastMemberResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/campaigns/{campaign_id}/recordings/setup/voice-samples/init":{"post":{"tags":["recordings","product-api"],"summary":"Init Voice Sample Upload","operationId":"init_voice_sample_upload_v1_campaigns__campaign_id__recordings_setup_voice_samples_init_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"campaign_id","in":"path","required":true,"schema":{"type":"string","title":"Campaign 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/RecordingVoiceSampleInitRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecordingVoiceSampleInitResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/campaigns/{campaign_id}/recordings/setup/voice-samples/upload":{"post":{"tags":["recordings","product-api"],"summary":"Upload Voice Sample","operationId":"upload_voice_sample_v1_campaigns__campaign_id__recordings_setup_voice_samples_upload_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"campaign_id","in":"path","required":true,"schema":{"type":"string","title":"Campaign Id"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_upload_voice_sample_v1_campaigns__campaign_id__recordings_setup_voice_samples_upload_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecordingVoiceSampleCompleteResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/campaigns/{campaign_id}/recordings/setup/voice-samples/complete":{"post":{"tags":["recordings","product-api"],"summary":"Complete Voice Sample Upload","operationId":"complete_voice_sample_upload_v1_campaigns__campaign_id__recordings_setup_voice_samples_complete_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"campaign_id","in":"path","required":true,"schema":{"type":"string","title":"Campaign 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/RecordingVoiceSampleCompleteRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecordingVoiceSampleCompleteResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/campaigns/{campaign_id}/recordings/init":{"post":{"tags":["recordings","product-api"],"summary":"Init Recording Upload","operationId":"init_recording_upload_v1_campaigns__campaign_id__recordings_init_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"campaign_id","in":"path","required":true,"schema":{"type":"string","title":"Campaign 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/RecordingInitRequest"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecordingInitResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/campaigns/{campaign_id}/recordings/{session_id}/parts":{"post":{"tags":["recordings","product-api"],"summary":"Get Recording Part Urls","operationId":"get_recording_part_urls_v1_campaigns__campaign_id__recordings__session_id__parts_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"campaign_id","in":"path","required":true,"schema":{"type":"string","title":"Campaign Id"}},{"name":"session_id","in":"path","required":true,"schema":{"type":"string","title":"Session 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/RecordingPartUrlRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecordingPartUrlResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/campaigns/{campaign_id}/recordings/{session_id}/complete":{"post":{"tags":["recordings","product-api"],"summary":"Complete Recording Upload","operationId":"complete_recording_upload_v1_campaigns__campaign_id__recordings__session_id__complete_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"campaign_id","in":"path","required":true,"schema":{"type":"string","title":"Campaign Id"}},{"name":"session_id","in":"path","required":true,"schema":{"type":"string","title":"Session 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/RecordingCompleteRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecordingCompleteResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/campaigns/{campaign_id}/recordings/{session_id}/status":{"get":{"tags":["recordings","product-api"],"summary":"Get Recording Status","operationId":"get_recording_status_v1_campaigns__campaign_id__recordings__session_id__status_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"campaign_id","in":"path","required":true,"schema":{"type":"string","title":"Campaign Id"}},{"name":"session_id","in":"path","required":true,"schema":{"type":"string","title":"Session 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":{"$ref":"#/components/schemas/RecordingStatusResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/campaigns/{campaign_id}/recordings/{session_id}":{"delete":{"tags":["recordings","product-api"],"summary":"Delete Recording Upload","operationId":"delete_recording_upload_v1_campaigns__campaign_id__recordings__session_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"campaign_id","in":"path","required":true,"schema":{"type":"string","title":"Campaign Id"}},{"name":"session_id","in":"path","required":true,"schema":{"type":"string","title":"Session Id"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/campaigns/{campaign_id}/images/init":{"post":{"tags":["images"],"summary":"Init Image Upload","operationId":"init_image_upload_v1_campaigns__campaign_id__images_init_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"campaign_id","in":"path","required":true,"schema":{"type":"string","title":"Campaign 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/ImageUploadInitRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ImageUploadInitResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/campaigns/{campaign_id}/images/complete":{"post":{"tags":["images"],"summary":"Complete Image Upload","operationId":"complete_image_upload_v1_campaigns__campaign_id__images_complete_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"campaign_id","in":"path","required":true,"schema":{"type":"string","title":"Campaign 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/ImageUploadCompleteRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ImageUploadCompleteResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/campaigns/{campaign_id}/images":{"delete":{"tags":["images"],"summary":"Delete Entity Image","operationId":"delete_entity_image_v1_campaigns__campaign_id__images_delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"campaign_id","in":"path","required":true,"schema":{"type":"string","title":"Campaign 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/ImageDeleteRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ImageDeleteResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/images/usage":{"get":{"tags":["images"],"summary":"Get Image Usage","operationId":"get_image_usage_v1_images_usage_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"campaign_id","in":"query","required":true,"schema":{"type":"string","title":"Campaign 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":{"$ref":"#/components/schemas/ImageUsageResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/images/generate":{"post":{"tags":["images"],"summary":"Generate Image","operationId":"generate_image_v1_images_generate_post","security":[{"HTTPBearer":[]}],"parameters":[{"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/ImageGenerateRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ImageGenerateResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/campaigns/{campaign_id}/search":{"get":{"tags":["search","product-api"],"summary":"Unified Search","description":"Unified search across campaign entities.\nUnified, bounded search across compendium entities, sessions, recaps,\nquests, journals, moments, beats, and artifact summaries. Artifact search\nintentionally bypasses the full catalog and all R2 discovery work.","operationId":"unified_search_v1_campaigns__campaign_id__search_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"campaign_id","in":"path","required":true,"schema":{"type":"string","title":"Campaign Id"}},{"name":"q","in":"query","required":true,"schema":{"type":"string","minLength":1,"description":"Search query","title":"Q"},"description":"Search query"},{"name":"types","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Comma-separated types to include","title":"Types"},"description":"Comma-separated types to include"},{"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":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/entities":{"get":{"tags":["entities","product-api"],"summary":"List Entities","operationId":"list_entities_v1_entities_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"campaign_id","in":"query","required":true,"schema":{"type":"string","title":"Campaign Id"}},{"name":"type","in":"query","required":true,"schema":{"enum":["characters","factions","locations","items"],"type":"string","description":"Entity type","title":"Type"},"description":"Entity type"},{"name":"search","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Case-insensitive name search","title":"Search"},"description":"Case-insensitive name search"},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":1,"title":"Page"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":20,"title":"Limit"}},{"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":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/entities/{entity_id}/properties":{"get":{"tags":["entities","product-api","product-api"],"summary":"Get Entity Properties","description":"Property tables (Identity / Connections / General) for one compendium entity.\n\nProduct-view only for now (not yet documented/tested for other views).\n\nField definitions are per-campaign and per-entity-type; values are\nper-entity. Fields with no stored value are returned with `value: null`.","operationId":"get_entity_properties_v1_entities__entity_id__properties_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"entity_id","in":"path","required":true,"schema":{"type":"string","title":"Entity Id"}},{"name":"campaign_id","in":"query","required":true,"schema":{"type":"string","title":"Campaign Id"}},{"name":"type","in":"query","required":true,"schema":{"enum":["characters","factions","locations","items"],"type":"string","description":"Entity type","title":"Type"},"description":"Entity type"},{"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":{"$ref":"#/components/schemas/EntityPropertiesResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/entities/{entity_id}/timeline":{"get":{"tags":["entities","product-api","product-api"],"summary":"Get Entity Timeline","description":"Sessions whose step beats wikilink to this compendium entity.\n\nProduct-view only. Assembled in one shot from the Link table — not a\npaginated listing of every campaign beat.","operationId":"get_entity_timeline_v1_entities__entity_id__timeline_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"entity_id","in":"path","required":true,"schema":{"type":"string","title":"Entity Id"}},{"name":"campaign_id","in":"query","required":true,"schema":{"type":"string","title":"Campaign Id"}},{"name":"type","in":"query","required":true,"schema":{"enum":["characters","factions","locations","items"],"type":"string","description":"Entity type","title":"Type"},"description":"Entity type"},{"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":{"$ref":"#/components/schemas/EntityTimelineResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/entities/{entity_id}/moments":{"get":{"tags":["entities","product-api","product-api"],"summary":"Get Entity Moments","description":"Key moments that wikilink to this compendium entity.\n\nProduct-view only. Filtered via the Link table (not moment_* join tables).","operationId":"get_entity_moments_v1_entities__entity_id__moments_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"entity_id","in":"path","required":true,"schema":{"type":"string","title":"Entity Id"}},{"name":"campaign_id","in":"query","required":true,"schema":{"type":"string","title":"Campaign Id"}},{"name":"type","in":"query","required":true,"schema":{"enum":["characters","factions","locations","items"],"type":"string","description":"Entity type","title":"Type"},"description":"Entity type"},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":1,"title":"Page"}},{"name":"size","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":20,"title":"Size"}},{"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":{"$ref":"#/components/schemas/PaginatedResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/support-tickets":{"post":{"tags":["support-tickets","product-api"],"summary":"Create Support Ticket","description":"Submit a support ticket (product surface, no admin gating).\n\nWrites into the same `Ticket` table the web app's `/api/tickets` route\nalready uses (see archivist-prisma's schema) instead of standing up a\nparallel ticket system, and sends the same kind of confirmation email\nsupport relies on to notice new tickets.","operationId":"create_support_ticket_v1_support_tickets_post","security":[{"HTTPBearer":[]}],"parameters":[{"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/SupportTicketCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SupportTicketRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/ask/quota":{"get":{"tags":["ask"],"summary":"Ask Quota Handler","operationId":"ask_quota_handler_v1_ask_quota_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"campaign_id","in":"query","required":true,"schema":{"type":"string","title":"Campaign 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":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/ask":{"post":{"tags":["ask"],"summary":"Ask Handler","operationId":"ask_handler_v1_ask_post","security":[{"HTTPBearer":[]}],"parameters":[{"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":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}}},"components":{"schemas":{"AiSessionReviewSummary":{"properties":{"stage":{"type":"string","title":"Stage"},"review_started_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Review Started At"},"save_started_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Save Started At"}},"type":"object","required":["stage"],"title":"AiSessionReviewSummary"},"ArtifactCatalogResponse":{"properties":{"data":{"items":{"$ref":"#/components/schemas/ArtifactRead"},"type":"array","title":"Data"},"total":{"type":"integer","title":"Total"},"page":{"type":"integer","title":"Page"},"size":{"type":"integer","title":"Size"},"pages":{"type":"integer","title":"Pages"},"type_counts":{"anyOf":[{"additionalProperties":{"type":"integer"},"type":"object"},{"type":"null"}],"title":"Type Counts"}},"type":"object","required":["data","total","page","size","pages"],"title":"ArtifactCatalogResponse"},"ArtifactRead":{"properties":{"id":{"type":"string","title":"Id"},"artifact_type":{"type":"string","title":"Artifact Type"},"title":{"type":"string","title":"Title"},"subtitle":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Subtitle"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"character_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Character Name"},"session_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Session Id"},"session_title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Session Title"},"session_number":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Session Number"},"session_date":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Session Date"},"campaign_title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Campaign Title"},"image_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Image Url"},"render_kind":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Render Kind"},"render_params":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Render Params"},"order_index":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Order Index"},"pdf_page_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Pdf Page Count"},"pdf_saved_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Pdf Saved At"},"created_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Created At"}},"type":"object","required":["id","artifact_type","title"],"title":"ArtifactRead","description":"A single entry in the campaign artifacts catalog.\n\n``artifactType`` is one of: ``hero-award``, ``spotlight``, ``quote``,\n``key-moment``, ``handout``, ``cast-analysis`` (mirrors the web artifact\ntaxonomy).\n\nItems either carry a pre-rendered ``imageUrl`` (R2 asset / moment image) or\n``renderParams`` — the raw fields clients feed into the public web\nrenderers (``/api/discord/player-award-card`` and\n``/api/discord/quote-card``)."},"BeatBatchEditRequest":{"properties":{"campaign_id":{"type":"string","title":"Campaign Id"},"beat_ids":{"items":{"type":"string"},"type":"array","title":"Beat Ids"},"updates":{"$ref":"#/components/schemas/BeatUpdate"}},"type":"object","required":["campaign_id","beat_ids","updates"],"title":"BeatBatchEditRequest"},"BeatCreate":{"properties":{"label":{"type":"string","maxLength":255,"minLength":1,"title":"Label"},"description":{"anyOf":[{"type":"string","maxLength":5000},{"type":"null"}],"title":"Description"},"type":{"$ref":"#/components/schemas/BeatType","default":"major"},"index":{"type":"integer","title":"Index","default":0},"metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Metadata"},"parent_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Parent Id"},"campaign_id":{"type":"string","title":"Campaign Id"},"game_session_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Game Session Id"},"game_session_ids":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Game Session Ids"}},"type":"object","required":["label","campaign_id"],"title":"BeatCreate"},"BeatRead":{"properties":{"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Updated At"},"id":{"type":"string","title":"Id"},"label":{"type":"string","maxLength":255,"minLength":1,"title":"Label"},"description":{"anyOf":[{"type":"string","maxLength":5000},{"type":"null"}],"title":"Description"},"type":{"$ref":"#/components/schemas/BeatType","default":"major"},"index":{"type":"integer","title":"Index","default":0},"metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Metadata"},"parent_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Parent Id"},"campaign_id":{"type":"string","title":"Campaign Id"},"game_session_ids":{"items":{"type":"string"},"type":"array","title":"Game Session Ids"},"game_session_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Game Session Id"}},"type":"object","required":["created_at","id","label","campaign_id"],"title":"BeatRead"},"BeatReorderRequest":{"properties":{"beat_id":{"type":"string","title":"Beat Id"},"campaign_id":{"type":"string","title":"Campaign Id"},"new_session_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"New Session Id"},"new_parent_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"New Parent Id"},"new_index":{"type":"integer","title":"New Index"},"insert_after_beat_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Insert After Beat Id"}},"type":"object","required":["beat_id","campaign_id","new_index"],"title":"BeatReorderRequest"},"BeatSummary":{"properties":{"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Updated At"},"id":{"type":"string","title":"Id"},"label":{"type":"string","maxLength":255,"minLength":1,"title":"Label"},"description":{"anyOf":[{"type":"string","maxLength":5000},{"type":"null"}],"title":"Description"},"type":{"$ref":"#/components/schemas/BeatType","default":"major"},"index":{"type":"integer","title":"Index","default":0},"metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Metadata"},"parent_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Parent Id"},"campaign_id":{"type":"string","title":"Campaign Id"},"game_session_ids":{"items":{"type":"string"},"type":"array","title":"Game Session Ids"},"game_session_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Game Session Id"}},"type":"object","required":["created_at","id","label","campaign_id"],"title":"BeatSummary","description":"Fully hydrated beat for listings (same shape as detail)."},"BeatType":{"type":"string","enum":["major","minor","step"],"title":"BeatType"},"BeatUpdate":{"properties":{"label":{"anyOf":[{"type":"string","maxLength":255,"minLength":1},{"type":"null"}],"title":"Label"},"description":{"anyOf":[{"type":"string","maxLength":5000},{"type":"null"}],"title":"Description"},"type":{"anyOf":[{"$ref":"#/components/schemas/BeatType"},{"type":"null"}]},"index":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Index"},"metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Metadata"},"parent_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Parent Id"},"game_session_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Game Session Id"},"game_session_ids":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Game Session Ids"}},"type":"object","title":"BeatUpdate"},"Body_upload_voice_sample_v1_campaigns__campaign_id__recordings_setup_voice_samples_upload_post":{"properties":{"speaker_id":{"type":"string","title":"Speaker Id"},"file":{"type":"string","contentMediaType":"application/octet-stream","title":"File"}},"type":"object","required":["speaker_id","file"],"title":"Body_upload_voice_sample_v1_campaigns__campaign_id__recordings_setup_voice_samples_upload_post"},"CampaignBootstrapRead":{"properties":{"id":{"type":"string","title":"Id"},"title":{"type":"string","title":"Title"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"system":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"System"},"summary":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Summary"},"image":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Image"},"public":{"type":"boolean","title":"Public","default":false},"mature":{"type":"boolean","title":"Mature","default":false},"owner_id":{"type":"string","title":"Owner Id"},"permissions":{"$ref":"#/components/schemas/CampaignPermissionsRead"},"role":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Role"},"game_sessions":{"items":{"$ref":"#/components/schemas/GameSessionSummaryProduct"},"type":"array","title":"Game Sessions"},"characters":{"items":{"$ref":"#/components/schemas/CharacterSummaryProduct"},"type":"array","title":"Characters"},"factions":{"items":{"$ref":"#/components/schemas/FactionSummaryProduct"},"type":"array","title":"Factions"},"locations":{"items":{"$ref":"#/components/schemas/LocationSummaryProduct"},"type":"array","title":"Locations"},"items":{"items":{"$ref":"#/components/schemas/ItemSummaryProduct"},"type":"array","title":"Items"},"owner":{"anyOf":[{"$ref":"#/components/schemas/CampaignMemberSummary"},{"type":"null"}]},"admins":{"items":{"$ref":"#/components/schemas/CampaignMemberSummary"},"type":"array","title":"Admins"}},"type":"object","required":["id","title","owner_id","permissions"],"title":"CampaignBootstrapRead"},"CampaignInviteCreate":{"properties":{"invitee_email":{"type":"string","maxLength":320,"minLength":3,"title":"Invitee Email"},"invite_as_admin":{"type":"boolean","title":"Invite As Admin","default":false}},"type":"object","required":["invitee_email"],"title":"CampaignInviteCreate"},"CampaignInviteDeleteResponse":{"properties":{"message":{"type":"string","title":"Message"},"invite_id":{"type":"string","title":"Invite Id"}},"type":"object","required":["message","invite_id"],"title":"CampaignInviteDeleteResponse"},"CampaignInviteRead":{"properties":{"id":{"type":"string","title":"Id"},"world_id":{"type":"string","title":"World Id"},"invitee_email":{"type":"string","title":"Invitee Email"},"status":{"type":"string","title":"Status"},"invite_as_admin":{"type":"boolean","title":"Invite As Admin","default":false},"created_at":{"type":"string","format":"date-time","title":"Created At"},"campaign_title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Campaign Title"}},"type":"object","required":["id","world_id","invitee_email","status","created_at"],"title":"CampaignInviteRead"},"CampaignInviteSendResponse":{"properties":{"message":{"type":"string","title":"Message"},"invite":{"$ref":"#/components/schemas/CampaignInviteRead"}},"type":"object","required":["message","invite"],"title":"CampaignInviteSendResponse"},"CampaignLinkEdge":{"properties":{"from_id":{"type":"string","title":"From Id"},"from_type":{"type":"string","title":"From Type"},"to_id":{"type":"string","title":"To Id"},"to_type":{"type":"string","title":"To Type"},"alias":{"type":"string","title":"Alias"}},"type":"object","required":["from_id","from_type","to_id","to_type","alias"],"title":"CampaignLinkEdge","description":"One link, reduced to what a wikilink resolver needs.\n\nDeliberately narrower than LinkRead: `id`, `campaign_id` and `created_at`\nare dropped because the graph is fetched whole, per campaign, and only ever\nread as alias -> target. On a campaign with ~12k links that is roughly a\nthird of the bytes."},"CampaignLinkGraphRead":{"properties":{"campaign_id":{"type":"string","title":"Campaign Id"},"links":{"items":{"$ref":"#/components/schemas/CampaignLinkEdge"},"type":"array","title":"Links"},"total":{"type":"integer","title":"Total"},"truncated":{"type":"boolean","title":"Truncated","default":false}},"type":"object","required":["campaign_id","links","total"],"title":"CampaignLinkGraphRead"},"CampaignMemberAdminUpdate":{"properties":{"is_admin":{"type":"boolean","title":"Is Admin"}},"type":"object","required":["is_admin"],"title":"CampaignMemberAdminUpdate"},"CampaignMemberRead":{"properties":{"id":{"type":"string","title":"Id"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email"},"picture":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Picture"},"given_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Given Name"},"family_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Family Name"},"discord_username":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Discord Username"},"is_admin":{"type":"boolean","title":"Is Admin","default":false}},"type":"object","required":["id"],"title":"CampaignMemberRead"},"CampaignMemberSummary":{"properties":{"id":{"type":"string","title":"Id"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email"}},"type":"object","required":["id"],"title":"CampaignMemberSummary"},"CampaignPermissionsRead":{"properties":{"is_owner":{"type":"boolean","title":"Is Owner","default":false},"is_world_admin":{"type":"boolean","title":"Is World Admin","default":false},"can_manage_world":{"type":"boolean","title":"Can Manage World","default":false},"can_view_quest_log":{"type":"boolean","title":"Can View Quest Log","default":false},"can_manage_quest_log":{"type":"boolean","title":"Can Manage Quest Log","default":false},"can_access_player_awards_and_collections":{"type":"boolean","title":"Can Access Player Awards And Collections","default":false}},"type":"object","title":"CampaignPermissionsRead"},"CampaignSettingsRead":{"properties":{"id":{"type":"string","title":"Id"},"title":{"type":"string","title":"Title"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"image":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Image"},"language":{"type":"string","title":"Language","default":"en"},"system":{"type":"string","title":"System","default":"D&D 5e"},"ai_image_gen":{"type":"boolean","title":"Ai Image Gen","default":true},"discord_recap_card_enabled":{"type":"boolean","title":"Discord Recap Card Enabled","default":true},"campaign_tone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Campaign Tone"},"chat_tone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Chat Tone"},"entities_tone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Entities Tone"},"image_gen_tone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Image Gen Tone"},"public":{"type":"boolean","title":"Public","default":false},"archived":{"type":"boolean","title":"Archived","default":false},"archived_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Archived At"},"owner_id":{"type":"string","title":"Owner Id"},"owner_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Owner Name"},"admin_ids":{"items":{"type":"string"},"type":"array","title":"Admin Ids"},"can_archive":{"type":"boolean","title":"Can Archive","default":false},"can_delete":{"type":"boolean","title":"Can Delete","default":false},"permissions":{"$ref":"#/components/schemas/CampaignPermissionsRead"}},"type":"object","required":["id","title","owner_id","permissions"],"title":"CampaignSettingsRead"},"CampaignSettingsUpdate":{"properties":{"title":{"anyOf":[{"type":"string","maxLength":255,"minLength":1},{"type":"null"}],"title":"Title"},"description":{"anyOf":[{"type":"string","maxLength":5000},{"type":"null"}],"title":"Description"},"image":{"anyOf":[{"type":"string","maxLength":2048},{"type":"null"}],"title":"Image"},"language":{"anyOf":[{"type":"string","maxLength":10},{"type":"null"}],"title":"Language"},"system":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}],"title":"System"},"ai_image_gen":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Ai Image Gen"},"discord_recap_card_enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Discord Recap Card Enabled"},"campaign_tone":{"anyOf":[{"type":"string","maxLength":10000},{"type":"null"}],"title":"Campaign Tone"},"chat_tone":{"anyOf":[{"type":"string","maxLength":10000},{"type":"null"}],"title":"Chat Tone"},"entities_tone":{"anyOf":[{"type":"string","maxLength":10000},{"type":"null"}],"title":"Entities Tone"},"image_gen_tone":{"anyOf":[{"type":"string","maxLength":10000},{"type":"null"}],"title":"Image Gen Tone"},"public":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Public"},"archived":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Archived"}},"type":"object","title":"CampaignSettingsUpdate"},"CastAnalysisRead":{"properties":{"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Updated At"},"id":{"type":"string","title":"Id"},"session_id":{"type":"string","title":"Session Id"},"analysis":{"additionalProperties":true,"type":"object","title":"Analysis"},"pdf_page_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Pdf Page Count"},"pdf_saved_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Pdf Saved At"}},"type":"object","required":["created_at","id","session_id","analysis"],"title":"CastAnalysisRead"},"CastCharacterSummary":{"properties":{"id":{"type":"string","title":"Id"},"character_name":{"type":"string","title":"Character Name"},"type":{"type":"string","title":"Type"},"character_aliases":{"items":{"type":"string"},"type":"array","title":"Character Aliases"}},"type":"object","required":["id","character_name","type"],"title":"CastCharacterSummary"},"CastMemberCreate":{"properties":{"name":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}],"title":"Name"},"handle":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}],"title":"Handle"},"roles":{"items":{"type":"string","enum":["Player","NPC","GM","Other"]},"type":"array","title":"Roles"},"character_name":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}],"title":"Character Name"},"character_type":{"type":"string","enum":["PC","NPC"],"title":"Character Type","default":"PC"},"character_ids":{"items":{"type":"string"},"type":"array","title":"Character Ids"},"user_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Id"},"default":{"type":"boolean","title":"Default","default":true}},"type":"object","title":"CastMemberCreate"},"CastMemberCreateResponse":{"properties":{"speaker":{"$ref":"#/components/schemas/CastMemberRead"},"deduped":{"type":"boolean","title":"Deduped","default":false}},"type":"object","required":["speaker"],"title":"CastMemberCreateResponse"},"CastMemberRead":{"properties":{"id":{"type":"string","title":"Id"},"world_id":{"type":"string","title":"World Id"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"handle":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Handle"},"roles":{"items":{"type":"string"},"type":"array","title":"Roles"},"default":{"type":"boolean","title":"Default","default":true},"user_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Id"},"characters":{"items":{"$ref":"#/components/schemas/CastCharacterSummary"},"type":"array","title":"Characters"},"user":{"anyOf":[{"$ref":"#/components/schemas/CastUserSummary"},{"type":"null"}]},"has_voice_sample":{"type":"boolean","title":"Has Voice Sample","default":false}},"type":"object","required":["id","world_id"],"title":"CastMemberRead"},"CastMemberUpdate":{"properties":{"name":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}],"title":"Name"},"handle":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}],"title":"Handle"},"roles":{"anyOf":[{"items":{"type":"string","enum":["Player","NPC","GM","Other"]},"type":"array"},{"type":"null"}],"title":"Roles"},"character_name":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}],"title":"Character Name"},"character_type":{"type":"string","enum":["PC","NPC"],"title":"Character Type","default":"PC"},"character_ids":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Character Ids"},"user_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Id"},"default":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Default"}},"type":"object","title":"CastMemberUpdate"},"CastUserSummary":{"properties":{"id":{"type":"string","title":"Id"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email"},"picture":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Picture"},"given_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Given Name"},"family_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Family Name"},"discord_username":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Discord Username"}},"type":"object","required":["id"],"title":"CastUserSummary"},"CharacterArcFacetRead":{"properties":{"id":{"type":"string","title":"Id"},"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"},"description":{"type":"string","title":"Description"},"session_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Session Id"},"session_number":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Session Number"},"version_count":{"type":"integer","title":"Version Count","default":0},"hidden":{"type":"boolean","title":"Hidden","default":false},"created_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Created At"},"updated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Updated At"}},"type":"object","required":["id","description"],"title":"CharacterArcFacetRead","description":"One arc entry for a character, under a theme.\n\n``versionCount`` counts prior revisions of this facet (the facet rows that\npoint at it via ``parentId``); the facet itself is the current version."},"CharacterArcResponse":{"properties":{"character_id":{"type":"string","title":"Character Id"},"themes":{"items":{"$ref":"#/components/schemas/CharacterArcThemeRead"},"type":"array","title":"Themes"}},"type":"object","required":["character_id","themes"],"title":"CharacterArcResponse"},"CharacterArcThemeRead":{"properties":{"id":{"type":"string","title":"Id"},"title":{"type":"string","title":"Title"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"facets":{"items":{"$ref":"#/components/schemas/CharacterArcFacetRead"},"type":"array","title":"Facets","default":[]}},"type":"object","required":["id","title"],"title":"CharacterArcThemeRead"},"CharacterCreate":{"properties":{"character_name":{"type":"string","maxLength":255,"minLength":1,"title":"Character Name"},"character_alias":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}],"title":"Character Alias"},"character_aliases":{"items":{"type":"string"},"type":"array","title":"Character Aliases"},"player_name":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}],"title":"Player Name"},"player_handle":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}],"title":"Player Handle"},"description":{"anyOf":[{"type":"string","maxLength":10000},{"type":"null"}],"title":"Description"},"backstory":{"anyOf":[{"type":"string","maxLength":20000},{"type":"null"}],"title":"Backstory"},"type":{"type":"string","maxLength":50,"title":"Type","default":"PC"},"image":{"anyOf":[{"type":"string","maxLength":2048},{"type":"null"}],"title":"Image"},"campaign_id":{"type":"string","title":"Campaign Id"},"speaker_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Speaker Id"}},"additionalProperties":false,"type":"object","required":["character_name","campaign_id"],"title":"CharacterCreate","description":"Schema for creating a new character"},"CharacterPlayer":{"properties":{"id":{"type":"string","title":"Id"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"handle":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Handle"},"roles":{"items":{"type":"string"},"type":"array","title":"Roles"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"campaign_id":{"type":"string","title":"Campaign Id"}},"type":"object","required":["id","created_at","campaign_id"],"title":"CharacterPlayer"},"CharacterRead":{"properties":{"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Updated At"},"id":{"type":"string","title":"Id"},"character_name":{"type":"string","maxLength":255,"minLength":1,"title":"Character Name"},"character_alias":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}],"title":"Character Alias"},"character_aliases":{"items":{"type":"string"},"type":"array","title":"Character Aliases"},"player_name":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}],"title":"Player Name"},"player_handle":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}],"title":"Player Handle"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"backstory":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Backstory"},"type":{"type":"string","maxLength":50,"title":"Type","default":"PC"},"image":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Image"},"campaign_id":{"type":"string","title":"Campaign Id"},"player":{"anyOf":[{"$ref":"#/components/schemas/CharacterPlayer"},{"type":"null"}]},"tcg_image":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tcg Image"},"merge":{"type":"boolean","title":"Merge"}},"type":"object","required":["created_at","id","character_name","campaign_id","merge"],"title":"CharacterRead","description":"Schema for reading character data"},"CharacterReadAgent":{"properties":{"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Updated At"},"id":{"type":"string","title":"Id"},"character_name":{"type":"string","title":"Character Name"},"character_alias":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Character Alias"},"character_aliases":{"items":{"type":"string"},"type":"array","title":"Character Aliases"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"backstory":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Backstory"},"type":{"type":"string","title":"Type"},"image":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Image"},"tcg_image":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tcg Image"},"campaign_id":{"type":"string","title":"Campaign Id"},"merge":{"type":"boolean","title":"Merge","default":false}},"type":"object","required":["created_at","id","character_name","type","campaign_id"],"title":"CharacterReadAgent","description":"Character detail schema for third-party AI assistants: no player account linkage."},"CharacterReadProduct":{"properties":{"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Updated At"},"id":{"type":"string","title":"Id"},"character_name":{"type":"string","maxLength":255,"minLength":1,"title":"Character Name"},"character_alias":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}],"title":"Character Alias"},"character_aliases":{"items":{"type":"string"},"type":"array","title":"Character Aliases"},"player_name":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}],"title":"Player Name"},"player_handle":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}],"title":"Player Handle"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"backstory":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Backstory"},"type":{"type":"string","maxLength":50,"title":"Type","default":"PC"},"image":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Image"},"campaign_id":{"type":"string","title":"Campaign Id"},"player":{"anyOf":[{"$ref":"#/components/schemas/CharacterPlayer"},{"type":"null"}]},"tcg_image":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tcg Image"},"merge":{"type":"boolean","title":"Merge"},"approved":{"type":"boolean","title":"Approved","default":false},"pending":{"type":"boolean","title":"Pending","default":false},"tag_count":{"type":"integer","title":"Tag Count","default":0},"properties_updated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Properties Updated At"},"speaker_user":{"anyOf":[{"$ref":"#/components/schemas/CharacterUserSummary"},{"type":"null"}]}},"type":"object","required":["created_at","id","character_name","campaign_id","merge"],"title":"CharacterReadProduct"},"CharacterSummaryProduct":{"properties":{"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Updated At"},"id":{"type":"string","title":"Id"},"character_name":{"type":"string","title":"Character Name"},"character_alias":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Character Alias"},"character_aliases":{"items":{"type":"string"},"type":"array","title":"Character Aliases"},"player_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Player Name"},"player_handle":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Player Handle"},"player":{"anyOf":[{"$ref":"#/components/schemas/CharacterPlayer"},{"type":"null"}]},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"backstory":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Backstory"},"type":{"type":"string","title":"Type"},"image":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Image"},"tcg_image":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tcg Image"},"campaign_id":{"type":"string","title":"Campaign Id"},"merge":{"type":"boolean","title":"Merge","default":false},"approved":{"type":"boolean","title":"Approved","default":false},"pending":{"type":"boolean","title":"Pending","default":false},"tag_count":{"type":"integer","title":"Tag Count","default":0},"properties_updated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Properties Updated At"},"speaker_user":{"anyOf":[{"$ref":"#/components/schemas/CharacterUserSummary"},{"type":"null"}]}},"type":"object","required":["created_at","id","character_name","type","campaign_id"],"title":"CharacterSummaryProduct"},"CharacterUpdate":{"properties":{"character_name":{"anyOf":[{"type":"string","maxLength":255,"minLength":1},{"type":"null"}],"title":"Character Name"},"character_alias":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}],"title":"Character Alias"},"character_aliases":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Character Aliases"},"player_name":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}],"title":"Player Name"},"player_handle":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}],"title":"Player Handle"},"description":{"anyOf":[{"type":"string","maxLength":10000},{"type":"null"}],"title":"Description"},"backstory":{"anyOf":[{"type":"string","maxLength":20000},{"type":"null"}],"title":"Backstory"},"type":{"anyOf":[{"type":"string","maxLength":50},{"type":"null"}],"title":"Type"},"image":{"anyOf":[{"type":"string","maxLength":2048},{"type":"null"}],"title":"Image"},"speaker_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Speaker Id"}},"additionalProperties":false,"type":"object","title":"CharacterUpdate","description":"Schema for updating a character"},"CharacterUserSummary":{"properties":{"id":{"type":"string","title":"Id"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"given_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Given Name"},"family_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Family Name"},"discord_username":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Discord Username"},"picture":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Picture"}},"type":"object","required":["id"],"title":"CharacterUserSummary"},"ClaimCharacterRequest":{"properties":{"character_id":{"type":"string","minLength":1,"title":"Character Id"}},"type":"object","required":["character_id"],"title":"ClaimCharacterRequest"},"CompletedRecordingPart":{"properties":{"part_number":{"type":"integer","minimum":1.0,"title":"Part Number"},"etag":{"type":"string","minLength":1,"title":"Etag"}},"type":"object","required":["part_number","etag"],"title":"CompletedRecordingPart"},"CreatePlayerCharacterRequest":{"properties":{"character_name":{"type":"string","maxLength":255,"minLength":1,"title":"Character Name"},"description":{"anyOf":[{"type":"string","maxLength":10000},{"type":"null"}],"title":"Description"},"player_handle":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}],"title":"Player Handle"}},"type":"object","required":["character_name"],"title":"CreatePlayerCharacterRequest"},"EntityPropertiesResponse":{"properties":{"entity_id":{"type":"string","title":"Entity Id"},"entity_type":{"type":"string","title":"Entity Type"},"compendium_entity_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Compendium Entity Type"},"tables":{"items":{"$ref":"#/components/schemas/PropertyTableRead"},"type":"array","title":"Tables"}},"type":"object","required":["entity_id","entity_type","tables"],"title":"EntityPropertiesResponse"},"EntityTimelineBeatParent":{"properties":{"id":{"type":"string","title":"Id"},"label":{"type":"string","title":"Label"},"index":{"type":"integer","title":"Index","default":0}},"type":"object","required":["id","label"],"title":"EntityTimelineBeatParent"},"EntityTimelineResponse":{"properties":{"sessions":{"items":{"$ref":"#/components/schemas/EntityTimelineSessionRead"},"type":"array","title":"Sessions","default":[]},"total_sessions":{"type":"integer","title":"Total Sessions","default":0}},"type":"object","title":"EntityTimelineResponse"},"EntityTimelineSessionRead":{"properties":{"id":{"type":"string","title":"Id"},"title":{"type":"string","title":"Title"},"session_date":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Session Date"},"session_number":{"type":"integer","title":"Session Number"},"steps":{"items":{"$ref":"#/components/schemas/EntityTimelineStepRead"},"type":"array","title":"Steps","default":[]}},"type":"object","required":["id","title","session_number"],"title":"EntityTimelineSessionRead"},"EntityTimelineStepRead":{"properties":{"id":{"type":"string","title":"Id"},"label":{"type":"string","title":"Label"},"description":{"type":"string","title":"Description","default":""},"index":{"type":"integer","title":"Index","default":0},"characters":{"items":{"type":"string"},"type":"array","title":"Characters","default":[]},"factions":{"items":{"type":"string"},"type":"array","title":"Factions","default":[]},"locations":{"items":{"type":"string"},"type":"array","title":"Locations","default":[]},"items":{"items":{"type":"string"},"type":"array","title":"Items","default":[]},"minor_beat":{"anyOf":[{"$ref":"#/components/schemas/EntityTimelineBeatParent"},{"type":"null"}]},"major_beat":{"anyOf":[{"$ref":"#/components/schemas/EntityTimelineBeatParent"},{"type":"null"}]}},"type":"object","required":["id","label"],"title":"EntityTimelineStepRead"},"FactionCreate":{"properties":{"name":{"type":"string","maxLength":255,"minLength":1,"title":"Name"},"aliases":{"items":{"type":"string"},"type":"array","title":"Aliases"},"type":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}],"title":"Type"},"description":{"anyOf":[{"type":"string","maxLength":10000},{"type":"null"}],"title":"Description"},"image":{"anyOf":[{"type":"string","maxLength":2048},{"type":"null"}],"title":"Image"},"tcg_image":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tcg Image"},"campaign_id":{"type":"string","title":"Campaign Id"}},"type":"object","required":["name","campaign_id"],"title":"FactionCreate"},"FactionRead":{"properties":{"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Updated At"},"id":{"type":"string","title":"Id"},"name":{"type":"string","title":"Name"},"aliases":{"items":{"type":"string"},"type":"array","title":"Aliases"},"type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Type"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"image":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Image"},"tcg_image":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tcg Image"},"campaign_id":{"type":"string","title":"Campaign Id"},"merge":{"type":"boolean","title":"Merge","default":false}},"type":"object","required":["created_at","id","name","campaign_id"],"title":"FactionRead","description":"Read view of a stored faction.\n\nThe constrained fields from FactionBase are redeclared here without their\nlimits on purpose. FactionBase exists to validate *incoming* writes, but\nFactionRead validates rows that already exist, and those rows are also\nwritten by the Next.js app straight through Prisma, which enforces none of\nthese limits. Inheriting them made pydantic reject legacy rows on read, so\n`GET /v1/factions/{id}` answered 500 for every faction whose stored\ndescription was longer than the create/update cap. `CharacterRead` has\nalways relaxed its own text fields for this reason; these types had not."},"FactionReadProduct":{"properties":{"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Updated At"},"id":{"type":"string","title":"Id"},"name":{"type":"string","title":"Name"},"aliases":{"items":{"type":"string"},"type":"array","title":"Aliases"},"type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Type"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"image":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Image"},"tcg_image":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tcg Image"},"campaign_id":{"type":"string","title":"Campaign Id"},"merge":{"type":"boolean","title":"Merge","default":false},"approved":{"type":"boolean","title":"Approved","default":false},"pending":{"type":"boolean","title":"Pending","default":false},"tag_count":{"type":"integer","title":"Tag Count","default":0}},"type":"object","required":["created_at","id","name","campaign_id"],"title":"FactionReadProduct"},"FactionSummaryProduct":{"properties":{"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Updated At"},"id":{"type":"string","title":"Id"},"name":{"type":"string","title":"Name"},"aliases":{"items":{"type":"string"},"type":"array","title":"Aliases"},"type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Type"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"image":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Image"},"tcg_image":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tcg Image"},"campaign_id":{"type":"string","title":"Campaign Id"},"merge":{"type":"boolean","title":"Merge","default":false},"approved":{"type":"boolean","title":"Approved","default":false},"pending":{"type":"boolean","title":"Pending","default":false},"tag_count":{"type":"integer","title":"Tag Count","default":0}},"type":"object","required":["created_at","id","name","campaign_id"],"title":"FactionSummaryProduct"},"FactionUpdate":{"properties":{"name":{"anyOf":[{"type":"string","maxLength":255,"minLength":1},{"type":"null"}],"title":"Name"},"aliases":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Aliases"},"type":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}],"title":"Type"},"description":{"anyOf":[{"type":"string","maxLength":10000},{"type":"null"}],"title":"Description"},"image":{"anyOf":[{"type":"string","maxLength":2048},{"type":"null"}],"title":"Image"},"tcg_image":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tcg Image"}},"type":"object","title":"FactionUpdate"},"GameSessionCreate":{"properties":{"title":{"type":"string","maxLength":255,"title":"Title","default":"_new_session_"},"summary":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Summary"},"notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Notes"},"type":{"$ref":"#/components/schemas/GameSessionType","default":"other"},"public":{"type":"boolean","title":"Public","default":false},"campaign_id":{"type":"string","title":"Campaign Id"}},"type":"object","required":["campaign_id"],"title":"GameSessionCreate","description":"Schema for creating a new game session"},"GameSessionDetail":{"properties":{"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Updated At"},"id":{"type":"string","title":"Id"},"title":{"type":"string","maxLength":255,"title":"Title","default":"_new_session_"},"summary":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Summary"},"notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Notes"},"type":{"$ref":"#/components/schemas/GameSessionType","default":"other"},"public":{"type":"boolean","title":"Public","default":false},"campaign_id":{"type":"string","title":"Campaign Id"},"image":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Image"},"index":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Index"},"session_date":{"type":"string","format":"date-time","title":"Session Date"},"pbp_start_msg_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Pbp Start Msg Url"},"pbp_end_msg_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Pbp End Msg Url"},"beats":{"anyOf":[{"items":{"$ref":"#/components/schemas/BeatSummary"},"type":"array"},{"type":"null"}],"title":"Beats"},"moments":{"anyOf":[{"items":{"$ref":"#/components/schemas/MomentSummary"},"type":"array"},{"type":"null"}],"title":"Moments"}},"type":"object","required":["created_at","id","campaign_id","session_date"],"title":"GameSessionDetail","description":"Detailed read schema with optional related collections (developer view)."},"GameSessionDetailAgent":{"properties":{"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Updated At"},"id":{"type":"string","title":"Id"},"title":{"type":"string","maxLength":255,"title":"Title","default":"_new_session_"},"summary":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Summary"},"notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Notes"},"type":{"$ref":"#/components/schemas/GameSessionType","default":"other"},"public":{"type":"boolean","title":"Public","default":false},"campaign_id":{"type":"string","title":"Campaign Id"},"image":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Image"},"index":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Index"},"session_date":{"type":"string","format":"date-time","title":"Session Date"},"pbp_start_msg_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Pbp Start Msg Url"},"pbp_end_msg_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Pbp End Msg Url"},"beats":{"anyOf":[{"items":{"$ref":"#/components/schemas/BeatSummary"},"type":"array"},{"type":"null"}],"title":"Beats"},"moments":{"anyOf":[{"items":{"$ref":"#/components/schemas/MomentSummary"},"type":"array"},{"type":"null"}],"title":"Moments"},"ai_session_review":{"anyOf":[{"$ref":"#/components/schemas/AiSessionReviewSummary"},{"type":"null"}]}},"type":"object","required":["created_at","id","campaign_id","session_date"],"title":"GameSessionDetailAgent","description":"Detailed read schema for third-party AI assistants with compact review status."},"GameSessionDetailProduct":{"properties":{"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Updated At"},"id":{"type":"string","title":"Id"},"title":{"type":"string","title":"Title"},"type":{"$ref":"#/components/schemas/GameSessionType"},"session_date":{"type":"string","format":"date-time","title":"Session Date"},"campaign_id":{"type":"string","title":"Campaign Id"},"public":{"type":"boolean","title":"Public"},"summary":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Summary"},"image":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Image"},"index":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Index"},"notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Notes"},"pbp_start_msg_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Pbp Start Msg Url"},"pbp_end_msg_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Pbp End Msg Url"},"pending":{"type":"boolean","title":"Pending","default":false},"ai_session_review":{"anyOf":[{"$ref":"#/components/schemas/AiSessionReviewSummary"},{"type":"null"}]},"beats":{"anyOf":[{"items":{"$ref":"#/components/schemas/BeatSummary"},"type":"array"},{"type":"null"}],"title":"Beats"},"moments":{"anyOf":[{"items":{"$ref":"#/components/schemas/MomentSummaryProduct"},"type":"array"},{"type":"null"}],"title":"Moments"}},"type":"object","required":["created_at","id","title","type","session_date","campaign_id","public"],"title":"GameSessionDetailProduct","description":"Detailed read schema with optional related collections (product view)."},"GameSessionPatch":{"properties":{"title":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}],"title":"Title"},"session_date":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Session Date"},"summary":{"anyOf":[{"type":"string","maxLength":10000},{"type":"null"}],"title":"Summary"},"image":{"anyOf":[{"type":"string","maxLength":2048},{"type":"null"}],"title":"Image"}},"type":"object","title":"GameSessionPatch","description":"Schema for PATCH updates to a game session (limited fields)"},"GameSessionRead":{"properties":{"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Updated At"},"id":{"type":"string","title":"Id"},"title":{"type":"string","maxLength":255,"title":"Title","default":"_new_session_"},"summary":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Summary"},"notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Notes"},"type":{"$ref":"#/components/schemas/GameSessionType","default":"other"},"public":{"type":"boolean","title":"Public","default":false},"campaign_id":{"type":"string","title":"Campaign Id"},"image":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Image"},"index":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Index"},"session_date":{"type":"string","format":"date-time","title":"Session Date"},"pbp_start_msg_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Pbp Start Msg Url"},"pbp_end_msg_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Pbp End Msg Url"}},"type":"object","required":["created_at","id","campaign_id","session_date"],"title":"GameSessionRead","description":"Schema for reading game session data"},"GameSessionSummaryProduct":{"properties":{"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Updated At"},"id":{"type":"string","title":"Id"},"title":{"type":"string","title":"Title"},"type":{"$ref":"#/components/schemas/GameSessionType"},"session_date":{"type":"string","format":"date-time","title":"Session Date"},"campaign_id":{"type":"string","title":"Campaign Id"},"public":{"type":"boolean","title":"Public"},"summary":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Summary"},"image":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Image"},"index":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Index"},"notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Notes"},"pbp_start_msg_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Pbp Start Msg Url"},"pbp_end_msg_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Pbp End Msg Url"},"pending":{"type":"boolean","title":"Pending","default":false},"ai_session_review":{"anyOf":[{"$ref":"#/components/schemas/AiSessionReviewSummary"},{"type":"null"}]}},"type":"object","required":["created_at","id","title","type","session_date","campaign_id","public"],"title":"GameSessionSummaryProduct"},"GameSessionType":{"type":"string","enum":["audioUpload","playByPost","discordVoice","txtUpload","rawNotes","other"],"title":"GameSessionType"},"GameSessionUpdate":{"properties":{"title":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}],"title":"Title"},"summary":{"anyOf":[{"type":"string","maxLength":10000},{"type":"null"}],"title":"Summary"},"notes":{"anyOf":[{"type":"string","maxLength":10000},{"type":"null"}],"title":"Notes"},"type":{"anyOf":[{"$ref":"#/components/schemas/GameSessionType"},{"type":"null"}]},"public":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Public"},"session_date":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Session Date"},"image":{"anyOf":[{"type":"string","maxLength":2048},{"type":"null"}],"title":"Image"}},"type":"object","title":"GameSessionUpdate","description":"Schema for updating a game session"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"HandoutCharacterSpotlightRead":{"properties":{"name":{"type":"string","title":"Name"},"description":{"type":"string","title":"Description"},"bullets":{"items":{"type":"string"},"type":"array","title":"Bullets"}},"type":"object","required":["name","description"],"title":"HandoutCharacterSpotlightRead"},"HandoutEncounterRead":{"properties":{"title":{"type":"string","title":"Title"},"bullets":{"items":{"type":"string"},"type":"array","title":"Bullets"}},"type":"object","required":["title"],"title":"HandoutEncounterRead"},"HandoutEntitySpotlightRead":{"properties":{"name":{"type":"string","title":"Name"},"description":{"type":"string","title":"Description"}},"type":"object","required":["name","description"],"title":"HandoutEntitySpotlightRead"},"HandoutItemRead":{"properties":{"name":{"type":"string","title":"Name"},"description":{"type":"string","title":"Description"}},"type":"object","required":["name","description"],"title":"HandoutItemRead"},"HandoutMomentRead":{"properties":{"label":{"type":"string","title":"Label"},"content":{"type":"string","title":"Content"}},"type":"object","required":["label","content"],"title":"HandoutMomentRead"},"HandoutNextSteps":{"properties":{"summary":{"type":"string","title":"Summary","default":""}},"type":"object","title":"HandoutNextSteps"},"HandoutPartyStatus":{"properties":{"summary":{"type":"string","title":"Summary","default":""},"bullets":{"items":{"type":"string"},"type":"array","title":"Bullets"}},"type":"object","title":"HandoutPartyStatus"},"HandoutPartyStatusAndNextSteps":{"properties":{"partyStatus":{"$ref":"#/components/schemas/HandoutPartyStatus"},"nextSteps":{"$ref":"#/components/schemas/HandoutNextSteps"}},"type":"object","title":"HandoutPartyStatusAndNextSteps"},"HandoutValuableInfoRead":{"properties":{"info":{"type":"string","title":"Info"}},"type":"object","required":["info"],"title":"HandoutValuableInfoRead"},"HeroAwardCreate":{"properties":{"session_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Session Id"},"title":{"type":"string","maxLength":200,"minLength":1,"title":"Title"},"description":{"type":"string","maxLength":4000,"minLength":1,"title":"Description"},"character_name":{"type":"string","maxLength":120,"title":"Character Name","default":""},"player_name":{"anyOf":[{"type":"string","maxLength":120},{"type":"null"}],"title":"Player Name"},"tone_mode":{"anyOf":[{"type":"string","maxLength":40},{"type":"null"}],"title":"Tone Mode"},"award_mode":{"anyOf":[{"type":"string","maxLength":40},{"type":"null"}],"title":"Award Mode"},"style":{"anyOf":[{"type":"string","maxLength":40},{"type":"null"}],"title":"Style"},"variant":{"anyOf":[{"type":"string","maxLength":40},{"type":"null"}],"title":"Variant"},"custom_theme":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Custom Theme"},"order_index":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Order Index"}},"type":"object","required":["title","description"],"title":"HeroAwardCreate"},"HeroAwardRead":{"properties":{"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Updated At"},"id":{"type":"string","title":"Id"},"title":{"type":"string","title":"Title"},"description":{"type":"string","title":"Description"},"character_name":{"type":"string","title":"Character Name"},"player_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Player Name"},"session_id":{"type":"string","title":"Session Id"},"campaign_id":{"type":"string","title":"Campaign Id"},"tone_mode":{"type":"string","title":"Tone Mode"},"award_mode":{"type":"string","title":"Award Mode"},"style":{"type":"string","title":"Style"},"variant":{"type":"string","title":"Variant"},"custom_theme":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Custom Theme"},"order_index":{"type":"integer","title":"Order Index"}},"type":"object","required":["created_at","id","title","description","character_name","session_id","campaign_id","tone_mode","award_mode","style","variant","order_index"],"title":"HeroAwardRead"},"HeroAwardUpdate":{"properties":{"title":{"anyOf":[{"type":"string","maxLength":200,"minLength":1},{"type":"null"}],"title":"Title"},"description":{"anyOf":[{"type":"string","maxLength":4000,"minLength":1},{"type":"null"}],"title":"Description"},"character_name":{"anyOf":[{"type":"string","maxLength":120},{"type":"null"}],"title":"Character Name"},"player_name":{"anyOf":[{"type":"string","maxLength":120},{"type":"null"}],"title":"Player Name"},"tone_mode":{"anyOf":[{"type":"string","maxLength":40},{"type":"null"}],"title":"Tone Mode"},"award_mode":{"anyOf":[{"type":"string","maxLength":40},{"type":"null"}],"title":"Award Mode"},"style":{"anyOf":[{"type":"string","maxLength":40},{"type":"null"}],"title":"Style"},"variant":{"anyOf":[{"type":"string","maxLength":40},{"type":"null"}],"title":"Variant"},"custom_theme":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Custom Theme"},"order_index":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Order Index"}},"type":"object","title":"HeroAwardUpdate"},"ImageDeleteRequest":{"properties":{"entity_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Entity Type"},"entity_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Entity Id"},"image_url":{"anyOf":[{"type":"string","maxLength":2048},{"type":"null"}],"title":"Image Url"}},"type":"object","title":"ImageDeleteRequest"},"ImageDeleteResponse":{"properties":{"removed":{"type":"boolean","title":"Removed"}},"type":"object","required":["removed"],"title":"ImageDeleteResponse"},"ImageGenerateRequest":{"properties":{"campaign_id":{"type":"string","title":"Campaign Id"},"type":{"type":"string","title":"Type"},"user_input":{"anyOf":[{"type":"string","maxLength":20000},{"type":"null"}],"title":"User Input"},"entity_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Entity Id"}},"type":"object","required":["campaign_id","type"],"title":"ImageGenerateRequest"},"ImageGenerateResponse":{"properties":{"url":{"type":"string","title":"Url"}},"type":"object","required":["url"],"title":"ImageGenerateResponse"},"ImageUploadCompleteRequest":{"properties":{"object_key":{"type":"string","maxLength":2048,"minLength":1,"title":"Object Key"},"entity_type":{"type":"string","title":"Entity Type"},"entity_id":{"type":"string","title":"Entity Id"},"attach":{"type":"boolean","title":"Attach","default":true}},"type":"object","required":["object_key","entity_type","entity_id"],"title":"ImageUploadCompleteRequest"},"ImageUploadCompleteResponse":{"properties":{"url":{"type":"string","title":"Url"},"attached":{"type":"boolean","title":"Attached"}},"type":"object","required":["url","attached"],"title":"ImageUploadCompleteResponse"},"ImageUploadInitRequest":{"properties":{"entity_type":{"type":"string","title":"Entity Type"},"entity_id":{"type":"string","title":"Entity Id"},"file_name":{"type":"string","maxLength":255,"minLength":1,"title":"File Name"},"content_type":{"type":"string","maxLength":100,"minLength":1,"title":"Content Type"}},"type":"object","required":["entity_type","entity_id","file_name","content_type"],"title":"ImageUploadInitRequest"},"ImageUploadInitResponse":{"properties":{"object_key":{"type":"string","title":"Object Key"},"upload_url":{"type":"string","title":"Upload Url"},"public_url":{"type":"string","title":"Public Url"},"expires_in_seconds":{"type":"integer","title":"Expires In Seconds"}},"type":"object","required":["object_key","upload_url","public_url","expires_in_seconds"],"title":"ImageUploadInitResponse"},"ImageUsageResponse":{"properties":{"used":{"type":"integer","title":"Used"},"limit":{"type":"integer","title":"Limit"},"can_access":{"type":"boolean","title":"Can Access"},"feature_type":{"type":"string","title":"Feature Type","default":"image"},"tier":{"type":"string","title":"Tier"},"billing_cycle_start":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Billing Cycle Start"},"billing_cycle_end":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Billing Cycle End"},"message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Message"}},"type":"object","required":["used","limit","can_access","tier"],"title":"ImageUsageResponse"},"InviteAcceptResponse":{"properties":{"message":{"type":"string","title":"Message"},"admin_invite":{"type":"boolean","title":"Admin Invite","default":false},"campaign_id":{"type":"string","title":"Campaign Id"}},"type":"object","required":["message","campaign_id"],"title":"InviteAcceptResponse"},"InvitePreviewRead":{"properties":{"id":{"type":"string","title":"Id"},"token":{"type":"string","title":"Token"},"status":{"type":"string","title":"Status"},"invitee_email":{"type":"string","title":"Invitee Email"},"campaign_id":{"type":"string","title":"Campaign Id"},"campaign_title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Campaign Title"},"inviter_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Inviter Name"},"admin_invite":{"type":"boolean","title":"Admin Invite","default":false},"transfer":{"type":"boolean","title":"Transfer","default":false}},"type":"object","required":["id","token","status","invitee_email","campaign_id"],"title":"InvitePreviewRead"},"ItemCreate":{"properties":{"name":{"type":"string","maxLength":255,"minLength":1,"title":"Name"},"aliases":{"items":{"type":"string"},"type":"array","title":"Aliases"},"type":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}],"title":"Type"},"description":{"anyOf":[{"type":"string","maxLength":10000},{"type":"null"}],"title":"Description"},"image":{"anyOf":[{"type":"string","maxLength":2048},{"type":"null"}],"title":"Image"},"tcg_image":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tcg Image"},"campaign_id":{"type":"string","title":"Campaign Id"}},"type":"object","required":["name","campaign_id"],"title":"ItemCreate"},"ItemRead":{"properties":{"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Updated At"},"id":{"type":"string","title":"Id"},"name":{"type":"string","title":"Name"},"aliases":{"items":{"type":"string"},"type":"array","title":"Aliases"},"type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Type"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"image":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Image"},"tcg_image":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tcg Image"},"campaign_id":{"type":"string","title":"Campaign Id"},"merge":{"type":"boolean","title":"Merge","default":false}},"type":"object","required":["created_at","id","name","campaign_id"],"title":"ItemRead","description":"Read view of a stored item.\n\nThe constrained fields from ItemBase are redeclared here without their\nlimits on purpose. ItemBase exists to validate *incoming* writes, but\nItemRead validates rows that already exist, and those rows are also\nwritten by the Next.js app straight through Prisma, which enforces none of\nthese limits. Inheriting them made pydantic reject legacy rows on read, so\n`GET /v1/items/{id}` answered 500 for every item whose stored\ndescription was longer than the create/update cap. `CharacterRead` has\nalways relaxed its own text fields for this reason; these types had not."},"ItemReadProduct":{"properties":{"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Updated At"},"id":{"type":"string","title":"Id"},"name":{"type":"string","title":"Name"},"aliases":{"items":{"type":"string"},"type":"array","title":"Aliases"},"type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Type"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"image":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Image"},"tcg_image":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tcg Image"},"campaign_id":{"type":"string","title":"Campaign Id"},"merge":{"type":"boolean","title":"Merge","default":false},"approved":{"type":"boolean","title":"Approved","default":false},"pending":{"type":"boolean","title":"Pending","default":false},"tag_count":{"type":"integer","title":"Tag Count","default":0}},"type":"object","required":["created_at","id","name","campaign_id"],"title":"ItemReadProduct"},"ItemSummaryProduct":{"properties":{"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Updated At"},"id":{"type":"string","title":"Id"},"name":{"type":"string","title":"Name"},"aliases":{"items":{"type":"string"},"type":"array","title":"Aliases"},"type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Type"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"image":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Image"},"tcg_image":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tcg Image"},"campaign_id":{"type":"string","title":"Campaign Id"},"merge":{"type":"boolean","title":"Merge","default":false},"approved":{"type":"boolean","title":"Approved","default":false},"pending":{"type":"boolean","title":"Pending","default":false},"tag_count":{"type":"integer","title":"Tag Count","default":0}},"type":"object","required":["created_at","id","name","campaign_id"],"title":"ItemSummaryProduct"},"ItemUpdate":{"properties":{"name":{"anyOf":[{"type":"string","maxLength":255,"minLength":1},{"type":"null"}],"title":"Name"},"aliases":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Aliases"},"type":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}],"title":"Type"},"description":{"anyOf":[{"type":"string","maxLength":10000},{"type":"null"}],"title":"Description"},"image":{"anyOf":[{"type":"string","maxLength":2048},{"type":"null"}],"title":"Image"},"tcg_image":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tcg Image"}},"type":"object","title":"ItemUpdate"},"JournalEntryCreate":{"properties":{"worldId":{"type":"string","title":"Worldid"},"title":{"type":"string","maxLength":255,"minLength":1,"title":"Title"},"summary":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Summary"},"content":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Content"},"contentRich":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Contentrich"},"contentMetadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Contentmetadata"},"tags":{"items":{"type":"string"},"type":"array","title":"Tags"},"coverImage":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Coverimage"},"isPinned":{"type":"boolean","title":"Ispinned","default":false},"isPublic":{"type":"boolean","title":"Ispublic","default":false},"status":{"anyOf":[{"type":"string","enum":["draft","published","archived"]},{"type":"null"}],"title":"Status"},"publishedAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Publishedat"},"archivedAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Archivedat"},"folderId":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Folderid"}},"type":"object","required":["worldId","title"],"title":"JournalEntryCreate"},"JournalEntryPut":{"properties":{"id":{"type":"string","title":"Id"},"title":{"anyOf":[{"type":"string","maxLength":255,"minLength":1},{"type":"null"}],"title":"Title"},"summary":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Summary"},"content":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Content"},"contentRich":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Contentrich"},"contentMetadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Contentmetadata"},"tags":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Tags"},"coverImage":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Coverimage"},"isPinned":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Ispinned"},"isPublic":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Ispublic"},"status":{"anyOf":[{"type":"string","enum":["draft","published","archived"]},{"type":"null"}],"title":"Status"},"publishedAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Publishedat"},"archivedAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Archivedat"},"folderId":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Folderid"},"permissions":{"anyOf":[{"$ref":"#/components/schemas/JournalPermissionUpdate"},{"type":"null"}]},"authorId":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorid"}},"type":"object","required":["id"],"title":"JournalEntryPut"},"JournalFolderCreate":{"properties":{"worldId":{"type":"string","title":"Worldid"},"name":{"type":"string","maxLength":255,"minLength":1,"title":"Name"},"path":{"type":"string","maxLength":1024,"minLength":1,"title":"Path"},"parentId":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Parentid"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"position":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Position","default":0},"metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Metadata"}},"type":"object","required":["worldId","name","path"],"title":"JournalFolderCreate"},"JournalFolderPut":{"properties":{"id":{"type":"string","title":"Id"},"name":{"anyOf":[{"type":"string","maxLength":255,"minLength":1},{"type":"null"}],"title":"Name"},"path":{"anyOf":[{"type":"string","maxLength":1024,"minLength":1},{"type":"null"}],"title":"Path"},"parentId":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Parentid"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"position":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Position"},"metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Metadata"}},"type":"object","required":["id"],"title":"JournalFolderPut"},"JournalPermissionAdd":{"properties":{"userId":{"type":"string","title":"Userid"},"level":{"type":"string","enum":["view","comment","edit","manage"],"title":"Level","default":"view"}},"type":"object","required":["userId"],"title":"JournalPermissionAdd"},"JournalPermissionRemove":{"properties":{"userId":{"type":"string","title":"Userid"}},"type":"object","required":["userId"],"title":"JournalPermissionRemove"},"JournalPermissionUpdate":{"properties":{"add":{"items":{"$ref":"#/components/schemas/JournalPermissionAdd"},"type":"array","title":"Add"},"remove":{"items":{"$ref":"#/components/schemas/JournalPermissionRemove"},"type":"array","title":"Remove"}},"type":"object","title":"JournalPermissionUpdate"},"LaunchPromoState":{"properties":{"active":{"type":"boolean","title":"Active"},"ends_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Ends At"}},"type":"object","required":["active"],"title":"LaunchPromoState"},"LinkCreate":{"properties":{"from_id":{"type":"string","minLength":1,"title":"From Id"},"from_type":{"type":"string","minLength":1,"title":"From Type"},"to_id":{"type":"string","minLength":1,"title":"To Id"},"to_type":{"type":"string","minLength":1,"title":"To Type"},"alias":{"type":"string","minLength":1,"title":"Alias"},"campaign_id":{"type":"string","title":"Campaign Id"}},"type":"object","required":["from_id","from_type","to_id","to_type","alias","campaign_id"],"title":"LinkCreate"},"LinkMaintenanceRequest":{"properties":{"operation":{"type":"string","enum":["add","remove"],"title":"Operation"},"worldId":{"type":"string","title":"Worldid"},"targetId":{"type":"string","title":"Targetid"},"targetType":{"type":"string","enum":["Character","Faction","Location","Item","Moment"],"title":"Targettype"},"alias":{"type":"string","maxLength":255,"minLength":1,"title":"Alias"}},"type":"object","required":["operation","worldId","targetId","targetType","alias"],"title":"LinkMaintenanceRequest","description":"Schema for triggering campaign-wide wikilink maintenance via webhook."},"LinkMaintenanceResult":{"properties":{"success":{"type":"boolean","title":"Success"},"taskId":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Taskid"}},"type":"object","required":["success"],"title":"LinkMaintenanceResult"},"LinkMaintenanceUpdateRequest":{"properties":{"operation":{"type":"string","const":"update","title":"Operation"},"worldId":{"type":"string","title":"Worldid"},"targetId":{"type":"string","title":"Targetid"},"newTargetId":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Newtargetid"},"newAlias":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Newalias"}},"type":"object","required":["operation","worldId","targetId"],"title":"LinkMaintenanceUpdateRequest","description":"Schema for updating existing links across a campaign."},"LinkRead":{"properties":{"id":{"type":"string","title":"Id"},"from_id":{"type":"string","minLength":1,"title":"From Id"},"from_type":{"type":"string","minLength":1,"title":"From Type"},"to_id":{"type":"string","minLength":1,"title":"To Id"},"to_type":{"type":"string","minLength":1,"title":"To Type"},"alias":{"type":"string","minLength":1,"title":"Alias"},"campaign_id":{"type":"string","title":"Campaign Id"},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["id","from_id","from_type","to_id","to_type","alias","campaign_id","created_at"],"title":"LinkRead"},"LinkUpdate":{"properties":{"alias":{"anyOf":[{"type":"string","minLength":1},{"type":"null"}],"title":"Alias"}},"type":"object","title":"LinkUpdate"},"LocationCreate":{"properties":{"name":{"type":"string","maxLength":255,"minLength":1,"title":"Name"},"aliases":{"items":{"type":"string"},"type":"array","title":"Aliases"},"type":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}],"title":"Type"},"description":{"anyOf":[{"type":"string","maxLength":10000},{"type":"null"}],"title":"Description"},"image":{"anyOf":[{"type":"string","maxLength":2048},{"type":"null"}],"title":"Image"},"tcg_image":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tcg Image"},"parent_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Parent Id"},"campaign_id":{"type":"string","title":"Campaign Id"}},"type":"object","required":["name","campaign_id"],"title":"LocationCreate"},"LocationRead":{"properties":{"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Updated At"},"id":{"type":"string","title":"Id"},"name":{"type":"string","title":"Name"},"aliases":{"items":{"type":"string"},"type":"array","title":"Aliases"},"type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Type"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"image":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Image"},"tcg_image":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tcg Image"},"parent_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Parent Id"},"campaign_id":{"type":"string","title":"Campaign Id"},"merge":{"type":"boolean","title":"Merge","default":false}},"type":"object","required":["created_at","id","name","campaign_id"],"title":"LocationRead","description":"Read view of a stored location.\n\nThe constrained fields from LocationBase are redeclared here without their\nlimits on purpose. LocationBase exists to validate *incoming* writes, but\nLocationRead validates rows that already exist, and those rows are also\nwritten by the Next.js app straight through Prisma, which enforces none of\nthese limits. Inheriting them made pydantic reject legacy rows on read, so\n`GET /v1/locations/{id}` answered 500 for every location whose stored\ndescription was longer than the create/update cap. `CharacterRead` has\nalways relaxed its own text fields for this reason; these types had not."},"LocationReadProduct":{"properties":{"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Updated At"},"id":{"type":"string","title":"Id"},"name":{"type":"string","title":"Name"},"aliases":{"items":{"type":"string"},"type":"array","title":"Aliases"},"type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Type"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"image":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Image"},"tcg_image":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tcg Image"},"parent_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Parent Id"},"campaign_id":{"type":"string","title":"Campaign Id"},"merge":{"type":"boolean","title":"Merge","default":false},"approved":{"type":"boolean","title":"Approved","default":false},"pending":{"type":"boolean","title":"Pending","default":false},"tag_count":{"type":"integer","title":"Tag Count","default":0}},"type":"object","required":["created_at","id","name","campaign_id"],"title":"LocationReadProduct"},"LocationSummaryProduct":{"properties":{"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Updated At"},"id":{"type":"string","title":"Id"},"name":{"type":"string","title":"Name"},"aliases":{"items":{"type":"string"},"type":"array","title":"Aliases"},"type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Type"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"image":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Image"},"tcg_image":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tcg Image"},"campaign_id":{"type":"string","title":"Campaign Id"},"merge":{"type":"boolean","title":"Merge","default":false},"parent_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Parent Id"},"approved":{"type":"boolean","title":"Approved","default":false},"pending":{"type":"boolean","title":"Pending","default":false},"tag_count":{"type":"integer","title":"Tag Count","default":0}},"type":"object","required":["created_at","id","name","campaign_id"],"title":"LocationSummaryProduct"},"LocationUpdate":{"properties":{"name":{"anyOf":[{"type":"string","maxLength":255,"minLength":1},{"type":"null"}],"title":"Name"},"aliases":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Aliases"},"type":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}],"title":"Type"},"description":{"anyOf":[{"type":"string","maxLength":10000},{"type":"null"}],"title":"Description"},"image":{"anyOf":[{"type":"string","maxLength":2048},{"type":"null"}],"title":"Image"},"tcg_image":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tcg Image"},"parent_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Parent Id"}},"type":"object","title":"LocationUpdate"},"MomentCreate":{"properties":{"label":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}],"title":"Label"},"content":{"anyOf":[{"type":"string","maxLength":20000},{"type":"null"}],"title":"Content"},"image":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Image"},"index":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Index"},"categories":{"items":{"type":"string"},"type":"array","title":"Categories","default":[]},"pending":{"type":"boolean","title":"Pending","default":false},"approved":{"type":"boolean","title":"Approved","default":false},"discovered":{"type":"boolean","title":"Discovered","default":false},"kind":{"anyOf":[{"type":"string","maxLength":64},{"type":"null"}],"title":"Kind"},"metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Metadata"},"campaign_id":{"type":"string","title":"Campaign Id"},"session_id":{"type":"string","title":"Session Id"}},"type":"object","required":["campaign_id","session_id"],"title":"MomentCreate"},"MomentRead":{"properties":{"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Updated At"},"id":{"type":"string","title":"Id"},"label":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}],"title":"Label"},"content":{"anyOf":[{"type":"string","maxLength":20000},{"type":"null"}],"title":"Content"},"image":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Image"},"index":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Index"},"categories":{"items":{"type":"string"},"type":"array","title":"Categories","default":[]},"kind":{"type":"string","title":"Kind","default":"legacy"},"metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Metadata"},"campaign_id":{"type":"string","title":"Campaign Id"},"session_id":{"type":"string","title":"Session Id"}},"type":"object","required":["created_at","id","campaign_id","session_id"],"title":"MomentRead"},"MomentSummary":{"properties":{"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Updated At"},"id":{"type":"string","title":"Id"},"label":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}],"title":"Label"},"content":{"anyOf":[{"type":"string","maxLength":20000},{"type":"null"}],"title":"Content"},"image":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Image"},"index":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Index"},"categories":{"items":{"type":"string"},"type":"array","title":"Categories","default":[]},"kind":{"type":"string","title":"Kind","default":"legacy"},"metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Metadata"},"campaign_id":{"type":"string","title":"Campaign Id"},"session_id":{"type":"string","title":"Session Id"}},"type":"object","required":["created_at","id","campaign_id","session_id"],"title":"MomentSummary","description":"Fully hydrated moment for listings (same shape as detail)."},"MomentSummaryProduct":{"properties":{"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Updated At"},"id":{"type":"string","title":"Id"},"label":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}],"title":"Label"},"content":{"anyOf":[{"type":"string","maxLength":20000},{"type":"null"}],"title":"Content"},"image":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Image"},"index":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Index"},"categories":{"items":{"type":"string"},"type":"array","title":"Categories","default":[]},"kind":{"type":"string","title":"Kind","default":"legacy"},"metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Metadata"},"campaign_id":{"type":"string","title":"Campaign Id"},"session_id":{"type":"string","title":"Session Id"},"pending":{"type":"boolean","title":"Pending","default":false},"approved":{"type":"boolean","title":"Approved","default":false},"discovered":{"type":"boolean","title":"Discovered","default":false}},"type":"object","required":["created_at","id","campaign_id","session_id"],"title":"MomentSummaryProduct"},"MomentUpdate":{"properties":{"label":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}],"title":"Label"},"content":{"anyOf":[{"type":"string","maxLength":20000},{"type":"null"}],"title":"Content"},"image":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Image"},"index":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Index"},"categories":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Categories"},"pending":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Pending"},"approved":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Approved"},"discovered":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Discovered"},"kind":{"anyOf":[{"type":"string","maxLength":64},{"type":"null"}],"title":"Kind"},"metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Metadata"}},"type":"object","title":"MomentUpdate"},"ObjectiveStatusValue":{"type":"string","enum":["pending","in-progress","completed","failed","blocked"],"title":"ObjectiveStatusValue"},"PaginatedResponse":{"properties":{"data":{"items":{},"type":"array","title":"Data"},"total":{"type":"integer","title":"Total"},"page":{"type":"integer","title":"Page"},"size":{"type":"integer","title":"Size"},"pages":{"type":"integer","title":"Pages"}},"type":"object","required":["data","total","page","size","pages"],"title":"PaginatedResponse"},"PlayerOnboardingResult":{"properties":{"speaker":{"$ref":"#/components/schemas/CastMemberRead"},"reused":{"type":"boolean","title":"Reused","default":false}},"type":"object","required":["speaker"],"title":"PlayerOnboardingResult"},"PropertyFieldRead":{"properties":{"id":{"type":"string","title":"Id"},"key":{"type":"string","title":"Key"},"label":{"type":"string","title":"Label"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"field_type":{"type":"string","title":"Field Type"},"is_required":{"type":"boolean","title":"Is Required","default":false},"sort_order":{"type":"integer","title":"Sort Order","default":0},"options":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Options"},"connection_types":{"items":{"type":"string"},"type":"array","title":"Connection Types","default":[]},"value":{"anyOf":[{},{"type":"null"}],"title":"Value"},"updated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Updated At"}},"type":"object","required":["id","key","label","field_type"],"title":"PropertyFieldRead","description":"One row in a compendium property table.\n\n``value`` is the type-appropriate value pulled from the matching\n``CustomFieldValue`` column (``valueString``/``valueNumber``/etc.), or\n``None`` when the entity has no stored value for this field yet."},"PropertyTableRead":{"properties":{"table_type":{"type":"string","title":"Table Type"},"label":{"type":"string","title":"Label"},"fields":{"items":{"$ref":"#/components/schemas/PropertyFieldRead"},"type":"array","title":"Fields"}},"type":"object","required":["table_type","label","fields"],"title":"PropertyTableRead"},"PushTokenRead":{"properties":{"registered":{"type":"boolean","title":"Registered","default":true},"platform":{"type":"string","enum":["ios","android"],"title":"Platform"},"app_version":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"App Version"}},"type":"object","required":["platform"],"title":"PushTokenRead"},"PushTokenRegistration":{"properties":{"expo_push_token":{"type":"string","maxLength":255,"minLength":20,"title":"Expo Push Token"},"platform":{"type":"string","enum":["ios","android"],"title":"Platform"},"project_id":{"type":"string","maxLength":100,"minLength":1,"title":"Project Id"},"app_version":{"anyOf":[{"type":"string","maxLength":40},{"type":"null"}],"title":"App Version"}},"type":"object","required":["expo_push_token","platform","project_id"],"title":"PushTokenRegistration"},"PushTokenUnregister":{"properties":{"expo_push_token":{"type":"string","maxLength":255,"minLength":20,"title":"Expo Push Token"}},"type":"object","required":["expo_push_token"],"title":"PushTokenUnregister"},"QuestCategoryValue":{"type":"string","enum":["main","side","faction","personal","n/a"],"title":"QuestCategoryValue"},"QuestCreate":{"properties":{"campaign_id":{"type":"string","title":"Campaign Id"},"quest_name":{"type":"string","maxLength":255,"minLength":1,"title":"Quest Name"},"quest_giver":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}],"title":"Quest Giver"},"quest_category":{"$ref":"#/components/schemas/QuestCategoryValue","default":"n/a"},"status":{"$ref":"#/components/schemas/QuestStatusValue","default":"planned"},"success_definition":{"anyOf":[{"type":"string","maxLength":2000},{"type":"null"}],"title":"Success Definition"},"failure_conditions":{"anyOf":[{"type":"string","maxLength":2000},{"type":"null"}],"title":"Failure Conditions"},"next_action":{"anyOf":[{"type":"string","maxLength":2000},{"type":"null"}],"title":"Next Action"},"resolution":{"anyOf":[{"type":"string","maxLength":2000},{"type":"null"}],"title":"Resolution"},"objectives":{"items":{"$ref":"#/components/schemas/QuestObjectiveInput"},"type":"array","title":"Objectives"},"progress_log":{"items":{"type":"string"},"type":"array","title":"Progress Log"},"related_characters":{"items":{"type":"string"},"type":"array","title":"Related Characters"},"related_factions":{"items":{"type":"string"},"type":"array","title":"Related Factions"},"related_locations":{"items":{"type":"string"},"type":"array","title":"Related Locations"},"related_items":{"items":{"type":"string"},"type":"array","title":"Related Items"},"related_entity_refs":{"items":{"$ref":"#/components/schemas/QuestRelatedEntityRefInput"},"type":"array","title":"Related Entity Refs"}},"additionalProperties":false,"type":"object","required":["campaign_id","quest_name"],"title":"QuestCreate"},"QuestEntityTypeValue":{"type":"string","enum":["character","faction","location","item"],"title":"QuestEntityTypeValue"},"QuestLogRead":{"properties":{"quests":{"items":{"$ref":"#/components/schemas/QuestRead"},"type":"array","title":"Quests"},"summary":{"$ref":"#/components/schemas/QuestLogSummary"}},"type":"object","required":["summary"],"title":"QuestLogRead"},"QuestLogSummary":{"properties":{"total_quests":{"type":"integer","title":"Total Quests","default":0}},"type":"object","title":"QuestLogSummary"},"QuestObjectiveInput":{"properties":{"text":{"type":"string","maxLength":1000,"minLength":1,"title":"Text"},"status":{"$ref":"#/components/schemas/ObjectiveStatusValue","default":"pending"}},"type":"object","required":["text"],"title":"QuestObjectiveInput"},"QuestObjectiveRead":{"properties":{"id":{"type":"string","title":"Id"},"text":{"type":"string","maxLength":1000,"minLength":1,"title":"Text"},"status":{"$ref":"#/components/schemas/ObjectiveStatusValue","default":"pending"},"order":{"type":"integer","title":"Order"}},"type":"object","required":["id","text","order"],"title":"QuestObjectiveRead"},"QuestProgressEntryRead":{"properties":{"id":{"type":"string","title":"Id"},"text":{"type":"string","title":"Text"},"order":{"type":"integer","title":"Order"},"session_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Session Id"},"session_number":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Session Number"},"session_title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Session Title"},"session_date":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Session Date"}},"type":"object","required":["id","text","order"],"title":"QuestProgressEntryRead"},"QuestRead":{"properties":{"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Updated At"},"id":{"type":"string","title":"Id"},"campaign_id":{"type":"string","title":"Campaign Id"},"order_index":{"type":"integer","title":"Order Index"},"quest_name":{"type":"string","title":"Quest Name"},"quest_giver":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Quest Giver"},"quest_giver_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Quest Giver Id"},"quest_category":{"$ref":"#/components/schemas/QuestCategoryValue"},"status":{"$ref":"#/components/schemas/QuestStatusValue"},"success_definition":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Success Definition"},"failure_conditions":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Failure Conditions"},"next_action":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Action"},"resolution":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Resolution"},"objectives":{"items":{"$ref":"#/components/schemas/QuestObjectiveRead"},"type":"array","title":"Objectives"},"objective_count":{"type":"integer","title":"Objective Count","default":0},"completed_objective_count":{"type":"integer","title":"Completed Objective Count","default":0},"progress_entry_count":{"type":"integer","title":"Progress Entry Count","default":0},"progress_log":{"items":{"type":"string"},"type":"array","title":"Progress Log"},"progress_log_entries":{"items":{"$ref":"#/components/schemas/QuestProgressEntryRead"},"type":"array","title":"Progress Log Entries"},"related_characters":{"items":{"type":"string"},"type":"array","title":"Related Characters"},"related_factions":{"items":{"type":"string"},"type":"array","title":"Related Factions"},"related_locations":{"items":{"type":"string"},"type":"array","title":"Related Locations"},"related_items":{"items":{"type":"string"},"type":"array","title":"Related Items"},"related_entity_refs":{"items":{"$ref":"#/components/schemas/QuestRelatedEntityRefRead"},"type":"array","title":"Related Entity Refs"},"first_session":{"anyOf":[{"$ref":"#/components/schemas/QuestSessionRef"},{"type":"null"}]},"last_session":{"anyOf":[{"$ref":"#/components/schemas/QuestSessionRef"},{"type":"null"}]}},"type":"object","required":["created_at","id","campaign_id","order_index","quest_name","quest_category","status"],"title":"QuestRead"},"QuestRelatedEntityRefInput":{"properties":{"entity_type":{"$ref":"#/components/schemas/QuestEntityTypeValue"},"entity_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Entity Id"},"entity_name_snapshot":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}],"title":"Entity Name Snapshot"},"label":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}],"title":"Label"}},"type":"object","required":["entity_type"],"title":"QuestRelatedEntityRefInput"},"QuestRelatedEntityRefRead":{"properties":{"id":{"type":"string","title":"Id"},"entity_type":{"$ref":"#/components/schemas/QuestEntityTypeValue"},"entity_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Entity Id"},"entity_name_snapshot":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}],"title":"Entity Name Snapshot"},"label":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}],"title":"Label"},"order":{"type":"integer","title":"Order"}},"type":"object","required":["id","entity_type","order"],"title":"QuestRelatedEntityRefRead"},"QuestSessionRef":{"properties":{"id":{"type":"string","title":"Id"},"number":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Number"},"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"},"session_date":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Session Date"}},"type":"object","required":["id"],"title":"QuestSessionRef"},"QuestStatusValue":{"type":"string","enum":["planned","in-progress","blocked","failed","done","n/a"],"title":"QuestStatusValue"},"QuestUpdate":{"properties":{"quest_name":{"anyOf":[{"type":"string","maxLength":255,"minLength":1},{"type":"null"}],"title":"Quest Name"},"quest_giver":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}],"title":"Quest Giver"},"quest_category":{"anyOf":[{"$ref":"#/components/schemas/QuestCategoryValue"},{"type":"null"}]},"status":{"anyOf":[{"$ref":"#/components/schemas/QuestStatusValue"},{"type":"null"}]},"success_definition":{"anyOf":[{"type":"string","maxLength":2000},{"type":"null"}],"title":"Success Definition"},"failure_conditions":{"anyOf":[{"type":"string","maxLength":2000},{"type":"null"}],"title":"Failure Conditions"},"next_action":{"anyOf":[{"type":"string","maxLength":2000},{"type":"null"}],"title":"Next Action"},"resolution":{"anyOf":[{"type":"string","maxLength":2000},{"type":"null"}],"title":"Resolution"},"objectives":{"anyOf":[{"items":{"$ref":"#/components/schemas/QuestObjectiveInput"},"type":"array"},{"type":"null"}],"title":"Objectives"},"progress_log":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Progress Log"},"related_characters":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Related Characters"},"related_factions":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Related Factions"},"related_locations":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Related Locations"},"related_items":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Related Items"},"related_entity_refs":{"anyOf":[{"items":{"$ref":"#/components/schemas/QuestRelatedEntityRefInput"},"type":"array"},{"type":"null"}],"title":"Related Entity Refs"}},"additionalProperties":false,"type":"object","title":"QuestUpdate"},"QuoteCreate":{"properties":{"session_id":{"type":"string","title":"Session Id"},"text":{"type":"string","maxLength":8000,"minLength":1,"title":"Text"},"speaker":{"type":"string","maxLength":200,"title":"Speaker","default":""},"character_name":{"type":"string","maxLength":120,"title":"Character Name","default":""},"context":{"type":"string","maxLength":2000,"title":"Context","default":""},"style":{"anyOf":[{"type":"string","maxLength":40},{"type":"null"}],"title":"Style"},"custom_theme":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Custom Theme"},"order_index":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Order Index"}},"type":"object","required":["session_id","text"],"title":"QuoteCreate"},"QuoteRead":{"properties":{"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Updated At"},"id":{"type":"string","title":"Id"},"text":{"type":"string","title":"Text"},"speaker":{"type":"string","title":"Speaker","default":""},"character_name":{"type":"string","title":"Character Name","default":""},"context":{"type":"string","title":"Context","default":""},"style":{"type":"string","title":"Style","default":"verdant"},"custom_theme":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Custom Theme"},"order_index":{"type":"integer","title":"Order Index","default":0},"pipeline_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Pipeline Id"},"recap_set_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Recap Set Id"},"session_id":{"type":"string","title":"Session Id"},"campaign_id":{"type":"string","title":"Campaign Id"}},"type":"object","required":["created_at","id","text","session_id","campaign_id"],"title":"QuoteRead"},"QuoteUpdate":{"properties":{"text":{"anyOf":[{"type":"string","maxLength":8000,"minLength":1},{"type":"null"}],"title":"Text"},"speaker":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"title":"Speaker"},"character_name":{"anyOf":[{"type":"string","maxLength":120},{"type":"null"}],"title":"Character Name"},"context":{"anyOf":[{"type":"string","maxLength":2000},{"type":"null"}],"title":"Context"},"style":{"anyOf":[{"type":"string","maxLength":40},{"type":"null"}],"title":"Style"},"custom_theme":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Custom Theme"},"order_index":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Order Index"}},"type":"object","title":"QuoteUpdate"},"RecordingCompleteRequest":{"properties":{"completed_parts":{"items":{"$ref":"#/components/schemas/CompletedRecordingPart"},"type":"array","minItems":1,"title":"Completed Parts"}},"type":"object","required":["completed_parts"],"title":"RecordingCompleteRequest"},"RecordingCompleteResponse":{"properties":{"session_id":{"type":"string","title":"Session Id"},"upload_status":{"type":"string","title":"Upload Status"},"processing_stage":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Processing Stage"},"deepgram_started":{"type":"boolean","title":"Deepgram Started"},"deepgram_request_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Deepgram Request Id"}},"type":"object","required":["session_id","upload_status","deepgram_started"],"title":"RecordingCompleteResponse"},"RecordingInitRequest":{"properties":{"file_name":{"type":"string","minLength":1,"title":"File Name"},"file_size_bytes":{"type":"integer","exclusiveMinimum":0.0,"title":"File Size Bytes"},"duration_seconds":{"type":"integer","exclusiveMinimum":0.0,"title":"Duration Seconds"},"content_type":{"type":"string","minLength":1,"title":"Content Type"},"session_title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Session Title"},"session_date":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Session Date"},"speaker_ids":{"items":{"type":"string"},"type":"array","title":"Speaker Ids"},"credit_type":{"anyOf":[{"type":"string","enum":["monthly","extra"]},{"type":"null"}],"title":"Credit Type"}},"type":"object","required":["file_name","file_size_bytes","duration_seconds","content_type"],"title":"RecordingInitRequest"},"RecordingInitResponse":{"properties":{"session_id":{"type":"string","title":"Session Id"},"object_key":{"type":"string","title":"Object Key"},"r2_upload_id":{"type":"string","title":"R2 Upload Id"},"part_size_bytes":{"type":"integer","title":"Part Size Bytes"},"total_parts":{"type":"integer","title":"Total Parts"},"part_urls":{"items":{"$ref":"#/components/schemas/RecordingPartUrl"},"type":"array","title":"Part Urls"}},"type":"object","required":["session_id","object_key","r2_upload_id","part_size_bytes","total_parts","part_urls"],"title":"RecordingInitResponse"},"RecordingPartUrl":{"properties":{"part_number":{"type":"integer","title":"Part Number"},"url":{"type":"string","title":"Url"},"expires_in_seconds":{"type":"integer","title":"Expires In Seconds"}},"type":"object","required":["part_number","url","expires_in_seconds"],"title":"RecordingPartUrl"},"RecordingPartUrlRequest":{"properties":{"part_numbers":{"items":{"type":"integer"},"type":"array","minItems":1,"title":"Part Numbers"}},"type":"object","required":["part_numbers"],"title":"RecordingPartUrlRequest"},"RecordingPartUrlResponse":{"properties":{"session_id":{"type":"string","title":"Session Id"},"part_urls":{"items":{"$ref":"#/components/schemas/RecordingPartUrl"},"type":"array","title":"Part Urls"}},"type":"object","required":["session_id","part_urls"],"title":"RecordingPartUrlResponse"},"RecordingSetupCastMemberRequest":{"properties":{"player_name":{"type":"string","minLength":1,"title":"Player Name"},"role":{"type":"string","enum":["Player","NPC","GM"],"title":"Role"},"character_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Character Id"},"new_character_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"New Character Name"}},"type":"object","required":["player_name","role"],"title":"RecordingSetupCastMemberRequest"},"RecordingSetupCastMemberResponse":{"properties":{"speaker":{"$ref":"#/components/schemas/RecordingSetupSpeaker"}},"type":"object","required":["speaker"],"title":"RecordingSetupCastMemberResponse"},"RecordingSetupCharacterOption":{"properties":{"id":{"type":"string","title":"Id"},"character_name":{"type":"string","title":"Character Name"},"type":{"type":"string","title":"Type"}},"type":"object","required":["id","character_name","type"],"title":"RecordingSetupCharacterOption"},"RecordingSetupResponse":{"properties":{"speakers":{"items":{"$ref":"#/components/schemas/RecordingSetupSpeaker"},"type":"array","title":"Speakers"},"available_characters":{"items":{"$ref":"#/components/schemas/RecordingSetupCharacterOption"},"type":"array","title":"Available Characters"},"recording_available":{"type":"boolean","title":"Recording Available","default":true},"recording_blocked_reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Recording Blocked Reason"},"recording_blocked_message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Recording Blocked Message"}},"type":"object","title":"RecordingSetupResponse"},"RecordingSetupSpeaker":{"properties":{"id":{"type":"string","title":"Id"},"display_name":{"type":"string","title":"Display Name"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"handle":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Handle"},"default":{"type":"boolean","title":"Default","default":true},"roles":{"items":{"type":"string"},"type":"array","title":"Roles"},"character_names":{"items":{"type":"string"},"type":"array","title":"Character Names"},"has_voice_sample":{"type":"boolean","title":"Has Voice Sample","default":false},"needs_voice_sample":{"type":"boolean","title":"Needs Voice Sample","default":true}},"type":"object","required":["id","display_name"],"title":"RecordingSetupSpeaker"},"RecordingStatusResponse":{"properties":{"session_id":{"type":"string","title":"Session Id"},"upload_status":{"type":"string","title":"Upload Status"},"processing_stage":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Processing Stage"},"object_key":{"type":"string","title":"Object Key"},"file_name":{"type":"string","title":"File Name"},"content_type":{"type":"string","title":"Content Type"},"file_size_bytes":{"type":"integer","title":"File Size Bytes"},"duration_seconds":{"type":"integer","title":"Duration Seconds"},"total_parts":{"type":"integer","title":"Total Parts"},"part_size_bytes":{"type":"integer","title":"Part Size Bytes"},"uploaded_completed_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Uploaded Completed At"},"cleaned_up_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Cleaned Up At"},"deepgram_request_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Deepgram Request Id"},"uploader_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Uploader Id"}},"type":"object","required":["session_id","upload_status","object_key","file_name","content_type","file_size_bytes","duration_seconds","total_parts","part_size_bytes"],"title":"RecordingStatusResponse"},"RecordingVoiceSampleCompleteRequest":{"properties":{"speaker_id":{"type":"string","minLength":1,"title":"Speaker Id"},"object_key":{"type":"string","minLength":1,"title":"Object Key"}},"type":"object","required":["speaker_id","object_key"],"title":"RecordingVoiceSampleCompleteRequest"},"RecordingVoiceSampleCompleteResponse":{"properties":{"speaker":{"$ref":"#/components/schemas/RecordingSetupSpeaker"},"message":{"type":"string","title":"Message"}},"type":"object","required":["speaker","message"],"title":"RecordingVoiceSampleCompleteResponse"},"RecordingVoiceSampleInitRequest":{"properties":{"speaker_id":{"type":"string","minLength":1,"title":"Speaker Id"},"file_name":{"type":"string","minLength":1,"title":"File Name"},"content_type":{"type":"string","minLength":1,"title":"Content Type"}},"type":"object","required":["speaker_id","file_name","content_type"],"title":"RecordingVoiceSampleInitRequest"},"RecordingVoiceSampleInitResponse":{"properties":{"object_key":{"type":"string","title":"Object Key"},"upload_url":{"type":"string","title":"Upload Url"},"expires_in_seconds":{"type":"integer","title":"Expires In Seconds"}},"type":"object","required":["object_key","upload_url","expires_in_seconds"],"title":"RecordingVoiceSampleInitResponse"},"SessionHandoutRead":{"properties":{"summary":{"type":"string","title":"Summary","default":""},"sessionOutline":{"anyOf":[{"type":"string"},{"items":{},"type":"array"}],"title":"Sessionoutline","default":""},"encounters":{"items":{"$ref":"#/components/schemas/HandoutEncounterRead"},"type":"array","title":"Encounters"},"characterSpotlight":{"items":{"$ref":"#/components/schemas/HandoutCharacterSpotlightRead"},"type":"array","title":"Characterspotlight"},"otherEntitySpotlight":{"items":{"$ref":"#/components/schemas/HandoutEntitySpotlightRead"},"type":"array","title":"Otherentityspotlight"},"items":{"items":{"$ref":"#/components/schemas/HandoutItemRead"},"type":"array","title":"Items"},"valuableInformation":{"items":{"$ref":"#/components/schemas/HandoutValuableInfoRead"},"type":"array","title":"Valuableinformation"},"partyStatusAndNextSteps":{"$ref":"#/components/schemas/HandoutPartyStatusAndNextSteps"},"moments":{"items":{"$ref":"#/components/schemas/HandoutMomentRead"},"type":"array","title":"Moments"},"pdfPageCount":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Pdfpagecount"},"pdfSavedAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Pdfsavedat"}},"type":"object","title":"SessionHandoutRead"},"SpotlightCreate":{"properties":{"session_id":{"type":"string","title":"Session Id"},"title":{"type":"string","maxLength":200,"minLength":1,"title":"Title"},"description":{"type":"string","maxLength":4000,"title":"Description","default":""},"character_name":{"type":"string","maxLength":120,"title":"Character Name","default":""},"player_name":{"type":"string","maxLength":120,"title":"Player Name","default":""},"style":{"anyOf":[{"type":"string","maxLength":40},{"type":"null"}],"title":"Style"},"custom_theme":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Custom Theme"},"order_index":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Order Index"},"source_moment_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source Moment Id"}},"type":"object","required":["session_id","title"],"title":"SpotlightCreate"},"SpotlightRead":{"properties":{"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Updated At"},"id":{"type":"string","title":"Id"},"title":{"type":"string","title":"Title"},"description":{"type":"string","title":"Description","default":""},"character_name":{"type":"string","title":"Character Name","default":""},"player_name":{"type":"string","title":"Player Name","default":""},"style":{"type":"string","title":"Style","default":"verdant"},"custom_theme":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Custom Theme"},"order_index":{"type":"integer","title":"Order Index","default":0},"entry_type":{"type":"string","title":"Entry Type","default":"spotlight"},"source_moment_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source Moment Id"},"pipeline_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Pipeline Id"},"recap_set_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Recap Set Id"},"session_id":{"type":"string","title":"Session Id"},"campaign_id":{"type":"string","title":"Campaign Id"}},"type":"object","required":["created_at","id","title","session_id","campaign_id"],"title":"SpotlightRead"},"SpotlightUpdate":{"properties":{"title":{"anyOf":[{"type":"string","maxLength":200,"minLength":1},{"type":"null"}],"title":"Title"},"description":{"anyOf":[{"type":"string","maxLength":4000},{"type":"null"}],"title":"Description"},"character_name":{"anyOf":[{"type":"string","maxLength":120},{"type":"null"}],"title":"Character Name"},"player_name":{"anyOf":[{"type":"string","maxLength":120},{"type":"null"}],"title":"Player Name"},"style":{"anyOf":[{"type":"string","maxLength":40},{"type":"null"}],"title":"Style"},"custom_theme":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Custom Theme"},"order_index":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Order Index"},"source_moment_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source Moment Id"}},"type":"object","title":"SpotlightUpdate"},"SubscriptionStatus":{"type":"string","enum":["incomplete","active","past_due","canceled","incomplete_expired","trialing","unpaid","paused"],"title":"SubscriptionStatus"},"SubscriptionTier":{"type":"string","enum":["casual","seasoned","pro","legend","godmode","trial"],"title":"SubscriptionTier"},"SupportTicketCreate":{"properties":{"subject":{"type":"string","maxLength":200,"minLength":1,"title":"Subject"},"message":{"type":"string","maxLength":8000,"minLength":1,"title":"Message"},"campaign_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Campaign Id"},"platform":{"anyOf":[{"type":"string","maxLength":20},{"type":"null"}],"title":"Platform"},"app_version":{"anyOf":[{"type":"string","maxLength":40},{"type":"null"}],"title":"App Version"}},"type":"object","required":["subject","message"],"title":"SupportTicketCreate"},"SupportTicketRead":{"properties":{"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Updated At"},"id":{"type":"string","title":"Id"},"subject":{"type":"string","title":"Subject"},"status":{"type":"string","title":"Status","default":"open"},"campaign_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Campaign Id"}},"type":"object","required":["created_at","id","subject"],"title":"SupportTicketRead"},"TranscriptFormat":{"type":"string","enum":["json","markdown"],"title":"TranscriptFormat"},"UserProfile":{"properties":{"id":{"type":"string","title":"Id"},"name":{"type":"string","title":"Name"},"given_name":{"type":"string","title":"Given Name"},"family_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Family Name"},"picture":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Picture"},"role":{"$ref":"#/components/schemas/UserRole"},"verified":{"type":"boolean","title":"Verified"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"email":{"type":"string","title":"Email"},"subscription_tier":{"anyOf":[{"$ref":"#/components/schemas/SubscriptionTier"},{"type":"null"}]},"subscription_status":{"anyOf":[{"$ref":"#/components/schemas/SubscriptionStatus"},{"type":"null"}]},"last_login":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Login"},"new_user":{"type":"boolean","title":"New User"},"campaign_slots_remaining":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Campaign Slots Remaining"},"any_sessions_remaining":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Any Sessions Remaining"},"text_sessions_remaining":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Text Sessions Remaining"},"billing_cycle_start":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Billing Cycle Start"},"billing_cycle_end":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Billing Cycle End"},"scopes":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Scopes"},"api_profile":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Api Profile"},"launch_promo":{"anyOf":[{"$ref":"#/components/schemas/LaunchPromoState"},{"type":"null"}]}},"type":"object","required":["id","name","given_name","role","verified","created_at","email","new_user"],"title":"UserProfile","description":"Extended user profile for authenticated users"},"UserRole":{"type":"string","enum":["user","player","admin"],"title":"UserRole"},"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"},"VoiceProfileDeleteResponse":{"properties":{"success":{"type":"boolean","title":"Success","default":true},"speaker_id":{"type":"string","title":"Speaker Id"},"deleted_count":{"type":"integer","title":"Deleted Count","default":0},"deleted_object_count":{"type":"integer","title":"Deleted Object Count","default":0}},"type":"object","required":["speaker_id"],"title":"VoiceProfileDeleteResponse"},"WorldCreate":{"properties":{"title":{"type":"string","maxLength":255,"minLength":1,"title":"Title"},"description":{"anyOf":[{"type":"string","maxLength":5000},{"type":"null"}],"title":"Description"},"system":{"type":"string","maxLength":100,"title":"System","default":"D&D 5e"},"summary":{"anyOf":[{"type":"string","maxLength":10000},{"type":"null"}],"title":"Summary"},"language":{"type":"string","maxLength":10,"title":"Language","default":"en"},"chat_tone":{"anyOf":[{"type":"string","maxLength":10000},{"type":"null"}],"title":"Chat Tone"},"campaign_tone":{"anyOf":[{"type":"string","maxLength":10000},{"type":"null"}],"title":"Campaign Tone"},"entities_tone":{"anyOf":[{"type":"string","maxLength":10000},{"type":"null"}],"title":"Entities Tone"},"ai_image_gen":{"type":"boolean","title":"Ai Image Gen","default":true},"public":{"type":"boolean","title":"Public","default":false},"mature":{"type":"boolean","title":"Mature","default":false}},"type":"object","required":["title"],"title":"WorldCreate","description":"Schema for creating a new world"},"WorldRead":{"properties":{"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Updated At"},"id":{"type":"string","title":"Id"},"title":{"type":"string","title":"Title"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"system":{"type":"string","title":"System","default":"D&D 5e"},"summary":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Summary"},"language":{"type":"string","title":"Language","default":"en"},"public":{"type":"boolean","title":"Public","default":false},"mature":{"type":"boolean","title":"Mature","default":false},"owner_id":{"type":"string","title":"Owner Id"},"image":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Image"},"archived":{"type":"boolean","title":"Archived","default":false},"archived_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Archived At"}},"type":"object","required":["created_at","id","title","owner_id"],"title":"WorldRead","description":"Schema for reading world data"},"WorldReadAgent":{"properties":{"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Updated At"},"id":{"type":"string","title":"Id"},"title":{"type":"string","title":"Title"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"system":{"type":"string","title":"System","default":"D&D 5e"},"summary":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Summary"},"language":{"type":"string","title":"Language","default":"en"},"public":{"type":"boolean","title":"Public","default":false},"mature":{"type":"boolean","title":"Mature","default":false},"image":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Image"}},"type":"object","required":["created_at","id","title"],"title":"WorldReadAgent","description":"Campaign detail schema for third-party AI assistants: no owner account identifier."},"WorldReadProduct":{"properties":{"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Updated At"},"id":{"type":"string","title":"Id"},"title":{"type":"string","title":"Title"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"system":{"type":"string","title":"System","default":"D&D 5e"},"summary":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Summary"},"language":{"type":"string","title":"Language","default":"en"},"public":{"type":"boolean","title":"Public","default":false},"mature":{"type":"boolean","title":"Mature","default":false},"owner_id":{"type":"string","title":"Owner Id"},"image":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Image"},"archived":{"type":"boolean","title":"Archived","default":false},"archived_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Archived At"},"permissions":{"$ref":"#/components/schemas/CampaignPermissionsRead"},"role":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Role"}},"type":"object","required":["created_at","id","title","owner_id","permissions"],"title":"WorldReadProduct"},"WorldUpdate":{"properties":{"title":{"anyOf":[{"type":"string","maxLength":255,"minLength":1},{"type":"null"}],"title":"Title"},"description":{"anyOf":[{"type":"string","maxLength":5000},{"type":"null"}],"title":"Description"},"system":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}],"title":"System"},"summary":{"anyOf":[{"type":"string","maxLength":10000},{"type":"null"}],"title":"Summary"},"language":{"anyOf":[{"type":"string","maxLength":10},{"type":"null"}],"title":"Language"},"chat_tone":{"anyOf":[{"type":"string","maxLength":10000},{"type":"null"}],"title":"Chat Tone"},"campaign_tone":{"anyOf":[{"type":"string","maxLength":10000},{"type":"null"}],"title":"Campaign Tone"},"entities_tone":{"anyOf":[{"type":"string","maxLength":10000},{"type":"null"}],"title":"Entities Tone"},"ai_image_gen":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Ai Image Gen"},"public":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Public"},"mature":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Mature"}},"type":"object","title":"WorldUpdate","description":"Schema for updating a world"}},"securitySchemes":{"HTTPBearer":{"type":"http","scheme":"bearer"}}}}