{"openapi":"3.1.0","info":{"title":"Portal Data API","description":"Read-only access to course, topic, unit, question and tag data in the portal's Django admin, on prod and beta.\n\nEvery call needs your personal access token (create one on /tokens): click **Authorize** and paste the `pmcp_…` token, or send `Authorization: Bearer pmcp_…`. You only see the portals you have READ on.","version":"0.1.0"},"paths":{"/health":{"get":{"tags":["meta"],"summary":"Health","operationId":"health_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/environments":{"get":{"tags":["meta"],"summary":"Environments","description":"The environments this deployment can read, and whether each is configured.","operationId":"environments_environments_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/environments/{env}/login":{"post":{"tags":["meta"],"summary":"Login","description":"Force a login — a credential/connectivity check.","operationId":"login_environments__env__login_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"env","in":"path","required":true,"schema":{"type":"string","title":"Env"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/schema/models":{"get":{"tags":["schema"],"summary":"Schema Models","description":"The surveyed admin model map: names, row counts, columns.","operationId":"schema_models_schema_models_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"app","in":"query","required":false,"schema":{"type":"string","default":"","title":"App"}},{"name":"search","in":"query","required":false,"schema":{"type":"string","default":"","title":"Search"}},{"name":"env","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Required: which portal to read — \"prod\" or \"beta\". No default.","title":"Env"},"description":"Required: which portal to read — \"prod\" or \"beta\". No default."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/schema/models/{app_name}/{model}":{"get":{"tags":["schema"],"summary":"Schema Model","description":"One model's fields, relations and inlines.","operationId":"schema_model_schema_models__app_name___model__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"app_name","in":"path","required":true,"schema":{"type":"string","title":"App Name"}},{"name":"model","in":"path","required":true,"schema":{"type":"string","title":"Model"}},{"name":"env","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Required: which portal to read — \"prod\" or \"beta\". No default.","title":"Env"},"description":"Required: which portal to read — \"prod\" or \"beta\". No default."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/courses":{"get":{"tags":["courses"],"summary":"Search Courses","operationId":"search_courses_courses_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"q","in":"query","required":true,"schema":{"type":"string","description":"Course id, or a regex over the title.","title":"Q"},"description":"Course id, or a regex over the title."},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":50,"title":"Limit"}},{"name":"env","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Required: which portal to read — \"prod\" or \"beta\". No default.","title":"Env"},"description":"Required: which portal to read — \"prod\" or \"beta\". No default."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/courses/{course_id}":{"get":{"tags":["courses"],"summary":"Get Course","description":"Course details, qualified by version.\n\nWith several versions and no ``version_id``, returns the list of versions to\nchoose from instead of data. Pass ``version_id=all`` to read every version.","operationId":"get_course_courses__course_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"course_id","in":"path","required":true,"schema":{"type":"string","title":"Course Id"}},{"name":"version_id","in":"query","required":false,"schema":{"type":"string","default":"","title":"Version Id"}},{"name":"env","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Required: which portal to read — \"prod\" or \"beta\". No default.","title":"Env"},"description":"Required: which portal to read — \"prod\" or \"beta\". No default."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/courses/{course_id}/versions":{"get":{"tags":["courses"],"summary":"Course Versions","operationId":"course_versions_courses__course_id__versions_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"course_id","in":"path","required":true,"schema":{"type":"string","title":"Course Id"}},{"name":"env","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Required: which portal to read — \"prod\" or \"beta\". No default.","title":"Env"},"description":"Required: which portal to read — \"prod\" or \"beta\". No default."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/courses/{course_id}/tree":{"get":{"tags":["courses"],"summary":"Course Tree","description":"Course → topics → units, for a chosen version (or ``version_id=all``).","operationId":"course_tree_courses__course_id__tree_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"course_id","in":"path","required":true,"schema":{"type":"string","title":"Course Id"}},{"name":"version_id","in":"query","required":false,"schema":{"type":"string","default":"","title":"Version Id"}},{"name":"include_unit_names","in":"query","required":false,"schema":{"type":"boolean","default":true,"title":"Include Unit Names"}},{"name":"unit_details","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Unit Details"}},{"name":"env","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Required: which portal to read — \"prod\" or \"beta\". No default.","title":"Env"},"description":"Required: which portal to read — \"prod\" or \"beta\". No default."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/courses/{course_id}/units":{"get":{"tags":["courses"],"summary":"Course Units","operationId":"course_units_courses__course_id__units_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"course_id","in":"path","required":true,"schema":{"type":"string","title":"Course Id"}},{"name":"version_id","in":"query","required":false,"schema":{"type":"string","default":"","title":"Version Id"}},{"name":"unit_type","in":"query","required":false,"schema":{"type":"string","default":"","title":"Unit Type"}},{"name":"include_unit_names","in":"query","required":false,"schema":{"type":"boolean","default":true,"title":"Include Unit Names"}},{"name":"env","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Required: which portal to read — \"prod\" or \"beta\". No default.","title":"Env"},"description":"Required: which portal to read — \"prod\" or \"beta\". No default."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/courses/{course_id}/version-diff":{"get":{"tags":["courses"],"summary":"Course Version Diff","description":"Units added, removed or moved between two versions.","operationId":"course_version_diff_courses__course_id__version_diff_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"course_id","in":"path","required":true,"schema":{"type":"string","title":"Course Id"}},{"name":"from_version","in":"query","required":false,"schema":{"type":"string","default":"","title":"From Version"}},{"name":"to_version","in":"query","required":false,"schema":{"type":"string","default":"","title":"To Version"}},{"name":"include_unit_names","in":"query","required":false,"schema":{"type":"boolean","default":true,"title":"Include Unit Names"}},{"name":"env","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Required: which portal to read — \"prod\" or \"beta\". No default.","title":"Env"},"description":"Required: which portal to read — \"prod\" or \"beta\". No default."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/courses/{course_id}/tags":{"get":{"tags":["courses"],"summary":"Course Tags","description":"Every concept tag used across the course, with per-unit attribution.","operationId":"course_tags_courses__course_id__tags_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"course_id","in":"path","required":true,"schema":{"type":"string","title":"Course Id"}},{"name":"version_id","in":"query","required":false,"schema":{"type":"string","default":"","title":"Version Id"}},{"name":"unit_type","in":"query","required":false,"schema":{"type":"string","default":"","title":"Unit Type"}},{"name":"env","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Required: which portal to read — \"prod\" or \"beta\". No default.","title":"Env"},"description":"Required: which portal to read — \"prod\" or \"beta\". No default."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/resources/{resource_id}/children":{"get":{"tags":["graph"],"summary":"Resource Children","operationId":"resource_children_resources__resource_id__children_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"resource_id","in":"path","required":true,"schema":{"type":"string","title":"Resource Id"}},{"name":"describe","in":"query","required":false,"schema":{"type":"boolean","default":true,"title":"Describe"}},{"name":"env","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Required: which portal to read — \"prod\" or \"beta\". No default.","title":"Env"},"description":"Required: which portal to read — \"prod\" or \"beta\". No default."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/resources/{resource_id}/parents":{"get":{"tags":["graph"],"summary":"Resource Parents","description":"Which resources link to this one (a unit's topics, a topic's courses).","operationId":"resource_parents_resources__resource_id__parents_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"resource_id","in":"path","required":true,"schema":{"type":"string","title":"Resource Id"}},{"name":"describe","in":"query","required":false,"schema":{"type":"boolean","default":true,"title":"Describe"}},{"name":"env","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Required: which portal to read — \"prod\" or \"beta\". No default.","title":"Env"},"description":"Required: which portal to read — \"prod\" or \"beta\". No default."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/units/{unit_id}/ancestry":{"get":{"tags":["graph"],"summary":"Unit Ancestry","description":"Every (topic, course) path a unit is reachable through.","operationId":"unit_ancestry_units__unit_id__ancestry_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"unit_id","in":"path","required":true,"schema":{"type":"string","title":"Unit Id"}},{"name":"env","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Required: which portal to read — \"prod\" or \"beta\". No default.","title":"Env"},"description":"Required: which portal to read — \"prod\" or \"beta\". No default."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/units/{unit_id}":{"get":{"tags":["units"],"summary":"Get Unit","description":"A unit with its type-specific details.","operationId":"get_unit_units__unit_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"unit_id","in":"path","required":true,"schema":{"type":"string","title":"Unit Id"}},{"name":"include_questions","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Include Questions"}},{"name":"env","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Required: which portal to read — \"prod\" or \"beta\". No default.","title":"Env"},"description":"Required: which portal to read — \"prod\" or \"beta\". No default."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/units/batch":{"post":{"tags":["units"],"summary":"Get Units","operationId":"get_units_units_batch_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"env","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Required: which portal to read — \"prod\" or \"beta\". No default.","title":"Env"},"description":"Required: which portal to read — \"prod\" or \"beta\". No default."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnitBatchRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/units/{unit_id}/questions":{"get":{"tags":["units"],"summary":"Unit Questions","operationId":"unit_questions_units__unit_id__questions_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"unit_id","in":"path","required":true,"schema":{"type":"string","title":"Unit Id"}},{"name":"include_details","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Include Details"}},{"name":"include_tags","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Include Tags"}},{"name":"include_content","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Include Content"}},{"name":"full_detail","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Full Detail"}},{"name":"env","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Required: which portal to read — \"prod\" or \"beta\". No default.","title":"Env"},"description":"Required: which portal to read — \"prod\" or \"beta\". No default."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/units/{unit_id}/slides":{"get":{"tags":["units"],"summary":"Unit Slides","description":"Slides / reading material for a LEARNING_SET unit (needs a Bearer token).","operationId":"unit_slides_units__unit_id__slides_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"unit_id","in":"path","required":true,"schema":{"type":"string","title":"Unit Id"}},{"name":"token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Token"}},{"name":"include_content","in":"query","required":false,"schema":{"type":"boolean","default":true,"title":"Include Content"}},{"name":"env","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Required: which portal to read — \"prod\" or \"beta\". No default.","title":"Env"},"description":"Required: which portal to read — \"prod\" or \"beta\". No default."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/units/{unit_id}/tags":{"get":{"tags":["units"],"summary":"Unit Tags","operationId":"unit_tags_units__unit_id__tags_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"unit_id","in":"path","required":true,"schema":{"type":"string","title":"Unit Id"}},{"name":"include_question_tags","in":"query","required":false,"schema":{"type":"boolean","default":true,"title":"Include Question Tags"}},{"name":"env","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Required: which portal to read — \"prod\" or \"beta\". No default.","title":"Env"},"description":"Required: which portal to read — \"prod\" or \"beta\". No default."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/questions":{"get":{"tags":["questions"],"summary":"Search Questions","operationId":"search_questions_questions_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"q","in":"query","required":true,"schema":{"type":"string","description":"Question id, or a regex over short text.","title":"Q"},"description":"Question id, or a regex over short text."},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":50,"title":"Limit"}},{"name":"env","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Required: which portal to read — \"prod\" or \"beta\". No default.","title":"Env"},"description":"Required: which portal to read — \"prod\" or \"beta\". No default."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/questions/{question_id}":{"get":{"tags":["questions"],"summary":"Get Question","description":"A question with its options/answers/coding payload and tags.","operationId":"get_question_questions__question_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"question_id","in":"path","required":true,"schema":{"type":"string","title":"Question Id"}},{"name":"include_content","in":"query","required":false,"schema":{"type":"boolean","default":true,"title":"Include Content"}},{"name":"include_tags","in":"query","required":false,"schema":{"type":"boolean","default":true,"title":"Include Tags"}},{"name":"full_detail","in":"query","required":false,"schema":{"type":"boolean","default":true,"title":"Full Detail"}},{"name":"env","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Required: which portal to read — \"prod\" or \"beta\". No default.","title":"Env"},"description":"Required: which portal to read — \"prod\" or \"beta\". No default."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/questions/batch":{"post":{"tags":["questions"],"summary":"Get Questions","operationId":"get_questions_questions_batch_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"env","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Required: which portal to read — \"prod\" or \"beta\". No default.","title":"Env"},"description":"Required: which portal to read — \"prod\" or \"beta\". No default."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/QuestionBatchRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/questions/{question_id}/tags":{"get":{"tags":["questions"],"summary":"Question Tags","operationId":"question_tags_questions__question_id__tags_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"question_id","in":"path","required":true,"schema":{"type":"string","title":"Question Id"}},{"name":"env","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Required: which portal to read — \"prod\" or \"beta\". No default.","title":"Env"},"description":"Required: which portal to read — \"prod\" or \"beta\". No default."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/questions/{question_id}/usage":{"get":{"tags":["questions"],"summary":"Question Usage","description":"Which units include this question.","operationId":"question_usage_questions__question_id__usage_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"question_id","in":"path","required":true,"schema":{"type":"string","title":"Question Id"}},{"name":"env","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Required: which portal to read — \"prod\" or \"beta\". No default.","title":"Env"},"description":"Required: which portal to read — \"prod\" or \"beta\". No default."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/tags/{tag_name}/questions":{"get":{"tags":["tags"],"summary":"Tag Questions","operationId":"tag_questions_tags__tag_name__questions_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"tag_name","in":"path","required":true,"schema":{"type":"string","title":"Tag Name"}},{"name":"env","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Required: which portal to read — \"prod\" or \"beta\". No default.","title":"Env"},"description":"Required: which portal to read — \"prod\" or \"beta\". No default."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/tags/coverage":{"post":{"tags":["tags"],"summary":"Tag Coverage","description":"Unit × tag matrix: how many of each unit's questions carry each tag.","operationId":"tag_coverage_tags_coverage_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"env","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Required: which portal to read — \"prod\" or \"beta\". No default.","title":"Env"},"description":"Required: which portal to read — \"prod\" or \"beta\". No default."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TagCoverageRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}}},"components":{"schemas":{"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"QuestionBatchRequest":{"properties":{"question_ids":{"items":{"type":"string"},"type":"array","title":"Question Ids"},"include_content":{"type":"boolean","title":"Include Content","default":false},"include_tags":{"type":"boolean","title":"Include Tags","default":false},"full_detail":{"type":"boolean","title":"Full Detail","description":"Include options/answers/coding tables.","default":false}},"type":"object","required":["question_ids"],"title":"QuestionBatchRequest"},"TagCoverageRequest":{"properties":{"unit_ids":{"items":{"type":"string"},"type":"array","title":"Unit Ids","description":"Units to measure."},"tag_names":{"items":{"type":"string"},"type":"array","title":"Tag Names","description":"Tags to measure them against."}},"type":"object","required":["unit_ids","tag_names"],"title":"TagCoverageRequest"},"UnitBatchRequest":{"properties":{"unit_ids":{"items":{"type":"string"},"type":"array","title":"Unit Ids"},"detail":{"type":"boolean","title":"Detail","description":"Include each unit's type-specific details.","default":false}},"type":"object","required":["unit_ids"],"title":"UnitBatchRequest"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"},"input":{"title":"Input"},"ctx":{"type":"object","title":"Context"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"}},"securitySchemes":{"HTTPBearer":{"type":"http","description":"pmcp_… access token","scheme":"bearer"}}},"servers":[{"url":"/api"}]}