{"openapi": "3.1.0", "info": {"title": "API", "version": "1.0.0", "description": ""}, "paths": {"/api/stats": {"get": {"operationId": "config_api_stats", "summary": "Stats", "parameters": [], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/SiteStatsSchema"}}}}}, "tags": ["private"]}}, "/api/health": {"get": {"operationId": "config_api_health", "summary": "Health", "parameters": [], "responses": {"200": {"description": "OK"}}, "tags": ["private"]}}, "/api/field-constraints/{entity_type}": {"get": {"operationId": "config_api_get_field_constraints", "summary": "Get Field Constraints", "parameters": [{"in": "path", "name": "entity_type", "schema": {"title": "Entity Type", "type": "string"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"additionalProperties": {"$ref": "#/components/schemas/FieldConstraintSchema"}, "title": "Response", "type": "object"}}}}}, "description": "Return numeric field constraints derived from model validators.", "tags": ["private"]}}, "/api/auth/me/": {"get": {"operationId": "apps_accounts_api_auth_me", "summary": "Auth Me", "parameters": [], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/AuthStatusSchema"}}}}}, "description": "Return current session's authentication state.\n\nAlways succeeds (no auth required). Returns is_authenticated=False for\nanonymous users.", "tags": ["auth", "private"]}}, "/api/auth/logout/": {"post": {"operationId": "apps_accounts_api_auth_logout", "summary": "Auth Logout", "parameters": [], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/AuthStatusSchema"}}}}}, "description": "End the current session.", "tags": ["auth", "private"]}}, "/api/pages/user/{username}/": {"get": {"operationId": "apps_accounts_api_user_profile_page", "summary": "User Profile Page", "parameters": [{"in": "path", "name": "username", "schema": {"title": "Username", "type": "string"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/UserProfileSchema"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorDetailSchema"}}}}}, "description": "Page model for the user profile page: contribution history.", "tags": ["private"]}}, "/api/link-types/": {"get": {"operationId": "apps_core_api_list_link_types", "summary": "List Link Types", "parameters": [], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"items": {"$ref": "#/components/schemas/LinkTypeSchema"}, "title": "Response", "type": "array"}}}}}, "description": "Return all link types offered in the wikilink picker.", "tags": ["private"]}}, "/api/link-types/targets/": {"get": {"operationId": "apps_core_api_search_link_targets", "summary": "Search Link Targets", "parameters": [{"in": "query", "name": "type", "schema": {"title": "Type", "type": "string"}, "required": true}, {"in": "query", "name": "q", "schema": {"default": "", "title": "Q", "type": "string"}, "required": false}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/LinkTargetListSchema"}}}}}, "description": "Search within a picker type for autocomplete results.\n\nStandard-flow types only \u2014 custom-flow picker types (citations) drive\ntheir own frontend flow and never hit this endpoint.", "tags": ["private"]}}, "/api/corporate-entities/": {"get": {"operationId": "apps_catalog_api_corporate_entities_list_corporate_entities", "summary": "List Corporate Entities", "parameters": [], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"items": {"$ref": "#/components/schemas/CorporateEntityListItemSchema"}, "title": "Response", "type": "array"}}}}}, "tags": ["corporate-entities"]}}, "/api/corporate-entities/{public_id}/claims/": {"patch": {"operationId": "apps_catalog_api_corporate_entities_patch_corporate_entity_claims", "summary": "Patch Corporate Entity Claims", "parameters": [{"in": "path", "name": "public_id", "schema": {"title": "Public Id", "type": "string"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/CorporateEntityDetailSchema"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ValidationErrorSchema"}}}}}, "description": "Assert per-field claims from the authenticated user, then re-resolve.", "tags": ["private"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/CorporateEntityClaimPatchSchema"}}}, "required": true}, "security": [{"SessionAuth": []}]}}, "/api/corporate-entities/{public_id}/delete-preview/": {"get": {"operationId": "apps_catalog_api_entity_crud_corporateentity_delete_preview", "summary": "Corporateentity Delete Preview", "parameters": [{"in": "path", "name": "public_id", "schema": {"title": "Public Id", "type": "string"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/TaxonomyDeletePreviewSchema"}}}}}, "tags": ["private"], "security": [{"SessionAuth": []}]}}, "/api/corporate-entities/{public_id}/delete/": {"post": {"operationId": "apps_catalog_api_entity_crud_corporateentity_delete", "summary": "Corporateentity Delete", "parameters": [{"in": "path", "name": "public_id", "schema": {"title": "Public Id", "type": "string"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/DeleteResponseSchema"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"anyOf": [{"$ref": "#/components/schemas/SoftDeleteBlockedSchema"}, {"$ref": "#/components/schemas/AlreadyDeletedSchema"}], "title": "Response"}}}}, "429": {"description": "Too Many Requests", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/RateLimitErrorSchema"}}}}}, "tags": ["private"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/ChangeSetInputSchema"}}}, "required": true}, "security": [{"SessionAuth": []}]}}, "/api/corporate-entities/{public_id}/restore/": {"post": {"operationId": "apps_catalog_api_entity_crud_corporateentity_restore", "summary": "Corporateentity Restore", "parameters": [{"in": "path", "name": "public_id", "schema": {"title": "Public Id", "type": "string"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/CorporateEntityDetailSchema"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorDetailSchema"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorDetailSchema"}}}}, "429": {"description": "Too Many Requests", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/RateLimitErrorSchema"}}}}}, "tags": ["private"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/ChangeSetInputSchema"}}}, "required": true}, "security": [{"SessionAuth": []}]}}, "/api/display-types/": {"get": {"operationId": "apps_catalog_api_taxonomy_list_display_types", "summary": "List Display Types", "parameters": [], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"items": {"$ref": "#/components/schemas/DisplayTypeListItemSchema"}, "title": "Response", "type": "array"}}}}}, "tags": ["display-types"]}, "post": {"operationId": "apps_catalog_api_entity_crud_displaytype_create", "summary": "Displaytype Create", "parameters": [], "responses": {"201": {"description": "Created", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/TaxonomySchema"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ValidationErrorSchema"}}}}, "429": {"description": "Too Many Requests", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/RateLimitErrorSchema"}}}}}, "tags": ["private"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/EntityCreateInputSchema"}}}, "required": true}, "security": [{"SessionAuth": []}]}}, "/api/display-types/{public_id}/claims/": {"patch": {"operationId": "apps_catalog_api_taxonomy_patch_display_type", "summary": "Patch Display Type", "parameters": [{"in": "path", "name": "public_id", "schema": {"title": "Public Id", "type": "string"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/TaxonomySchema"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ValidationErrorSchema"}}}}}, "tags": ["private"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/ClaimPatchSchema"}}}, "required": true}, "security": [{"SessionAuth": []}]}}, "/api/display-types/{public_id}/delete-preview/": {"get": {"operationId": "apps_catalog_api_entity_crud_displaytype_delete_preview", "summary": "Displaytype Delete Preview", "parameters": [{"in": "path", "name": "public_id", "schema": {"title": "Public Id", "type": "string"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/TaxonomyDeletePreviewSchema"}}}}}, "tags": ["private"], "security": [{"SessionAuth": []}]}}, "/api/display-types/{public_id}/delete/": {"post": {"operationId": "apps_catalog_api_entity_crud_displaytype_delete", "summary": "Displaytype Delete", "parameters": [{"in": "path", "name": "public_id", "schema": {"title": "Public Id", "type": "string"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/DeleteResponseSchema"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"anyOf": [{"$ref": "#/components/schemas/SoftDeleteBlockedSchema"}, {"$ref": "#/components/schemas/AlreadyDeletedSchema"}], "title": "Response"}}}}, "429": {"description": "Too Many Requests", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/RateLimitErrorSchema"}}}}}, "tags": ["private"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/ChangeSetInputSchema"}}}, "required": true}, "security": [{"SessionAuth": []}]}}, "/api/display-types/{public_id}/restore/": {"post": {"operationId": "apps_catalog_api_entity_crud_displaytype_restore", "summary": "Displaytype Restore", "parameters": [{"in": "path", "name": "public_id", "schema": {"title": "Public Id", "type": "string"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/TaxonomySchema"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorDetailSchema"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorDetailSchema"}}}}, "429": {"description": "Too Many Requests", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/RateLimitErrorSchema"}}}}}, "tags": ["private"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/ChangeSetInputSchema"}}}, "required": true}, "security": [{"SessionAuth": []}]}}, "/api/display-types/{parent_public_id}/subtypes/": {"post": {"operationId": "apps_catalog_api_entity_crud_displaysubtype_create", "summary": "Displaysubtype Create", "parameters": [{"in": "path", "name": "parent_public_id", "schema": {"title": "Parent Public Id", "type": "string"}, "required": true}], "responses": {"201": {"description": "Created", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/TaxonomySchema"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ValidationErrorSchema"}}}}, "429": {"description": "Too Many Requests", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/RateLimitErrorSchema"}}}}}, "tags": ["private"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/EntityCreateInputSchema"}}}, "required": true}, "security": [{"SessionAuth": []}]}}, "/api/technology-generations/": {"get": {"operationId": "apps_catalog_api_taxonomy_list_technology_generations", "summary": "List Technology Generations", "parameters": [], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"items": {"$ref": "#/components/schemas/TechnologyGenerationListItemSchema"}, "title": "Response", "type": "array"}}}}}, "tags": ["technology-generations"]}, "post": {"operationId": "apps_catalog_api_entity_crud_technologygeneration_create", "summary": "Technologygeneration Create", "parameters": [], "responses": {"201": {"description": "Created", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/TaxonomySchema"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ValidationErrorSchema"}}}}, "429": {"description": "Too Many Requests", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/RateLimitErrorSchema"}}}}}, "tags": ["private"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/EntityCreateInputSchema"}}}, "required": true}, "security": [{"SessionAuth": []}]}}, "/api/technology-generations/{public_id}/claims/": {"patch": {"operationId": "apps_catalog_api_taxonomy_patch_technology_generation", "summary": "Patch Technology Generation", "parameters": [{"in": "path", "name": "public_id", "schema": {"title": "Public Id", "type": "string"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/TaxonomySchema"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ValidationErrorSchema"}}}}}, "tags": ["private"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/ClaimPatchSchema"}}}, "required": true}, "security": [{"SessionAuth": []}]}}, "/api/technology-generations/{public_id}/delete-preview/": {"get": {"operationId": "apps_catalog_api_entity_crud_technologygeneration_delete_preview", "summary": "Technologygeneration Delete Preview", "parameters": [{"in": "path", "name": "public_id", "schema": {"title": "Public Id", "type": "string"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/TaxonomyDeletePreviewSchema"}}}}}, "tags": ["private"], "security": [{"SessionAuth": []}]}}, "/api/technology-generations/{public_id}/delete/": {"post": {"operationId": "apps_catalog_api_entity_crud_technologygeneration_delete", "summary": "Technologygeneration Delete", "parameters": [{"in": "path", "name": "public_id", "schema": {"title": "Public Id", "type": "string"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/DeleteResponseSchema"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"anyOf": [{"$ref": "#/components/schemas/SoftDeleteBlockedSchema"}, {"$ref": "#/components/schemas/AlreadyDeletedSchema"}], "title": "Response"}}}}, "429": {"description": "Too Many Requests", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/RateLimitErrorSchema"}}}}}, "tags": ["private"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/ChangeSetInputSchema"}}}, "required": true}, "security": [{"SessionAuth": []}]}}, "/api/technology-generations/{public_id}/restore/": {"post": {"operationId": "apps_catalog_api_entity_crud_technologygeneration_restore", "summary": "Technologygeneration Restore", "parameters": [{"in": "path", "name": "public_id", "schema": {"title": "Public Id", "type": "string"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/TaxonomySchema"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorDetailSchema"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorDetailSchema"}}}}, "429": {"description": "Too Many Requests", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/RateLimitErrorSchema"}}}}}, "tags": ["private"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/ChangeSetInputSchema"}}}, "required": true}, "security": [{"SessionAuth": []}]}}, "/api/technology-generations/{parent_public_id}/subgenerations/": {"post": {"operationId": "apps_catalog_api_entity_crud_technologysubgeneration_create", "summary": "Technologysubgeneration Create", "parameters": [{"in": "path", "name": "parent_public_id", "schema": {"title": "Parent Public Id", "type": "string"}, "required": true}], "responses": {"201": {"description": "Created", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/TaxonomySchema"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ValidationErrorSchema"}}}}, "429": {"description": "Too Many Requests", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/RateLimitErrorSchema"}}}}}, "tags": ["private"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/EntityCreateInputSchema"}}}, "required": true}, "security": [{"SessionAuth": []}]}}, "/api/models/": {"get": {"operationId": "apps_catalog_api_machine_models_list_models", "summary": "List Models", "parameters": [{"in": "query", "name": "manufacturer", "schema": {"default": "", "title": "Manufacturer", "type": "string"}, "required": false}, {"in": "query", "name": "type", "schema": {"default": "", "title": "Type", "type": "string"}, "required": false}, {"in": "query", "name": "subgeneration", "schema": {"default": "", "title": "Subgeneration", "type": "string"}, "required": false}, {"in": "query", "name": "display", "schema": {"default": "", "title": "Display", "type": "string"}, "required": false}, {"in": "query", "name": "display_subtype", "schema": {"default": "", "title": "Display Subtype", "type": "string"}, "required": false}, {"in": "query", "name": "feature", "schema": {"default": "", "title": "Feature", "type": "string"}, "required": false}, {"in": "query", "name": "reward_type", "schema": {"default": "", "title": "Reward Type", "type": "string"}, "required": false}, {"in": "query", "name": "game_format", "schema": {"default": "", "title": "Game Format", "type": "string"}, "required": false}, {"in": "query", "name": "cabinet", "schema": {"default": "", "title": "Cabinet", "type": "string"}, "required": false}, {"in": "query", "name": "tag", "schema": {"default": "", "title": "Tag", "type": "string"}, "required": false}, {"in": "query", "name": "year_min", "schema": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Year Min"}, "required": false}, {"in": "query", "name": "year_max", "schema": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Year Max"}, "required": false}, {"in": "query", "name": "person", "schema": {"default": "", "title": "Person", "type": "string"}, "required": false}, {"in": "query", "name": "ordering", "schema": {"default": "-year", "title": "Ordering", "type": "string"}, "required": false}, {"in": "query", "name": "page", "schema": {"default": 1, "minimum": 1, "title": "Page", "type": "integer"}, "required": false}, {"in": "query", "name": "page_size", "schema": {"anyOf": [{"minimum": 1, "type": "integer"}, {"type": "null"}], "title": "Page Size"}, "required": false}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ModelListSchema"}}}}}, "tags": ["models"]}}, "/api/models/recent/": {"get": {"operationId": "apps_catalog_api_machine_models_list_recent_models", "summary": "List Recent Models", "parameters": [], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"items": {"$ref": "#/components/schemas/ModelRecentSchema"}, "title": "Response", "type": "array"}}}}}, "description": "Return the 3 newest non-variant models, one per title.", "tags": ["models"]}}, "/api/models/all/": {"get": {"operationId": "apps_catalog_api_machine_models_list_all_models", "summary": "List All Models", "parameters": [], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"items": {"$ref": "#/components/schemas/ModelGridItemSchema"}, "title": "Response", "type": "array"}}}}}, "description": "Return every model (including variants) for client-side search/grid.\n\nPerformance-critical: serializes ~7k models with search_text built from\nM2M relations.  Uses ``values_list`` to avoid ORM object hydration and\nbulk through-table queries for M2M data.  See ``list_all_titles`` for\nthe full explanation of this pattern.", "tags": ["models"]}}, "/api/models/edit-options/": {"get": {"operationId": "apps_catalog_api_machine_models_get_model_edit_options", "summary": "Get Model Edit Options", "parameters": [], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ModelEditOptionsSchema"}}}}}, "description": "Return all dropdown options for the MachineModel edit form.", "tags": ["models"]}}, "/api/models/{public_id}/claims/": {"patch": {"operationId": "apps_catalog_api_machine_models_patch_model_claims", "summary": "Patch Model Claims", "parameters": [{"in": "path", "name": "public_id", "schema": {"title": "Public Id", "type": "string"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ModelDetailSchema"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ValidationErrorSchema"}}}}}, "description": "Assert per-field claims from the authenticated user, then re-resolve the model.", "tags": ["private"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/ModelClaimPatchSchema"}}}, "required": true}, "security": [{"SessionAuth": []}]}}, "/api/models/{public_id}/delete-preview/": {"get": {"operationId": "apps_catalog_api_machine_models_model_delete_preview", "summary": "Model Delete Preview", "parameters": [{"in": "path", "name": "public_id", "schema": {"title": "Public Id", "type": "string"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ModelDeletePreviewSchema"}}}}}, "description": "Return the impact summary used by the delete confirmation screen.", "tags": ["private"], "security": [{"SessionAuth": []}]}}, "/api/models/{public_id}/delete/": {"post": {"operationId": "apps_catalog_api_machine_models_delete_model", "summary": "Delete Model", "parameters": [{"in": "path", "name": "public_id", "schema": {"title": "Public Id", "type": "string"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/DeleteResponseSchema"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"anyOf": [{"$ref": "#/components/schemas/SoftDeleteBlockedSchema"}, {"$ref": "#/components/schemas/AlreadyDeletedSchema"}], "title": "Response"}}}}, "429": {"description": "Too Many Requests", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/RateLimitErrorSchema"}}}}}, "description": "Soft-delete a MachineModel.\n\nWrites a single user ChangeSet with ``action=delete`` containing one\n``status=deleted`` claim. Rate-limited per user on the ``delete`` bucket\n(5/day; staff bypass). Blocks with 422 when an active PROTECT referrer\n(a child variant, a model whose ``converted_from`` or ``remake_of``\npoints here, \u2026) would be left dangling. Never cascades to the parent\nTitle \u2014 orphan Titles are supported by spec.", "tags": ["private"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/ChangeSetInputSchema"}}}, "required": true}, "security": [{"SessionAuth": []}]}}, "/api/models/{public_id}/restore/": {"post": {"operationId": "apps_catalog_api_machine_models_restore_model", "summary": "Restore Model", "parameters": [{"in": "path", "name": "public_id", "schema": {"title": "Public Id", "type": "string"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ModelDetailSchema"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorDetailSchema"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorDetailSchema"}}}}, "429": {"description": "Too Many Requests", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/RateLimitErrorSchema"}}}}}, "description": "Write a fresh ``status=active`` claim on a soft-deleted Model.\n\nThis is the \"Restore\" path (distinct from Undo, which inverts a specific\ndelete ChangeSet). Shares the ``create`` rate-limit bucket. The parent\nTitle is untouched \u2014 consistent with delete's no-cascade-to-parent rule.", "tags": ["private"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/ChangeSetInputSchema"}}}, "required": true}, "security": [{"SessionAuth": []}]}}, "/api/titles/": {"get": {"operationId": "apps_catalog_api_titles_list_titles", "summary": "List Titles", "parameters": [{"in": "query", "name": "display", "schema": {"default": "", "title": "Display", "type": "string"}, "required": false}, {"in": "query", "name": "page", "schema": {"default": 1, "minimum": 1, "title": "Page", "type": "integer"}, "required": false}, {"in": "query", "name": "page_size", "schema": {"anyOf": [{"minimum": 1, "type": "integer"}, {"type": "null"}], "title": "Page Size"}, "required": false}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/TitleListSchema"}}}}}, "tags": ["titles"]}, "post": {"operationId": "apps_catalog_api_titles_create_title", "summary": "Create Title", "parameters": [], "responses": {"201": {"description": "Created", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/TitleDetailSchema"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ValidationErrorSchema"}}}}, "429": {"description": "Too Many Requests", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/RateLimitErrorSchema"}}}}}, "description": "Create a new Title from a user-supplied name and slug.\n\nWrites a user ChangeSet with ``action=create`` and three claims \u2014 name,\nslug, and ``status=\"active\"``. The status claim is written explicitly\n(rather than relying on the row default) so that Undo semantics and\nfuture delete flows have a symmetric claim to invert.\n\nRate-limited per user. Staff bypass.", "tags": ["private"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/EntityCreateInputSchema"}}}, "required": true}, "security": [{"SessionAuth": []}]}}, "/api/titles/all/": {"get": {"operationId": "apps_catalog_api_titles_list_all_titles", "summary": "List All Titles", "parameters": [], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"items": {"$ref": "#/components/schemas/TitleListItemSchema"}, "title": "Response", "type": "array"}}}}}, "description": "Return every title with facet data for client-side filtering.\n\nPerformance-critical: this serializes ~6k titles with facet arrays\naggregated from ~7k machine models.  The result is cached indefinitely\nand invalidated on data changes, so cold-cache rebuild speed matters.\n\nStrategy (instead of prefetch + ORM iteration):\n1. Annotate scalar card fields (manufacturer, year) via correlated\n   subqueries so the DB does the work in one SQL statement.\n2. Use ``values_list`` instead of full ORM object instantiation to\n   avoid Python-side hydration overhead for thousands of rows.\n3. Fetch M2M facet data (themes, features, credits, etc.) via bulk\n   queries on through tables into ``dict`` lookup maps.\n4. Assemble the response dicts from the lookup maps.\n\nThis reduces cold-cache rebuild from ~3.5s to ~0.5s locally\n(~30s to ~5s on production hardware).", "tags": ["titles"]}}, "/api/titles/{public_id}/claims/": {"patch": {"operationId": "apps_catalog_api_titles_patch_title_claims", "summary": "Patch Title Claims", "parameters": [{"in": "path", "name": "public_id", "schema": {"title": "Public Id", "type": "string"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/TitleDetailSchema"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ValidationErrorSchema"}}}}}, "description": "Assert title-owned claims and return the refreshed title detail.", "tags": ["private"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/TitleClaimPatchSchema"}}}, "required": true}, "security": [{"SessionAuth": []}]}}, "/api/titles/{title_public_id}/models/": {"post": {"operationId": "apps_catalog_api_titles_create_model", "summary": "Create Model", "parameters": [{"in": "path", "name": "title_public_id", "schema": {"title": "Title Public Id", "type": "string"}, "required": true}], "responses": {"201": {"description": "Created", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ModelDetailSchema"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ValidationErrorSchema"}}}}, "429": {"description": "Too Many Requests", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/RateLimitErrorSchema"}}}}}, "description": "Create a new MachineModel under an existing Title.\n\nWrites a user ChangeSet with ``action=create`` and four claims \u2014 name,\nslug, ``status=\"active\"``, and ``title`` (FK-by-slug). The title claim\nis explicit so that the model carries the same provenance for its\nparent as every other field.\n\nRate-limited per user; shares the ``create`` bucket with Title Create.\nStaff bypass. Name collisions are scoped to the parent Title: two\ntitles can legitimately share a model name (e.g. \"Pro\"). Slug\nuniqueness is global \u2014 the ``/models/{public_id}`` URL pattern requires it.", "tags": ["private"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/EntityCreateInputSchema"}}}, "required": true}, "security": [{"SessionAuth": []}]}}, "/api/titles/{public_id}/delete-preview/": {"get": {"operationId": "apps_catalog_api_titles_title_delete_preview", "summary": "Title Delete Preview", "parameters": [{"in": "path", "name": "public_id", "schema": {"title": "Public Id", "type": "string"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/TitleDeletePreviewSchema"}}}}}, "description": "Return the impact summary used by the delete confirmation screen.\n\nIncludes counts for active child models and user ChangeSets that touch\nthe title or any of its active models, plus any blocking referrers so\nthe UI can refuse the action before it's attempted.", "tags": ["private"], "security": [{"SessionAuth": []}]}}, "/api/titles/{public_id}/delete/": {"post": {"operationId": "apps_catalog_api_titles_delete_title", "summary": "Delete Title", "parameters": [{"in": "path", "name": "public_id", "schema": {"title": "Public Id", "type": "string"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/TitleDeleteResponseSchema"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"anyOf": [{"$ref": "#/components/schemas/SoftDeleteBlockedSchema"}, {"$ref": "#/components/schemas/AlreadyDeletedSchema"}], "title": "Response"}}}}, "429": {"description": "Too Many Requests", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/RateLimitErrorSchema"}}}}}, "description": "Soft-delete a Title and cascade to its active MachineModels.\n\nWrites a single user ChangeSet with ``action=delete`` containing one\n``status=deleted`` claim per affected entity. Rate-limited per user on\nthe ``delete`` bucket (5/day; staff bypass). Blocks with 422 when an\nactive PROTECT referrer outside the cascade tree would be left\ndangling; the response body lists the referrers so the UI can explain.", "tags": ["private"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/ChangeSetInputSchema"}}}, "required": true}, "security": [{"SessionAuth": []}]}}, "/api/titles/{public_id}/restore/": {"post": {"operationId": "apps_catalog_api_titles_restore_title", "summary": "Restore Title", "parameters": [{"in": "path", "name": "public_id", "schema": {"title": "Public Id", "type": "string"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/TitleDetailSchema"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorDetailSchema"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorDetailSchema"}}}}, "429": {"description": "Too Many Requests", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/RateLimitErrorSchema"}}}}}, "description": "Write a fresh ``status=active`` claim on a soft-deleted Title.\n\nThis is the \"Restore\" path (distinct from Undo, which inverts a\nspecific delete ChangeSet). Restore does NOT bring child Models back \u2014\nthey keep their ``status=deleted`` claims until individually restored\nor the original delete ChangeSet is undone. Shares the ``create``\nrate-limit bucket (Restore is semantically a re-create).", "tags": ["private"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/ChangeSetInputSchema"}}}, "required": true}, "security": [{"SessionAuth": []}]}}, "/api/manufacturers/": {"get": {"operationId": "apps_catalog_api_manufacturers_list_manufacturers", "summary": "List Manufacturers", "parameters": [{"in": "query", "name": "page", "schema": {"default": 1, "minimum": 1, "title": "Page", "type": "integer"}, "required": false}, {"in": "query", "name": "page_size", "schema": {"anyOf": [{"minimum": 1, "type": "integer"}, {"type": "null"}], "title": "Page Size"}, "required": false}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ManufacturerListSchema"}}}}}, "tags": ["manufacturers"]}, "post": {"operationId": "apps_catalog_api_entity_crud_manufacturer_create", "summary": "Manufacturer Create", "parameters": [], "responses": {"201": {"description": "Created", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ManufacturerDetailSchema"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ValidationErrorSchema"}}}}, "429": {"description": "Too Many Requests", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/RateLimitErrorSchema"}}}}}, "tags": ["private"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/EntityCreateInputSchema"}}}, "required": true}, "security": [{"SessionAuth": []}]}}, "/api/manufacturers/all/": {"get": {"operationId": "apps_catalog_api_manufacturers_list_all_manufacturers", "summary": "List All Manufacturers", "parameters": [], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"items": {"$ref": "#/components/schemas/ManufacturerGridItemSchema"}, "title": "Response", "type": "array"}}}}}, "description": "Return every manufacturer with facet data for client-side filtering.\n\nPerformance-critical: uses bulk queries and lookup maps instead of\ndeep prefetch + Python iteration.  See ``list_all_titles`` for the\nfull explanation of this pattern.", "tags": ["manufacturers"]}}, "/api/manufacturers/{public_id}/claims/": {"patch": {"operationId": "apps_catalog_api_manufacturers_patch_manufacturer_claims", "summary": "Patch Manufacturer Claims", "parameters": [{"in": "path", "name": "public_id", "schema": {"title": "Public Id", "type": "string"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ManufacturerDetailSchema"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ValidationErrorSchema"}}}}}, "description": "Assert per-field claims from the authenticated user, then re-resolve.", "tags": ["private"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/ClaimPatchSchema"}}}, "required": true}, "security": [{"SessionAuth": []}]}}, "/api/manufacturers/{public_id}/delete-preview/": {"get": {"operationId": "apps_catalog_api_entity_crud_manufacturer_delete_preview", "summary": "Manufacturer Delete Preview", "parameters": [{"in": "path", "name": "public_id", "schema": {"title": "Public Id", "type": "string"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/TaxonomyDeletePreviewSchema"}}}}}, "tags": ["private"], "security": [{"SessionAuth": []}]}}, "/api/manufacturers/{public_id}/delete/": {"post": {"operationId": "apps_catalog_api_entity_crud_manufacturer_delete", "summary": "Manufacturer Delete", "parameters": [{"in": "path", "name": "public_id", "schema": {"title": "Public Id", "type": "string"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/DeleteResponseSchema"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"anyOf": [{"$ref": "#/components/schemas/SoftDeleteBlockedSchema"}, {"$ref": "#/components/schemas/AlreadyDeletedSchema"}], "title": "Response"}}}}, "429": {"description": "Too Many Requests", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/RateLimitErrorSchema"}}}}}, "tags": ["private"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/ChangeSetInputSchema"}}}, "required": true}, "security": [{"SessionAuth": []}]}}, "/api/manufacturers/{public_id}/restore/": {"post": {"operationId": "apps_catalog_api_entity_crud_manufacturer_restore", "summary": "Manufacturer Restore", "parameters": [{"in": "path", "name": "public_id", "schema": {"title": "Public Id", "type": "string"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ManufacturerDetailSchema"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorDetailSchema"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorDetailSchema"}}}}, "429": {"description": "Too Many Requests", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/RateLimitErrorSchema"}}}}}, "tags": ["private"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/ChangeSetInputSchema"}}}, "required": true}, "security": [{"SessionAuth": []}]}}, "/api/manufacturers/{parent_public_id}/corporate-entities/": {"post": {"operationId": "apps_catalog_api_entity_crud_corporateentity_create", "summary": "Corporateentity Create", "parameters": [{"in": "path", "name": "parent_public_id", "schema": {"title": "Parent Public Id", "type": "string"}, "required": true}], "responses": {"201": {"description": "Created", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/CorporateEntityDetailSchema"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ValidationErrorSchema"}}}}, "429": {"description": "Too Many Requests", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/RateLimitErrorSchema"}}}}}, "tags": ["private"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/EntityCreateInputSchema"}}}, "required": true}, "security": [{"SessionAuth": []}]}}, "/api/people/": {"get": {"operationId": "apps_catalog_api_people_list_people", "summary": "List People", "parameters": [{"in": "query", "name": "page", "schema": {"default": 1, "minimum": 1, "title": "Page", "type": "integer"}, "required": false}, {"in": "query", "name": "page_size", "schema": {"anyOf": [{"minimum": 1, "type": "integer"}, {"type": "null"}], "title": "Page Size"}, "required": false}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/PersonListSchema"}}}}}, "tags": ["people"]}, "post": {"operationId": "apps_catalog_api_people_create_person", "summary": "Create Person", "parameters": [], "responses": {"201": {"description": "Created", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/PersonDetailSchema"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ValidationErrorSchema"}}}}, "429": {"description": "Too Many Requests", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/RateLimitErrorSchema"}}}}}, "description": "Create a new Person from a user-supplied name and slug.\n\nMirrors ``create_title``: writes a user ChangeSet with ``action=create``\nand three claims \u2014 name, slug, and ``status=\"active\"``. Biographical\nfields (birth/death dates, photo, description, wikidata_id) are left\nfor the normal edit flow. Duplicate names are rejected outright per\nspec (no disambiguation path for people in v1).\n\nRate-limited per user on the shared ``create`` bucket. Staff bypass.", "tags": ["private"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/EntityCreateInputSchema"}}}, "required": true}, "security": [{"SessionAuth": []}]}}, "/api/people/all/": {"get": {"operationId": "apps_catalog_api_people_list_all_people", "summary": "List All People", "parameters": [], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"items": {"$ref": "#/components/schemas/PersonGridItemSchema"}, "title": "Response", "type": "array"}}}}}, "description": "Return every person with credit count and thumbnail.\n\nUses a bulk query to find the newest credited model per person for\nthumbnails, instead of prefetching all credits and iterating in Python.\nSee ``list_all_titles`` for the full explanation of this pattern.", "tags": ["people"]}}, "/api/people/{public_id}/claims/": {"patch": {"operationId": "apps_catalog_api_people_patch_person_claims", "summary": "Patch Person Claims", "parameters": [{"in": "path", "name": "public_id", "schema": {"title": "Public Id", "type": "string"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/PersonDetailSchema"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ValidationErrorSchema"}}}}}, "description": "Assert per-field claims from the authenticated user, then re-resolve.", "tags": ["private"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/ClaimPatchSchema"}}}, "required": true}, "security": [{"SessionAuth": []}]}}, "/api/people/{public_id}/delete-preview/": {"get": {"operationId": "apps_catalog_api_people_person_delete_preview", "summary": "Person Delete Preview", "parameters": [{"in": "path", "name": "public_id", "schema": {"title": "Public Id", "type": "string"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/PersonDeletePreviewSchema"}}}}}, "description": "Return the impact summary used by the delete confirmation screen.", "tags": ["private"], "security": [{"SessionAuth": []}]}}, "/api/people/{public_id}/delete/": {"post": {"operationId": "apps_catalog_api_people_delete_person", "summary": "Delete Person", "parameters": [{"in": "path", "name": "public_id", "schema": {"title": "Public Id", "type": "string"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/DeleteResponseSchema"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"anyOf": [{"$ref": "#/components/schemas/PersonSoftDeleteBlockedSchema"}, {"$ref": "#/components/schemas/AlreadyDeletedSchema"}], "title": "Response"}}}}, "429": {"description": "Too Many Requests", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/RateLimitErrorSchema"}}}}}, "description": "Soft-delete a Person.\n\nWrites a single user ChangeSet with ``action=delete`` containing one\n``status=deleted`` claim. Blocks with 422 when *person* is credited on\nany active Model or Series \u2014 see :func:`_active_credit_count` for the\nrationale. Also defers to the generic PROTECT walker for any future\nblockers (none expected today).", "tags": ["private"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/ChangeSetInputSchema"}}}, "required": true}, "security": [{"SessionAuth": []}]}}, "/api/people/{public_id}/restore/": {"post": {"operationId": "apps_catalog_api_people_restore_person", "summary": "Restore Person", "parameters": [{"in": "path", "name": "public_id", "schema": {"title": "Public Id", "type": "string"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/PersonDetailSchema"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorDetailSchema"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorDetailSchema"}}}}, "429": {"description": "Too Many Requests", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/RateLimitErrorSchema"}}}}}, "description": "Write a fresh ``status=active`` claim on a soft-deleted Person.\n\nShares the ``create`` rate-limit bucket (Restore is semantically a\nre-create). Person has no lifecycle children, so nothing cascades.", "tags": ["private"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/ChangeSetInputSchema"}}}, "required": true}, "security": [{"SessionAuth": []}]}}, "/api/themes/": {"get": {"operationId": "apps_catalog_api_themes_list_themes", "summary": "List Themes", "parameters": [], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"items": {"$ref": "#/components/schemas/ThemeListItemSchema"}, "title": "Response", "type": "array"}}}}}, "tags": ["themes"]}, "post": {"operationId": "apps_catalog_api_entity_crud_theme_create", "summary": "Theme Create", "parameters": [], "responses": {"201": {"description": "Created", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ThemeDetailSchema"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ValidationErrorSchema"}}}}, "429": {"description": "Too Many Requests", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/RateLimitErrorSchema"}}}}}, "tags": ["private"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/EntityCreateInputSchema"}}}, "required": true}, "security": [{"SessionAuth": []}]}}, "/api/themes/{public_id}/claims/": {"patch": {"operationId": "apps_catalog_api_themes_patch_theme_claims", "summary": "Patch Theme Claims", "parameters": [{"in": "path", "name": "public_id", "schema": {"title": "Public Id", "type": "string"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ThemeDetailSchema"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ValidationErrorSchema"}}}}}, "description": "Assert per-field claims from the authenticated user, then re-resolve.", "tags": ["private"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/HierarchyClaimPatchSchema"}}}, "required": true}, "security": [{"SessionAuth": []}]}}, "/api/themes/{public_id}/delete-preview/": {"get": {"operationId": "apps_catalog_api_entity_crud_theme_delete_preview", "summary": "Theme Delete Preview", "parameters": [{"in": "path", "name": "public_id", "schema": {"title": "Public Id", "type": "string"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/TaxonomyDeletePreviewSchema"}}}}}, "tags": ["private"], "security": [{"SessionAuth": []}]}}, "/api/themes/{public_id}/delete/": {"post": {"operationId": "apps_catalog_api_entity_crud_theme_delete", "summary": "Theme Delete", "parameters": [{"in": "path", "name": "public_id", "schema": {"title": "Public Id", "type": "string"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/DeleteResponseSchema"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"anyOf": [{"$ref": "#/components/schemas/SoftDeleteBlockedSchema"}, {"$ref": "#/components/schemas/AlreadyDeletedSchema"}], "title": "Response"}}}}, "429": {"description": "Too Many Requests", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/RateLimitErrorSchema"}}}}}, "tags": ["private"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/ChangeSetInputSchema"}}}, "required": true}, "security": [{"SessionAuth": []}]}}, "/api/themes/{public_id}/restore/": {"post": {"operationId": "apps_catalog_api_entity_crud_theme_restore", "summary": "Theme Restore", "parameters": [{"in": "path", "name": "public_id", "schema": {"title": "Public Id", "type": "string"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ThemeDetailSchema"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorDetailSchema"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorDetailSchema"}}}}, "429": {"description": "Too Many Requests", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/RateLimitErrorSchema"}}}}}, "tags": ["private"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/ChangeSetInputSchema"}}}, "required": true}, "security": [{"SessionAuth": []}]}}, "/api/systems/all/": {"get": {"operationId": "apps_catalog_api_systems_list_all_systems", "summary": "List All Systems", "parameters": [], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"items": {"$ref": "#/components/schemas/SystemListItemSchema"}, "title": "Response", "type": "array"}}}}}, "description": "Return every system with machine count (no pagination).", "tags": ["systems"]}}, "/api/systems/{public_id}/claims/": {"patch": {"operationId": "apps_catalog_api_systems_patch_system_claims", "summary": "Patch System Claims", "parameters": [{"in": "path", "name": "public_id", "schema": {"title": "Public Id", "type": "string"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/SystemDetailSchema"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ValidationErrorSchema"}}}}}, "description": "Assert per-field claims from the authenticated user, then re-resolve.", "tags": ["private"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/ClaimPatchSchema"}}}, "required": true}, "security": [{"SessionAuth": []}]}}, "/api/systems/": {"post": {"operationId": "apps_catalog_api_systems_create_system", "summary": "Create System", "parameters": [], "responses": {"201": {"description": "Created", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/SystemDetailSchema"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ValidationErrorSchema"}}}}, "429": {"description": "Too Many Requests", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/RateLimitErrorSchema"}}}}}, "description": "Create a new System.\n\nRequired fields: ``name``, ``slug``, ``manufacturer_slug``. Optional\n``technology_subgeneration`` is deferred to edit \u2014 not part of the\nminimum-viable create per ``docs/plans/RecordCreateDelete.md``.\n\nBespoke (rather than ``register_entity_create``) because System has a\nrequired non-URL-nested FK (manufacturer) which the shared registrar\ndoesn't express. Uses the same building blocks.", "tags": ["private"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/SystemCreateSchema"}}}, "required": true}, "security": [{"SessionAuth": []}]}}, "/api/systems/{public_id}/delete-preview/": {"get": {"operationId": "apps_catalog_api_entity_crud_system_delete_preview", "summary": "System Delete Preview", "parameters": [{"in": "path", "name": "public_id", "schema": {"title": "Public Id", "type": "string"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/TaxonomyDeletePreviewSchema"}}}}}, "tags": ["private"], "security": [{"SessionAuth": []}]}}, "/api/systems/{public_id}/delete/": {"post": {"operationId": "apps_catalog_api_entity_crud_system_delete", "summary": "System Delete", "parameters": [{"in": "path", "name": "public_id", "schema": {"title": "Public Id", "type": "string"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/DeleteResponseSchema"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"anyOf": [{"$ref": "#/components/schemas/SoftDeleteBlockedSchema"}, {"$ref": "#/components/schemas/AlreadyDeletedSchema"}], "title": "Response"}}}}, "429": {"description": "Too Many Requests", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/RateLimitErrorSchema"}}}}}, "tags": ["private"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/ChangeSetInputSchema"}}}, "required": true}, "security": [{"SessionAuth": []}]}}, "/api/systems/{public_id}/restore/": {"post": {"operationId": "apps_catalog_api_entity_crud_system_restore", "summary": "System Restore", "parameters": [{"in": "path", "name": "public_id", "schema": {"title": "Public Id", "type": "string"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/SystemDetailSchema"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorDetailSchema"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorDetailSchema"}}}}, "429": {"description": "Too Many Requests", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/RateLimitErrorSchema"}}}}}, "tags": ["private"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/ChangeSetInputSchema"}}}, "required": true}, "security": [{"SessionAuth": []}]}}, "/api/series/": {"get": {"operationId": "apps_catalog_api_series_list_series", "summary": "List Series", "parameters": [], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"items": {"$ref": "#/components/schemas/SeriesListItemSchema"}, "title": "Response", "type": "array"}}}}}, "description": "Return all series with title count and thumbnail.", "tags": ["series"]}, "post": {"operationId": "apps_catalog_api_entity_crud_series_create", "summary": "Series Create", "parameters": [], "responses": {"201": {"description": "Created", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/SeriesDetailSchema"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ValidationErrorSchema"}}}}, "429": {"description": "Too Many Requests", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/RateLimitErrorSchema"}}}}}, "tags": ["private"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/EntityCreateInputSchema"}}}, "required": true}, "security": [{"SessionAuth": []}]}}, "/api/series/{public_id}/claims/": {"patch": {"operationId": "apps_catalog_api_series_patch_series_claims", "summary": "Patch Series Claims", "parameters": [{"in": "path", "name": "public_id", "schema": {"title": "Public Id", "type": "string"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/SeriesDetailSchema"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ValidationErrorSchema"}}}}}, "description": "Assert per-field claims from the authenticated user, then re-resolve.", "tags": ["private"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/ClaimPatchSchema"}}}, "required": true}, "security": [{"SessionAuth": []}]}}, "/api/series/{public_id}/delete-preview/": {"get": {"operationId": "apps_catalog_api_entity_crud_series_delete_preview", "summary": "Series Delete Preview", "parameters": [{"in": "path", "name": "public_id", "schema": {"title": "Public Id", "type": "string"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/TaxonomyDeletePreviewSchema"}}}}}, "tags": ["private"], "security": [{"SessionAuth": []}]}}, "/api/series/{public_id}/delete/": {"post": {"operationId": "apps_catalog_api_entity_crud_series_delete", "summary": "Series Delete", "parameters": [{"in": "path", "name": "public_id", "schema": {"title": "Public Id", "type": "string"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/DeleteResponseSchema"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"anyOf": [{"$ref": "#/components/schemas/SoftDeleteBlockedSchema"}, {"$ref": "#/components/schemas/AlreadyDeletedSchema"}], "title": "Response"}}}}, "429": {"description": "Too Many Requests", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/RateLimitErrorSchema"}}}}}, "tags": ["private"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/ChangeSetInputSchema"}}}, "required": true}, "security": [{"SessionAuth": []}]}}, "/api/series/{public_id}/restore/": {"post": {"operationId": "apps_catalog_api_entity_crud_series_restore", "summary": "Series Restore", "parameters": [{"in": "path", "name": "public_id", "schema": {"title": "Public Id", "type": "string"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/SeriesDetailSchema"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorDetailSchema"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorDetailSchema"}}}}, "429": {"description": "Too Many Requests", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/RateLimitErrorSchema"}}}}}, "tags": ["private"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/ChangeSetInputSchema"}}}, "required": true}, "security": [{"SessionAuth": []}]}}, "/api/franchises/": {"get": {"operationId": "apps_catalog_api_franchises_list_franchises", "summary": "List Franchises", "parameters": [], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"items": {"$ref": "#/components/schemas/FranchiseListItemSchema"}, "title": "Response", "type": "array"}}}}}, "description": "Return every franchise with title count (no pagination).", "tags": ["franchises"]}, "post": {"operationId": "apps_catalog_api_entity_crud_franchise_create", "summary": "Franchise Create", "parameters": [], "responses": {"201": {"description": "Created", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/FranchiseDetailSchema"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ValidationErrorSchema"}}}}, "429": {"description": "Too Many Requests", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/RateLimitErrorSchema"}}}}}, "tags": ["private"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/EntityCreateInputSchema"}}}, "required": true}, "security": [{"SessionAuth": []}]}}, "/api/franchises/{public_id}/claims/": {"patch": {"operationId": "apps_catalog_api_franchises_patch_franchise_claims", "summary": "Patch Franchise Claims", "parameters": [{"in": "path", "name": "public_id", "schema": {"title": "Public Id", "type": "string"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/FranchiseDetailSchema"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ValidationErrorSchema"}}}}}, "description": "Assert per-field claims from the authenticated user, then re-resolve.", "tags": ["private"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/ClaimPatchSchema"}}}, "required": true}, "security": [{"SessionAuth": []}]}}, "/api/franchises/{public_id}/delete-preview/": {"get": {"operationId": "apps_catalog_api_entity_crud_franchise_delete_preview", "summary": "Franchise Delete Preview", "parameters": [{"in": "path", "name": "public_id", "schema": {"title": "Public Id", "type": "string"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/TaxonomyDeletePreviewSchema"}}}}}, "tags": ["private"], "security": [{"SessionAuth": []}]}}, "/api/franchises/{public_id}/delete/": {"post": {"operationId": "apps_catalog_api_entity_crud_franchise_delete", "summary": "Franchise Delete", "parameters": [{"in": "path", "name": "public_id", "schema": {"title": "Public Id", "type": "string"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/DeleteResponseSchema"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"anyOf": [{"$ref": "#/components/schemas/SoftDeleteBlockedSchema"}, {"$ref": "#/components/schemas/AlreadyDeletedSchema"}], "title": "Response"}}}}, "429": {"description": "Too Many Requests", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/RateLimitErrorSchema"}}}}}, "tags": ["private"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/ChangeSetInputSchema"}}}, "required": true}, "security": [{"SessionAuth": []}]}}, "/api/franchises/{public_id}/restore/": {"post": {"operationId": "apps_catalog_api_entity_crud_franchise_restore", "summary": "Franchise Restore", "parameters": [{"in": "path", "name": "public_id", "schema": {"title": "Public Id", "type": "string"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/FranchiseDetailSchema"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorDetailSchema"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorDetailSchema"}}}}, "429": {"description": "Too Many Requests", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/RateLimitErrorSchema"}}}}}, "tags": ["private"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/ChangeSetInputSchema"}}}, "required": true}, "security": [{"SessionAuth": []}]}}, "/api/cabinets/": {"get": {"operationId": "apps_catalog_api_taxonomy_list_cabinets", "summary": "List Cabinets", "parameters": [], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"items": {"$ref": "#/components/schemas/TaxonomyWithTitleCountSchema"}, "title": "Response", "type": "array"}}}}}, "tags": ["cabinets"]}, "post": {"operationId": "apps_catalog_api_entity_crud_cabinet_create", "summary": "Cabinet Create", "parameters": [], "responses": {"201": {"description": "Created", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/TaxonomySchema"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ValidationErrorSchema"}}}}, "429": {"description": "Too Many Requests", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/RateLimitErrorSchema"}}}}}, "tags": ["private"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/EntityCreateInputSchema"}}}, "required": true}, "security": [{"SessionAuth": []}]}}, "/api/cabinets/{public_id}/claims/": {"patch": {"operationId": "apps_catalog_api_taxonomy_patch_cabinet", "summary": "Patch Cabinet", "parameters": [{"in": "path", "name": "public_id", "schema": {"title": "Public Id", "type": "string"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/TaxonomySchema"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ValidationErrorSchema"}}}}}, "tags": ["private"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/ClaimPatchSchema"}}}, "required": true}, "security": [{"SessionAuth": []}]}}, "/api/cabinets/{public_id}/delete-preview/": {"get": {"operationId": "apps_catalog_api_entity_crud_cabinet_delete_preview", "summary": "Cabinet Delete Preview", "parameters": [{"in": "path", "name": "public_id", "schema": {"title": "Public Id", "type": "string"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/TaxonomyDeletePreviewSchema"}}}}}, "tags": ["private"], "security": [{"SessionAuth": []}]}}, "/api/cabinets/{public_id}/delete/": {"post": {"operationId": "apps_catalog_api_entity_crud_cabinet_delete", "summary": "Cabinet Delete", "parameters": [{"in": "path", "name": "public_id", "schema": {"title": "Public Id", "type": "string"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/DeleteResponseSchema"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"anyOf": [{"$ref": "#/components/schemas/SoftDeleteBlockedSchema"}, {"$ref": "#/components/schemas/AlreadyDeletedSchema"}], "title": "Response"}}}}, "429": {"description": "Too Many Requests", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/RateLimitErrorSchema"}}}}}, "tags": ["private"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/ChangeSetInputSchema"}}}, "required": true}, "security": [{"SessionAuth": []}]}}, "/api/cabinets/{public_id}/restore/": {"post": {"operationId": "apps_catalog_api_entity_crud_cabinet_restore", "summary": "Cabinet Restore", "parameters": [{"in": "path", "name": "public_id", "schema": {"title": "Public Id", "type": "string"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/TaxonomySchema"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorDetailSchema"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorDetailSchema"}}}}, "429": {"description": "Too Many Requests", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/RateLimitErrorSchema"}}}}}, "tags": ["private"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/ChangeSetInputSchema"}}}, "required": true}, "security": [{"SessionAuth": []}]}}, "/api/credit-roles/": {"get": {"operationId": "apps_catalog_api_taxonomy_list_credit_roles", "summary": "List Credit Roles", "parameters": [], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"items": {"$ref": "#/components/schemas/TaxonomySchema"}, "title": "Response", "type": "array"}}}}}, "tags": ["credit-roles"]}, "post": {"operationId": "apps_catalog_api_entity_crud_creditrole_create", "summary": "Creditrole Create", "parameters": [], "responses": {"201": {"description": "Created", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/CreditRoleDetailSchema"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ValidationErrorSchema"}}}}, "429": {"description": "Too Many Requests", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/RateLimitErrorSchema"}}}}}, "tags": ["private"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/EntityCreateInputSchema"}}}, "required": true}, "security": [{"SessionAuth": []}]}}, "/api/credit-roles/{public_id}/claims/": {"patch": {"operationId": "apps_catalog_api_taxonomy_patch_credit_role", "summary": "Patch Credit Role", "parameters": [{"in": "path", "name": "public_id", "schema": {"title": "Public Id", "type": "string"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/CreditRoleDetailSchema"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ValidationErrorSchema"}}}}}, "tags": ["private"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/ClaimPatchSchema"}}}, "required": true}, "security": [{"SessionAuth": []}]}}, "/api/credit-roles/{public_id}/delete-preview/": {"get": {"operationId": "apps_catalog_api_entity_crud_creditrole_delete_preview", "summary": "Creditrole Delete Preview", "parameters": [{"in": "path", "name": "public_id", "schema": {"title": "Public Id", "type": "string"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/TaxonomyDeletePreviewSchema"}}}}}, "tags": ["private"], "security": [{"SessionAuth": []}]}}, "/api/credit-roles/{public_id}/delete/": {"post": {"operationId": "apps_catalog_api_entity_crud_creditrole_delete", "summary": "Creditrole Delete", "parameters": [{"in": "path", "name": "public_id", "schema": {"title": "Public Id", "type": "string"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/DeleteResponseSchema"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"anyOf": [{"$ref": "#/components/schemas/SoftDeleteBlockedSchema"}, {"$ref": "#/components/schemas/AlreadyDeletedSchema"}], "title": "Response"}}}}, "429": {"description": "Too Many Requests", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/RateLimitErrorSchema"}}}}}, "tags": ["private"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/ChangeSetInputSchema"}}}, "required": true}, "security": [{"SessionAuth": []}]}}, "/api/credit-roles/{public_id}/restore/": {"post": {"operationId": "apps_catalog_api_entity_crud_creditrole_restore", "summary": "Creditrole Restore", "parameters": [{"in": "path", "name": "public_id", "schema": {"title": "Public Id", "type": "string"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/CreditRoleDetailSchema"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorDetailSchema"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorDetailSchema"}}}}, "429": {"description": "Too Many Requests", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/RateLimitErrorSchema"}}}}}, "tags": ["private"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/ChangeSetInputSchema"}}}, "required": true}, "security": [{"SessionAuth": []}]}}, "/api/credit-roles/{public_id}": {"get": {"operationId": "apps_catalog_api_taxonomy_get_credit_role", "summary": "Get Credit Role", "parameters": [{"in": "path", "name": "public_id", "schema": {"title": "Public Id", "type": "string"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/CreditRoleDetailSchema"}}}}}, "tags": ["credit-roles"]}}, "/api/display-subtypes/{public_id}/claims/": {"patch": {"operationId": "apps_catalog_api_taxonomy_patch_display_subtype", "summary": "Patch Display Subtype", "parameters": [{"in": "path", "name": "public_id", "schema": {"title": "Public Id", "type": "string"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/TaxonomySchema"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ValidationErrorSchema"}}}}}, "tags": ["private"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/ClaimPatchSchema"}}}, "required": true}, "security": [{"SessionAuth": []}]}}, "/api/display-subtypes/{public_id}/delete-preview/": {"get": {"operationId": "apps_catalog_api_entity_crud_displaysubtype_delete_preview", "summary": "Displaysubtype Delete Preview", "parameters": [{"in": "path", "name": "public_id", "schema": {"title": "Public Id", "type": "string"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/TaxonomyDeletePreviewSchema"}}}}}, "tags": ["private"], "security": [{"SessionAuth": []}]}}, "/api/display-subtypes/{public_id}/delete/": {"post": {"operationId": "apps_catalog_api_entity_crud_displaysubtype_delete", "summary": "Displaysubtype Delete", "parameters": [{"in": "path", "name": "public_id", "schema": {"title": "Public Id", "type": "string"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/DeleteResponseSchema"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"anyOf": [{"$ref": "#/components/schemas/SoftDeleteBlockedSchema"}, {"$ref": "#/components/schemas/AlreadyDeletedSchema"}], "title": "Response"}}}}, "429": {"description": "Too Many Requests", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/RateLimitErrorSchema"}}}}}, "tags": ["private"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/ChangeSetInputSchema"}}}, "required": true}, "security": [{"SessionAuth": []}]}}, "/api/display-subtypes/{public_id}/restore/": {"post": {"operationId": "apps_catalog_api_entity_crud_displaysubtype_restore", "summary": "Displaysubtype Restore", "parameters": [{"in": "path", "name": "public_id", "schema": {"title": "Public Id", "type": "string"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/TaxonomySchema"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorDetailSchema"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorDetailSchema"}}}}, "429": {"description": "Too Many Requests", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/RateLimitErrorSchema"}}}}}, "tags": ["private"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/ChangeSetInputSchema"}}}, "required": true}, "security": [{"SessionAuth": []}]}}, "/api/game-formats/": {"get": {"operationId": "apps_catalog_api_taxonomy_list_game_formats", "summary": "List Game Formats", "parameters": [], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"items": {"$ref": "#/components/schemas/TaxonomyWithTitleCountSchema"}, "title": "Response", "type": "array"}}}}}, "tags": ["game-formats"]}, "post": {"operationId": "apps_catalog_api_entity_crud_gameformat_create", "summary": "Gameformat Create", "parameters": [], "responses": {"201": {"description": "Created", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/TaxonomySchema"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ValidationErrorSchema"}}}}, "429": {"description": "Too Many Requests", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/RateLimitErrorSchema"}}}}}, "tags": ["private"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/EntityCreateInputSchema"}}}, "required": true}, "security": [{"SessionAuth": []}]}}, "/api/game-formats/{public_id}/claims/": {"patch": {"operationId": "apps_catalog_api_taxonomy_patch_game_format", "summary": "Patch Game Format", "parameters": [{"in": "path", "name": "public_id", "schema": {"title": "Public Id", "type": "string"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/TaxonomySchema"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ValidationErrorSchema"}}}}}, "tags": ["private"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/ClaimPatchSchema"}}}, "required": true}, "security": [{"SessionAuth": []}]}}, "/api/game-formats/{public_id}/delete-preview/": {"get": {"operationId": "apps_catalog_api_entity_crud_gameformat_delete_preview", "summary": "Gameformat Delete Preview", "parameters": [{"in": "path", "name": "public_id", "schema": {"title": "Public Id", "type": "string"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/TaxonomyDeletePreviewSchema"}}}}}, "tags": ["private"], "security": [{"SessionAuth": []}]}}, "/api/game-formats/{public_id}/delete/": {"post": {"operationId": "apps_catalog_api_entity_crud_gameformat_delete", "summary": "Gameformat Delete", "parameters": [{"in": "path", "name": "public_id", "schema": {"title": "Public Id", "type": "string"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/DeleteResponseSchema"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"anyOf": [{"$ref": "#/components/schemas/SoftDeleteBlockedSchema"}, {"$ref": "#/components/schemas/AlreadyDeletedSchema"}], "title": "Response"}}}}, "429": {"description": "Too Many Requests", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/RateLimitErrorSchema"}}}}}, "tags": ["private"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/ChangeSetInputSchema"}}}, "required": true}, "security": [{"SessionAuth": []}]}}, "/api/game-formats/{public_id}/restore/": {"post": {"operationId": "apps_catalog_api_entity_crud_gameformat_restore", "summary": "Gameformat Restore", "parameters": [{"in": "path", "name": "public_id", "schema": {"title": "Public Id", "type": "string"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/TaxonomySchema"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorDetailSchema"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorDetailSchema"}}}}, "429": {"description": "Too Many Requests", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/RateLimitErrorSchema"}}}}}, "tags": ["private"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/ChangeSetInputSchema"}}}, "required": true}, "security": [{"SessionAuth": []}]}}, "/api/gameplay-features/": {"get": {"operationId": "apps_catalog_api_gameplay_features_list_gameplay_features", "summary": "List Gameplay Features", "parameters": [], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"items": {"$ref": "#/components/schemas/GameplayFeatureListItemSchema"}, "title": "Response", "type": "array"}}}}}, "tags": ["gameplay-features"]}, "post": {"operationId": "apps_catalog_api_entity_crud_gameplayfeature_create", "summary": "Gameplayfeature Create", "parameters": [], "responses": {"201": {"description": "Created", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/GameplayFeatureDetailSchema"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ValidationErrorSchema"}}}}, "429": {"description": "Too Many Requests", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/RateLimitErrorSchema"}}}}}, "tags": ["private"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/EntityCreateInputSchema"}}}, "required": true}, "security": [{"SessionAuth": []}]}}, "/api/gameplay-features/{public_id}/claims/": {"patch": {"operationId": "apps_catalog_api_gameplay_features_patch_gameplay_feature_claims", "summary": "Patch Gameplay Feature Claims", "parameters": [{"in": "path", "name": "public_id", "schema": {"title": "Public Id", "type": "string"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/GameplayFeatureDetailSchema"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ValidationErrorSchema"}}}}}, "description": "Assert per-field claims from the authenticated user, then re-resolve.", "tags": ["private"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/HierarchyClaimPatchSchema"}}}, "required": true}, "security": [{"SessionAuth": []}]}}, "/api/gameplay-features/{public_id}/delete-preview/": {"get": {"operationId": "apps_catalog_api_entity_crud_gameplayfeature_delete_preview", "summary": "Gameplayfeature Delete Preview", "parameters": [{"in": "path", "name": "public_id", "schema": {"title": "Public Id", "type": "string"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/TaxonomyDeletePreviewSchema"}}}}}, "tags": ["private"], "security": [{"SessionAuth": []}]}}, "/api/gameplay-features/{public_id}/delete/": {"post": {"operationId": "apps_catalog_api_entity_crud_gameplayfeature_delete", "summary": "Gameplayfeature Delete", "parameters": [{"in": "path", "name": "public_id", "schema": {"title": "Public Id", "type": "string"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/DeleteResponseSchema"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"anyOf": [{"$ref": "#/components/schemas/SoftDeleteBlockedSchema"}, {"$ref": "#/components/schemas/AlreadyDeletedSchema"}], "title": "Response"}}}}, "429": {"description": "Too Many Requests", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/RateLimitErrorSchema"}}}}}, "tags": ["private"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/ChangeSetInputSchema"}}}, "required": true}, "security": [{"SessionAuth": []}]}}, "/api/gameplay-features/{public_id}/restore/": {"post": {"operationId": "apps_catalog_api_entity_crud_gameplayfeature_restore", "summary": "Gameplayfeature Restore", "parameters": [{"in": "path", "name": "public_id", "schema": {"title": "Public Id", "type": "string"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/GameplayFeatureDetailSchema"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorDetailSchema"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorDetailSchema"}}}}, "429": {"description": "Too Many Requests", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/RateLimitErrorSchema"}}}}}, "tags": ["private"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/ChangeSetInputSchema"}}}, "required": true}, "security": [{"SessionAuth": []}]}}, "/api/pages/locations/": {"get": {"operationId": "apps_catalog_api_locations_get_location_root", "summary": "Get Location Root", "parameters": [], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/LocationDetailSchema"}}}}}, "description": "Return the global root: all countries as children, all manufacturers.", "tags": ["private"]}}, "/api/pages/locations/{location_path}": {"get": {"operationId": "apps_catalog_api_locations_get_location_detail", "summary": "Get Location Detail", "parameters": [{"in": "path", "name": "location_path", "schema": {"title": "Location Path", "type": "string"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/LocationDetailSchema"}}}}}, "description": "Return detail for any concrete location (1\u2013N segments).", "tags": ["private"]}}, "/api/locations/": {"post": {"operationId": "apps_catalog_api_entity_crud_location_create", "summary": "Location Create", "parameters": [], "responses": {"201": {"description": "Created", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/LocationDetailSchema"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ValidationErrorSchema"}}}}, "429": {"description": "Too Many Requests", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/RateLimitErrorSchema"}}}}}, "tags": ["private"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/LocationTopLevelCreateSchema"}}}, "required": true}, "security": [{"SessionAuth": []}]}}, "/api/locations/{parent_public_id}/children/": {"post": {"operationId": "apps_catalog_api_entity_crud_location_create_child", "summary": "Location Create Child", "parameters": [{"in": "path", "name": "parent_public_id", "schema": {"title": "Parent Public Id", "type": "string"}, "required": true}], "responses": {"201": {"description": "Created", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/LocationDetailSchema"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ValidationErrorSchema"}}}}, "429": {"description": "Too Many Requests", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/RateLimitErrorSchema"}}}}}, "tags": ["private"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/LocationChildCreateSchema"}}}, "required": true}, "security": [{"SessionAuth": []}]}}, "/api/locations/{public_id}/claims/": {"patch": {"operationId": "apps_catalog_api_locations_write_patch_location_claims", "summary": "Patch Location Claims", "parameters": [{"in": "path", "name": "public_id", "schema": {"title": "Public Id", "type": "string"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/LocationDetailSchema"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ValidationErrorSchema"}}}}}, "description": "Apply per-field claims, alias diffs, and (country-only) divisions.\n\nThe PATCH route accepts ``name`` edits via ``data.fields`` even though\nthe frontend in this PR does not surface them (no ``NameEditor``\nregistered, since slug is immutable). ``name`` is editable on the\nmodel \u2014 just not yet exposed in the UI. Do not \"tighten\" by removing\nit; that's tracked in a follow-up that teaches ``NameEditor`` a\nname-only mode.", "tags": ["private"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/LocationPatchClaimSchema"}}}, "required": true}, "security": [{"SessionAuth": []}]}}, "/api/locations/{public_id}/delete-preview/": {"get": {"operationId": "apps_catalog_api_entity_crud_location_delete_preview", "summary": "Location Delete Preview", "parameters": [{"in": "path", "name": "public_id", "schema": {"title": "Public Id", "type": "string"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/TaxonomyDeletePreviewSchema"}}}}}, "tags": ["private"], "security": [{"SessionAuth": []}]}}, "/api/locations/{public_id}/delete/": {"post": {"operationId": "apps_catalog_api_entity_crud_location_delete", "summary": "Location Delete", "parameters": [{"in": "path", "name": "public_id", "schema": {"title": "Public Id", "type": "string"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/DeleteResponseSchema"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"anyOf": [{"$ref": "#/components/schemas/SoftDeleteBlockedSchema"}, {"$ref": "#/components/schemas/AlreadyDeletedSchema"}], "title": "Response"}}}}, "429": {"description": "Too Many Requests", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/RateLimitErrorSchema"}}}}}, "tags": ["private"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/ChangeSetInputSchema"}}}, "required": true}, "security": [{"SessionAuth": []}]}}, "/api/locations/{public_id}/restore/": {"post": {"operationId": "apps_catalog_api_entity_crud_location_restore", "summary": "Location Restore", "parameters": [{"in": "path", "name": "public_id", "schema": {"title": "Public Id", "type": "string"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/LocationDetailSchema"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorDetailSchema"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorDetailSchema"}}}}, "429": {"description": "Too Many Requests", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/RateLimitErrorSchema"}}}}}, "tags": ["private"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/ChangeSetInputSchema"}}}, "required": true}, "security": [{"SessionAuth": []}]}}, "/api/reward-types/": {"get": {"operationId": "apps_catalog_api_taxonomy_list_reward_types", "summary": "List Reward Types", "parameters": [], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"items": {"$ref": "#/components/schemas/TaxonomyWithTitleCountSchema"}, "title": "Response", "type": "array"}}}}}, "tags": ["reward-types"]}, "post": {"operationId": "apps_catalog_api_entity_crud_rewardtype_create", "summary": "Rewardtype Create", "parameters": [], "responses": {"201": {"description": "Created", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/TaxonomySchema"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ValidationErrorSchema"}}}}, "429": {"description": "Too Many Requests", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/RateLimitErrorSchema"}}}}}, "tags": ["private"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/EntityCreateInputSchema"}}}, "required": true}, "security": [{"SessionAuth": []}]}}, "/api/reward-types/{public_id}/claims/": {"patch": {"operationId": "apps_catalog_api_taxonomy_patch_reward_type", "summary": "Patch Reward Type", "parameters": [{"in": "path", "name": "public_id", "schema": {"title": "Public Id", "type": "string"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/RewardTypeDetailSchema"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ValidationErrorSchema"}}}}}, "tags": ["private"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/ClaimPatchSchema"}}}, "required": true}, "security": [{"SessionAuth": []}]}}, "/api/reward-types/{public_id}/delete-preview/": {"get": {"operationId": "apps_catalog_api_entity_crud_rewardtype_delete_preview", "summary": "Rewardtype Delete Preview", "parameters": [{"in": "path", "name": "public_id", "schema": {"title": "Public Id", "type": "string"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/TaxonomyDeletePreviewSchema"}}}}}, "tags": ["private"], "security": [{"SessionAuth": []}]}}, "/api/reward-types/{public_id}/delete/": {"post": {"operationId": "apps_catalog_api_entity_crud_rewardtype_delete", "summary": "Rewardtype Delete", "parameters": [{"in": "path", "name": "public_id", "schema": {"title": "Public Id", "type": "string"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/DeleteResponseSchema"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"anyOf": [{"$ref": "#/components/schemas/SoftDeleteBlockedSchema"}, {"$ref": "#/components/schemas/AlreadyDeletedSchema"}], "title": "Response"}}}}, "429": {"description": "Too Many Requests", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/RateLimitErrorSchema"}}}}}, "tags": ["private"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/ChangeSetInputSchema"}}}, "required": true}, "security": [{"SessionAuth": []}]}}, "/api/reward-types/{public_id}/restore/": {"post": {"operationId": "apps_catalog_api_entity_crud_rewardtype_restore", "summary": "Rewardtype Restore", "parameters": [{"in": "path", "name": "public_id", "schema": {"title": "Public Id", "type": "string"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/TaxonomySchema"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorDetailSchema"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorDetailSchema"}}}}, "429": {"description": "Too Many Requests", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/RateLimitErrorSchema"}}}}}, "tags": ["private"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/ChangeSetInputSchema"}}}, "required": true}, "security": [{"SessionAuth": []}]}}, "/api/tags/": {"get": {"operationId": "apps_catalog_api_taxonomy_list_tags", "summary": "List Tags", "parameters": [], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"items": {"$ref": "#/components/schemas/TaxonomyWithTitleCountSchema"}, "title": "Response", "type": "array"}}}}}, "tags": ["tags"]}, "post": {"operationId": "apps_catalog_api_entity_crud_tag_create", "summary": "Tag Create", "parameters": [], "responses": {"201": {"description": "Created", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/TaxonomySchema"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ValidationErrorSchema"}}}}, "429": {"description": "Too Many Requests", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/RateLimitErrorSchema"}}}}}, "tags": ["private"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/EntityCreateInputSchema"}}}, "required": true}, "security": [{"SessionAuth": []}]}}, "/api/tags/{public_id}/claims/": {"patch": {"operationId": "apps_catalog_api_taxonomy_patch_tag", "summary": "Patch Tag", "parameters": [{"in": "path", "name": "public_id", "schema": {"title": "Public Id", "type": "string"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/TaxonomySchema"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ValidationErrorSchema"}}}}}, "tags": ["private"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/ClaimPatchSchema"}}}, "required": true}, "security": [{"SessionAuth": []}]}}, "/api/tags/{public_id}/delete-preview/": {"get": {"operationId": "apps_catalog_api_entity_crud_tag_delete_preview", "summary": "Tag Delete Preview", "parameters": [{"in": "path", "name": "public_id", "schema": {"title": "Public Id", "type": "string"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/TaxonomyDeletePreviewSchema"}}}}}, "tags": ["private"], "security": [{"SessionAuth": []}]}}, "/api/tags/{public_id}/delete/": {"post": {"operationId": "apps_catalog_api_entity_crud_tag_delete", "summary": "Tag Delete", "parameters": [{"in": "path", "name": "public_id", "schema": {"title": "Public Id", "type": "string"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/DeleteResponseSchema"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"anyOf": [{"$ref": "#/components/schemas/SoftDeleteBlockedSchema"}, {"$ref": "#/components/schemas/AlreadyDeletedSchema"}], "title": "Response"}}}}, "429": {"description": "Too Many Requests", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/RateLimitErrorSchema"}}}}}, "tags": ["private"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/ChangeSetInputSchema"}}}, "required": true}, "security": [{"SessionAuth": []}]}}, "/api/tags/{public_id}/restore/": {"post": {"operationId": "apps_catalog_api_entity_crud_tag_restore", "summary": "Tag Restore", "parameters": [{"in": "path", "name": "public_id", "schema": {"title": "Public Id", "type": "string"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/TaxonomySchema"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorDetailSchema"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorDetailSchema"}}}}, "429": {"description": "Too Many Requests", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/RateLimitErrorSchema"}}}}}, "tags": ["private"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/ChangeSetInputSchema"}}}, "required": true}, "security": [{"SessionAuth": []}]}}, "/api/technology-subgenerations/{public_id}/claims/": {"patch": {"operationId": "apps_catalog_api_taxonomy_patch_technology_subgeneration", "summary": "Patch Technology Subgeneration", "parameters": [{"in": "path", "name": "public_id", "schema": {"title": "Public Id", "type": "string"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/TaxonomySchema"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ValidationErrorSchema"}}}}}, "tags": ["private"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/ClaimPatchSchema"}}}, "required": true}, "security": [{"SessionAuth": []}]}}, "/api/technology-subgenerations/{public_id}/delete-preview/": {"get": {"operationId": "apps_catalog_api_entity_crud_technologysubgeneration_delete_preview", "summary": "Technologysubgeneration Delete Preview", "parameters": [{"in": "path", "name": "public_id", "schema": {"title": "Public Id", "type": "string"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/TaxonomyDeletePreviewSchema"}}}}}, "tags": ["private"], "security": [{"SessionAuth": []}]}}, "/api/technology-subgenerations/{public_id}/delete/": {"post": {"operationId": "apps_catalog_api_entity_crud_technologysubgeneration_delete", "summary": "Technologysubgeneration Delete", "parameters": [{"in": "path", "name": "public_id", "schema": {"title": "Public Id", "type": "string"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/DeleteResponseSchema"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"anyOf": [{"$ref": "#/components/schemas/SoftDeleteBlockedSchema"}, {"$ref": "#/components/schemas/AlreadyDeletedSchema"}], "title": "Response"}}}}, "429": {"description": "Too Many Requests", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/RateLimitErrorSchema"}}}}}, "tags": ["private"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/ChangeSetInputSchema"}}}, "required": true}, "security": [{"SessionAuth": []}]}}, "/api/technology-subgenerations/{public_id}/restore/": {"post": {"operationId": "apps_catalog_api_entity_crud_technologysubgeneration_restore", "summary": "Technologysubgeneration Restore", "parameters": [{"in": "path", "name": "public_id", "schema": {"title": "Public Id", "type": "string"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/TaxonomySchema"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorDetailSchema"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorDetailSchema"}}}}, "429": {"description": "Too Many Requests", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/RateLimitErrorSchema"}}}}}, "tags": ["private"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/ChangeSetInputSchema"}}}, "required": true}, "security": [{"SessionAuth": []}]}}, "/api/pages/title/{public_id}": {"get": {"operationId": "apps_catalog_api_entity_detail_page_title_detail_page", "summary": "Title Detail Page", "parameters": [{"in": "path", "name": "public_id", "schema": {"title": "Public Id", "type": "string"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/TitleDetailSchema"}}}}}, "tags": ["private"]}}, "/api/pages/manufacturer/{public_id}": {"get": {"operationId": "apps_catalog_api_entity_detail_page_manufacturer_detail_page", "summary": "Manufacturer Detail Page", "parameters": [{"in": "path", "name": "public_id", "schema": {"title": "Public Id", "type": "string"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ManufacturerDetailSchema"}}}}}, "tags": ["private"]}}, "/api/pages/model/{public_id}": {"get": {"operationId": "apps_catalog_api_entity_detail_page_model_detail_page", "summary": "Model Detail Page", "parameters": [{"in": "path", "name": "public_id", "schema": {"title": "Public Id", "type": "string"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ModelDetailSchema"}}}}}, "tags": ["private"]}}, "/api/pages/person/{public_id}": {"get": {"operationId": "apps_catalog_api_entity_detail_page_person_detail_page", "summary": "Person Detail Page", "parameters": [{"in": "path", "name": "public_id", "schema": {"title": "Public Id", "type": "string"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/PersonDetailSchema"}}}}}, "tags": ["private"]}}, "/api/pages/series/{public_id}": {"get": {"operationId": "apps_catalog_api_entity_detail_page_series_detail_page", "summary": "Series Detail Page", "parameters": [{"in": "path", "name": "public_id", "schema": {"title": "Public Id", "type": "string"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/SeriesDetailSchema"}}}}}, "tags": ["private"]}}, "/api/pages/corporate-entity/{public_id}": {"get": {"operationId": "apps_catalog_api_entity_detail_page_corporate_entity_detail_page", "summary": "Corporate Entity Detail Page", "parameters": [{"in": "path", "name": "public_id", "schema": {"title": "Public Id", "type": "string"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/CorporateEntityDetailSchema"}}}}}, "tags": ["private"]}}, "/api/pages/gameplay-feature/{public_id}": {"get": {"operationId": "apps_catalog_api_entity_detail_page_gameplay_feature_detail_page", "summary": "Gameplay Feature Detail Page", "parameters": [{"in": "path", "name": "public_id", "schema": {"title": "Public Id", "type": "string"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/GameplayFeatureDetailSchema"}}}}}, "tags": ["private"]}}, "/api/pages/franchise/{public_id}": {"get": {"operationId": "apps_catalog_api_entity_detail_page_franchise_detail_page", "summary": "Franchise Detail Page", "parameters": [{"in": "path", "name": "public_id", "schema": {"title": "Public Id", "type": "string"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/FranchiseDetailSchema"}}}}}, "tags": ["private"]}}, "/api/pages/theme/{public_id}": {"get": {"operationId": "apps_catalog_api_entity_detail_page_theme_detail_page", "summary": "Theme Detail Page", "parameters": [{"in": "path", "name": "public_id", "schema": {"title": "Public Id", "type": "string"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ThemeDetailSchema"}}}}}, "tags": ["private"]}}, "/api/pages/system/{public_id}": {"get": {"operationId": "apps_catalog_api_entity_detail_page_system_detail_page", "summary": "System Detail Page", "parameters": [{"in": "path", "name": "public_id", "schema": {"title": "Public Id", "type": "string"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/SystemDetailSchema"}}}}}, "tags": ["private"]}}, "/api/pages/reward-type/{public_id}": {"get": {"operationId": "apps_catalog_api_entity_detail_page_reward_type_detail_page", "summary": "Reward Type Detail Page", "parameters": [{"in": "path", "name": "public_id", "schema": {"title": "Public Id", "type": "string"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/RewardTypeDetailSchema"}}}}}, "tags": ["private"]}}, "/api/pages/credit-role/{public_id}": {"get": {"operationId": "apps_catalog_api_entity_detail_page_credit_role_detail_page", "summary": "Credit Role Detail Page", "parameters": [{"in": "path", "name": "public_id", "schema": {"title": "Public Id", "type": "string"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/CreditRoleDetailSchema"}}}}}, "tags": ["private"]}}, "/api/pages/tag/{public_id}": {"get": {"operationId": "apps_catalog_api_entity_detail_page_tag_detail_page", "summary": "Tag Detail Page", "parameters": [{"in": "path", "name": "public_id", "schema": {"title": "Public Id", "type": "string"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/TaxonomySchema"}}}}}, "tags": ["private"]}}, "/api/pages/cabinet/{public_id}": {"get": {"operationId": "apps_catalog_api_entity_detail_page_cabinet_detail_page", "summary": "Cabinet Detail Page", "parameters": [{"in": "path", "name": "public_id", "schema": {"title": "Public Id", "type": "string"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/TaxonomySchema"}}}}}, "tags": ["private"]}}, "/api/pages/display-type/{public_id}": {"get": {"operationId": "apps_catalog_api_entity_detail_page_display_type_detail_page", "summary": "Display Type Detail Page", "parameters": [{"in": "path", "name": "public_id", "schema": {"title": "Public Id", "type": "string"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/TaxonomySchema"}}}}}, "tags": ["private"]}}, "/api/pages/display-subtype/{public_id}": {"get": {"operationId": "apps_catalog_api_entity_detail_page_display_subtype_detail_page", "summary": "Display Subtype Detail Page", "parameters": [{"in": "path", "name": "public_id", "schema": {"title": "Public Id", "type": "string"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/TaxonomySchema"}}}}}, "tags": ["private"]}}, "/api/pages/game-format/{public_id}": {"get": {"operationId": "apps_catalog_api_entity_detail_page_game_format_detail_page", "summary": "Game Format Detail Page", "parameters": [{"in": "path", "name": "public_id", "schema": {"title": "Public Id", "type": "string"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/TaxonomySchema"}}}}}, "tags": ["private"]}}, "/api/pages/technology-generation/{public_id}": {"get": {"operationId": "apps_catalog_api_entity_detail_page_technology_generation_detail_page", "summary": "Technology Generation Detail Page", "parameters": [{"in": "path", "name": "public_id", "schema": {"title": "Public Id", "type": "string"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/TaxonomySchema"}}}}}, "tags": ["private"]}}, "/api/pages/technology-subgeneration/{public_id}": {"get": {"operationId": "apps_catalog_api_entity_detail_page_technology_subgeneration_detail_page", "summary": "Technology Subgeneration Detail Page", "parameters": [{"in": "path", "name": "public_id", "schema": {"title": "Public Id", "type": "string"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/TaxonomySchema"}}}}}, "tags": ["private"]}}, "/api/citation-sources/search/": {"get": {"operationId": "apps_citation_api_search_citation_sources", "summary": "Search Citation Sources", "parameters": [{"in": "query", "name": "q", "schema": {"default": "", "title": "Q", "type": "string"}, "required": false}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/CitationSourceSearchResponseSchema"}}}}}, "description": "Typeahead search with URL/ISBN recognition.\n\nReturns search results plus optional recognition metadata when the\ninput is a recognized URL or ISBN.", "tags": ["citation-sources", "private"], "security": [{"SessionAuth": []}]}}, "/api/citation-sources/": {"post": {"operationId": "apps_citation_api_create_citation_source", "summary": "Create Citation Source", "parameters": [], "responses": {"201": {"description": "Created", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/CitationSourceDetailSchema"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorDetailSchema"}}}}}, "description": "Create a new Citation Source, optionally with an initial link.", "tags": ["citation-sources", "private"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/CitationSourceCreateSchema"}}}, "required": true}, "security": [{"SessionAuth": []}]}}, "/api/citation-sources/extract/": {"post": {"operationId": "apps_citation_api_extract_citation_source", "summary": "Extract Citation Source", "parameters": [], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/CitationExtractResultSchema"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorDetailSchema"}}}}, "429": {"description": "Too Many Requests", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorDetailSchema"}}}}}, "description": "Classify input and look up metadata from external APIs.", "tags": ["citation-sources", "private"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/CitationExtractInputSchema"}}}, "required": true}, "security": [{"SessionAuth": []}]}}, "/api/citation-sources/{source_id}/children/": {"get": {"operationId": "apps_citation_api_list_citation_source_children", "summary": "List Citation Source Children", "parameters": [{"in": "path", "name": "source_id", "schema": {"title": "Source Id", "type": "integer"}, "required": true}, {"in": "query", "name": "q", "schema": {"default": "", "title": "Q", "type": "string"}, "required": false}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"items": {"$ref": "#/components/schemas/CitationSourceChildSchema"}, "title": "Response", "type": "array"}}}}}, "description": "Filtered children of a source, searched by name, URL, identifier, or ISBN.", "tags": ["citation-sources", "private"], "security": [{"SessionAuth": []}]}}, "/api/citation-sources/{source_id}/": {"get": {"operationId": "apps_citation_api_get_citation_source", "summary": "Get Citation Source", "parameters": [{"in": "path", "name": "source_id", "schema": {"title": "Source Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/CitationSourceDetailSchema"}}}}}, "description": "Get a Citation Source with its links and children.", "tags": ["citation-sources", "private"], "security": [{"SessionAuth": []}]}, "patch": {"operationId": "apps_citation_api_update_citation_source", "summary": "Update Citation Source", "parameters": [{"in": "path", "name": "source_id", "schema": {"title": "Source Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/CitationSourceDetailSchema"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorDetailSchema"}}}}}, "description": "Partially update a Citation Source.", "tags": ["citation-sources", "private"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/CitationSourceUpdateSchema"}}}, "required": true}, "security": [{"SessionAuth": []}]}}, "/api/citation-sources/{source_id}/links/": {"post": {"operationId": "apps_citation_api_create_citation_source_link", "summary": "Create Citation Source Link", "parameters": [{"in": "path", "name": "source_id", "schema": {"title": "Source Id", "type": "integer"}, "required": true}], "responses": {"201": {"description": "Created", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/CitationSourceLinkSchema"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorDetailSchema"}}}}}, "description": "Create a link on a Citation Source.", "tags": ["citation-sources", "private"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/CitationSourceLinkCreateSchema"}}}, "required": true}, "security": [{"SessionAuth": []}]}}, "/api/citation-sources/{source_id}/links/{link_id}/": {"patch": {"operationId": "apps_citation_api_update_citation_source_link", "summary": "Update Citation Source Link", "parameters": [{"in": "path", "name": "source_id", "schema": {"title": "Source Id", "type": "integer"}, "required": true}, {"in": "path", "name": "link_id", "schema": {"title": "Link Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/CitationSourceLinkSchema"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorDetailSchema"}}}}}, "description": "Partially update a link on a Citation Source.", "tags": ["citation-sources", "private"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/CitationSourceLinkUpdateSchema"}}}, "required": true}, "security": [{"SessionAuth": []}]}}, "/api/sources/": {"get": {"operationId": "apps_provenance_api_list_sources", "summary": "List Sources", "parameters": [], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"items": {"$ref": "#/components/schemas/CitationSourceSchema"}, "title": "Response", "type": "array"}}}}}, "tags": ["sources", "private"]}}, "/api/claims/{claim_id}/revert/": {"post": {"operationId": "apps_provenance_api_revert_claim", "summary": "Revert Claim", "parameters": [{"in": "path", "name": "claim_id", "schema": {"title": "Claim Id", "type": "integer"}, "required": true}], "responses": {"204": {"description": "No Content"}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorDetailSchema"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorDetailSchema"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorDetailSchema"}}}}}, "description": "Revert (deactivate) a single user claim and re-resolve its entity.\n\nThe claim carries its own entity reference (``content_type`` +\n``object_id``), so we resolve the entity from the claim rather than\nrequiring it in the URL.", "tags": ["claims", "private"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/RevertNoteSchema"}}}, "required": true}, "security": [{"SessionAuth": []}]}}, "/api/changesets/{changeset_id}/undo/": {"post": {"operationId": "apps_provenance_api_undo_changeset", "summary": "Undo Changeset", "parameters": [{"in": "path", "name": "changeset_id", "schema": {"title": "Changeset Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/UndoResultSchema"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorDetailSchema"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorDetailSchema"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorDetailSchema"}}}}}, "description": "Atomically invert a DELETE ChangeSet (restore a soft-deleted tree).\n\nThis powers the post-delete Undo toast. Scoped to delete ChangeSets\nauthored by the caller; other scenarios use per-claim revert.", "tags": ["changesets", "private"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/UndoChangeSetSchema"}}}, "required": true}, "security": [{"SessionAuth": []}]}}, "/api/pages/edit-history/{entity_type}/{public_id}/": {"get": {"operationId": "apps_provenance_page_endpoints_edit_history_page", "summary": "Edit History Page", "parameters": [{"in": "path", "name": "entity_type", "schema": {"title": "Entity Type", "type": "string"}, "required": true}, {"in": "path", "name": "public_id", "schema": {"title": "Public Id", "type": "string"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"items": {"$ref": "#/components/schemas/ChangeSetSchema"}, "title": "Response", "type": "array"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"additionalProperties": true, "title": "Response", "type": "object"}}}}}, "description": "Return changeset-grouped edit history for any catalog entity.\n\nAccepts soft-deleted entities so the provenance record remains\ninspectable after deletion \u2014 matches ``sources_page``.\n\nThe ``:path`` URL converter accepts multi-segment ids without affecting\nsingle-segment models (their ``public_id`` simply has no slashes).", "tags": ["private"]}}, "/api/pages/sources/{entity_type}/{public_id}/": {"get": {"operationId": "apps_provenance_page_endpoints_sources_page", "summary": "Sources Page", "parameters": [{"in": "path", "name": "entity_type", "schema": {"title": "Entity Type", "type": "string"}, "required": true}, {"in": "path", "name": "public_id", "schema": {"title": "Public Id", "type": "string"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/SourcesPageSchema"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"additionalProperties": true, "title": "Response", "type": "object"}}}}}, "description": "Return the sources page model: grouped claims + cited evidence.\n\nAccepts soft-deleted entities so the provenance record remains\ninspectable after deletion \u2014 matches ``edit_history_page``.", "tags": ["private"]}}, "/api/pages/changesets/": {"get": {"operationId": "apps_provenance_page_endpoints_list_changes", "summary": "List Changes", "parameters": [{"in": "query", "name": "entity_type", "schema": {"default": "", "title": "Entity Type", "type": "string"}, "required": false}, {"in": "query", "name": "after", "schema": {"default": "", "title": "After", "type": "string"}, "required": false}, {"in": "query", "name": "before", "schema": {"default": "", "title": "Before", "type": "string"}, "required": false}, {"in": "query", "name": "include_ingest", "schema": {"default": false, "title": "Include Ingest", "type": "boolean"}, "required": false}, {"in": "query", "name": "cursor", "schema": {"default": "", "title": "Cursor", "type": "string"}, "required": false}, {"in": "query", "name": "limit", "schema": {"default": 50, "title": "Limit", "type": "integer"}, "required": false}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ChangeSetListSchema"}}}}}, "description": "Global feed of edits across all entities.", "tags": ["private"]}}, "/api/pages/changesets/{changeset_id}/": {"get": {"operationId": "apps_provenance_page_endpoints_change_detail", "summary": "Change Detail", "parameters": [{"in": "path", "name": "changeset_id", "schema": {"title": "Changeset Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ChangeSetDetailSchema"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"additionalProperties": true, "title": "Response", "type": "object"}}}}}, "description": "Detail view for a single changeset with full field diffs.", "tags": ["private"]}}, "/api/review/claims/": {"get": {"operationId": "apps_provenance_api_list_review_claims", "summary": "List Review Claims", "parameters": [], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"items": {"$ref": "#/components/schemas/ReviewClaimSchema"}, "title": "Response", "type": "array"}}}}}, "description": "Return all active claims flagged for review.", "tags": ["review", "private"]}}, "/api/citation-instances/": {"get": {"operationId": "apps_provenance_api_list_citation_instances", "summary": "List Citation Instances", "parameters": [{"in": "query", "name": "source", "schema": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Source"}, "required": false}, {"in": "query", "name": "claim", "schema": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Claim"}, "required": false}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"items": {"$ref": "#/components/schemas/CitationInstanceSchema"}, "title": "Response", "type": "array"}}}}}, "description": "List Citation Instances, filtered by source and/or claim.", "tags": ["citation-instances", "private"], "security": [{"SessionAuth": []}]}, "post": {"operationId": "apps_provenance_api_create_citation_instance", "summary": "Create Citation Instance", "parameters": [], "responses": {"201": {"description": "Created", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/CitationInstanceSchema"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorDetailSchema"}}}}}, "description": "Create a new CitationInstance for use in ``[[cite:N]]`` markers.", "tags": ["citation-instances", "private"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/CitationInstanceCreateSchema"}}}, "required": true}, "security": [{"SessionAuth": []}]}}, "/api/citation-instances/batch/": {"get": {"operationId": "apps_provenance_api_batch_citation_instances", "summary": "Batch Citation Instances", "parameters": [{"in": "query", "name": "ids", "schema": {"default": "", "title": "Ids", "type": "string"}, "required": false}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"items": {"$ref": "#/components/schemas/CitationInstanceBatchSchema"}, "title": "Response", "type": "array"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorDetailSchema"}}}}}, "description": "Return citation instances by ID for tooltip rendering.", "tags": ["citation-instances", "private"]}}, "/api/media/upload/": {"post": {"operationId": "apps_media_api_upload_media", "summary": "Upload Media", "parameters": [], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/UploadSchema"}}}}, "429": {"description": "Too Many Requests", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorDetailSchema"}}}}}, "description": "Upload an image and create MediaAsset + MediaRendition rows.", "tags": ["media", "private"], "requestBody": {"content": {"multipart/form-data": {"schema": {"properties": {"file": {"format": "binary", "title": "File", "type": "string"}, "entity_type": {"title": "Entity Type", "type": "string"}, "public_id": {"title": "Public Id", "type": "string"}, "category": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Category"}, "is_primary": {"default": false, "title": "Is Primary", "type": "boolean"}}, "required": ["file", "entity_type", "public_id"], "title": "MultiPartBodyParams", "type": "object"}}}, "required": true}, "security": [{"SessionAuth": []}]}}, "/api/media/detach/": {"post": {"operationId": "apps_media_api_detach_media", "summary": "Detach Media", "parameters": [], "responses": {"204": {"description": "No Content"}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorDetailSchema"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ValidationErrorSchema"}}}}}, "description": "Detach a media asset from an entity by asserting an exists=False claim.", "tags": ["media", "private"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/MediaAssetInputSchema"}}}, "required": true}, "security": [{"SessionAuth": []}]}}, "/api/media/set-primary/": {"post": {"operationId": "apps_media_api_set_primary", "summary": "Set Primary", "parameters": [], "responses": {"204": {"description": "No Content"}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorDetailSchema"}}}}, "422": {"description": "Unprocessable Content", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ValidationErrorSchema"}}}}}, "description": "Set a media asset as primary for its category on an entity.", "tags": ["media", "private"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/MediaAssetInputSchema"}}}, "required": true}, "security": [{"SessionAuth": []}]}}}, "components": {"schemas": {"SiteStatsSchema": {"properties": {"titles": {"title": "Titles", "type": "integer"}, "models": {"title": "Models", "type": "integer"}, "manufacturers": {"title": "Manufacturers", "type": "integer"}, "people": {"title": "People", "type": "integer"}}, "required": ["titles", "models", "manufacturers", "people"], "title": "SiteStatsSchema", "type": "object"}, "FieldConstraintSchema": {"description": "Numeric validator-derived constraint for a single field.\n\nThe endpoint serializes with ``exclude_none=True`` so ``min`` / ``max``\nkeys are omitted when unbounded rather than sent as ``null``.", "properties": {"min": {"anyOf": [{"type": "number"}, {"type": "integer"}, {"type": "null"}], "title": "Min"}, "max": {"anyOf": [{"type": "number"}, {"type": "integer"}, {"type": "null"}], "title": "Max"}, "step": {"anyOf": [{"type": "number"}, {"type": "integer"}], "title": "Step"}}, "required": ["step"], "title": "FieldConstraintSchema", "type": "object"}, "AuthStatusSchema": {"properties": {"is_authenticated": {"title": "Is Authenticated", "type": "boolean"}, "id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Id"}, "username": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Username"}}, "required": ["is_authenticated"], "title": "AuthStatusSchema", "type": "object"}, "EntityContributionSchema": {"properties": {"entity_href": {"title": "Entity Href", "type": "string"}, "entity_name": {"title": "Entity Name", "type": "string"}, "entity_type_label": {"title": "Entity Type Label", "type": "string"}, "edit_count": {"title": "Edit Count", "type": "integer"}, "last_edited_at": {"title": "Last Edited At", "type": "string"}}, "required": ["entity_href", "entity_name", "entity_type_label", "edit_count", "last_edited_at"], "title": "EntityContributionSchema", "type": "object"}, "UserChangeSetSchema": {"properties": {"id": {"title": "Id", "type": "integer"}, "note": {"title": "Note", "type": "string"}, "created_at": {"title": "Created At", "type": "string"}, "entity_href": {"title": "Entity Href", "type": "string"}, "entity_name": {"title": "Entity Name", "type": "string"}, "entity_type_label": {"title": "Entity Type Label", "type": "string"}}, "required": ["id", "note", "created_at", "entity_href", "entity_name", "entity_type_label"], "title": "UserChangeSetSchema", "type": "object"}, "UserProfileSchema": {"properties": {"username": {"title": "Username", "type": "string"}, "member_since": {"title": "Member Since", "type": "string"}, "edit_count": {"title": "Edit Count", "type": "integer"}, "entities_edited": {"items": {"$ref": "#/components/schemas/EntityContributionSchema"}, "title": "Entities Edited", "type": "array"}, "recent_edits": {"items": {"$ref": "#/components/schemas/UserChangeSetSchema"}, "title": "Recent Edits", "type": "array"}}, "required": ["username", "member_since", "edit_count", "entities_edited", "recent_edits"], "title": "UserProfileSchema", "type": "object"}, "ErrorDetailSchema": {"description": "Plain 422 / 404 / 409 / 403 error body: just a ``detail`` string.\n\nThe shared shape used for non-structured failures across endpoints.\nStructured 422s (with ``field_errors`` / ``form_errors``) come from\n:class:`apps.catalog.api.edit_claims.StructuredValidationError` and have\ntheir own wire format; this schema covers the simpler \"detail only\" case.", "properties": {"detail": {"title": "Detail", "type": "string"}}, "required": ["detail"], "title": "ErrorDetailSchema", "type": "object"}, "LinkTypeSchema": {"description": "One entry in the autocomplete type picker.", "properties": {"name": {"title": "Name", "type": "string"}, "label": {"title": "Label", "type": "string"}, "description": {"title": "Description", "type": "string"}, "flow": {"title": "Flow", "type": "string"}}, "required": ["name", "label", "description", "flow"], "title": "LinkTypeSchema", "type": "object"}, "LinkTargetListSchema": {"description": "Response body for ``/link-types/targets/``.", "properties": {"results": {"items": {"$ref": "#/components/schemas/LinkTargetSchema"}, "title": "Results", "type": "array"}}, "required": ["results"], "title": "LinkTargetListSchema", "type": "object"}, "LinkTargetSchema": {"description": "Serialized shape for one autocomplete result.\n\nReturned by ``LinkType.autocomplete_serialize`` and consumed by the\n``/link-types/targets/`` endpoint.", "properties": {"ref": {"title": "Ref", "type": "string"}, "label": {"title": "Label", "type": "string"}}, "required": ["ref", "label"], "title": "LinkTargetSchema", "type": "object"}, "CorporateEntityListItemSchema": {"properties": {"name": {"title": "Name", "type": "string"}, "slug": {"title": "Slug", "type": "string"}, "manufacturer": {"$ref": "#/components/schemas/EntityRef"}, "year_start": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Year Start"}, "year_end": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Year End"}, "model_count": {"default": 0, "title": "Model Count", "type": "integer"}, "locations": {"default": [], "items": {"$ref": "#/components/schemas/CorporateEntityLocationSchema"}, "title": "Locations", "type": "array"}}, "required": ["name", "slug", "manufacturer"], "title": "CorporateEntityListItemSchema", "type": "object"}, "CorporateEntityLocationAncestorRef": {"properties": {"display_name": {"title": "Display Name", "type": "string"}, "location_path": {"title": "Location Path", "type": "string"}}, "required": ["display_name", "location_path"], "title": "CorporateEntityLocationAncestorRef", "type": "object"}, "CorporateEntityLocationSchema": {"properties": {"location_path": {"title": "Location Path", "type": "string"}, "location_type": {"title": "Location Type", "type": "string"}, "display_name": {"title": "Display Name", "type": "string"}, "slug": {"title": "Slug", "type": "string"}, "ancestors": {"default": [], "items": {"$ref": "#/components/schemas/CorporateEntityLocationAncestorRef"}, "title": "Ancestors", "type": "array"}}, "required": ["location_path", "location_type", "display_name", "slug"], "title": "CorporateEntityLocationSchema", "type": "object"}, "EntityRef": {"description": "A reference to a named entity with a slug.", "properties": {"name": {"title": "Name", "type": "string"}, "slug": {"title": "Slug", "type": "string"}}, "required": ["name", "slug"], "title": "EntityRef", "type": "object"}, "AttributionSchema": {"description": "License and source attribution for rendered content.", "properties": {"license_slug": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "License Slug"}, "license_name": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "License Name"}, "license_url": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "License Url"}, "permissiveness_rank": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Permissiveness Rank"}, "requires_attribution": {"default": false, "title": "Requires Attribution", "type": "boolean"}, "source_name": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Source Name"}, "source_url": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Source Url"}, "attribution_text": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Attribution Text"}}, "title": "AttributionSchema", "type": "object"}, "CitationLinkSchema": {"description": "A link attached to a citation source.", "properties": {"url": {"title": "Url", "type": "string"}, "label": {"title": "Label", "type": "string"}}, "required": ["url", "label"], "title": "CitationLinkSchema", "type": "object"}, "CorporateEntityDetailSchema": {"properties": {"name": {"title": "Name", "type": "string"}, "slug": {"title": "Slug", "type": "string"}, "description": {"allOf": [{"$ref": "#/components/schemas/RichTextSchema"}], "default": {"text": "", "html": "", "citations": [], "attribution": null}}, "manufacturer": {"$ref": "#/components/schemas/EntityRef"}, "year_start": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Year Start"}, "year_end": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Year End"}, "aliases": {"default": [], "items": {"type": "string"}, "title": "Aliases", "type": "array"}, "locations": {"default": [], "items": {"$ref": "#/components/schemas/CorporateEntityLocationSchema"}, "title": "Locations", "type": "array"}, "titles": {"items": {"$ref": "#/components/schemas/RelatedTitleSchema"}, "title": "Titles", "type": "array"}}, "required": ["name", "slug", "manufacturer", "titles"], "title": "CorporateEntityDetailSchema", "type": "object"}, "InlineCitationSchema": {"description": "Metadata for an inline citation in rendered markdown.", "properties": {"id": {"title": "Id", "type": "integer"}, "index": {"title": "Index", "type": "integer"}, "source_name": {"title": "Source Name", "type": "string"}, "source_type": {"title": "Source Type", "type": "string"}, "author": {"title": "Author", "type": "string"}, "year": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Year"}, "locator": {"title": "Locator", "type": "string"}, "links": {"default": [], "items": {"$ref": "#/components/schemas/CitationLinkSchema"}, "title": "Links", "type": "array"}}, "required": ["id", "index", "source_name", "source_type", "author", "locator"], "title": "InlineCitationSchema", "type": "object"}, "RelatedTitleSchema": {"description": "A title shown in a related-entity list context (manufacturer, system, etc.).", "properties": {"name": {"title": "Name", "type": "string"}, "slug": {"title": "Slug", "type": "string"}, "year": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Year"}, "manufacturer_name": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Manufacturer Name"}, "thumbnail_url": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Thumbnail Url"}}, "required": ["name", "slug"], "title": "RelatedTitleSchema", "type": "object"}, "RichTextSchema": {"description": "A text field bundled with rendered HTML plus provenance metadata.", "properties": {"text": {"default": "", "title": "Text", "type": "string"}, "html": {"default": "", "title": "Html", "type": "string"}, "citations": {"default": [], "items": {"$ref": "#/components/schemas/InlineCitationSchema"}, "title": "Citations", "type": "array"}, "attribution": {"anyOf": [{"$ref": "#/components/schemas/AttributionSchema"}, {"type": "null"}]}}, "title": "RichTextSchema", "type": "object"}, "ValidationErrorBodySchema": {"properties": {"message": {"title": "Message", "type": "string"}, "field_errors": {"additionalProperties": {"type": "string"}, "title": "Field Errors", "type": "object"}, "form_errors": {"items": {"type": "string"}, "title": "Form Errors", "type": "array"}}, "required": ["message", "field_errors", "form_errors"], "title": "ValidationErrorBodySchema", "type": "object"}, "ValidationErrorSchema": {"description": "Structured 422 body produced by ``StructuredValidationError`` and by\nNinja's malformed-body handler (see ``config/api.py``).", "properties": {"detail": {"$ref": "#/components/schemas/ValidationErrorBodySchema"}}, "required": ["detail"], "title": "ValidationErrorSchema", "type": "object"}, "CitationReferenceInputSchema": {"description": "Reference an existing CitationInstance to clone onto a user edit.", "properties": {"citation_instance_id": {"title": "Citation Instance Id", "type": "integer"}}, "required": ["citation_instance_id"], "title": "CitationReferenceInputSchema", "type": "object"}, "CorporateEntityClaimPatchSchema": {"properties": {"note": {"default": "", "title": "Note", "type": "string"}, "citation": {"anyOf": [{"$ref": "#/components/schemas/CitationReferenceInputSchema"}, {"type": "null"}]}, "fields": {"additionalProperties": true, "default": {}, "title": "Fields", "type": "object"}, "aliases": {"anyOf": [{"items": {"type": "string"}, "type": "array"}, {"type": "null"}], "title": "Aliases"}}, "title": "CorporateEntityClaimPatchSchema", "type": "object"}, "BlockingReferrerSchema": {"description": "An active reference blocking a soft-delete.\n\nShared across all lifecycle-entity delete endpoints (Title, Model, \u2026).\nThe walker in :mod:`apps.catalog.api.soft_delete` produces these.", "properties": {"entity_type": {"title": "Entity Type", "type": "string"}, "slug": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Slug"}, "name": {"title": "Name", "type": "string"}, "relation": {"title": "Relation", "type": "string"}, "blocked_target_type": {"title": "Blocked Target Type", "type": "string"}, "blocked_target_slug": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Blocked Target Slug"}}, "required": ["entity_type", "name", "relation", "blocked_target_type"], "title": "BlockingReferrerSchema", "type": "object"}, "TaxonomyDeletePreviewSchema": {"properties": {"name": {"title": "Name", "type": "string"}, "slug": {"title": "Slug", "type": "string"}, "changeset_count": {"title": "Changeset Count", "type": "integer"}, "blocked_by": {"default": [], "items": {"$ref": "#/components/schemas/BlockingReferrerSchema"}, "title": "Blocked By", "type": "array"}, "parent": {"anyOf": [{"$ref": "#/components/schemas/EntityRef"}, {"type": "null"}]}, "active_children_count": {"default": 0, "title": "Active Children Count", "type": "integer"}}, "required": ["name", "slug", "changeset_count"], "title": "TaxonomyDeletePreviewSchema", "type": "object"}, "DeleteResponseSchema": {"description": "Success body for entity soft-delete.\n\nShared by taxonomy, machine-model, and person delete endpoints.\n``affected_slugs`` lists the slugs of entities of the deleted type that\nwere soft-deleted in the operation (the target plus any owned cascade\nchildren of the same type). Title delete is structurally different \u2014\nit cascades into a different type (machine models) \u2014 and uses its own\nresponse schema.", "properties": {"changeset_id": {"title": "Changeset Id", "type": "integer"}, "affected_slugs": {"items": {"type": "string"}, "title": "Affected Slugs", "type": "array"}}, "required": ["changeset_id", "affected_slugs"], "title": "DeleteResponseSchema", "type": "object"}, "AlreadyDeletedSchema": {"additionalProperties": false, "description": "422 response from a delete endpoint when the entity is already soft-deleted.\n\nPaired with :class:`SoftDeleteBlockedSchema` / :class:`PersonSoftDeleteBlockedSchema`\nin a union on the 422 slot: ``blocked_by`` is absent here, so the frontend's\ndelete-flow classifier falls through to ``form_error`` rather than ``blocked``.\n``extra='forbid'`` forces Pydantic union dispatch to reject bodies carrying\n``blocked_by`` and route them to the blocked-schema arm instead.", "properties": {"detail": {"title": "Detail", "type": "string"}}, "required": ["detail"], "title": "AlreadyDeletedSchema", "type": "object"}, "SoftDeleteBlockedSchema": {"description": "422 response from delete endpoints when active referrers block.\n\n``blocked_by`` is empty (list, not null) when the block comes from an\nactive-children count rather than PROTECT referrers \u2014 the frontend's\ndelete-flow classifier relies on ``blocked_by`` being present as an array\nto recognise a blocked outcome. Required (no default) so that Pydantic\nunion dispatch against :class:`AlreadyDeletedSchema` routes bare-``detail``\nbodies to the latter instead of filling an empty default here.", "properties": {"detail": {"title": "Detail", "type": "string"}, "blocked_by": {"items": {"$ref": "#/components/schemas/BlockingReferrerSchema"}, "title": "Blocked By", "type": "array"}, "active_children_count": {"default": 0, "title": "Active Children Count", "type": "integer"}}, "required": ["detail", "blocked_by"], "title": "SoftDeleteBlockedSchema", "type": "object"}, "RateLimitErrorBodySchema": {"properties": {"message": {"title": "Message", "type": "string"}, "bucket": {"title": "Bucket", "type": "string"}, "retry_after": {"title": "Retry After", "type": "integer"}}, "required": ["message", "bucket", "retry_after"], "title": "RateLimitErrorBodySchema", "type": "object"}, "RateLimitErrorSchema": {"description": "Structured 429 body produced by ``RateLimitExceededError``.", "properties": {"detail": {"$ref": "#/components/schemas/RateLimitErrorBodySchema"}}, "required": ["detail"], "title": "RateLimitErrorSchema", "type": "object"}, "ChangeSetInputSchema": {"description": "Base shape for any user-attributed mutation that produces a ChangeSet.", "properties": {"note": {"default": "", "title": "Note", "type": "string"}, "citation": {"anyOf": [{"$ref": "#/components/schemas/CitationReferenceInputSchema"}, {"type": "null"}]}}, "title": "ChangeSetInputSchema", "type": "object"}, "DisplayTypeListItemSchema": {"properties": {"name": {"title": "Name", "type": "string"}, "slug": {"title": "Slug", "type": "string"}, "display_order": {"title": "Display Order", "type": "integer"}, "description": {"allOf": [{"$ref": "#/components/schemas/RichTextSchema"}], "default": {"text": "", "html": "", "citations": [], "attribution": null}}, "aliases": {"default": [], "items": {"type": "string"}, "title": "Aliases", "type": "array"}, "title_count": {"default": 0, "title": "Title Count", "type": "integer"}, "subtypes": {"default": [], "items": {"$ref": "#/components/schemas/TaxonomyWithTitleCountSchema"}, "title": "Subtypes", "type": "array"}}, "required": ["name", "slug", "display_order"], "title": "DisplayTypeListItemSchema", "type": "object"}, "TaxonomyWithTitleCountSchema": {"properties": {"name": {"title": "Name", "type": "string"}, "slug": {"title": "Slug", "type": "string"}, "display_order": {"title": "Display Order", "type": "integer"}, "description": {"allOf": [{"$ref": "#/components/schemas/RichTextSchema"}], "default": {"text": "", "html": "", "citations": [], "attribution": null}}, "aliases": {"default": [], "items": {"type": "string"}, "title": "Aliases", "type": "array"}, "title_count": {"default": 0, "title": "Title Count", "type": "integer"}}, "required": ["name", "slug", "display_order"], "title": "TaxonomyWithTitleCountSchema", "type": "object"}, "TaxonomySchema": {"properties": {"name": {"title": "Name", "type": "string"}, "slug": {"title": "Slug", "type": "string"}, "display_order": {"title": "Display Order", "type": "integer"}, "description": {"allOf": [{"$ref": "#/components/schemas/RichTextSchema"}], "default": {"text": "", "html": "", "citations": [], "attribution": null}}, "aliases": {"default": [], "items": {"type": "string"}, "title": "Aliases", "type": "array"}}, "required": ["name", "slug", "display_order"], "title": "TaxonomySchema", "type": "object"}, "EntityCreateInputSchema": {"description": "Base shape for catalog entity create operations.", "properties": {"note": {"default": "", "title": "Note", "type": "string"}, "citation": {"anyOf": [{"$ref": "#/components/schemas/CitationReferenceInputSchema"}, {"type": "null"}]}, "name": {"title": "Name", "type": "string"}, "slug": {"title": "Slug", "type": "string"}}, "required": ["name", "slug"], "title": "EntityCreateInputSchema", "type": "object"}, "ClaimPatchSchema": {"properties": {"note": {"default": "", "title": "Note", "type": "string"}, "citation": {"anyOf": [{"$ref": "#/components/schemas/CitationReferenceInputSchema"}, {"type": "null"}]}, "fields": {"additionalProperties": true, "title": "Fields", "type": "object"}}, "required": ["fields"], "title": "ClaimPatchSchema", "type": "object"}, "TechnologyGenerationListItemSchema": {"properties": {"name": {"title": "Name", "type": "string"}, "slug": {"title": "Slug", "type": "string"}, "display_order": {"title": "Display Order", "type": "integer"}, "description": {"allOf": [{"$ref": "#/components/schemas/RichTextSchema"}], "default": {"text": "", "html": "", "citations": [], "attribution": null}}, "aliases": {"default": [], "items": {"type": "string"}, "title": "Aliases", "type": "array"}, "title_count": {"default": 0, "title": "Title Count", "type": "integer"}, "subgenerations": {"default": [], "items": {"$ref": "#/components/schemas/TaxonomyWithTitleCountSchema"}, "title": "Subgenerations", "type": "array"}}, "required": ["name", "slug", "display_order"], "title": "TechnologyGenerationListItemSchema", "type": "object"}, "PaginationParamsSchema": {"properties": {"page": {"default": 1, "minimum": 1, "title": "Page", "type": "integer"}, "page_size": {"anyOf": [{"minimum": 1, "type": "integer"}, {"type": "null"}], "title": "Page Size"}}, "title": "PaginationParamsSchema", "type": "object"}, "ModelListItemSchema": {"properties": {"name": {"title": "Name", "type": "string"}, "slug": {"title": "Slug", "type": "string"}, "manufacturer": {"anyOf": [{"$ref": "#/components/schemas/EntityRef"}, {"type": "null"}]}, "year": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Year"}, "technology_generation": {"anyOf": [{"$ref": "#/components/schemas/EntityRef"}, {"type": "null"}]}, "display_type": {"anyOf": [{"$ref": "#/components/schemas/EntityRef"}, {"type": "null"}]}, "ipdb_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Ipdb Id"}, "ipdb_rating": {"anyOf": [{"type": "number"}, {"type": "null"}], "title": "Ipdb Rating"}, "pinside_rating": {"anyOf": [{"type": "number"}, {"type": "null"}], "title": "Pinside Rating"}, "themes": {"default": [], "items": {"$ref": "#/components/schemas/EntityRef"}, "title": "Themes", "type": "array"}, "thumbnail_url": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Thumbnail Url"}}, "required": ["name", "slug"], "title": "ModelListItemSchema", "type": "object"}, "ModelListSchema": {"properties": {"items": {"items": {"$ref": "#/components/schemas/ModelListItemSchema"}, "title": "Items", "type": "array"}, "count": {"description": "Total items count.", "title": "Count", "type": "integer"}}, "required": ["items", "count"], "title": "ModelListSchema", "type": "object"}, "ModelRecentSchema": {"properties": {"name": {"title": "Name", "type": "string"}, "slug": {"title": "Slug", "type": "string"}, "manufacturer_name": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Manufacturer Name"}, "year": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Year"}, "thumbnail_url": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Thumbnail Url"}}, "required": ["name", "slug"], "title": "ModelRecentSchema", "type": "object"}, "ModelGridItemSchema": {"properties": {"name": {"title": "Name", "type": "string"}, "slug": {"title": "Slug", "type": "string"}, "year": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Year"}, "manufacturer_name": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Manufacturer Name"}, "technology_generation_name": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Technology Generation Name"}, "thumbnail_url": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Thumbnail Url"}, "abbreviations": {"default": [], "items": {"type": "string"}, "title": "Abbreviations", "type": "array"}, "search_text": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Search Text"}, "title_slug": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Title Slug"}}, "required": ["name", "slug"], "title": "ModelGridItemSchema", "type": "object"}, "EditOptionSchema": {"properties": {"slug": {"title": "Slug", "type": "string"}, "label": {"title": "Label", "type": "string"}}, "required": ["slug", "label"], "title": "EditOptionSchema", "type": "object"}, "ModelEditOptionsSchema": {"properties": {"themes": {"items": {"$ref": "#/components/schemas/EditOptionSchema"}, "title": "Themes", "type": "array"}, "tags": {"items": {"$ref": "#/components/schemas/EditOptionSchema"}, "title": "Tags", "type": "array"}, "reward_types": {"items": {"$ref": "#/components/schemas/EditOptionSchema"}, "title": "Reward Types", "type": "array"}, "gameplay_features": {"items": {"$ref": "#/components/schemas/EditOptionSchema"}, "title": "Gameplay Features", "type": "array"}, "technology_generations": {"items": {"$ref": "#/components/schemas/EditOptionSchema"}, "title": "Technology Generations", "type": "array"}, "technology_subgenerations": {"items": {"$ref": "#/components/schemas/EditOptionSchema"}, "title": "Technology Subgenerations", "type": "array"}, "display_types": {"items": {"$ref": "#/components/schemas/EditOptionSchema"}, "title": "Display Types", "type": "array"}, "display_subtypes": {"items": {"$ref": "#/components/schemas/EditOptionSchema"}, "title": "Display Subtypes", "type": "array"}, "cabinets": {"items": {"$ref": "#/components/schemas/EditOptionSchema"}, "title": "Cabinets", "type": "array"}, "game_formats": {"items": {"$ref": "#/components/schemas/EditOptionSchema"}, "title": "Game Formats", "type": "array"}, "systems": {"items": {"$ref": "#/components/schemas/EditOptionSchema"}, "title": "Systems", "type": "array"}, "corporate_entities": {"items": {"$ref": "#/components/schemas/EditOptionSchema"}, "title": "Corporate Entities", "type": "array"}, "people": {"items": {"$ref": "#/components/schemas/EditOptionSchema"}, "title": "People", "type": "array"}, "credit_roles": {"items": {"$ref": "#/components/schemas/EditOptionSchema"}, "title": "Credit Roles", "type": "array"}, "titles": {"items": {"$ref": "#/components/schemas/EditOptionSchema"}, "title": "Titles", "type": "array"}, "models": {"items": {"$ref": "#/components/schemas/EditOptionSchema"}, "title": "Models", "type": "array"}}, "required": ["themes", "tags", "reward_types", "gameplay_features", "technology_generations", "technology_subgenerations", "display_types", "display_subtypes", "cabinets", "game_formats", "systems", "corporate_entities", "people", "credit_roles", "titles", "models"], "title": "ModelEditOptionsSchema", "type": "object"}, "CreditSchema": {"properties": {"person": {"$ref": "#/components/schemas/EntityRef"}, "role": {"title": "Role", "type": "string"}, "role_display": {"title": "Role Display", "type": "string"}, "role_sort_order": {"title": "Role Sort Order", "type": "integer"}}, "required": ["person", "role", "role_display", "role_sort_order"], "title": "CreditSchema", "type": "object"}, "GameplayFeatureRef": {"properties": {"name": {"title": "Name", "type": "string"}, "slug": {"title": "Slug", "type": "string"}, "count": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Count"}}, "required": ["name", "slug"], "title": "GameplayFeatureRef", "type": "object"}, "JsonBody": {"additionalProperties": true, "type": "object"}, "MediaRenditionsSchema": {"description": "Public URLs for the renditions exposed in catalog payloads.", "properties": {"thumb": {"title": "Thumb", "type": "string"}, "display": {"title": "Display", "type": "string"}}, "required": ["thumb", "display"], "title": "MediaRenditionsSchema", "type": "object"}, "ModelDetailSchema": {"properties": {"name": {"title": "Name", "type": "string"}, "slug": {"title": "Slug", "type": "string"}, "manufacturer": {"anyOf": [{"$ref": "#/components/schemas/EntityRef"}, {"type": "null"}]}, "corporate_entity": {"anyOf": [{"$ref": "#/components/schemas/EntityRef"}, {"type": "null"}]}, "year": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Year"}, "month": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Month"}, "technology_generation": {"anyOf": [{"$ref": "#/components/schemas/EntityRef"}, {"type": "null"}]}, "technology_subgeneration": {"anyOf": [{"$ref": "#/components/schemas/EntityRef"}, {"type": "null"}]}, "display_type": {"anyOf": [{"$ref": "#/components/schemas/EntityRef"}, {"type": "null"}]}, "player_count": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Player Count"}, "themes": {"default": [], "items": {"$ref": "#/components/schemas/EntityRef"}, "title": "Themes", "type": "array"}, "production_quantity": {"title": "Production Quantity", "type": "string"}, "system": {"anyOf": [{"$ref": "#/components/schemas/EntityRef"}, {"type": "null"}]}, "flipper_count": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Flipper Count"}, "ipdb_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Ipdb Id"}, "opdb_id": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Opdb Id"}, "pinside_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Pinside Id"}, "ipdb_rating": {"anyOf": [{"type": "number"}, {"type": "null"}], "title": "Ipdb Rating"}, "pinside_rating": {"anyOf": [{"type": "number"}, {"type": "null"}], "title": "Pinside Rating"}, "description": {"allOf": [{"$ref": "#/components/schemas/RichTextSchema"}], "default": {"text": "", "html": "", "citations": [], "attribution": null}}, "abbreviations": {"default": [], "items": {"type": "string"}, "title": "Abbreviations", "type": "array"}, "extra_data": {"$ref": "#/components/schemas/JsonBody"}, "credits": {"items": {"$ref": "#/components/schemas/CreditSchema"}, "title": "Credits", "type": "array"}, "thumbnail_url": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Thumbnail Url"}, "hero_image_url": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Hero Image Url"}, "image_attribution": {"anyOf": [{"$ref": "#/components/schemas/AttributionSchema"}, {"type": "null"}]}, "uploaded_media": {"default": [], "items": {"$ref": "#/components/schemas/UploadedMediaSchema"}, "title": "Uploaded Media", "type": "array"}, "variant_features": {"default": [], "items": {"type": "string"}, "title": "Variant Features", "type": "array"}, "variants": {"default": [], "items": {"$ref": "#/components/schemas/ModelVariantSchema"}, "title": "Variants", "type": "array"}, "title": {"anyOf": [{"$ref": "#/components/schemas/EntityRef"}, {"type": "null"}]}, "cabinet": {"anyOf": [{"$ref": "#/components/schemas/EntityRef"}, {"type": "null"}]}, "game_format": {"anyOf": [{"$ref": "#/components/schemas/EntityRef"}, {"type": "null"}]}, "display_subtype": {"anyOf": [{"$ref": "#/components/schemas/EntityRef"}, {"type": "null"}]}, "gameplay_features": {"default": [], "items": {"$ref": "#/components/schemas/GameplayFeatureRef"}, "title": "Gameplay Features", "type": "array"}, "tags": {"default": [], "items": {"$ref": "#/components/schemas/EntityRef"}, "title": "Tags", "type": "array"}, "reward_types": {"default": [], "items": {"$ref": "#/components/schemas/EntityRef"}, "title": "Reward Types", "type": "array"}, "franchise": {"anyOf": [{"$ref": "#/components/schemas/EntityRef"}, {"type": "null"}]}, "series": {"anyOf": [{"$ref": "#/components/schemas/EntityRef"}, {"type": "null"}]}, "variant_of": {"anyOf": [{"$ref": "#/components/schemas/ModelRef"}, {"type": "null"}]}, "variant_siblings": {"default": [], "items": {"$ref": "#/components/schemas/ModelVariantSchema"}, "title": "Variant Siblings", "type": "array"}, "converted_from": {"anyOf": [{"$ref": "#/components/schemas/ModelRef"}, {"type": "null"}]}, "conversions": {"default": [], "items": {"$ref": "#/components/schemas/ModelRef"}, "title": "Conversions", "type": "array"}, "remake_of": {"anyOf": [{"$ref": "#/components/schemas/ModelRef"}, {"type": "null"}]}, "remakes": {"default": [], "items": {"$ref": "#/components/schemas/ModelRef"}, "title": "Remakes", "type": "array"}, "title_models": {"default": [], "items": {"$ref": "#/components/schemas/TitleModelSchema"}, "title": "Title Models", "type": "array"}}, "required": ["name", "slug", "production_quantity", "extra_data", "credits"], "title": "ModelDetailSchema", "type": "object"}, "ModelRef": {"description": "A reference to a machine model with name, slug, and optional year.", "properties": {"name": {"title": "Name", "type": "string"}, "slug": {"title": "Slug", "type": "string"}, "year": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Year"}}, "required": ["name", "slug"], "title": "ModelRef", "type": "object"}, "ModelVariantSchema": {"properties": {"name": {"title": "Name", "type": "string"}, "slug": {"title": "Slug", "type": "string"}, "year": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Year"}, "variant_features": {"default": [], "items": {"type": "string"}, "title": "Variant Features", "type": "array"}}, "required": ["name", "slug"], "title": "ModelVariantSchema", "type": "object"}, "TitleModelSchema": {"description": "A machine model shown in a list context (title detail, theme detail, etc.).", "properties": {"name": {"title": "Name", "type": "string"}, "slug": {"title": "Slug", "type": "string"}, "year": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Year"}, "manufacturer": {"anyOf": [{"$ref": "#/components/schemas/EntityRef"}, {"type": "null"}]}, "technology_generation_name": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Technology Generation Name"}, "thumbnail_url": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Thumbnail Url"}, "variants": {"default": [], "items": {"$ref": "#/components/schemas/TitleModelVariantSchema"}, "title": "Variants", "type": "array"}}, "required": ["name", "slug"], "title": "TitleModelSchema", "type": "object"}, "TitleModelVariantSchema": {"description": "A variant of a machine model, shown nested under its parent.", "properties": {"name": {"title": "Name", "type": "string"}, "slug": {"title": "Slug", "type": "string"}, "year": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Year"}, "thumbnail_url": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Thumbnail Url"}}, "required": ["name", "slug"], "title": "TitleModelVariantSchema", "type": "object"}, "UploadedMediaSchema": {"description": "A media attachment as surfaced on catalog detail endpoints.", "properties": {"asset_uuid": {"title": "Asset Uuid", "type": "string"}, "category": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Category"}, "is_primary": {"title": "Is Primary", "type": "boolean"}, "uploaded_by_username": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Uploaded By Username"}, "renditions": {"$ref": "#/components/schemas/MediaRenditionsSchema"}}, "required": ["asset_uuid", "is_primary", "renditions"], "title": "UploadedMediaSchema", "type": "object"}, "CreditInputSchema": {"properties": {"person_slug": {"title": "Person Slug", "type": "string"}, "role": {"title": "Role", "type": "string"}}, "required": ["person_slug", "role"], "title": "CreditInputSchema", "type": "object"}, "GameplayFeatureInputSchema": {"properties": {"slug": {"title": "Slug", "type": "string"}, "count": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Count"}}, "required": ["slug"], "title": "GameplayFeatureInputSchema", "type": "object"}, "ModelClaimPatchSchema": {"properties": {"note": {"default": "", "title": "Note", "type": "string"}, "citation": {"anyOf": [{"$ref": "#/components/schemas/CitationReferenceInputSchema"}, {"type": "null"}]}, "fields": {"additionalProperties": true, "default": {}, "title": "Fields", "type": "object"}, "themes": {"anyOf": [{"items": {"type": "string"}, "type": "array"}, {"type": "null"}], "title": "Themes"}, "tags": {"anyOf": [{"items": {"type": "string"}, "type": "array"}, {"type": "null"}], "title": "Tags"}, "reward_types": {"anyOf": [{"items": {"type": "string"}, "type": "array"}, {"type": "null"}], "title": "Reward Types"}, "gameplay_features": {"anyOf": [{"items": {"$ref": "#/components/schemas/GameplayFeatureInputSchema"}, "type": "array"}, {"type": "null"}], "title": "Gameplay Features"}, "credits": {"anyOf": [{"items": {"$ref": "#/components/schemas/CreditInputSchema"}, "type": "array"}, {"type": "null"}], "title": "Credits"}, "abbreviations": {"anyOf": [{"items": {"type": "string"}, "type": "array"}, {"type": "null"}], "title": "Abbreviations"}}, "title": "ModelClaimPatchSchema", "type": "object"}, "ModelDeletePreviewSchema": {"properties": {"name": {"title": "Name", "type": "string"}, "slug": {"title": "Slug", "type": "string"}, "changeset_count": {"title": "Changeset Count", "type": "integer"}, "blocked_by": {"default": [], "items": {"$ref": "#/components/schemas/BlockingReferrerSchema"}, "title": "Blocked By", "type": "array"}, "parent": {"$ref": "#/components/schemas/EntityRef"}}, "required": ["name", "slug", "changeset_count", "parent"], "title": "ModelDeletePreviewSchema", "type": "object"}, "TitleListItemSchema": {"properties": {"name": {"title": "Name", "type": "string"}, "slug": {"title": "Slug", "type": "string"}, "abbreviations": {"default": [], "items": {"type": "string"}, "title": "Abbreviations", "type": "array"}, "model_count": {"default": 0, "title": "Model Count", "type": "integer"}, "manufacturer": {"anyOf": [{"$ref": "#/components/schemas/EntityRef"}, {"type": "null"}]}, "year": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Year"}, "thumbnail_url": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Thumbnail Url"}, "tech_generations": {"default": [], "items": {"$ref": "#/components/schemas/EntityRef"}, "title": "Tech Generations", "type": "array"}, "display_types": {"default": [], "items": {"$ref": "#/components/schemas/EntityRef"}, "title": "Display Types", "type": "array"}, "player_counts": {"default": [], "items": {"type": "integer"}, "title": "Player Counts", "type": "array"}, "systems": {"default": [], "items": {"$ref": "#/components/schemas/EntityRef"}, "title": "Systems", "type": "array"}, "themes": {"default": [], "items": {"$ref": "#/components/schemas/EntityRef"}, "title": "Themes", "type": "array"}, "gameplay_features": {"default": [], "items": {"$ref": "#/components/schemas/EntityRef"}, "title": "Gameplay Features", "type": "array"}, "reward_types": {"default": [], "items": {"$ref": "#/components/schemas/EntityRef"}, "title": "Reward Types", "type": "array"}, "persons": {"default": [], "items": {"$ref": "#/components/schemas/EntityRef"}, "title": "Persons", "type": "array"}, "franchise": {"anyOf": [{"$ref": "#/components/schemas/EntityRef"}, {"type": "null"}]}, "series": {"anyOf": [{"$ref": "#/components/schemas/EntityRef"}, {"type": "null"}]}, "year_min": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Year Min"}, "year_max": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Year Max"}, "ipdb_rating_max": {"anyOf": [{"type": "number"}, {"type": "null"}], "title": "Ipdb Rating Max"}}, "required": ["name", "slug"], "title": "TitleListItemSchema", "type": "object"}, "TitleListSchema": {"properties": {"items": {"items": {"$ref": "#/components/schemas/TitleListItemSchema"}, "title": "Items", "type": "array"}, "count": {"description": "Total items count.", "title": "Count", "type": "integer"}}, "required": ["items", "count"], "title": "TitleListSchema", "type": "object"}, "AggregatedMediaSchema": {"description": "A media asset from one of the title's models, with its source model.", "properties": {"asset_uuid": {"title": "Asset Uuid", "type": "string"}, "category": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Category"}, "is_primary": {"title": "Is Primary", "type": "boolean"}, "uploaded_by_username": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Uploaded By Username"}, "renditions": {"$ref": "#/components/schemas/MediaRenditionsSchema"}, "source_model": {"$ref": "#/components/schemas/EntityRef"}}, "required": ["asset_uuid", "is_primary", "renditions", "source_model"], "title": "AggregatedMediaSchema", "type": "object"}, "AgreedSpecsSchema": {"description": "Spec fields where all child models of a title agree on the value.", "properties": {"technology_generation": {"anyOf": [{"$ref": "#/components/schemas/EntityRef"}, {"type": "null"}]}, "technology_subgeneration": {"anyOf": [{"$ref": "#/components/schemas/EntityRef"}, {"type": "null"}]}, "display_type": {"anyOf": [{"$ref": "#/components/schemas/EntityRef"}, {"type": "null"}]}, "player_count": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Player Count"}, "flipper_count": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Flipper Count"}, "system": {"anyOf": [{"$ref": "#/components/schemas/EntityRef"}, {"type": "null"}]}, "cabinet": {"anyOf": [{"$ref": "#/components/schemas/EntityRef"}, {"type": "null"}]}, "game_format": {"anyOf": [{"$ref": "#/components/schemas/EntityRef"}, {"type": "null"}]}, "display_subtype": {"anyOf": [{"$ref": "#/components/schemas/EntityRef"}, {"type": "null"}]}, "themes": {"default": [], "items": {"$ref": "#/components/schemas/EntityRef"}, "title": "Themes", "type": "array"}, "gameplay_features": {"default": [], "items": {"$ref": "#/components/schemas/GameplayFeatureRef"}, "title": "Gameplay Features", "type": "array"}, "reward_types": {"default": [], "items": {"$ref": "#/components/schemas/EntityRef"}, "title": "Reward Types", "type": "array"}, "tags": {"default": [], "items": {"$ref": "#/components/schemas/EntityRef"}, "title": "Tags", "type": "array"}, "production_quantity": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Production Quantity"}}, "title": "AgreedSpecsSchema", "type": "object"}, "CrossTitleLinkSchema": {"description": "A cross-title relationship (converted_from / remake_of) contributed by\na specific model under the current title.", "properties": {"relation": {"title": "Relation", "type": "string"}, "other_title": {"$ref": "#/components/schemas/EntityRef"}, "source_model": {"$ref": "#/components/schemas/EntityRef"}}, "required": ["relation", "other_title", "source_model"], "title": "CrossTitleLinkSchema", "type": "object"}, "ReviewLinkSchema": {"description": "A link out to an external page relevant to a needs-review item.", "properties": {"label": {"title": "Label", "type": "string"}, "url": {"title": "Url", "type": "string"}}, "required": ["label", "url"], "title": "ReviewLinkSchema", "type": "object"}, "TitleDetailSchema": {"properties": {"name": {"title": "Name", "type": "string"}, "slug": {"title": "Slug", "type": "string"}, "opdb_id": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Opdb Id"}, "fandom_page_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Fandom Page Id"}, "abbreviations": {"default": [], "items": {"type": "string"}, "title": "Abbreviations", "type": "array"}, "description": {"allOf": [{"$ref": "#/components/schemas/RichTextSchema"}], "default": {"text": "", "html": "", "citations": [], "attribution": null}}, "needs_review": {"default": false, "title": "Needs Review", "type": "boolean"}, "needs_review_notes": {"default": "", "title": "Needs Review Notes", "type": "string"}, "review_links": {"default": [], "items": {"$ref": "#/components/schemas/ReviewLinkSchema"}, "title": "Review Links", "type": "array"}, "hero_image_url": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Hero Image Url"}, "franchise": {"anyOf": [{"$ref": "#/components/schemas/EntityRef"}, {"type": "null"}]}, "machines": {"items": {"$ref": "#/components/schemas/TitleModelSchema"}, "title": "Machines", "type": "array"}, "series": {"anyOf": [{"$ref": "#/components/schemas/EntityRef"}, {"type": "null"}]}, "credits": {"default": [], "items": {"$ref": "#/components/schemas/CreditSchema"}, "title": "Credits", "type": "array"}, "agreed_specs": {"allOf": [{"$ref": "#/components/schemas/AgreedSpecsSchema"}], "default": {"technology_generation": null, "technology_subgeneration": null, "display_type": null, "player_count": null, "flipper_count": null, "system": null, "cabinet": null, "game_format": null, "display_subtype": null, "themes": [], "gameplay_features": [], "reward_types": [], "tags": [], "production_quantity": null}}, "related_titles": {"default": [], "items": {"$ref": "#/components/schemas/CrossTitleLinkSchema"}, "title": "Related Titles", "type": "array"}, "media": {"default": [], "items": {"$ref": "#/components/schemas/AggregatedMediaSchema"}, "title": "Media", "type": "array"}, "model_detail": {"anyOf": [{"$ref": "#/components/schemas/ModelDetailSchema"}, {"type": "null"}]}}, "required": ["name", "slug", "machines"], "title": "TitleDetailSchema", "type": "object"}, "TitleClaimPatchSchema": {"properties": {"note": {"default": "", "title": "Note", "type": "string"}, "citation": {"anyOf": [{"$ref": "#/components/schemas/CitationReferenceInputSchema"}, {"type": "null"}]}, "fields": {"additionalProperties": true, "default": {}, "title": "Fields", "type": "object"}, "abbreviations": {"anyOf": [{"items": {"type": "string"}, "type": "array"}, {"type": "null"}], "title": "Abbreviations"}}, "title": "TitleClaimPatchSchema", "type": "object"}, "TitleDeletePreviewSchema": {"properties": {"name": {"title": "Name", "type": "string"}, "slug": {"title": "Slug", "type": "string"}, "changeset_count": {"title": "Changeset Count", "type": "integer"}, "blocked_by": {"default": [], "items": {"$ref": "#/components/schemas/BlockingReferrerSchema"}, "title": "Blocked By", "type": "array"}, "active_model_count": {"title": "Active Model Count", "type": "integer"}}, "required": ["name", "slug", "changeset_count", "active_model_count"], "title": "TitleDeletePreviewSchema", "type": "object"}, "TitleDeleteResponseSchema": {"properties": {"changeset_id": {"title": "Changeset Id", "type": "integer"}, "affected_titles": {"items": {"type": "string"}, "title": "Affected Titles", "type": "array"}, "affected_models": {"items": {"type": "string"}, "title": "Affected Models", "type": "array"}}, "required": ["changeset_id", "affected_titles", "affected_models"], "title": "TitleDeleteResponseSchema", "type": "object"}, "ManufacturerListItemSchema": {"properties": {"name": {"title": "Name", "type": "string"}, "slug": {"title": "Slug", "type": "string"}, "model_count": {"default": 0, "title": "Model Count", "type": "integer"}}, "required": ["name", "slug"], "title": "ManufacturerListItemSchema", "type": "object"}, "ManufacturerListSchema": {"properties": {"items": {"items": {"$ref": "#/components/schemas/ManufacturerListItemSchema"}, "title": "Items", "type": "array"}, "count": {"description": "Total items count.", "title": "Count", "type": "integer"}}, "required": ["items", "count"], "title": "ManufacturerListSchema", "type": "object"}, "ManufacturerCorporateEntitySchema": {"properties": {"name": {"title": "Name", "type": "string"}, "slug": {"title": "Slug", "type": "string"}, "year_start": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Year Start"}, "year_end": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Year End"}, "locations": {"items": {"$ref": "#/components/schemas/CorporateEntityLocationSchema"}, "title": "Locations", "type": "array"}}, "required": ["name", "slug", "year_start", "year_end", "locations"], "title": "ManufacturerCorporateEntitySchema", "type": "object"}, "ManufacturerDetailSchema": {"properties": {"name": {"title": "Name", "type": "string"}, "slug": {"title": "Slug", "type": "string"}, "description": {"allOf": [{"$ref": "#/components/schemas/RichTextSchema"}], "default": {"text": "", "html": "", "citations": [], "attribution": null}}, "year_start": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Year Start"}, "year_end": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Year End"}, "country": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Country"}, "headquarters": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Headquarters"}, "logo_url": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Logo Url"}, "website": {"default": "", "title": "Website", "type": "string"}, "entities": {"items": {"$ref": "#/components/schemas/ManufacturerCorporateEntitySchema"}, "title": "Entities", "type": "array"}, "titles": {"items": {"$ref": "#/components/schemas/RelatedTitleSchema"}, "title": "Titles", "type": "array"}, "systems": {"items": {"$ref": "#/components/schemas/ManufacturerSystemSchema"}, "title": "Systems", "type": "array"}, "persons": {"default": [], "items": {"$ref": "#/components/schemas/ManufacturerPersonSchema"}, "title": "Persons", "type": "array"}, "uploaded_media": {"default": [], "items": {"$ref": "#/components/schemas/UploadedMediaSchema"}, "title": "Uploaded Media", "type": "array"}}, "required": ["name", "slug", "entities", "titles", "systems"], "title": "ManufacturerDetailSchema", "type": "object"}, "ManufacturerPersonSchema": {"properties": {"name": {"title": "Name", "type": "string"}, "slug": {"title": "Slug", "type": "string"}, "roles": {"default": [], "items": {"type": "string"}, "title": "Roles", "type": "array"}}, "required": ["name", "slug"], "title": "ManufacturerPersonSchema", "type": "object"}, "ManufacturerSystemSchema": {"properties": {"name": {"title": "Name", "type": "string"}, "slug": {"title": "Slug", "type": "string"}}, "required": ["name", "slug"], "title": "ManufacturerSystemSchema", "type": "object"}, "ManufacturerGridItemSchema": {"properties": {"name": {"title": "Name", "type": "string"}, "slug": {"title": "Slug", "type": "string"}, "model_count": {"default": 0, "title": "Model Count", "type": "integer"}, "thumbnail_url": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Thumbnail Url"}, "search_text": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Search Text"}, "locations": {"default": [], "items": {"$ref": "#/components/schemas/EntityRef"}, "title": "Locations", "type": "array"}, "year_min": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Year Min"}, "year_max": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Year Max"}, "persons": {"default": [], "items": {"$ref": "#/components/schemas/EntityRef"}, "title": "Persons", "type": "array"}, "tech_generations": {"default": [], "items": {"$ref": "#/components/schemas/EntityRef"}, "title": "Tech Generations", "type": "array"}}, "required": ["name", "slug"], "title": "ManufacturerGridItemSchema", "type": "object"}, "PersonListItemSchema": {"properties": {"name": {"title": "Name", "type": "string"}, "slug": {"title": "Slug", "type": "string"}, "credit_count": {"default": 0, "title": "Credit Count", "type": "integer"}}, "required": ["name", "slug"], "title": "PersonListItemSchema", "type": "object"}, "PersonListSchema": {"properties": {"items": {"items": {"$ref": "#/components/schemas/PersonListItemSchema"}, "title": "Items", "type": "array"}, "count": {"description": "Total items count.", "title": "Count", "type": "integer"}}, "required": ["items", "count"], "title": "PersonListSchema", "type": "object"}, "PersonDetailSchema": {"properties": {"name": {"title": "Name", "type": "string"}, "slug": {"title": "Slug", "type": "string"}, "description": {"allOf": [{"$ref": "#/components/schemas/RichTextSchema"}], "default": {"text": "", "html": "", "citations": [], "attribution": null}}, "birth_year": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Birth Year"}, "birth_month": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Birth Month"}, "birth_day": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Birth Day"}, "death_year": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Death Year"}, "death_month": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Death Month"}, "death_day": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Death Day"}, "birth_place": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Birth Place"}, "nationality": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Nationality"}, "photo_url": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Photo Url"}, "titles": {"items": {"$ref": "#/components/schemas/PersonTitleSchema"}, "title": "Titles", "type": "array"}, "uploaded_media": {"default": [], "items": {"$ref": "#/components/schemas/UploadedMediaSchema"}, "title": "Uploaded Media", "type": "array"}}, "required": ["name", "slug", "titles"], "title": "PersonDetailSchema", "type": "object"}, "PersonTitleSchema": {"properties": {"name": {"title": "Name", "type": "string"}, "slug": {"title": "Slug", "type": "string"}, "year": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Year"}, "manufacturer_name": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Manufacturer Name"}, "thumbnail_url": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Thumbnail Url"}, "roles": {"default": [], "items": {"type": "string"}, "title": "Roles", "type": "array"}}, "required": ["name", "slug"], "title": "PersonTitleSchema", "type": "object"}, "PersonGridItemSchema": {"properties": {"name": {"title": "Name", "type": "string"}, "slug": {"title": "Slug", "type": "string"}, "aliases": {"default": [], "items": {"type": "string"}, "title": "Aliases", "type": "array"}, "credit_count": {"default": 0, "title": "Credit Count", "type": "integer"}, "thumbnail_url": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Thumbnail Url"}}, "required": ["name", "slug"], "title": "PersonGridItemSchema", "type": "object"}, "PersonDeletePreviewSchema": {"properties": {"name": {"title": "Name", "type": "string"}, "slug": {"title": "Slug", "type": "string"}, "changeset_count": {"title": "Changeset Count", "type": "integer"}, "blocked_by": {"default": [], "items": {"$ref": "#/components/schemas/BlockingReferrerSchema"}, "title": "Blocked By", "type": "array"}, "active_credit_count": {"title": "Active Credit Count", "type": "integer"}}, "required": ["name", "slug", "changeset_count", "active_credit_count"], "title": "PersonDeletePreviewSchema", "type": "object"}, "PersonSoftDeleteBlockedSchema": {"description": "422 response from Person delete when active credits block.\n\nSeparate from :class:`SoftDeleteBlockedSchema` because Credits are\nreferential, not lifecycle-owned children: the count is computed by\njoining Credit to its active parent Model/Series rather than walking an\nFK back from the child (see ``_active_credit_count`` in people.py).\n``blocked_by`` is required for the same union-dispatch reason as\n:class:`SoftDeleteBlockedSchema`.", "properties": {"detail": {"title": "Detail", "type": "string"}, "blocked_by": {"items": {"$ref": "#/components/schemas/BlockingReferrerSchema"}, "title": "Blocked By", "type": "array"}, "active_credit_count": {"default": 0, "title": "Active Credit Count", "type": "integer"}}, "required": ["detail", "blocked_by"], "title": "PersonSoftDeleteBlockedSchema", "type": "object"}, "ThemeListItemSchema": {"properties": {"name": {"title": "Name", "type": "string"}, "slug": {"title": "Slug", "type": "string"}, "aliases": {"default": [], "items": {"type": "string"}, "title": "Aliases", "type": "array"}, "title_count": {"default": 0, "title": "Title Count", "type": "integer"}, "parent_slugs": {"default": [], "items": {"type": "string"}, "title": "Parent Slugs", "type": "array"}}, "required": ["name", "slug"], "title": "ThemeListItemSchema", "type": "object"}, "ThemeDetailSchema": {"properties": {"name": {"title": "Name", "type": "string"}, "slug": {"title": "Slug", "type": "string"}, "description": {"allOf": [{"$ref": "#/components/schemas/RichTextSchema"}], "default": {"text": "", "html": "", "citations": [], "attribution": null}}, "aliases": {"default": [], "items": {"type": "string"}, "title": "Aliases", "type": "array"}, "parents": {"default": [], "items": {"$ref": "#/components/schemas/EntityRef"}, "title": "Parents", "type": "array"}, "children": {"default": [], "items": {"$ref": "#/components/schemas/EntityRef"}, "title": "Children", "type": "array"}, "machines": {"items": {"$ref": "#/components/schemas/TitleModelSchema"}, "title": "Machines", "type": "array"}}, "required": ["name", "slug", "machines"], "title": "ThemeDetailSchema", "type": "object"}, "HierarchyClaimPatchSchema": {"properties": {"note": {"default": "", "title": "Note", "type": "string"}, "citation": {"anyOf": [{"$ref": "#/components/schemas/CitationReferenceInputSchema"}, {"type": "null"}]}, "fields": {"additionalProperties": true, "default": {}, "title": "Fields", "type": "object"}, "parents": {"anyOf": [{"items": {"type": "string"}, "type": "array"}, {"type": "null"}], "title": "Parents"}, "aliases": {"anyOf": [{"items": {"type": "string"}, "type": "array"}, {"type": "null"}], "title": "Aliases"}}, "title": "HierarchyClaimPatchSchema", "type": "object"}, "SystemListItemSchema": {"properties": {"name": {"title": "Name", "type": "string"}, "slug": {"title": "Slug", "type": "string"}, "manufacturer": {"anyOf": [{"$ref": "#/components/schemas/EntityRef"}, {"type": "null"}]}, "model_count": {"default": 0, "title": "Model Count", "type": "integer"}}, "required": ["name", "slug"], "title": "SystemListItemSchema", "type": "object"}, "SystemDetailSchema": {"properties": {"name": {"title": "Name", "type": "string"}, "slug": {"title": "Slug", "type": "string"}, "description": {"allOf": [{"$ref": "#/components/schemas/RichTextSchema"}], "default": {"text": "", "html": "", "citations": [], "attribution": null}}, "manufacturer": {"anyOf": [{"$ref": "#/components/schemas/EntityRef"}, {"type": "null"}]}, "technology_subgeneration": {"anyOf": [{"$ref": "#/components/schemas/EntityRef"}, {"type": "null"}]}, "titles": {"items": {"$ref": "#/components/schemas/RelatedTitleSchema"}, "title": "Titles", "type": "array"}, "sibling_systems": {"default": [], "items": {"$ref": "#/components/schemas/EntityRef"}, "title": "Sibling Systems", "type": "array"}}, "required": ["name", "slug", "titles"], "title": "SystemDetailSchema", "type": "object"}, "SystemCreateSchema": {"properties": {"note": {"default": "", "title": "Note", "type": "string"}, "citation": {"anyOf": [{"$ref": "#/components/schemas/CitationReferenceInputSchema"}, {"type": "null"}]}, "name": {"title": "Name", "type": "string"}, "slug": {"title": "Slug", "type": "string"}, "manufacturer_slug": {"title": "Manufacturer Slug", "type": "string"}}, "required": ["name", "slug", "manufacturer_slug"], "title": "SystemCreateSchema", "type": "object"}, "SeriesListItemSchema": {"properties": {"name": {"title": "Name", "type": "string"}, "slug": {"title": "Slug", "type": "string"}, "description": {"allOf": [{"$ref": "#/components/schemas/RichTextSchema"}], "default": {"text": "", "html": "", "citations": [], "attribution": null}}, "title_count": {"default": 0, "title": "Title Count", "type": "integer"}, "thumbnail_url": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Thumbnail Url"}}, "required": ["name", "slug"], "title": "SeriesListItemSchema", "type": "object"}, "SeriesDetailSchema": {"properties": {"name": {"title": "Name", "type": "string"}, "slug": {"title": "Slug", "type": "string"}, "description": {"allOf": [{"$ref": "#/components/schemas/RichTextSchema"}], "default": {"text": "", "html": "", "citations": [], "attribution": null}}, "titles": {"items": {"$ref": "#/components/schemas/TitleRef"}, "title": "Titles", "type": "array"}, "credits": {"default": [], "items": {"$ref": "#/components/schemas/CreditSchema"}, "title": "Credits", "type": "array"}}, "required": ["name", "slug", "titles"], "title": "SeriesDetailSchema", "type": "object"}, "TitleRef": {"properties": {"name": {"title": "Name", "type": "string"}, "slug": {"title": "Slug", "type": "string"}, "abbreviations": {"default": [], "items": {"type": "string"}, "title": "Abbreviations", "type": "array"}, "model_count": {"default": 0, "title": "Model Count", "type": "integer"}, "manufacturer_name": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Manufacturer Name"}, "year": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Year"}, "thumbnail_url": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Thumbnail Url"}}, "required": ["name", "slug"], "title": "TitleRef", "type": "object"}, "FranchiseListItemSchema": {"properties": {"name": {"title": "Name", "type": "string"}, "slug": {"title": "Slug", "type": "string"}, "title_count": {"default": 0, "title": "Title Count", "type": "integer"}}, "required": ["name", "slug"], "title": "FranchiseListItemSchema", "type": "object"}, "FranchiseDetailSchema": {"properties": {"name": {"title": "Name", "type": "string"}, "slug": {"title": "Slug", "type": "string"}, "description": {"allOf": [{"$ref": "#/components/schemas/RichTextSchema"}], "default": {"text": "", "html": "", "citations": [], "attribution": null}}, "titles": {"items": {"$ref": "#/components/schemas/TitleRef"}, "title": "Titles", "type": "array"}}, "required": ["name", "slug", "titles"], "title": "FranchiseDetailSchema", "type": "object"}, "CreditRoleDetailSchema": {"properties": {"name": {"title": "Name", "type": "string"}, "slug": {"title": "Slug", "type": "string"}, "display_order": {"title": "Display Order", "type": "integer"}, "description": {"allOf": [{"$ref": "#/components/schemas/RichTextSchema"}], "default": {"text": "", "html": "", "citations": [], "attribution": null}}, "aliases": {"default": [], "items": {"type": "string"}, "title": "Aliases", "type": "array"}, "people": {"default": [], "items": {"$ref": "#/components/schemas/PersonGridItemSchema"}, "title": "People", "type": "array"}}, "required": ["name", "slug", "display_order"], "title": "CreditRoleDetailSchema", "type": "object"}, "GameplayFeatureListItemSchema": {"properties": {"name": {"title": "Name", "type": "string"}, "slug": {"title": "Slug", "type": "string"}, "aliases": {"default": [], "items": {"type": "string"}, "title": "Aliases", "type": "array"}, "title_count": {"default": 0, "title": "Title Count", "type": "integer"}, "parent_slugs": {"default": [], "items": {"type": "string"}, "title": "Parent Slugs", "type": "array"}}, "required": ["name", "slug"], "title": "GameplayFeatureListItemSchema", "type": "object"}, "GameplayFeatureDetailSchema": {"properties": {"name": {"title": "Name", "type": "string"}, "slug": {"title": "Slug", "type": "string"}, "description": {"allOf": [{"$ref": "#/components/schemas/RichTextSchema"}], "default": {"text": "", "html": "", "citations": [], "attribution": null}}, "aliases": {"default": [], "items": {"type": "string"}, "title": "Aliases", "type": "array"}, "parents": {"default": [], "items": {"$ref": "#/components/schemas/EntityRef"}, "title": "Parents", "type": "array"}, "children": {"default": [], "items": {"$ref": "#/components/schemas/EntityRef"}, "title": "Children", "type": "array"}, "uploaded_media": {"default": [], "items": {"$ref": "#/components/schemas/UploadedMediaSchema"}, "title": "Uploaded Media", "type": "array"}}, "required": ["name", "slug"], "title": "GameplayFeatureDetailSchema", "type": "object"}, "LocationAncestorRef": {"properties": {"name": {"title": "Name", "type": "string"}, "slug": {"title": "Slug", "type": "string"}, "location_path": {"title": "Location Path", "type": "string"}}, "required": ["name", "slug", "location_path"], "title": "LocationAncestorRef", "type": "object"}, "LocationChildRef": {"properties": {"name": {"title": "Name", "type": "string"}, "slug": {"title": "Slug", "type": "string"}, "location_path": {"title": "Location Path", "type": "string"}, "location_type": {"title": "Location Type", "type": "string"}, "manufacturer_count": {"default": 0, "title": "Manufacturer Count", "type": "integer"}}, "required": ["name", "slug", "location_path", "location_type"], "title": "LocationChildRef", "type": "object"}, "LocationDetailSchema": {"properties": {"name": {"title": "Name", "type": "string"}, "slug": {"title": "Slug", "type": "string"}, "location_path": {"title": "Location Path", "type": "string"}, "location_type": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Location Type"}, "expected_child_type": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Expected Child Type"}, "description": {"allOf": [{"$ref": "#/components/schemas/RichTextSchema"}]}, "short_name": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Short Name"}, "code": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Code"}, "divisions": {"anyOf": [{"items": {"type": "string"}, "type": "array"}, {"type": "null"}], "title": "Divisions"}, "aliases": {"default": [], "items": {"type": "string"}, "title": "Aliases", "type": "array"}, "manufacturer_count": {"default": 0, "title": "Manufacturer Count", "type": "integer"}, "ancestors": {"default": [], "items": {"$ref": "#/components/schemas/LocationAncestorRef"}, "title": "Ancestors", "type": "array"}, "children": {"default": [], "items": {"$ref": "#/components/schemas/LocationChildRef"}, "title": "Children", "type": "array"}, "manufacturers": {"default": [], "items": {"$ref": "#/components/schemas/LocationManufacturerSchema"}, "title": "Manufacturers", "type": "array"}}, "required": ["name", "slug", "location_path"], "title": "LocationDetailSchema", "type": "object"}, "LocationManufacturerSchema": {"properties": {"name": {"title": "Name", "type": "string"}, "slug": {"title": "Slug", "type": "string"}, "model_count": {"default": 0, "title": "Model Count", "type": "integer"}, "thumbnail_url": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Thumbnail Url"}}, "required": ["name", "slug"], "title": "LocationManufacturerSchema", "type": "object"}, "LocationTopLevelCreateSchema": {"additionalProperties": false, "description": "Body for top-level country create.\n\n``extra='forbid'`` rejects any client-supplied ``location_type`` (or\nother unknown field) at the schema layer before any handler code runs.", "properties": {"note": {"default": "", "title": "Note", "type": "string"}, "citation": {"anyOf": [{"$ref": "#/components/schemas/CitationReferenceInputSchema"}, {"type": "null"}]}, "name": {"title": "Name", "type": "string"}, "slug": {"title": "Slug", "type": "string"}, "divisions": {"items": {"type": "string"}, "title": "Divisions", "type": "array"}}, "required": ["name", "slug", "divisions"], "title": "LocationTopLevelCreateSchema", "type": "object"}, "LocationChildCreateSchema": {"additionalProperties": false, "description": "Body for child create.\n\nServer derives ``location_type`` from the parent chain; clients may\nnot supply it (or ``divisions``) \u2014 ``extra='forbid'``.", "properties": {"note": {"default": "", "title": "Note", "type": "string"}, "citation": {"anyOf": [{"$ref": "#/components/schemas/CitationReferenceInputSchema"}, {"type": "null"}]}, "name": {"title": "Name", "type": "string"}, "slug": {"title": "Slug", "type": "string"}}, "required": ["name", "slug"], "title": "LocationChildCreateSchema", "type": "object"}, "LocationPatchClaimSchema": {"additionalProperties": false, "description": "PATCH body for Location claim edits.\n\n``divisions`` is only meaningful on country rows; the handler rejects\nit with a field-level 422 when the resolved row's ``location_type``\nis not ``\"country\"``. This matches the route-level rejection of\n``parent``, ``slug``, and ``location_type`` (immutable after create)\nrather than splitting into per-tier schemas \u2014 the dispatch layer\nbought clearer OpenAPI shapes at a high implementation cost\n(permissive base + manual re-validate + custom error remapping) and\nthe codebase already has handler-level field rejection as a\nconvention.", "properties": {"note": {"default": "", "title": "Note", "type": "string"}, "citation": {"anyOf": [{"$ref": "#/components/schemas/CitationReferenceInputSchema"}, {"type": "null"}]}, "fields": {"additionalProperties": true, "default": {}, "title": "Fields", "type": "object"}, "aliases": {"anyOf": [{"items": {"type": "string"}, "type": "array"}, {"type": "null"}], "title": "Aliases"}, "divisions": {"anyOf": [{"items": {"type": "string"}, "type": "array"}, {"type": "null"}], "title": "Divisions"}}, "title": "LocationPatchClaimSchema", "type": "object"}, "RewardTypeDetailSchema": {"properties": {"name": {"title": "Name", "type": "string"}, "slug": {"title": "Slug", "type": "string"}, "display_order": {"title": "Display Order", "type": "integer"}, "description": {"allOf": [{"$ref": "#/components/schemas/RichTextSchema"}], "default": {"text": "", "html": "", "citations": [], "attribution": null}}, "aliases": {"default": [], "items": {"type": "string"}, "title": "Aliases", "type": "array"}, "machines": {"default": [], "items": {"$ref": "#/components/schemas/TitleModelSchema"}, "title": "Machines", "type": "array"}}, "required": ["name", "slug", "display_order"], "title": "RewardTypeDetailSchema", "type": "object"}, "CitationRecognitionSchema": {"properties": {"parent": {"$ref": "#/components/schemas/CitationSourceParentSchema"}, "child": {"anyOf": [{"$ref": "#/components/schemas/CitationSourceMatchSchema"}, {"type": "null"}]}, "identifier": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Identifier"}}, "required": ["parent"], "title": "CitationRecognitionSchema", "type": "object"}, "CitationSourceMatchSchema": {"properties": {"id": {"title": "Id", "type": "integer"}, "name": {"title": "Name", "type": "string"}, "skip_locator": {"default": false, "title": "Skip Locator", "type": "boolean"}}, "required": ["id", "name"], "title": "CitationSourceMatchSchema", "type": "object"}, "CitationSourceParentSchema": {"properties": {"id": {"title": "Id", "type": "integer"}, "name": {"title": "Name", "type": "string"}}, "required": ["id", "name"], "title": "CitationSourceParentSchema", "type": "object"}, "CitationSourceSearchResponseSchema": {"properties": {"results": {"items": {"$ref": "#/components/schemas/CitationSourceSearchSchema"}, "title": "Results", "type": "array"}, "recognition": {"anyOf": [{"$ref": "#/components/schemas/CitationRecognitionSchema"}, {"type": "null"}]}}, "required": ["results"], "title": "CitationSourceSearchResponseSchema", "type": "object"}, "CitationSourceSearchSchema": {"properties": {"id": {"title": "Id", "type": "integer"}, "name": {"title": "Name", "type": "string"}, "source_type": {"title": "Source Type", "type": "string"}, "author": {"title": "Author", "type": "string"}, "publisher": {"title": "Publisher", "type": "string"}, "year": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Year"}, "isbn": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Isbn"}, "parent_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Parent Id"}, "has_children": {"default": false, "title": "Has Children", "type": "boolean"}, "is_abstract": {"default": false, "title": "Is Abstract", "type": "boolean"}, "skip_locator": {"default": false, "title": "Skip Locator", "type": "boolean"}, "identifier_key": {"default": "", "title": "Identifier Key", "type": "string"}}, "required": ["id", "name", "source_type", "author", "publisher"], "title": "CitationSourceSearchSchema", "type": "object"}, "CitationSourceChildSchema": {"properties": {"id": {"title": "Id", "type": "integer"}, "name": {"title": "Name", "type": "string"}, "source_type": {"title": "Source Type", "type": "string"}, "year": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Year"}, "isbn": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Isbn"}, "skip_locator": {"default": false, "title": "Skip Locator", "type": "boolean"}, "urls": {"default": [], "items": {"type": "string"}, "title": "Urls", "type": "array"}}, "required": ["id", "name", "source_type"], "title": "CitationSourceChildSchema", "type": "object"}, "CitationSourceDetailSchema": {"properties": {"id": {"title": "Id", "type": "integer"}, "name": {"title": "Name", "type": "string"}, "source_type": {"title": "Source Type", "type": "string"}, "author": {"title": "Author", "type": "string"}, "publisher": {"title": "Publisher", "type": "string"}, "year": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Year"}, "month": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Month"}, "day": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Day"}, "date_note": {"title": "Date Note", "type": "string"}, "isbn": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Isbn"}, "description": {"title": "Description", "type": "string"}, "identifier_key": {"default": "", "title": "Identifier Key", "type": "string"}, "skip_locator": {"default": false, "title": "Skip Locator", "type": "boolean"}, "parent": {"anyOf": [{"$ref": "#/components/schemas/CitationSourceParentSchema"}, {"type": "null"}]}, "links": {"default": [], "items": {"$ref": "#/components/schemas/CitationSourceLinkSchema"}, "title": "Links", "type": "array"}, "children": {"default": [], "items": {"$ref": "#/components/schemas/CitationSourceChildSchema"}, "title": "Children", "type": "array"}, "created_at": {"title": "Created At", "type": "string"}, "updated_at": {"title": "Updated At", "type": "string"}}, "required": ["id", "name", "source_type", "author", "publisher", "date_note", "description", "created_at", "updated_at"], "title": "CitationSourceDetailSchema", "type": "object"}, "CitationSourceLinkSchema": {"properties": {"id": {"title": "Id", "type": "integer"}, "link_type": {"title": "Link Type", "type": "string"}, "url": {"title": "Url", "type": "string"}, "label": {"title": "Label", "type": "string"}}, "required": ["id", "link_type", "url", "label"], "title": "CitationSourceLinkSchema", "type": "object"}, "CitationSourceCreateSchema": {"properties": {"name": {"title": "Name", "type": "string"}, "source_type": {"title": "Source Type", "type": "string"}, "author": {"default": "", "title": "Author", "type": "string"}, "publisher": {"default": "", "title": "Publisher", "type": "string"}, "year": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Year"}, "month": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Month"}, "day": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Day"}, "date_note": {"default": "", "title": "Date Note", "type": "string"}, "isbn": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Isbn"}, "description": {"default": "", "title": "Description", "type": "string"}, "parent_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Parent Id"}, "identifier": {"default": "", "title": "Identifier", "type": "string"}, "url": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Url"}, "link_label": {"default": "", "title": "Link Label", "type": "string"}, "link_type": {"default": "homepage", "title": "Link Type", "type": "string"}}, "required": ["name", "source_type"], "title": "CitationSourceCreateSchema", "type": "object"}, "CitationExtractDraftSchema": {"properties": {"name": {"title": "Name", "type": "string"}, "source_type": {"title": "Source Type", "type": "string"}, "author": {"title": "Author", "type": "string"}, "publisher": {"title": "Publisher", "type": "string"}, "year": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Year"}, "isbn": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Isbn"}, "url": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Url"}}, "required": ["name", "source_type", "author", "publisher"], "title": "CitationExtractDraftSchema", "type": "object"}, "CitationExtractResultSchema": {"properties": {"draft": {"anyOf": [{"$ref": "#/components/schemas/CitationExtractDraftSchema"}, {"type": "null"}]}, "match": {"anyOf": [{"$ref": "#/components/schemas/CitationSourceMatchSchema"}, {"type": "null"}]}, "error": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Error"}, "confidence": {"default": "", "title": "Confidence", "type": "string"}, "source_api": {"default": "", "title": "Source Api", "type": "string"}}, "title": "CitationExtractResultSchema", "type": "object"}, "CitationExtractInputSchema": {"properties": {"input": {"title": "Input", "type": "string"}}, "required": ["input"], "title": "CitationExtractInputSchema", "type": "object"}, "CitationSourceUpdateSchema": {"properties": {"name": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Name"}, "source_type": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Source Type"}, "author": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Author"}, "publisher": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Publisher"}, "year": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Year"}, "month": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Month"}, "day": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Day"}, "date_note": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Date Note"}, "isbn": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Isbn"}, "description": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Description"}}, "title": "CitationSourceUpdateSchema", "type": "object"}, "CitationSourceLinkCreateSchema": {"properties": {"link_type": {"title": "Link Type", "type": "string"}, "url": {"title": "Url", "type": "string"}, "label": {"default": "", "title": "Label", "type": "string"}}, "required": ["link_type", "url"], "title": "CitationSourceLinkCreateSchema", "type": "object"}, "CitationSourceLinkUpdateSchema": {"properties": {"link_type": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Link Type"}, "url": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Url"}, "label": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Label"}}, "title": "CitationSourceLinkUpdateSchema", "type": "object"}, "CitationSourceSchema": {"properties": {"name": {"title": "Name", "type": "string"}, "slug": {"title": "Slug", "type": "string"}, "source_type": {"title": "Source Type", "type": "string"}, "priority": {"title": "Priority", "type": "integer"}, "url": {"title": "Url", "type": "string"}, "description": {"title": "Description", "type": "string"}}, "required": ["name", "slug", "source_type", "priority", "url", "description"], "title": "CitationSourceSchema", "type": "object"}, "RevertNoteSchema": {"properties": {"note": {"title": "Note", "type": "string"}}, "required": ["note"], "title": "RevertNoteSchema", "type": "object"}, "UndoResultSchema": {"properties": {"changeset_id": {"title": "Changeset Id", "type": "integer"}}, "required": ["changeset_id"], "title": "UndoResultSchema", "type": "object"}, "UndoChangeSetSchema": {"properties": {"note": {"default": "", "title": "Note", "type": "string"}}, "title": "UndoChangeSetSchema", "type": "object"}, "ChangeSetSchema": {"description": "A grouped edit session with per-field diffs.", "properties": {"id": {"title": "Id", "type": "integer"}, "user_display": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "User Display"}, "note": {"title": "Note", "type": "string"}, "created_at": {"title": "Created At", "type": "string"}, "changes": {"items": {"$ref": "#/components/schemas/FieldChangeSchema"}, "title": "Changes", "type": "array"}, "retractions": {"default": [], "items": {"$ref": "#/components/schemas/RetractionSchema"}, "title": "Retractions", "type": "array"}}, "required": ["id", "note", "created_at", "changes"], "title": "ChangeSetSchema", "type": "object"}, "FieldChangeSchema": {"description": "A single field change within a ChangeSet (old -> new).", "properties": {"field_name": {"title": "Field Name", "type": "string"}, "claim_key": {"title": "Claim Key", "type": "string"}, "old_value": {"anyOf": [{}, {"type": "null"}], "title": "Old Value"}, "new_value": {"title": "New Value"}, "claim_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Claim Id"}, "claim_user_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Claim User Id"}, "is_active": {"anyOf": [{"type": "boolean"}, {"type": "null"}], "title": "Is Active"}, "is_winning": {"anyOf": [{"type": "boolean"}, {"type": "null"}], "title": "Is Winning"}, "is_retracted": {"anyOf": [{"type": "boolean"}, {"type": "null"}], "title": "Is Retracted"}}, "required": ["field_name", "claim_key", "new_value"], "title": "FieldChangeSchema", "type": "object"}, "RetractionSchema": {"properties": {"claim_id": {"title": "Claim Id", "type": "integer"}, "field_name": {"title": "Field Name", "type": "string"}, "claim_key": {"title": "Claim Key", "type": "string"}, "old_value": {"title": "Old Value"}}, "required": ["claim_id", "field_name", "claim_key", "old_value"], "title": "RetractionSchema", "type": "object"}, "CitedChangeSetCitationSchema": {"properties": {"source_name": {"title": "Source Name", "type": "string"}, "source_type": {"title": "Source Type", "type": "string"}, "author": {"title": "Author", "type": "string"}, "year": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Year"}, "locator": {"title": "Locator", "type": "string"}, "links": {"default": [], "items": {"$ref": "#/components/schemas/CitationLinkSchema"}, "title": "Links", "type": "array"}}, "required": ["source_name", "source_type", "author", "locator"], "title": "CitedChangeSetCitationSchema", "type": "object"}, "CitedChangeSetSchema": {"properties": {"id": {"title": "Id", "type": "integer"}, "user_display": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "User Display"}, "note": {"title": "Note", "type": "string"}, "created_at": {"title": "Created At", "type": "string"}, "fields": {"items": {"type": "string"}, "title": "Fields", "type": "array"}, "citations": {"items": {"$ref": "#/components/schemas/CitedChangeSetCitationSchema"}, "title": "Citations", "type": "array"}}, "required": ["id", "note", "created_at", "fields", "citations"], "title": "CitedChangeSetSchema", "type": "object"}, "ClaimSchema": {"description": "A single per-field claim as surfaced to the Sources UI.", "properties": {"source_name": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Source Name"}, "source_slug": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Source Slug"}, "user_display": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "User Display"}, "field_name": {"title": "Field Name", "type": "string"}, "value": {"title": "Value"}, "citation": {"title": "Citation", "type": "string"}, "created_at": {"title": "Created At", "type": "string"}, "is_winner": {"title": "Is Winner", "type": "boolean"}, "changeset_note": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Changeset Note"}}, "required": ["field_name", "value", "citation", "created_at", "is_winner"], "title": "ClaimSchema", "type": "object"}, "SourcesPageSchema": {"description": "Page model for the per-entity Sources subroute.\n\nBundles the sources list (grouped claims) with the cited-edit evidence\nso the page renders from a single fetch.", "properties": {"sources": {"items": {"$ref": "#/components/schemas/ClaimSchema"}, "title": "Sources", "type": "array"}, "evidence": {"items": {"$ref": "#/components/schemas/CitedChangeSetSchema"}, "title": "Evidence", "type": "array"}}, "required": ["sources", "evidence"], "title": "SourcesPageSchema", "type": "object"}, "ChangeSetListSchema": {"properties": {"items": {"items": {"$ref": "#/components/schemas/ChangeSetSummarySchema"}, "title": "Items", "type": "array"}, "next_cursor": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Next Cursor"}}, "required": ["items"], "title": "ChangeSetListSchema", "type": "object"}, "ChangeSetSummarySchema": {"properties": {"id": {"title": "Id", "type": "integer"}, "user_display": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "User Display"}, "note": {"title": "Note", "type": "string"}, "created_at": {"title": "Created At", "type": "string"}, "is_ingest": {"default": false, "title": "Is Ingest", "type": "boolean"}, "source_name": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Source Name"}, "entity_href": {"title": "Entity Href", "type": "string"}, "entity_name": {"title": "Entity Name", "type": "string"}, "entity_type_label": {"title": "Entity Type Label", "type": "string"}, "changes_count": {"title": "Changes Count", "type": "integer"}, "retractions_count": {"title": "Retractions Count", "type": "integer"}}, "required": ["id", "note", "created_at", "entity_href", "entity_name", "entity_type_label", "changes_count", "retractions_count"], "title": "ChangeSetSummarySchema", "type": "object"}, "ChangeSetDetailSchema": {"properties": {"id": {"title": "Id", "type": "integer"}, "user_display": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "User Display"}, "note": {"title": "Note", "type": "string"}, "created_at": {"title": "Created At", "type": "string"}, "is_ingest": {"default": false, "title": "Is Ingest", "type": "boolean"}, "source_name": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Source Name"}, "entity_href": {"title": "Entity Href", "type": "string"}, "entity_name": {"title": "Entity Name", "type": "string"}, "entity_type_label": {"title": "Entity Type Label", "type": "string"}, "changes": {"items": {"$ref": "#/components/schemas/FieldChangeSchema"}, "title": "Changes", "type": "array"}, "retractions": {"items": {"$ref": "#/components/schemas/RetractionSchema"}, "title": "Retractions", "type": "array"}}, "required": ["id", "note", "created_at", "entity_href", "entity_name", "entity_type_label", "changes", "retractions"], "title": "ChangeSetDetailSchema", "type": "object"}, "ReviewClaimSchema": {"properties": {"id": {"title": "Id", "type": "integer"}, "source_name": {"title": "Source Name", "type": "string"}, "field_name": {"title": "Field Name", "type": "string"}, "value": {"title": "Value"}, "needs_review_notes": {"title": "Needs Review Notes", "type": "string"}, "created_at": {"title": "Created At", "type": "string"}, "subject_type": {"title": "Subject Type", "type": "string"}, "subject_name": {"title": "Subject Name", "type": "string"}, "subject_slug": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Subject Slug"}, "title_slug": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Title Slug"}, "review_links": {"default": [], "items": {"$ref": "#/components/schemas/ReviewLinkSchema"}, "title": "Review Links", "type": "array"}}, "required": ["id", "source_name", "field_name", "value", "needs_review_notes", "created_at", "subject_type", "subject_name"], "title": "ReviewClaimSchema", "type": "object"}, "CitationInstanceSchema": {"properties": {"id": {"title": "Id", "type": "integer"}, "citation_source_id": {"title": "Citation Source Id", "type": "integer"}, "citation_source_name": {"title": "Citation Source Name", "type": "string"}, "claim_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Claim Id"}, "locator": {"title": "Locator", "type": "string"}, "created_at": {"title": "Created At", "type": "string"}}, "required": ["id", "citation_source_id", "citation_source_name", "locator", "created_at"], "title": "CitationInstanceSchema", "type": "object"}, "CitationInstanceCreateSchema": {"properties": {"citation_source_id": {"title": "Citation Source Id", "type": "integer"}, "locator": {"default": "", "title": "Locator", "type": "string"}}, "required": ["citation_source_id"], "title": "CitationInstanceCreateSchema", "type": "object"}, "CitationInstanceBatchSchema": {"properties": {"id": {"title": "Id", "type": "integer"}, "source_name": {"title": "Source Name", "type": "string"}, "source_type": {"title": "Source Type", "type": "string"}, "author": {"title": "Author", "type": "string"}, "year": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Year"}, "locator": {"title": "Locator", "type": "string"}, "links": {"default": [], "items": {"$ref": "#/components/schemas/CitationLinkSchema"}, "title": "Links", "type": "array"}}, "required": ["id", "source_name", "source_type", "author", "locator"], "title": "CitationInstanceBatchSchema", "type": "object"}, "AttachmentMetaSchema": {"properties": {"entity_type": {"title": "Entity Type", "type": "string"}, "public_id": {"title": "Public Id", "type": "string"}, "category": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Category"}, "is_primary": {"title": "Is Primary", "type": "boolean"}}, "required": ["entity_type", "public_id", "category", "is_primary"], "title": "AttachmentMetaSchema", "type": "object"}, "RenditionUrlsSchema": {"properties": {"original": {"title": "Original", "type": "string"}, "thumb": {"title": "Thumb", "type": "string"}, "display": {"title": "Display", "type": "string"}}, "required": ["original", "thumb", "display"], "title": "RenditionUrlsSchema", "type": "object"}, "UploadSchema": {"properties": {"asset_uuid": {"title": "Asset Uuid", "type": "string"}, "kind": {"title": "Kind", "type": "string"}, "status": {"title": "Status", "type": "string"}, "original_filename": {"title": "Original Filename", "type": "string"}, "width": {"title": "Width", "type": "integer"}, "height": {"title": "Height", "type": "integer"}, "renditions": {"$ref": "#/components/schemas/RenditionUrlsSchema"}, "attachment": {"$ref": "#/components/schemas/AttachmentMetaSchema"}}, "required": ["asset_uuid", "kind", "status", "original_filename", "width", "height", "renditions", "attachment"], "title": "UploadSchema", "type": "object"}, "MediaAssetInputSchema": {"properties": {"entity_type": {"title": "Entity Type", "type": "string"}, "public_id": {"title": "Public Id", "type": "string"}, "asset_uuid": {"title": "Asset Uuid", "type": "string"}}, "required": ["entity_type", "public_id", "asset_uuid"], "title": "MediaAssetInputSchema", "type": "object"}}, "securitySchemes": {"SessionAuth": {"type": "apiKey", "in": "cookie", "name": "sessionid"}}}, "servers": []}