{"openapi":"3.1.0","info":{"title":"Pendragon Campaign Play Action","description":"Focused Custom GPT Action for sessions, events, characters, advancement, and read-only campaign context. Historical records remain append-only.","version":"0.1.0"},"servers":[{"url":"https://play-api.pendragon-chronicle.dwarvenbard.com","description":"Pendragon Campaign Play Action gateway"}],"paths":{"/api/v1/campaigns/{campaign_id}/player-view":{"get":{"tags":["campaigns","player-view"],"summary":"Get Player View","description":"Return a player-safe projection for the human-readable campaign site.","operationId":"get_player_view","parameters":[{"name":"campaign_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Campaign Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CampaignPlayerView"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/campaigns":{"get":{"tags":["campaigns"],"summary":"List Campaigns","operationId":"list_campaigns","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":50,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/CampaignRead"},"title":"Response List Campaigns"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/campaigns/{campaign_id}":{"get":{"tags":["campaigns"],"summary":"Get Campaign","operationId":"get_campaign","parameters":[{"name":"campaign_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Campaign Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CampaignRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/campaigns/{campaign_id}/sessions":{"get":{"tags":["campaigns"],"summary":"List Sessions","operationId":"list_sessions","parameters":[{"name":"campaign_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Campaign Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/SessionRead"},"title":"Response List Sessions"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["campaigns"],"summary":"Create Session","operationId":"create_session","parameters":[{"name":"campaign_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Campaign Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SessionCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SessionRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/campaigns/{campaign_id}/sessions/{session_id}":{"patch":{"tags":["campaigns"],"summary":"Update Session","operationId":"update_session","parameters":[{"name":"campaign_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Campaign Id"}},{"name":"session_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Session Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SessionUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SessionRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/campaigns/{campaign_id}/events":{"get":{"tags":["timeline"],"summary":"List Events","operationId":"list_events","parameters":[{"name":"campaign_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Campaign Id"}},{"name":"year","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","maximum":9999,"minimum":1},{"type":"null"}],"title":"Year"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/EventRead"},"title":"Response List Events"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["timeline"],"summary":"Create Event","operationId":"create_event","parameters":[{"name":"campaign_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Campaign Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EventCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EventRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-openai-isConsequential":false}},"/api/v1/campaigns/{campaign_id}/dice-logs":{"post":{"tags":["timeline"],"summary":"Create Dice Log","operationId":"create_dice_log","parameters":[{"name":"campaign_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Campaign Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DiceLogCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DiceLogRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/campaigns/{campaign_id}/characters":{"get":{"tags":["characters"],"summary":"List Characters","operationId":"list_characters","parameters":[{"name":"campaign_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Campaign Id"}},{"name":"kind","in":"query","required":false,"schema":{"anyOf":[{"type":"string","pattern":"^(player_knight|npc)$"},{"type":"null"}],"title":"Kind"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/CharacterRead"},"title":"Response List Characters"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["characters"],"summary":"Create Character","operationId":"create_character","parameters":[{"name":"campaign_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Campaign Id"}}],"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"}}}}}}},"/api/v1/campaigns/{campaign_id}/characters/{character_id}":{"get":{"tags":["characters"],"summary":"Get Character","operationId":"get_character","parameters":[{"name":"campaign_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Campaign Id"}},{"name":"character_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Character Id"}}],"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"}}}}}},"patch":{"tags":["characters"],"summary":"Update Character","operationId":"update_character","parameters":[{"name":"campaign_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Campaign Id"}},{"name":"character_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Character Id"}}],"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"}}}}}}},"/api/v1/campaigns/{campaign_id}/characters/{character_id}/status-ledger":{"get":{"tags":["characters"],"summary":"List Status History","operationId":"list_status_history","parameters":[{"name":"campaign_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Campaign Id"}},{"name":"character_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Character Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/CharacterStatusRead"},"title":"Response List Status History"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["characters"],"summary":"Add Status","operationId":"add_status","parameters":[{"name":"campaign_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Campaign Id"}},{"name":"character_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Character Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CharacterStatusCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CharacterStatusRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/campaigns/{campaign_id}/characters/{character_id}/notes":{"get":{"tags":["characters"],"summary":"List Notes","operationId":"list_notes","parameters":[{"name":"campaign_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Campaign Id"}},{"name":"character_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Character Id"}},{"name":"include_gm","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Include Gm"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/CharacterNoteRead"},"title":"Response List Notes"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["characters"],"summary":"Add Note","operationId":"add_note","parameters":[{"name":"campaign_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Campaign Id"}},{"name":"character_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Character Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CharacterNoteCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CharacterNoteRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/campaigns/{campaign_id}/trait-definitions":{"get":{"tags":["characters"],"summary":"List Trait Definitions","operationId":"list_trait_definitions","parameters":[{"name":"campaign_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Campaign Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/TraitDefinitionRead"},"title":"Response List Trait Definitions"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/campaigns/{campaign_id}/characters/{character_id}/trait-ledger":{"post":{"tags":["characters"],"summary":"Add Trait Entry","operationId":"add_trait_entry","parameters":[{"name":"campaign_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Campaign Id"}},{"name":"character_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Character Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TraitLedgerCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TraitLedgerRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/campaigns/{campaign_id}/skill-definitions":{"get":{"tags":["characters"],"summary":"List Skill Definitions","operationId":"list_skill_definitions","parameters":[{"name":"campaign_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Campaign Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/SkillDefinitionRead"},"title":"Response List Skill Definitions"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/campaigns/{campaign_id}/characters/{character_id}/skill-ledger":{"post":{"tags":["characters"],"summary":"Add Skill Entry","operationId":"add_skill_entry","parameters":[{"name":"campaign_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Campaign Id"}},{"name":"character_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Character Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SkillLedgerCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SkillLedgerRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/campaigns/{campaign_id}/characters/{character_id}/passions":{"post":{"tags":["characters"],"summary":"Create Passion","operationId":"create_passion","parameters":[{"name":"campaign_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Campaign Id"}},{"name":"character_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Character Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PassionCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PassionRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/campaigns/{campaign_id}/characters/{character_id}/passions/{passion_id}/ledger":{"post":{"tags":["characters"],"summary":"Add Passion Entry","operationId":"add_passion_entry","parameters":[{"name":"campaign_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Campaign Id"}},{"name":"character_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Character Id"}},{"name":"passion_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Passion Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PassionLedgerCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PassionLedgerRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/campaigns/{campaign_id}/characters/{character_id}/glory":{"get":{"tags":["characters"],"summary":"Glory Summary","operationId":"glory_summary","parameters":[{"name":"campaign_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Campaign Id"}},{"name":"character_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Character Id"}},{"name":"include_gm","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Include Gm"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GlorySummary"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["characters"],"summary":"Add Glory","operationId":"add_glory","parameters":[{"name":"campaign_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Campaign Id"}},{"name":"character_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Character Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GloryCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GloryRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/campaigns/{campaign_id}/locations":{"get":{"tags":["locations"],"summary":"List Locations","operationId":"list_locations","parameters":[{"name":"campaign_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Campaign Id"}},{"name":"kind","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":50},{"type":"null"}],"title":"Kind"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/LocationRead"},"title":"Response List Locations"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/campaigns/{campaign_id}/manors":{"get":{"tags":["locations"],"summary":"List Manors","operationId":"list_manors","parameters":[{"name":"campaign_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Campaign Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ManorRead"},"title":"Response List Manors"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/campaigns/{campaign_id}/families":{"get":{"tags":["families"],"summary":"List Families","operationId":"list_families","parameters":[{"name":"campaign_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Campaign Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/FamilyRead"},"title":"Response List Families"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/campaigns/{campaign_id}/characters/{character_id}/history":{"get":{"tags":["winter-phase"],"summary":"List Character History","operationId":"list_character_history","parameters":[{"name":"campaign_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Campaign Id"}},{"name":"character_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Character Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/CharacterHistoryRead"},"title":"Response List Character History"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/campaigns/{campaign_id}/characters/{character_id}/wounds":{"get":{"tags":["winter-phase"],"summary":"List Character Wounds","operationId":"list_character_wounds","parameters":[{"name":"campaign_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Campaign Id"}},{"name":"character_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Character Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/CharacterWoundRead"},"title":"Response List Character Wounds"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}}},"components":{"schemas":{"CampaignPlayerView":{"properties":{"campaign_id":{"type":"string","format":"uuid","title":"Campaign Id"},"campaign_name":{"type":"string","title":"Campaign Name"},"current_year":{"type":"integer","title":"Current Year"},"events":{"items":{"$ref":"#/components/schemas/PlayerEvent"},"type":"array","title":"Events"},"people":{"items":{"$ref":"#/components/schemas/PlayerPerson"},"type":"array","title":"People"},"families":{"items":{"$ref":"#/components/schemas/PlayerFamily"},"type":"array","title":"Families"},"manors":{"items":{"$ref":"#/components/schemas/PlayerManor"},"type":"array","title":"Manors"},"chronicles":{"items":{"$ref":"#/components/schemas/PlayerChronicle"},"type":"array","title":"Chronicles"}},"type":"object","required":["campaign_id","campaign_name","current_year","events","people","families","manors","chronicles"],"title":"CampaignPlayerView"},"CampaignRead":{"properties":{"name":{"type":"string","maxLength":200,"minLength":1,"title":"Name"},"slug":{"type":"string","maxLength":100,"pattern":"^[a-z0-9]+(?:-[a-z0-9]+)*$","title":"Slug"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"current_year":{"type":"integer","maximum":9999,"minimum":1,"title":"Current Year","default":485},"ruleset_version":{"type":"string","title":"Ruleset Version","default":"Pendragon 6th Edition"},"timezone":{"type":"string","title":"Timezone","default":"UTC"},"metadata":{"additionalProperties":true,"type":"object","title":"Metadata"},"id":{"type":"string","format":"uuid","title":"Id"},"archived_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Archived At"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"}},"type":"object","required":["name","slug","id","archived_at","created_at","updated_at"],"title":"CampaignRead"},"CharacterCreate":{"properties":{"kind":{"type":"string","enum":["player_knight","npc"],"title":"Kind"},"name":{"type":"string","maxLength":300,"minLength":1,"title":"Name"},"epithet":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Epithet"},"player_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Player Name"},"gender":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Gender"},"culture":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Culture"},"religion":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Religion"},"social_class":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Social Class"},"birth_year":{"anyOf":[{"type":"integer","maximum":9999,"minimum":1},{"type":"null"}],"title":"Birth Year"},"status":{"type":"string","enum":["alive","dead","missing","unknown"],"title":"Status","default":"alive"},"coat_of_arms":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Coat Of Arms"},"public_description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Public Description"},"foundry_uuid":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"title":"Foundry Uuid"},"metadata_":{"additionalProperties":true,"type":"object","title":"Metadata"}},"type":"object","required":["kind","name"],"title":"CharacterCreate"},"CharacterHistoryRead":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"campaign_id":{"type":"string","format":"uuid","title":"Campaign Id"},"character_id":{"type":"string","format":"uuid","title":"Character Id"},"event_id":{"type":"string","format":"uuid","title":"Event Id"},"source_key":{"type":"string","title":"Source Key"},"in_game_year":{"type":"integer","title":"In Game Year"},"title":{"type":"string","title":"Title"},"source":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"reported_glory":{"type":"integer","title":"Reported Glory"},"favour_value":{"type":"integer","title":"Favour Value"},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["id","campaign_id","character_id","event_id","source_key","in_game_year","title","source","description","reported_glory","favour_value","created_at"],"title":"CharacterHistoryRead"},"CharacterNoteCreate":{"properties":{"event_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Event Id"},"session_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Session Id"},"scope":{"type":"string","enum":["gm_only","players","shared"],"title":"Scope","default":"gm_only"},"note_type":{"type":"string","maxLength":100,"minLength":1,"title":"Note Type","default":"general"},"title":{"anyOf":[{"type":"string","maxLength":300},{"type":"null"}],"title":"Title"},"body":{"type":"string","minLength":1,"title":"Body"}},"type":"object","required":["body"],"title":"CharacterNoteCreate"},"CharacterNoteRead":{"properties":{"event_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Event Id"},"session_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Session Id"},"scope":{"type":"string","enum":["gm_only","players","shared"],"title":"Scope","default":"gm_only"},"note_type":{"type":"string","maxLength":100,"minLength":1,"title":"Note Type","default":"general"},"title":{"anyOf":[{"type":"string","maxLength":300},{"type":"null"}],"title":"Title"},"body":{"type":"string","minLength":1,"title":"Body"},"id":{"type":"string","format":"uuid","title":"Id"},"campaign_id":{"type":"string","format":"uuid","title":"Campaign Id"},"character_id":{"type":"string","format":"uuid","title":"Character Id"},"recorded_at":{"type":"string","format":"date-time","title":"Recorded At"}},"type":"object","required":["body","id","campaign_id","character_id","recorded_at"],"title":"CharacterNoteRead"},"CharacterRead":{"properties":{"kind":{"type":"string","enum":["player_knight","npc"],"title":"Kind"},"name":{"type":"string","maxLength":300,"minLength":1,"title":"Name"},"epithet":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Epithet"},"player_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Player Name"},"gender":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Gender"},"culture":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Culture"},"religion":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Religion"},"social_class":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Social Class"},"birth_year":{"anyOf":[{"type":"integer","maximum":9999,"minimum":1},{"type":"null"}],"title":"Birth Year"},"status":{"type":"string","enum":["alive","dead","missing","unknown"],"title":"Status","default":"alive"},"coat_of_arms":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Coat Of Arms"},"public_description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Public Description"},"foundry_uuid":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"title":"Foundry Uuid"},"metadata":{"additionalProperties":true,"type":"object","title":"Metadata"},"id":{"type":"string","format":"uuid","title":"Id"},"campaign_id":{"type":"string","format":"uuid","title":"Campaign Id"},"archived_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Archived At"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"}},"type":"object","required":["kind","name","id","campaign_id","archived_at","created_at","updated_at"],"title":"CharacterRead"},"CharacterStatusCreate":{"properties":{"event_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Event Id"},"session_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Session Id"},"status":{"type":"string","enum":["alive","dead","missing","unknown"],"title":"Status"},"effective_year":{"type":"integer","maximum":9999,"minimum":1,"title":"Effective Year"},"sequence":{"type":"integer","minimum":0,"title":"Sequence","default":0},"reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reason"}},"type":"object","required":["status","effective_year"],"title":"CharacterStatusCreate"},"CharacterStatusRead":{"properties":{"event_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Event Id"},"session_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Session Id"},"status":{"type":"string","enum":["alive","dead","missing","unknown"],"title":"Status"},"effective_year":{"type":"integer","maximum":9999,"minimum":1,"title":"Effective Year"},"sequence":{"type":"integer","minimum":0,"title":"Sequence","default":0},"reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reason"},"id":{"type":"string","format":"uuid","title":"Id"},"campaign_id":{"type":"string","format":"uuid","title":"Campaign Id"},"character_id":{"type":"string","format":"uuid","title":"Character Id"},"recorded_at":{"type":"string","format":"date-time","title":"Recorded At"}},"type":"object","required":["status","effective_year","id","campaign_id","character_id","recorded_at"],"title":"CharacterStatusRead"},"CharacterUpdate":{"properties":{"name":{"anyOf":[{"type":"string","maxLength":300,"minLength":1},{"type":"null"}],"title":"Name"},"epithet":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Epithet"},"player_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Player Name"},"gender":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Gender"},"culture":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Culture"},"religion":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Religion"},"social_class":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Social Class"},"birth_year":{"anyOf":[{"type":"integer","maximum":9999,"minimum":1},{"type":"null"}],"title":"Birth Year"},"coat_of_arms":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Coat Of Arms"},"public_description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Public Description"},"foundry_uuid":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"title":"Foundry Uuid"},"metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Metadata"}},"type":"object","title":"CharacterUpdate"},"CharacterWoundRead":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"campaign_id":{"type":"string","format":"uuid","title":"Campaign Id"},"character_id":{"type":"string","format":"uuid","title":"Character Id"},"event_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Event Id"},"source_key":{"type":"string","title":"Source Key"},"effective_year":{"type":"integer","title":"Effective Year"},"sequence":{"type":"integer","title":"Sequence"},"damage":{"type":"integer","title":"Damage"},"treated":{"type":"boolean","title":"Treated"},"wound_source":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Wound Source"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reason"},"recorded_at":{"type":"string","format":"date-time","title":"Recorded At"}},"type":"object","required":["id","campaign_id","character_id","event_id","source_key","effective_year","sequence","damage","treated","wound_source","description","reason","recorded_at"],"title":"CharacterWoundRead"},"DiceLogCreate":{"properties":{"session_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Session Id"},"event_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Event Id"},"roller_type":{"type":"string","maxLength":50,"minLength":1,"title":"Roller Type"},"roller_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Roller Id"},"expression":{"type":"string","maxLength":50,"minLength":1,"title":"Expression"},"individual_rolls":{"items":{"type":"integer"},"type":"array","minItems":1,"title":"Individual Rolls"},"modifier":{"type":"integer","title":"Modifier","default":0},"total":{"type":"integer","title":"Total"},"target_number":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Target Number"},"outcome":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Outcome"},"purpose":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Purpose"},"metadata_":{"additionalProperties":true,"type":"object","title":"Metadata"}},"type":"object","required":["roller_type","expression","individual_rolls","total"],"title":"DiceLogCreate"},"DiceLogRead":{"properties":{"session_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Session Id"},"event_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Event Id"},"roller_type":{"type":"string","maxLength":50,"minLength":1,"title":"Roller Type"},"roller_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Roller Id"},"expression":{"type":"string","maxLength":50,"minLength":1,"title":"Expression"},"individual_rolls":{"items":{"type":"integer"},"type":"array","minItems":1,"title":"Individual Rolls"},"modifier":{"type":"integer","title":"Modifier","default":0},"total":{"type":"integer","title":"Total"},"target_number":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Target Number"},"outcome":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Outcome"},"purpose":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Purpose"},"metadata":{"additionalProperties":true,"type":"object","title":"Metadata"},"id":{"type":"string","format":"uuid","title":"Id"},"campaign_id":{"type":"string","format":"uuid","title":"Campaign Id"},"rolled_at":{"type":"string","format":"date-time","title":"Rolled At"}},"type":"object","required":["roller_type","expression","individual_rolls","total","id","campaign_id","rolled_at"],"title":"DiceLogRead"},"EventCreate":{"properties":{"session_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Session Id"},"event_type":{"type":"string","maxLength":100,"minLength":1,"title":"Event Type"},"title":{"type":"string","maxLength":300,"minLength":1,"title":"Title"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"in_game_year":{"type":"integer","maximum":9999,"minimum":1,"title":"In Game Year"},"in_game_date":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"In Game Date"},"sequence":{"type":"integer","minimum":0,"title":"Sequence","default":0},"visibility":{"type":"string","enum":["gm_only","players","public"],"title":"Visibility","default":"players"},"occurred_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Occurred At"},"supersedes_event_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Supersedes Event Id"},"metadata_":{"additionalProperties":true,"type":"object","title":"Metadata"}},"type":"object","required":["event_type","title","in_game_year"],"title":"EventCreate"},"EventRead":{"properties":{"session_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Session Id"},"event_type":{"type":"string","maxLength":100,"minLength":1,"title":"Event Type"},"title":{"type":"string","maxLength":300,"minLength":1,"title":"Title"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"in_game_year":{"type":"integer","maximum":9999,"minimum":1,"title":"In Game Year"},"in_game_date":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"In Game Date"},"sequence":{"type":"integer","minimum":0,"title":"Sequence","default":0},"visibility":{"type":"string","enum":["gm_only","players","public"],"title":"Visibility","default":"players"},"occurred_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Occurred At"},"supersedes_event_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Supersedes Event Id"},"metadata":{"additionalProperties":true,"type":"object","title":"Metadata"},"id":{"type":"string","format":"uuid","title":"Id"},"campaign_id":{"type":"string","format":"uuid","title":"Campaign Id"},"recorded_at":{"type":"string","format":"date-time","title":"Recorded At"}},"type":"object","required":["event_type","title","in_game_year","id","campaign_id","recorded_at"],"title":"EventRead"},"FamilyRead":{"properties":{"name":{"type":"string","maxLength":300,"minLength":1,"title":"Name"},"founding_year":{"anyOf":[{"type":"integer","maximum":9999,"minimum":1},{"type":"null"}],"title":"Founding Year"},"dissolved_year":{"anyOf":[{"type":"integer","maximum":9999,"minimum":1},{"type":"null"}],"title":"Dissolved Year"},"origin_location_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Origin Location Id"},"culture":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Culture"},"religion":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Religion"},"coat_of_arms":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Coat Of Arms"},"motto":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Motto"},"scope":{"type":"string","enum":["gm_only","players","shared"],"title":"Scope","default":"players"},"notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Notes"},"metadata":{"additionalProperties":true,"type":"object","title":"Metadata"},"id":{"type":"string","format":"uuid","title":"Id"},"campaign_id":{"type":"string","format":"uuid","title":"Campaign Id"},"archived_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Archived At"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"}},"type":"object","required":["name","id","campaign_id","archived_at","created_at","updated_at"],"title":"FamilyRead"},"GloryCreate":{"properties":{"event_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Event Id"},"session_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Session Id"},"awarded_year":{"type":"integer","maximum":9999,"minimum":1,"title":"Awarded Year"},"sequence":{"type":"integer","minimum":0,"title":"Sequence","default":0},"amount":{"type":"integer","title":"Amount"},"category":{"type":"string","maxLength":100,"minLength":1,"title":"Category","default":"other"},"reason":{"type":"string","minLength":1,"title":"Reason"},"scope":{"type":"string","enum":["gm_only","players","shared"],"title":"Scope","default":"players"}},"type":"object","required":["awarded_year","amount","reason"],"title":"GloryCreate"},"GloryRead":{"properties":{"event_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Event Id"},"session_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Session Id"},"awarded_year":{"type":"integer","maximum":9999,"minimum":1,"title":"Awarded Year"},"sequence":{"type":"integer","minimum":0,"title":"Sequence","default":0},"amount":{"type":"integer","title":"Amount"},"category":{"type":"string","maxLength":100,"minLength":1,"title":"Category","default":"other"},"reason":{"type":"string","minLength":1,"title":"Reason"},"scope":{"type":"string","enum":["gm_only","players","shared"],"title":"Scope","default":"players"},"id":{"type":"string","format":"uuid","title":"Id"},"campaign_id":{"type":"string","format":"uuid","title":"Campaign Id"},"character_id":{"type":"string","format":"uuid","title":"Character Id"},"recorded_at":{"type":"string","format":"date-time","title":"Recorded At"}},"type":"object","required":["awarded_year","amount","reason","id","campaign_id","character_id","recorded_at"],"title":"GloryRead"},"GlorySummary":{"properties":{"character_id":{"type":"string","format":"uuid","title":"Character Id"},"total":{"type":"integer","title":"Total"},"entries":{"items":{"$ref":"#/components/schemas/GloryRead"},"type":"array","title":"Entries"}},"type":"object","required":["character_id","total","entries"],"title":"GlorySummary"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"LocationRead":{"properties":{"parent_location_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Parent Location Id"},"kind":{"type":"string","enum":["kingdom","county","barony","manor","holding","settlement","castle","church","forest","road","other"],"title":"Kind"},"name":{"type":"string","maxLength":300,"minLength":1,"title":"Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"scope":{"type":"string","enum":["gm_only","players","shared"],"title":"Scope","default":"players"},"latitude":{"anyOf":[{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"},{"type":"null"}],"title":"Latitude"},"longitude":{"anyOf":[{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"},{"type":"null"}],"title":"Longitude"},"metadata":{"additionalProperties":true,"type":"object","title":"Metadata"},"id":{"type":"string","format":"uuid","title":"Id"},"campaign_id":{"type":"string","format":"uuid","title":"Campaign Id"},"archived_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Archived At"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"}},"type":"object","required":["kind","name","id","campaign_id","archived_at","created_at","updated_at"],"title":"LocationRead"},"ManorRead":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"campaign_id":{"type":"string","format":"uuid","title":"Campaign Id"},"location_id":{"type":"string","format":"uuid","title":"Location Id"},"customary_income":{"anyOf":[{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"},{"type":"null"}],"title":"Customary Income"},"assized_rent":{"anyOf":[{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"},{"type":"null"}],"title":"Assized Rent"},"population":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Population"},"base_defensive_value":{"type":"integer","title":"Base Defensive Value"},"acreage":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Acreage"},"notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Notes"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"}},"type":"object","required":["id","campaign_id","location_id","customary_income","assized_rent","population","base_defensive_value","acreage","notes","created_at","updated_at"],"title":"ManorRead"},"PassionCreate":{"properties":{"name":{"type":"string","maxLength":150,"minLength":1,"title":"Name"},"subject_text":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Subject Text"},"related_character_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Related Character Id"},"scope":{"type":"string","enum":["gm_only","players","shared"],"title":"Scope","default":"players"},"started_event_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Started Event Id"},"started_year":{"anyOf":[{"type":"integer","maximum":9999,"minimum":1},{"type":"null"}],"title":"Started Year"}},"type":"object","required":["name"],"title":"PassionCreate"},"PassionLedgerCreate":{"properties":{"event_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Event Id"},"session_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Session Id"},"effective_year":{"type":"integer","maximum":9999,"minimum":1,"title":"Effective Year"},"sequence":{"type":"integer","minimum":0,"title":"Sequence","default":0},"value":{"type":"integer","minimum":0,"title":"Value"},"reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reason"}},"type":"object","required":["effective_year","value"],"title":"PassionLedgerCreate"},"PassionLedgerRead":{"properties":{"event_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Event Id"},"session_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Session Id"},"effective_year":{"type":"integer","maximum":9999,"minimum":1,"title":"Effective Year"},"sequence":{"type":"integer","minimum":0,"title":"Sequence","default":0},"value":{"type":"integer","minimum":0,"title":"Value"},"reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reason"},"id":{"type":"string","format":"uuid","title":"Id"},"campaign_id":{"type":"string","format":"uuid","title":"Campaign Id"},"passion_id":{"type":"string","format":"uuid","title":"Passion Id"},"recorded_at":{"type":"string","format":"date-time","title":"Recorded At"}},"type":"object","required":["effective_year","value","id","campaign_id","passion_id","recorded_at"],"title":"PassionLedgerRead"},"PassionRead":{"properties":{"name":{"type":"string","maxLength":150,"minLength":1,"title":"Name"},"subject_text":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Subject Text"},"related_character_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Related Character Id"},"scope":{"type":"string","enum":["gm_only","players","shared"],"title":"Scope","default":"players"},"started_event_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Started Event Id"},"started_year":{"anyOf":[{"type":"integer","maximum":9999,"minimum":1},{"type":"null"}],"title":"Started Year"},"id":{"type":"string","format":"uuid","title":"Id"},"campaign_id":{"type":"string","format":"uuid","title":"Campaign Id"},"character_id":{"type":"string","format":"uuid","title":"Character Id"},"ended_event_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Ended Event Id"},"ended_year":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Ended Year"},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["name","id","campaign_id","character_id","ended_event_id","ended_year","created_at"],"title":"PassionRead"},"PlayerChronicle":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"year":{"type":"integer","title":"Year"},"revision":{"type":"integer","title":"Revision"},"title":{"type":"string","title":"Title"},"opening":{"type":"string","title":"Opening"},"closing":{"type":"string","title":"Closing"},"sections":{"items":{"$ref":"#/components/schemas/PlayerChronicleSection"},"type":"array","title":"Sections"}},"type":"object","required":["id","year","revision","title","opening","closing","sections"],"title":"PlayerChronicle"},"PlayerChronicleSection":{"properties":{"character_id":{"type":"string","format":"uuid","title":"Character Id"},"heading":{"type":"string","title":"Heading"},"body":{"type":"string","title":"Body"}},"type":"object","required":["character_id","heading","body"],"title":"PlayerChronicleSection"},"PlayerEvent":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"year":{"type":"integer","title":"Year"},"date":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Date"},"event_type":{"type":"string","title":"Event Type"},"title":{"type":"string","title":"Title"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"}},"type":"object","required":["id","year","date","event_type","title","description"],"title":"PlayerEvent"},"PlayerFamily":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"name":{"type":"string","title":"Name"},"founding_year":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Founding Year"},"culture":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Culture"},"coat_of_arms":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Coat Of Arms"},"motto":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Motto"},"notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Notes"},"origin_location":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Origin Location"},"members":{"items":{"$ref":"#/components/schemas/PlayerFamilyMember"},"type":"array","title":"Members"}},"type":"object","required":["id","name","founding_year","culture","coat_of_arms","motto","notes","origin_location","members"],"title":"PlayerFamily"},"PlayerFamilyMember":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"name":{"type":"string","title":"Name"},"membership_type":{"type":"string","title":"Membership Type"},"start_year":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Start Year"},"end_year":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"End Year"}},"type":"object","required":["id","name","membership_type","start_year","end_year"],"title":"PlayerFamilyMember"},"PlayerManor":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"name":{"type":"string","title":"Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"holder":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Holder"},"customary_income":{"anyOf":[{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"},{"type":"null"}],"title":"Customary Income"},"population":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Population"},"base_defensive_value":{"type":"integer","title":"Base Defensive Value"},"improvements":{"items":{"$ref":"#/components/schemas/PlayerManorItem"},"type":"array","title":"Improvements"},"special_features":{"items":{"$ref":"#/components/schemas/PlayerManorItem"},"type":"array","title":"Special Features"},"defenses":{"items":{"$ref":"#/components/schemas/PlayerManorDefense"},"type":"array","title":"Defenses"}},"type":"object","required":["id","name","description","holder","customary_income","population","base_defensive_value","improvements","special_features","defenses"],"title":"PlayerManor"},"PlayerManorDefense":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"name":{"type":"string","title":"Name"},"defensive_value":{"type":"integer","title":"Defensive Value"}},"type":"object","required":["id","name","defensive_value"],"title":"PlayerManorDefense"},"PlayerManorItem":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"name":{"type":"string","title":"Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"}},"type":"object","required":["id","name","description"],"title":"PlayerManorItem"},"PlayerPerson":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"name":{"type":"string","title":"Name"},"player_name":{"type":"string","title":"Player Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"glory":{"type":"integer","title":"Glory"}},"type":"object","required":["id","name","player_name","description","glory"],"title":"PlayerPerson"},"SessionCreate":{"properties":{"session_number":{"type":"integer","exclusiveMinimum":0,"title":"Session Number"},"title":{"type":"string","maxLength":300,"minLength":1,"title":"Title"},"summary":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Summary"},"played_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Played At"},"in_game_start_year":{"anyOf":[{"type":"integer","maximum":9999,"minimum":1},{"type":"null"}],"title":"In Game Start Year"},"in_game_end_year":{"anyOf":[{"type":"integer","maximum":9999,"minimum":1},{"type":"null"}],"title":"In Game End Year"},"status":{"type":"string","enum":["planned","in_progress","completed","cancelled"],"title":"Status","default":"planned"}},"type":"object","required":["session_number","title"],"title":"SessionCreate"},"SessionRead":{"properties":{"session_number":{"type":"integer","exclusiveMinimum":0,"title":"Session Number"},"title":{"type":"string","maxLength":300,"minLength":1,"title":"Title"},"summary":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Summary"},"played_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Played At"},"in_game_start_year":{"anyOf":[{"type":"integer","maximum":9999,"minimum":1},{"type":"null"}],"title":"In Game Start Year"},"in_game_end_year":{"anyOf":[{"type":"integer","maximum":9999,"minimum":1},{"type":"null"}],"title":"In Game End Year"},"status":{"type":"string","enum":["planned","in_progress","completed","cancelled"],"title":"Status","default":"planned"},"id":{"type":"string","format":"uuid","title":"Id"},"campaign_id":{"type":"string","format":"uuid","title":"Campaign Id"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"}},"type":"object","required":["session_number","title","id","campaign_id","created_at","updated_at"],"title":"SessionRead"},"SessionUpdate":{"properties":{"title":{"anyOf":[{"type":"string","maxLength":300,"minLength":1},{"type":"null"}],"title":"Title"},"summary":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Summary"},"played_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Played At"},"in_game_start_year":{"anyOf":[{"type":"integer","maximum":9999,"minimum":1},{"type":"null"}],"title":"In Game Start Year"},"in_game_end_year":{"anyOf":[{"type":"integer","maximum":9999,"minimum":1},{"type":"null"}],"title":"In Game End Year"},"status":{"anyOf":[{"type":"string","enum":["planned","in_progress","completed","cancelled"]},{"type":"null"}],"title":"Status"}},"type":"object","title":"SessionUpdate"},"SkillDefinitionRead":{"properties":{"name":{"type":"string","maxLength":100,"minLength":1,"title":"Name"},"category":{"type":"string","maxLength":100,"minLength":1,"title":"Category","default":"ordinary"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"id":{"type":"string","format":"uuid","title":"Id"},"campaign_id":{"type":"string","format":"uuid","title":"Campaign Id"},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["name","id","campaign_id","created_at"],"title":"SkillDefinitionRead"},"SkillLedgerCreate":{"properties":{"skill_definition_id":{"type":"string","format":"uuid","title":"Skill Definition Id"},"event_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Event Id"},"session_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Session Id"},"effective_year":{"type":"integer","maximum":9999,"minimum":1,"title":"Effective Year"},"sequence":{"type":"integer","minimum":0,"title":"Sequence","default":0},"value":{"type":"integer","minimum":0,"title":"Value"},"reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reason"}},"type":"object","required":["skill_definition_id","effective_year","value"],"title":"SkillLedgerCreate"},"SkillLedgerRead":{"properties":{"skill_definition_id":{"type":"string","format":"uuid","title":"Skill Definition Id"},"event_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Event Id"},"session_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Session Id"},"effective_year":{"type":"integer","maximum":9999,"minimum":1,"title":"Effective Year"},"sequence":{"type":"integer","minimum":0,"title":"Sequence","default":0},"value":{"type":"integer","minimum":0,"title":"Value"},"reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reason"},"id":{"type":"string","format":"uuid","title":"Id"},"campaign_id":{"type":"string","format":"uuid","title":"Campaign Id"},"character_id":{"type":"string","format":"uuid","title":"Character Id"},"recorded_at":{"type":"string","format":"date-time","title":"Recorded At"}},"type":"object","required":["skill_definition_id","effective_year","value","id","campaign_id","character_id","recorded_at"],"title":"SkillLedgerRead"},"TraitDefinitionRead":{"properties":{"name":{"type":"string","maxLength":100,"minLength":1,"title":"Name"},"opposed_name":{"type":"string","maxLength":100,"minLength":1,"title":"Opposed Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"id":{"type":"string","format":"uuid","title":"Id"},"campaign_id":{"type":"string","format":"uuid","title":"Campaign Id"},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["name","opposed_name","id","campaign_id","created_at"],"title":"TraitDefinitionRead"},"TraitLedgerCreate":{"properties":{"trait_definition_id":{"type":"string","format":"uuid","title":"Trait Definition Id"},"event_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Event Id"},"session_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Session Id"},"effective_year":{"type":"integer","maximum":9999,"minimum":1,"title":"Effective Year"},"sequence":{"type":"integer","minimum":0,"title":"Sequence","default":0},"trait_value":{"type":"integer","minimum":0,"title":"Trait Value"},"opposed_value":{"type":"integer","minimum":0,"title":"Opposed Value"},"reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reason"}},"type":"object","required":["trait_definition_id","effective_year","trait_value","opposed_value"],"title":"TraitLedgerCreate"},"TraitLedgerRead":{"properties":{"trait_definition_id":{"type":"string","format":"uuid","title":"Trait Definition Id"},"event_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Event Id"},"session_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Session Id"},"effective_year":{"type":"integer","maximum":9999,"minimum":1,"title":"Effective Year"},"sequence":{"type":"integer","minimum":0,"title":"Sequence","default":0},"trait_value":{"type":"integer","minimum":0,"title":"Trait Value"},"opposed_value":{"type":"integer","minimum":0,"title":"Opposed Value"},"reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reason"},"id":{"type":"string","format":"uuid","title":"Id"},"campaign_id":{"type":"string","format":"uuid","title":"Campaign Id"},"character_id":{"type":"string","format":"uuid","title":"Character Id"},"recorded_at":{"type":"string","format":"date-time","title":"Recorded At"}},"type":"object","required":["trait_definition_id","effective_year","trait_value","opposed_value","id","campaign_id","character_id","recorded_at"],"title":"TraitLedgerRead"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"},"input":{"title":"Input"},"ctx":{"type":"object","title":"Context"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"}},"securitySchemes":{"ApiKeyAuth":{"type":"apiKey","in":"header","name":"X-API-Key","description":"Campaign API key stored as a secret in the calling client."}}},"security":[{"ApiKeyAuth":[]}],"x-chatgpt-instructions":{"purpose":"Persistent memory for multi-generational Pendragon campaigns.","rules":["Never invent UUIDs. List or create the required parent record first.","Treat events, ledgers, ancestry, inheritance transfers, and family history as append-only.","Use the campaign_id from the selected campaign on every campaign-scoped call.","Record significant narrative changes as events and link domain records when supported.","Respect knowledge scope: gm_only data must not be disclosed to players."],"action_scope":"campaign-play"}}