{"openapi": "3.1.0", "info": {"title": "DIBBs eCR Refiner", "description": "Please visit the repo for more info: https://github.com/CDCgov/dibbs-ecr-refiner", "version": "1.0.0"}, "paths": {"/api/user": {"get": {"tags": ["user"], "summary": "Get User", "description": "Returns the current logged-in user's information.\n\nReads user info from the session or token.\n\nReturns:\n JSON object with user claims if authenticated.\n\nRaises:\n HTTPException 401 if user not authenticated.", "operationId": "getUser", "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {"anyOf": [{"$ref": "#/components/schemas/UserResponse"}, {"type": "null"}], "title": "Response Getuser"}}}}}}}, "/api/v1/conditions/": {"get": {"tags": ["conditions"], "summary": "Get Conditions", "description": "Fetches all available conditions from the database.\n\nArgs:\n db (AsyncDatabaseConnection): Database connection.\n\nReturns:\n list[Condition]: List of all conditions.", "operationId": "getConditions", "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {"items": {"$ref": "#/components/schemas/GetConditionsResponse"}, "type": "array", "title": "Response Getconditions"}}}}}}}, "/api/v1/conditions/{condition_id}": {"get": {"tags": ["conditions"], "summary": "Get Condition", "description": "Returns information about a given condition.\n\nArgs:\n condition_id (UUID): ID of the condition\n db (AsyncDatabaseConnection): Database connection.\n\nRaises:\n HTTPException: 404 if no condition is found\n\nReturns:\n GetCondition: Info about the condition", "operationId": "getCondition", "parameters": [{"name": "condition_id", "in": "path", "required": true, "schema": {"type": "string", "format": "uuid", "title": "Condition Id"}}], "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/GetConditionResponse"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/api/v1/configurations/": {"get": {"tags": ["configurations"], "summary": "Get Configurations", "description": "Returns a list of configurations based on the logged-in user.\n\nReturns:\n List of configuration objects.", "operationId": "getConfigurations", "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {"items": {"$ref": "#/components/schemas/GetConfigurationsResponse"}, "type": "array", "title": "Response Getconfigurations"}}}}}}, "post": {"tags": ["configurations"], "summary": "Create Configuration", "description": "Create a new configuration for a jurisdiction.", "operationId": "createConfiguration", "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/CreateConfigInput"}}}, "required": true}, "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/CreateConfigurationResponse"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/api/v1/configurations/{configuration_id}": {"get": {"tags": ["configurations"], "summary": "Get Configuration", "description": "Get a single configuration by its ID including all associated conditions.", "operationId": "getConfiguration", "parameters": [{"name": "configuration_id", "in": "path", "required": true, "schema": {"type": "string", "format": "uuid", "title": "Configuration Id"}}], "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/GetConfigurationResponse"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/api/v1/configurations/{configuration_id}/code-sets": {"put": {"tags": ["configurations"], "summary": "Associate Condition Codeset With Configuration", "description": "Associate a specified code set with the given configuration.\n\nArgs:\n configuration_id (UUID): ID of the configuration\n body (AssociateCodesetInput): payload containing a condition_id\n user (dict[str, Any], optional): User making the request\n db (AsyncDatabaseConnection, optional): Database connection\n\nRaises:\n HTTPException: 404 if configuration is not found in JD\n HTTPException: 404 if configuration is not found\n HTTPException: 409 if configuration is not a draft and therefore not editable\n HTTPException: 500 if configuration cannot be updated\n\nReturns:\n AssociateCodesetResponse: ID of updated configuration, the full list of included conditions,\n and the condition_name", "operationId": "associateConditionWithConfiguration", "parameters": [{"name": "configuration_id", "in": "path", "required": true, "schema": {"type": "string", "format": "uuid", "title": "Configuration Id"}}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/AssociateCodesetInput"}}}}, "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/AssociateCodesetResponse"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/api/v1/configurations/{configuration_id}/code-sets/{condition_id}": {"delete": {"tags": ["configurations"], "summary": "Remove Condition Codeset From Configuration", "description": "Remove a specified code set from the given configuration.\n\nArgs:\n configuration_id (UUID): ID of the configuration\n condition_id (UUID): ID of the condition to remove\n user (DbUser): User making the request\n db (AsyncDatabaseConnection): Database connection\n\nRaises:\n HTTPException: 404 if configuration is not found in JD\n HTTPException: 404 if condition is not found\n HTTPException: 409 if trying to remove the main condition\n HTTPException: 409 if configuration is not a draft and therefore not editable\n HTTPException: 500 if configuration is cannot be updated\n\nReturns:\n AssociateCodesetResponse: ID of updated configuration and the full list\n of included conditions plus condition_name", "operationId": "disassociateConditionWithConfiguration", "parameters": [{"name": "configuration_id", "in": "path", "required": true, "schema": {"type": "string", "format": "uuid", "title": "Configuration Id"}}, {"name": "condition_id", "in": "path", "required": true, "schema": {"type": "string", "format": "uuid", "title": "Condition Id"}}], "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/AssociateCodesetResponse"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/api/v1/configurations/{configuration_id}/custom-codes": {"post": {"tags": ["configurations"], "summary": "Add Custom Code", "description": "Add a user-defined custom code to a configuration.\n\nArgs:\n configuration_id (UUID): The ID of the configuration to update.\n body (AddCustomCodeInput): The custom code information provided by the user.\n user (dict[str, Any]): The logged-in user.\n db (AsyncDatabaseConnection): The database connection.\n\nRaises:\n HTTPException: 404 if configuration isn't found\n HTTPException: 409 if configuration is not a draft and therefore not editable\n HTTPException: 500 if custom code can't be added\n\nReturns:\n ConfigurationCustomCodeResponse: Updated configuration", "operationId": "addCustomCodeToConfiguration", "parameters": [{"name": "configuration_id", "in": "path", "required": true, "schema": {"type": "string", "format": "uuid", "title": "Configuration Id"}}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/AddCustomCodeInput"}}}}, "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ConfigurationCustomCodeResponse"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}, "put": {"tags": ["configurations"], "summary": "Edit Custom Code", "description": "Modify a configuration's custom code based on system_key/code pair.\n\nArgs:\n configuration_id (UUID): The ID of the configuration to modify.\n body (UpdateCustomCodeInput): User-provided object containing custom code info.\n user (dict[str, Any]): The logged-in user.\n db (AsyncDatabaseConnection): The database connection.\n logger (Logger): The system logger.\n\nRaises:\n HTTPException: 409 if configuration is not a draft and therefore not editable\n HTTPException: 500 if the configuration can't be updated\n\nReturns:\n ConfigurationCustomCodeResponse: The updated configuration.", "operationId": "editCustomCodeFromConfiguration", "parameters": [{"name": "configuration_id", "in": "path", "required": true, "schema": {"type": "string", "format": "uuid", "title": "Configuration Id"}}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/UpdateCustomCodeInput"}}}}, "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ConfigurationCustomCodeResponse"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/api/v1/configurations/{configuration_id}/custom-codes/upload": {"post": {"tags": ["configurations"], "summary": "Upload Custom Codes Csv", "description": "Accepts a CSV payload in JSON body.\n\nExpected CSV headers:\n code_number,code_system,display_name\n\nReturns:\n UploadCustomCodesResponse", "operationId": "uploadCustomCodesCsv", "parameters": [{"name": "configuration_id", "in": "path", "required": true, "schema": {"type": "string", "format": "uuid", "title": "Configuration Id"}}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/UploadCustomCodesCsvInput"}}}}, "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/UploadCustomCodesPreviewResponse"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/api/v1/configurations/{configuration_id}/custom-codes/confirm": {"post": {"tags": ["configurations"], "summary": "Confirm Upload Custom Codes Csv", "description": "Confirm and save custom codes from preview list.", "operationId": "confirmUploadCustomCodesCsv", "parameters": [{"name": "configuration_id", "in": "path", "required": true, "schema": {"type": "string", "format": "uuid", "title": "Configuration Id"}}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ConfirmUploadCustomCodesInput"}}}}, "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/UploadCustomCodesResponse"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/api/v1/configurations/{configuration_id}/custom-codes/{system_key}/{code}": {"delete": {"tags": ["configurations"], "summary": "Delete Custom Code", "description": "Delete a custom code from a configuration.\n\nArgs:\n configuration_id (UUID): The ID of the configuration to modify.\n system_key (str): System of the custom code.\n code (str): Code of the custom code.\n user (dict[str, Any]): The logged-in user.\n db (AsyncDatabaseConnection): The database connection.\n\nRaises:\n HTTPException: 400 if system_key is not provided\n HTTPException: 400 if code is not provided\n HTTPException: 404 if configuration can't be found\n HTTPException: 409 if configuration is not a draft and therefore not editable\n HTTPException: 500 if configuration can't be updated\n\nReturns:\n ConfigurationCustomCodeResponse: The updated configuration", "operationId": "deleteCustomCodeFromConfiguration", "parameters": [{"name": "configuration_id", "in": "path", "required": true, "schema": {"type": "string", "format": "uuid", "title": "Configuration Id"}}, {"name": "system_key", "in": "path", "required": true, "schema": {"type": "string", "title": "System Key"}}, {"name": "code", "in": "path", "required": true, "schema": {"type": "string", "title": "Code"}}], "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ConfigurationCustomCodeResponse"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/api/v1/configurations/{configuration_id}/custom-codes/validate": {"post": {"tags": ["configurations"], "summary": "Validate Custom Code", "description": "Determines whether a custom code update is valid or not.\n\nIf the desired code is already associated with the configuration, then the update is\ninvalid.\n\nArgs:\n configuration_id (UUID): The configuration ID\n body (ValidateCustomCodeInput): Body including the code to validate\n user (DbUser, optional): The logged in user\n db (AsyncDatabaseConnection, optional): The database connection\n\nReturns:\n bool: Returns True if the code name has not been used, otherwise returns False", "operationId": "validateCustomCodeFromConfiguration", "parameters": [{"name": "configuration_id", "in": "path", "required": true, "schema": {"type": "string", "format": "uuid", "title": "Configuration Id"}}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ValidateCustomCodeInput"}}}}, "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ValidateCustomCodeResponse"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/api/v1/configurations/{configuration_id}/export": {"get": {"tags": ["configurations"], "summary": "Get Configuration Export", "description": "Create a CSV export of a configuration and all associated codes.", "operationId": "getConfigurationExport", "parameters": [{"name": "configuration_id", "in": "path", "required": true, "schema": {"type": "string", "format": "uuid", "title": "Configuration Id"}}], "responses": {"200": {"description": "Successful Response"}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/api/v1/configurations/test": {"post": {"tags": ["configurations"], "summary": "Run Configuration Test", "description": "Runs an inline test of a given configuration against an eICR/RR pair.\n\nThis endpoint orchestrates the validation and refinement process by:\n1. Handling file input, either from a user upload or a default sample file.\n2. Calling the `inline_testing` service, which validates that the specified\n configuration's condition is reportable in the provided file.\n3. Handling the service response:\n - If validation fails, raises a 400 Bad Request with a specific error.\n - If successful, proceeds with the returned refined document.\n4. Packaging the original eICR, RR, and the single refined eICR into a\n new in-memory zip archive.\n5. Uploading the archive to S3 and generating a pre-signed download URL.\n6. Returning a `ConfigurationTestResponse` with the download URL and details\n of the successful refinement.\n\nArgs:\n id: The ID of the configuration to test.\n uploaded_file: An optional user-provided zip file with an eICR and RR.\n create_output_zip: Dependency to create a zip archive in memory.\n upload_zip: Dependency to upload the archive to S3.\n user: The authenticated user making the request.\n db: The database connection.\n sample_zip_path: Path to the default sample zip file.\n logger: The application logger.\n\nReturns:\n A response object containing the original eICR, a URL to download the\n zipped results, and details about the refined condition.", "operationId": "runInlineConfigurationTest", "requestBody": {"content": {"multipart/form-data": {"schema": {"$ref": "#/components/schemas/Body_runInlineConfigurationTest"}}}, "required": true}, "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ConfigurationTestResponse"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/api/v1/configurations/{configuration_id}/sections": {"post": {"tags": ["configurations"], "summary": "Insert Custom Section", "description": "Create a new custom section for a given configuration ID.\n\nArgs:\n configuration_id (UUID): The ID of the configuration\n section_input (CustomSectionInput): Desired properties of the section\n user (DbUser): The logged-in user\n db (AsyncDatabaseConnection): The database connection", "operationId": "addCustomSection", "parameters": [{"name": "configuration_id", "in": "path", "required": true, "schema": {"type": "string", "format": "uuid", "title": "Configuration Id"}}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/AddSectionInput"}}}}, "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {"type": "string", "title": "Response Addcustomsection"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}, "delete": {"tags": ["configurations"], "summary": "Delete Custom Section", "description": "Delete a custom section.\n\nArgs:\n configuration_id (UUID): ID of the configuration with custom section to delete\n section_input (DeleteCustomSectionInput): Custom section deletion input\n user (DbUser): The logged in user\n db (AsyncDatabaseConnection): The database connection\n\nRaises:\n HTTPException: 404 if configuration isn't found\n HTTPException: 409 if configuration isn't a draft\n HTTPException: 404 if custom section code to delete isn't found\n\nReturns:\n str: Deleted custom section code", "operationId": "deleteCustomSection", "parameters": [{"name": "configuration_id", "in": "path", "required": true, "schema": {"type": "string", "format": "uuid", "title": "Configuration Id"}}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/DeleteSectionInput"}}}}, "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {"type": "string", "title": "Response Deletecustomsection"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}, "patch": {"tags": ["configurations"], "summary": "Update Section", "description": "Update a section entry for a configuration.\n\nArgs:\n configuration_id (UUID): ID of the configuration to update\n section_input (SectionUpdateInput): Updated section info\n user (DbUser): The logged-in user\n db (AsyncDatabaseConnection): Database connection\n\nRaises:\n HTTPException: 400 if the code is not valid, code is in use, or name is in use\n HTTPException: 404 if configuration isn't found\n HTTPException: 409 if configuration is not a draft and therefore not editable\n HTTPException: 500 if section processing can't be updated\n\nReturns:\n UpdateSectionProcessingResponse: The message to show the user", "operationId": "updateSection", "parameters": [{"name": "configuration_id", "in": "path", "required": true, "schema": {"type": "string", "format": "uuid", "title": "Configuration Id"}}], "requestBody": {"required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/SectionUpdateInput"}}}}, "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/UpdateSectionProcessingResponse"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/api/v1/configurations/{configuration_id}/activate": {"patch": {"tags": ["configurations"], "summary": "Activate Configuration", "description": "Activate the specified configuration.\n\nArgs:\n configuration_id (UUID): ID of the configuration to update\n user (DbUser): The logged-in user\n logger (Logger): The standard logger\n db (AsyncDatabaseConnection): Database connection\n\nRaises:\n HTTPException: 400 if configuration can't be activated because of its current state\n HTTPException: 404 if configuration can't be found\n HTTPException: 500 if configuration can't be activated by the server\n\nReturns:\n ActivateConfigurationResponse: Metadata about the activated condition for confirmation", "operationId": "activateConfiguration", "parameters": [{"name": "configuration_id", "in": "path", "required": true, "schema": {"type": "string", "format": "uuid", "title": "Configuration Id"}}], "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ConfigurationStatusUpdateResponse"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/api/v1/configurations/{configuration_id}/deactivate": {"patch": {"tags": ["configurations"], "summary": "Deactivate Configuration", "description": "Deactivate the specified configuration.\n\nArgs:\n configuration_id (UUID): ID of the configuration to update\n user (DbUser): The logged-in user\n logger (Logger): The standard application logger\n db (AsyncDatabaseConnection): Database connection\n\nRaises:\n HTTPException: 400 if configuration can't be deactivated because of its current state\n HTTPException: 404 if configuration can't be found\n HTTPException: 500 if configuration can't be deactivated by the server\n\nReturns:\n ConfigurationStatusUpdateResponse: Metadata about the activated condition for confirmation", "operationId": "deactivateConfiguration", "parameters": [{"name": "configuration_id", "in": "path", "required": true, "schema": {"type": "string", "format": "uuid", "title": "Configuration Id"}}], "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ConfigurationStatusUpdateResponse"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/api/v1/configurations/{configuration_id}/release-lock": {"post": {"tags": ["configurations"], "summary": "Release Configuration Lock", "description": "Release config lock if held by user.\n\nArgs:\n configuration_id (UUID): ID of the configuration to update\n user (DbUser): The logged-in user\n db (AsyncDatabaseConnection): Database connection", "operationId": "releaseConfigurationLock", "parameters": [{"name": "configuration_id", "in": "path", "required": true, "schema": {"type": "string", "format": "uuid", "title": "Configuration Id"}}], "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/api/v1/simulator/discover-configurations": {"post": {"tags": ["simulator"], "summary": "Discover Configurations", "description": "Detects reportable conditions found in `uploaded_file` and matches them with existing configurations.\n\nConfigurations are returned to the client.\n\nArgs:\n uploaded_file (UploadFile | None, optional): The eCR file package uploaded by the user.\n simulator_zip_path (Path, optional): The path to the demo zip file.\n user (DbUser, optional): The logged in user.\n db (AsyncDatabaseConnection, optional): The database connection.\n logger (Logger, optional): The app logger.\n\nReturns:\n DiscoveredConfigurationsResponse: Matching configurations, grouped by condition.", "operationId": "discoverConfigurations", "requestBody": {"content": {"multipart/form-data": {"schema": {"$ref": "#/components/schemas/Body_discoverConfigurations"}}}}, "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/DiscoveredConfigurationsResponse"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/api/v1/simulator/upload": {"post": {"tags": ["simulator"], "summary": "Simulator Upload", "description": "Handles the simulator upload workflow for eICR refinement.\n\nSteps:\n1. Obtain the simulator eICR ZIP file (either uploaded by user or from local sample in\n refiner/assets/demo/mon-mothma-covid-influenza.zip).\n2. Read and validate the XML files (eICR and RR) from the ZIP (XMLFiles object).\n3. Call the service layer (`simulator`) to orchestrate the refinement workflow.\n4. For each unique reportable condition code found in the RR (and having a configuration),\n build a refined XML document and collect metadata. The code used is the actual code\n from the RR that triggered the match, not a canonical or database code.\n5. Package all refined and original files into a ZIP.\n6. Upload the ZIP to S3 and get a download URL.\n7. Construct and return the response model for the frontend, including per-condition\n refinement results and a link to the ZIP of outputs.\n\nAny exceptions during file processing or workflow execution are caught and mapped to HTTP errors.", "operationId": "uploadEcr", "requestBody": {"content": {"multipart/form-data": {"schema": {"$ref": "#/components/schemas/Body_uploadEcr"}}}, "required": true}, "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/SimulatorUploadResponse"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/api/v1/simulator/download/{filename}": {"get": {"tags": ["simulator"], "summary": "Download Refined Ecr", "description": "Stream refined eCR zip from S3 by filename.\n\nThe client provides only the filename (e.g. `_refined_ecr.zip`). The\nserver constructs the S3 object key based on the authenticated user.", "operationId": "downloadRefinedEcr", "parameters": [{"name": "filename", "in": "path", "required": true, "schema": {"type": "string", "title": "Filename"}}], "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/api/v1/events/": {"get": {"tags": ["events"], "summary": "Get Events", "description": "Returns a list of all events for a jurisdiction, ordered from newest to oldest.\n\nArgs:\n user (DbUser): The user making the request.\n db (AsyncDatabaseConnection): Database connection.\n logger (Logger): Standard logger.\n page (int): page of events to return to the client.\n canonical_url (str | None): An optional filter on the condition.\n\nReturns:\n EventResponse: A bundle with\n - Total page count\n - The list of AuditEvents relevant for the (optional) filter\n - The list of condition information with potentially filter-able data", "operationId": "getEvents", "parameters": [{"name": "page", "in": "query", "required": false, "schema": {"type": "integer", "default": 1, "title": "Page"}}, {"name": "canonical_url", "in": "query", "required": false, "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Canonical Url"}}], "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/EventsResponse"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/api/v1/events/{event_id}/custom-code-uploads": {"get": {"tags": ["events"], "summary": "Get Custom Code Upload Events", "description": "Returns a list of all custom code upload events associated with a parent event ID.\n\nArgs:\n event_id (UUID): The parent event\n user (DbUser): The logged in user\n db (AsyncDatabaseConnection): The database connection\n\nRaises:\n HTTPException: 404 if event with requested ID is not found or does not belong to user's jurisdiction", "operationId": "getCustomCodeUploadEvents", "parameters": [{"name": "event_id", "in": "path", "required": true, "schema": {"type": "string", "format": "uuid", "title": "Event Id"}}], "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {"type": "array", "items": {"$ref": "#/components/schemas/CustomCodeUploadEventResponse"}, "title": "Response Getcustomcodeuploadevents"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/api/v1/releases/": {"get": {"tags": ["releases"], "summary": "Get Releases Data", "description": "Hook to get release data from GitHub and serve it to the frontend.\n\nReturns:\n ReleasesResponse: Reponse of release information in a list of ReleaseMetadata", "operationId": "getReleases", "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ReleasesResponse"}}}}}}}, "/api/v1/code-systems/": {"get": {"tags": ["code-systems"], "summary": "Get Code Systems", "description": "Returns a list of supported code systems.\n\nReturns:\n List of code system.", "operationId": "getCodeSystems", "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {"items": {"$ref": "#/components/schemas/CodeSystemsReponse"}, "type": "array", "title": "Response Getcodesystems"}}}}}}}, "/api/v1/notifications": {"patch": {"tags": ["app-notifications"], "summary": "Update User Notifications", "description": "Updates notification acknowledgement state for the current user.", "operationId": "updateUserNotifications", "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/UpdateUserNotificationsRequest"}}}, "required": true}, "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/UserResponse"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}}, "components": {"schemas": {"AddCustomCodeInput": {"properties": {"code": {"type": "string", "title": "Code"}, "system_key": {"type": "string", "title": "System Key"}, "name": {"type": "string", "title": "Name"}}, "type": "object", "required": ["code", "system_key", "name"], "title": "AddCustomCodeInput", "description": "Input model for adding a custom code to a configuration."}, "AddSectionInput": {"properties": {"code": {"type": "string", "title": "Code"}, "name": {"type": "string", "title": "Name"}}, "type": "object", "required": ["code", "name"], "title": "AddSectionInput", "description": "Request body for adding a section."}, "AssociateCodesetInput": {"properties": {"condition_id": {"type": "string", "format": "uuid", "title": "Condition Id"}}, "type": "object", "required": ["condition_id"], "title": "AssociateCodesetInput", "description": "Condition association input model."}, "AssociateCodesetResponse": {"properties": {"id": {"type": "string", "format": "uuid", "title": "Id"}, "included_conditions": {"items": {"type": "string", "format": "uuid"}, "type": "array", "title": "Included Conditions"}, "condition_name": {"type": "string", "title": "Condition Name"}}, "type": "object", "required": ["id", "included_conditions", "condition_name"], "title": "AssociateCodesetResponse", "description": "Response from adding a code set to a config."}, "AuditEvent": {"properties": {"id": {"type": "string", "format": "uuid", "title": "Id"}, "username": {"type": "string", "title": "Username"}, "configuration_name": {"type": "string", "title": "Configuration Name"}, "configuration_version": {"type": "integer", "title": "Configuration Version"}, "condition_id": {"type": "string", "format": "uuid", "title": "Condition Id"}, "action_text": {"type": "string", "title": "Action Text"}, "created_at": {"type": "string", "format": "date-time", "title": "Created At"}, "has_custom_code_upload_events": {"type": "boolean", "title": "Has Custom Code Upload Events"}}, "type": "object", "required": ["id", "username", "configuration_name", "configuration_version", "condition_id", "action_text", "created_at", "has_custom_code_upload_events"], "title": "AuditEvent", "description": "An event returned by the DB function."}, "Body_discoverConfigurations": {"properties": {"uploaded_file": {"anyOf": [{"type": "string", "contentMediaType": "application/octet-stream"}, {"type": "null"}], "title": "Uploaded File"}}, "type": "object", "title": "Body_discoverConfigurations"}, "Body_runInlineConfigurationTest": {"properties": {"id": {"type": "string", "format": "uuid", "title": "Id"}, "uploaded_file": {"anyOf": [{"type": "string", "contentMediaType": "application/octet-stream"}, {"type": "null"}], "title": "Uploaded File"}}, "type": "object", "required": ["id"], "title": "Body_runInlineConfigurationTest"}, "Body_uploadEcr": {"properties": {"body": {"type": "string", "title": "Body"}, "uploaded_file": {"anyOf": [{"type": "string", "contentMediaType": "application/octet-stream"}, {"type": "null"}], "title": "Uploaded File"}}, "type": "object", "required": ["body"], "title": "Body_uploadEcr"}, "CodeCategoryCompletenessStatus": {"properties": {"category": {"type": "string", "title": "Category"}, "name": {"type": "string", "title": "Name"}, "completeness": {"$ref": "#/components/schemas/CodeCategoryStatus"}}, "type": "object", "required": ["category", "name", "completeness"], "title": "CodeCategoryCompletenessStatus", "description": "Code category completeness status model."}, "CodeCategoryStatus": {"type": "string", "enum": ["not included", "partially complete", "fully complete"]}, "CodeSetStatus": {"type": "string", "enum": ["not expanded", "partially complete", "fully complete"]}, "CodeSystemIndex": {"additionalProperties": {"$ref": "#/components/schemas/DbCodeSystem"}, "propertyNames": {"$ref": "#/components/schemas/CodeSystemKey"}, "type": "object"}, "CodeSystemKey": {"type": "string"}, "CodeSystemsReponse": {"properties": {"id": {"type": "string", "format": "uuid", "title": "Id"}, "key": {"type": "string", "title": "Key"}, "display_name": {"type": "string", "title": "Display Name"}, "oid": {"type": "string", "title": "Oid"}}, "type": "object", "required": ["id", "key", "display_name", "oid"], "title": "CodeSystemsReponse", "description": "Display information needed for code system information on the frontend."}, "CompletenessStatus": {"properties": {"code_set_status": {"$ref": "#/components/schemas/CodeSetStatus"}, "code_category_statuses": {"items": {"$ref": "#/components/schemas/CodeCategoryCompletenessStatus"}, "type": "array", "title": "Code Category Statuses"}}, "type": "object", "required": ["code_set_status", "code_category_statuses"], "title": "CompletenessStatus", "description": "Condition completeness status model."}, "Condition": {"properties": {"code": {"type": "string", "title": "Code"}, "display_name": {"type": "string", "title": "Display Name"}, "refined_eicr": {"type": "string", "title": "Refined Eicr"}, "stats": {"items": {"type": "string"}, "type": "array", "title": "Stats"}, "render_diff": {"type": "boolean", "title": "Render Diff"}}, "type": "object", "required": ["code", "display_name", "refined_eicr", "stats", "render_diff"], "title": "Condition", "description": "Model for a Condition."}, "ConfigurationCustomCodeResponse": {"properties": {"id": {"type": "string", "format": "uuid", "title": "Id"}, "display_name": {"type": "string", "title": "Display Name"}, "code_sets": {"items": {"$ref": "#/components/schemas/DbTotalConditionCodeCount"}, "type": "array", "title": "Code Sets"}, "custom_codes": {"items": {"$ref": "#/components/schemas/DbConfigurationCustomCode"}, "type": "array", "title": "Custom Codes"}}, "type": "object", "required": ["id", "display_name", "code_sets", "custom_codes"], "title": "ConfigurationCustomCodeResponse", "description": "Configuration response for custom code operations (add/edit/delete)."}, "ConfigurationStatusUpdateResponse": {"properties": {"configuration_id": {"type": "string", "format": "uuid", "title": "Configuration Id"}, "status": {"$ref": "#/components/schemas/DbConfigurationStatus"}}, "type": "object", "required": ["configuration_id", "status"], "title": "ConfigurationStatusUpdateResponse", "description": "Response model for updating the status a configuration."}, "ConfigurationTestResponse": {"properties": {"original_eicr": {"type": "string", "title": "Original Eicr"}, "refined_download_key": {"type": "string", "title": "Refined Download Key"}, "condition": {"$ref": "#/components/schemas/Condition"}}, "type": "object", "required": ["original_eicr", "refined_download_key", "condition"], "title": "ConfigurationTestResponse", "description": "Model to represent the response provided to the client when in-line testing is run."}, "ConfirmUploadCustomCodesInput": {"properties": {"custom_codes": {"items": {"$ref": "#/components/schemas/UploadCustomCodesPreviewItem"}, "type": "array", "title": "Custom Codes"}}, "type": "object", "required": ["custom_codes"], "title": "ConfirmUploadCustomCodesInput", "description": "Payload used to confirm a previously validated CSV import."}, "CreateConfigInput": {"properties": {"condition_id": {"type": "string", "format": "uuid", "title": "Condition Id"}}, "type": "object", "required": ["condition_id"], "title": "CreateConfigInput", "description": "Body required to create a new configuration."}, "CreateConfigurationResponse": {"properties": {"id": {"type": "string", "format": "uuid", "title": "Id"}, "name": {"type": "string", "title": "Name"}}, "type": "object", "required": ["id", "name"], "title": "CreateConfigurationResponse", "description": "Configuration creation response model."}, "CustomCodeUploadEventResponse": {"properties": {"id": {"type": "string", "format": "uuid", "title": "Id"}, "system_display_name": {"type": "string", "title": "System Display Name"}, "code": {"type": "string", "title": "Code"}, "name": {"type": "string", "title": "Name"}}, "type": "object", "required": ["id", "system_display_name", "code", "name"], "title": "CustomCodeUploadEventResponse", "description": "Response model for a custom code upload event."}, "CustomCodes": {"properties": {"codes": {"items": {"$ref": "#/components/schemas/DbConfigurationCustomCode"}, "type": "array", "title": "Codes"}, "code_systems": {"$ref": "#/components/schemas/CodeSystemIndex"}}, "type": "object", "required": ["codes", "code_systems"], "title": "CustomCodes", "description": "Model for custom codes response, with systems bundled alongside codes for frontend display."}, "DbCode": {"properties": {"name": {"type": "string", "title": "Name"}, "value": {"type": "string", "title": "Value"}, "version": {"type": "string", "title": "Version"}, "system_id": {"type": "string", "format": "uuid", "title": "System Id"}}, "type": "object", "required": ["name", "value", "version", "system_id"], "title": "DbCode", "description": "DB model for code stored in the codes table."}, "DbCodeSystem": {"properties": {"id": {"type": "string", "format": "uuid", "title": "Id"}, "key": {"$ref": "#/components/schemas/CodeSystemKey"}, "display_name": {"type": "string", "title": "Display Name"}, "oid": {"type": "string", "title": "Oid"}}, "type": "object", "required": ["id", "key", "display_name", "oid"], "title": "DbCodeSystem", "description": "A code system row from the `systems` table."}, "DbConfigurationCustomCode": {"properties": {"code": {"type": "string", "title": "Code"}, "system_key": {"type": "string", "title": "System Key"}, "name": {"type": "string", "title": "Name"}}, "type": "object", "required": ["code", "system_key", "name"], "title": "DbConfigurationCustomCode", "description": "Custom code associated with a Configuration."}, "DbConfigurationSectionProcessing": {"properties": {"include": {"type": "boolean", "title": "Include"}, "narrative": {"$ref": "#/components/schemas/DbNarrativeAction"}, "action": {"$ref": "#/components/schemas/DbSectionAction"}, "name": {"type": "string", "title": "Name"}, "code": {"type": "string", "title": "Code"}, "versions": {"items": {"type": "string"}, "type": "array", "title": "Versions"}, "section_type": {"$ref": "#/components/schemas/DbSectionType"}}, "type": "object", "required": ["include", "narrative", "action", "name", "code", "versions", "section_type"], "title": "DbConfigurationSectionProcessing", "description": "Section Processing instructions for a Configuration.\n\n`name` is the section's name.\n`code` is the LOINC code for the section.\n`versions` is a list of versions this section appears in.\n`section_type` is an indicator as to how the section was created."}, "DbConfigurationStatus": {"type": "string", "enum": ["draft", "inactive", "active"]}, "DbNarrativeAction": {"type": "string", "enum": ["retain", "remove", "reconstruct"]}, "DbSectionAction": {"type": "string", "enum": ["retain", "refine"]}, "DbSectionType": {"type": "string", "enum": ["standard", "custom"]}, "DbTotalConditionCodeCount": {"properties": {"condition_id": {"type": "string", "format": "uuid", "title": "Condition Id"}, "display_name": {"type": "string", "title": "Display Name"}, "total_codes": {"type": "integer", "title": "Total Codes"}}, "type": "object", "required": ["condition_id", "display_name", "total_codes"], "title": "DbTotalConditionCodeCount", "description": "Total code count model."}, "DeleteSectionInput": {"properties": {"code": {"type": "string", "title": "Code"}}, "type": "object", "required": ["code"], "title": "DeleteSectionInput", "description": "Request body to delete a section."}, "DisabledSection": {"type": "string", "enum": ["83910-0", "88085-6"], "title": "DisabledSection", "description": "These sections are preserved intact in every refined document.\n\nThey sit outside the normal refinement workflow not because the\nrefiner needs to protect them, but because we don't yet have a\nreal-world authoring contract to refine against:\n\n- Reportability Response Information (88085-6) is defined by the\n eICR STU 3.1.1 IG as a section the PHA populates after eICR\n receipt, as part of internal data integration -- not something\n the HCO authors at eICR generation time. It's sketched in the\n IG but is not part of eICRs flowing through AIMS today.\n\n- Emergency Outbreak Information (83910-0) has a defined section\n template and a deliberately generic Observation structure\n (\"unknown until the time of the outbreak,\" per the IG). There\n is no settled EHR implementation pattern, and the next outbreak\n will likely shape how this section actually appears in\n production.\n\nSkipping is the easier path for now and produces Schematron-valid\noutput. We can revisit -- per section, independently -- if and\nwhen either becomes something we actually see in real documents.\n\nThe Enum is the single source of truth: used at runtime to derive\nSECTION_PROCESSING_SKIP, and at the API boundary so Orval ships\nthe concrete LOINC codes to the frontend as const values rather\nthan as plain `string[]`."}, "DiscoveredConfigurationSet": {"properties": {"name": {"type": "string", "title": "Name"}, "condition_id": {"type": "string", "format": "uuid", "title": "Condition Id"}, "versions": {"items": {"$ref": "#/components/schemas/DiscoveredConfigurationVersion"}, "type": "array", "title": "Versions"}}, "type": "object", "required": ["name", "condition_id", "versions"], "title": "DiscoveredConfigurationSet", "description": "Model to represent a set of discovered configurations."}, "DiscoveredConfigurationVersion": {"properties": {"id": {"type": "string", "format": "uuid", "title": "Id"}, "version": {"type": "integer", "title": "Version"}, "status": {"$ref": "#/components/schemas/DbConfigurationStatus"}}, "type": "object", "required": ["id", "version", "status"], "title": "DiscoveredConfigurationVersion", "description": "Model to represent individual discovered configurations."}, "DiscoveredConfigurationsResponse": {"properties": {"sets": {"items": {"$ref": "#/components/schemas/DiscoveredConfigurationSet"}, "type": "array", "title": "Sets"}}, "type": "object", "required": ["sets"], "title": "DiscoveredConfigurationsResponse", "description": "Model to represent the sets of discovered configurations to return to the client."}, "EventFilterOption": {"properties": {"id": {"type": "string", "format": "uuid", "title": "Id"}, "name": {"type": "string", "title": "Name"}, "canonical_url": {"type": "string", "title": "Canonical Url"}}, "type": "object", "required": ["id", "name", "canonical_url"], "title": "EventFilterOption", "description": "Conditions returned to the user to be used for filtering events."}, "EventsResponse": {"properties": {"audit_events": {"items": {"$ref": "#/components/schemas/AuditEvent"}, "type": "array", "title": "Audit Events"}, "configuration_options": {"items": {"$ref": "#/components/schemas/EventFilterOption"}, "type": "array", "title": "Configuration Options"}, "total_pages": {"type": "integer", "title": "Total Pages"}}, "type": "object", "required": ["audit_events", "configuration_options", "total_pages"], "title": "EventsResponse", "description": "Response needed for the audit log page."}, "FileInfoResponse": {"properties": {"max_for_diff_rendering_mb": {"type": "integer", "const": 2, "title": "Max For Diff Rendering Mb", "default": 2}, "max_for_uncompressed_mb": {"type": "integer", "const": 15, "title": "Max For Uncompressed Mb", "default": 15}}, "type": "object", "title": "FileInfoResponse", "description": "Utility class to help Orval ship these values to the frontend."}, "GetConditionCode": {"properties": {"code": {"type": "string", "title": "Code"}, "system": {"type": "string", "title": "System"}, "description": {"type": "string", "title": "Description"}}, "type": "object", "required": ["code", "system", "description"], "title": "GetConditionCode", "description": "Model for a condition code."}, "GetConditionResponse": {"properties": {"id": {"type": "string", "format": "uuid", "title": "Id"}, "display_name": {"type": "string", "title": "Display Name"}, "completeness_status": {"$ref": "#/components/schemas/CompletenessStatus"}, "codes": {"items": {"$ref": "#/components/schemas/GetConditionCode"}, "type": "array", "title": "Codes"}, "systems": {"items": {"$ref": "#/components/schemas/CodeSystemsReponse"}, "type": "array", "title": "Systems"}}, "type": "object", "required": ["id", "display_name", "completeness_status", "codes", "systems"], "title": "GetConditionResponse", "description": "Condition response model."}, "GetConditionsResponse": {"properties": {"id": {"type": "string", "format": "uuid", "title": "Id"}, "display_name": {"type": "string", "title": "Display Name"}}, "type": "object", "required": ["id", "display_name"], "title": "GetConditionsResponse", "description": "Conditions response model."}, "GetConfigurationResponse": {"properties": {"id": {"type": "string", "format": "uuid", "title": "Id"}, "draft_id": {"anyOf": [{"type": "string", "format": "uuid"}, {"type": "null"}], "title": "Draft Id"}, "is_draft": {"type": "boolean", "title": "Is Draft"}, "condition_id": {"type": "string", "format": "uuid", "title": "Condition Id"}, "condition_canonical_url": {"type": "string", "title": "Condition Canonical Url"}, "display_name": {"type": "string", "title": "Display Name"}, "status": {"$ref": "#/components/schemas/DbConfigurationStatus"}, "code_sets": {"items": {"$ref": "#/components/schemas/DbTotalConditionCodeCount"}, "type": "array", "title": "Code Sets"}, "included_conditions": {"items": {"$ref": "#/components/schemas/IncludedCondition"}, "type": "array", "title": "Included Conditions"}, "custom_codes": {"$ref": "#/components/schemas/CustomCodes"}, "section_processing": {"items": {"$ref": "#/components/schemas/DbConfigurationSectionProcessing"}, "type": "array", "title": "Section Processing"}, "all_versions": {"items": {"$ref": "#/components/schemas/GetConfigurationResponseVersion"}, "type": "array", "title": "All Versions"}, "rsg_codes": {"items": {"$ref": "#/components/schemas/DbCode"}, "type": "array", "title": "Rsg Codes"}, "version": {"type": "integer", "title": "Version"}, "active_configuration_id": {"anyOf": [{"type": "string", "format": "uuid"}, {"type": "null"}], "title": "Active Configuration Id"}, "active_version": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Active Version"}, "latest_version": {"type": "integer", "title": "Latest Version"}, "is_locked": {"type": "boolean", "title": "Is Locked"}, "locked_by": {"anyOf": [{"$ref": "#/components/schemas/LockedByUser"}, {"type": "null"}]}}, "type": "object", "required": ["id", "draft_id", "is_draft", "condition_id", "condition_canonical_url", "display_name", "status", "code_sets", "included_conditions", "custom_codes", "section_processing", "all_versions", "rsg_codes", "version", "active_configuration_id", "active_version", "latest_version", "is_locked", "locked_by"], "title": "GetConfigurationResponse", "description": "Model for a configration response."}, "GetConfigurationResponseVersion": {"properties": {"id": {"type": "string", "format": "uuid", "title": "Id"}, "version": {"type": "integer", "title": "Version"}, "condition_canonical_url": {"type": "string", "title": "Condition Canonical Url"}, "status": {"$ref": "#/components/schemas/DbConfigurationStatus"}, "created_at": {"type": "string", "format": "date-time", "title": "Created At"}, "created_by": {"type": "string", "title": "Created By"}, "last_activated_at": {"anyOf": [{"type": "string", "format": "date-time"}, {"type": "null"}], "title": "Last Activated At"}, "last_activated_by": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Last Activated By"}}, "type": "object", "required": ["id", "version", "condition_canonical_url", "status", "created_at", "created_by", "last_activated_at", "last_activated_by"], "title": "GetConfigurationResponseVersion", "description": "Model representing a version of a configuration."}, "GetConfigurationsResponse": {"properties": {"id": {"type": "string", "format": "uuid", "title": "Id"}, "name": {"type": "string", "title": "Name"}, "status": {"$ref": "#/components/schemas/DbConfigurationStatus"}}, "type": "object", "required": ["id", "name", "status"], "title": "GetConfigurationsResponse", "description": "Model for a user-defined configuration."}, "HTTPValidationError": {"properties": {"detail": {"items": {"$ref": "#/components/schemas/ValidationError"}, "type": "array", "title": "Detail"}}, "type": "object", "title": "HTTPValidationError"}, "IncludedCondition": {"properties": {"id": {"type": "string", "format": "uuid", "title": "Id"}, "display_name": {"type": "string", "title": "Display Name"}, "canonical_url": {"type": "string", "title": "Canonical Url"}, "version": {"type": "string", "title": "Version"}, "associated": {"type": "boolean", "title": "Associated"}}, "type": "object", "required": ["id", "display_name", "canonical_url", "version", "associated"], "title": "IncludedCondition", "description": "Model for a condition that is associated with a configuration."}, "LockedByUser": {"properties": {"id": {"type": "string", "format": "uuid", "title": "Id"}, "name": {"type": "string", "title": "Name"}, "email": {"type": "string", "title": "Email"}}, "type": "object", "required": ["id", "name", "email"], "title": "LockedByUser", "description": "LockedByUser response to provide user information."}, "NarrativeOnlySection": {"type": "string", "enum": ["10154-3", "29299-5", "10164-2", "10187-3"], "title": "NarrativeOnlySection", "description": "These sections have no entry match rules in the eICR specification.\n\nThey are conveyed via the narrative block only. Configuring them for\n\"refine\" is meaningless (there is nothing to match against), so the UI\ndisables the refine toggle for them and the refinement plan normalizes\n\"refine\" -> \"retain\" for these codes (see refine.py). The Enum values\nremain the single source of truth shipped to the frontend. A unit test\nguards that this enum stays in sync with the spec catalog (every code\nlisted here has has_match_rules=False in the catalog, and every catalog\nsection with has_match_rules=False is listed here)."}, "NotificationKeys": {"type": "string", "enum": ["most_recent_app_update"], "title": "NotificationKeys", "description": "Enum class to type the values of the notifications possible for actioning on the frontend."}, "NotificationsToRender": {"properties": {"to_render": {"additionalProperties": {"type": "boolean"}, "propertyNames": {"$ref": "#/components/schemas/NotificationKeys"}, "type": "object", "title": "To Render"}}, "type": "object", "required": ["to_render"], "title": "NotificationsToRender", "description": "Map of booleans for each of the notificaiton keys as to whether to render frontend banners."}, "Release": {"properties": {"id": {"type": "string", "title": "Id"}, "created_at": {"type": "string", "format": "date-time", "title": "Created At"}, "name": {"type": "string", "title": "Name"}, "release_notes": {"items": {"$ref": "#/components/schemas/ReleaseNotes"}, "type": "array", "title": "Release Notes"}, "prerelease": {"type": "boolean", "title": "Prerelease"}, "url": {"type": "string", "title": "Url"}}, "type": "object", "required": ["id", "created_at", "name", "release_notes", "prerelease", "url"], "title": "Release", "description": "Type for release information sent to the frontend."}, "ReleaseNotes": {"properties": {"id": {"type": "string", "title": "Id"}, "header": {"type": "string", "title": "Header"}, "content": {"type": "string", "title": "Content"}}, "type": "object", "required": ["id", "header", "content"], "title": "ReleaseNotes", "description": "Content of a release note from GitHub."}, "ReleasesResponse": {"properties": {"releases": {"items": {"$ref": "#/components/schemas/Release"}, "type": "array", "title": "Releases"}}, "type": "object", "required": ["releases"], "title": "ReleasesResponse", "description": "Response for releases as returned through the GitHub API."}, "SectionUpdateInput": {"properties": {"include": {"anyOf": [{"type": "boolean"}, {"type": "null"}], "title": "Include"}, "narrative": {"anyOf": [{"$ref": "#/components/schemas/DbNarrativeAction"}, {"type": "null"}]}, "action": {"anyOf": [{"$ref": "#/components/schemas/DbSectionAction"}, {"type": "null"}]}, "name": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Name"}, "current_code": {"type": "string", "title": "Current Code"}, "new_code": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "New Code"}}, "type": "object", "required": ["current_code"], "title": "SectionUpdateInput", "description": "Input model for updating a section's processing instructions."}, "SimulatorUploadResponse": {"properties": {"message": {"type": "string", "title": "Message"}, "refined_conditions_found": {"type": "integer", "title": "Refined Conditions Found"}, "refined_conditions": {"items": {"$ref": "#/components/schemas/Condition"}, "type": "array", "title": "Refined Conditions"}, "unrefined_eicr": {"type": "string", "title": "Unrefined Eicr"}, "refined_download_key": {"type": "string", "title": "Refined Download Key"}, "file_info_response": {"$ref": "#/components/schemas/FileInfoResponse"}}, "type": "object", "required": ["message", "refined_conditions_found", "refined_conditions", "unrefined_eicr", "refined_download_key", "file_info_response"], "title": "SimulatorUploadResponse", "description": "Model for the response when uploading a document in the simulate testing suite."}, "UpdateCustomCodeInput": {"properties": {"system_key": {"type": "string", "title": "System Key"}, "code": {"type": "string", "title": "Code"}, "name": {"type": "string", "title": "Name"}, "new_code": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "New Code"}, "new_system_key": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "New System Key"}, "new_name": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "New Name"}}, "type": "object", "required": ["system_key", "code", "name", "new_code", "new_system_key", "new_name"], "title": "UpdateCustomCodeInput", "description": "Input model when updating a config's custom code."}, "UpdateSectionProcessingResponse": {"properties": {"section_updated_code": {"type": "string", "title": "Section Updated Code"}, "disabled_section": {"items": {"$ref": "#/components/schemas/DisabledSection"}, "type": "array", "title": "Disabled Section"}, "narrative_only_section": {"items": {"$ref": "#/components/schemas/NarrativeOnlySection"}, "type": "array", "title": "Narrative Only Section"}}, "type": "object", "required": ["section_updated_code", "disabled_section", "narrative_only_section"], "title": "UpdateSectionProcessingResponse", "description": "Section with information for a custom section update."}, "UpdateUserNotificationsRequest": {"properties": {"key": {"$ref": "#/components/schemas/NotificationKeys"}}, "type": "object", "required": ["key"], "title": "UpdateUserNotificationsRequest", "description": "Request to update notification acknowledgement state for the current user."}, "UploadCustomCodesCsvInput": {"properties": {"csv_text": {"type": "string", "title": "Csv Text", "description": "Full CSV contents as UTF-8 text"}, "filename": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Filename"}}, "type": "object", "required": ["csv_text"], "title": "UploadCustomCodesCsvInput", "description": "Input model for Custom Code CSV."}, "UploadCustomCodesPreviewItem": {"properties": {"code": {"type": "string", "title": "Code"}, "system_key": {"type": "string", "title": "System Key"}, "system_display_name": {"type": "string", "title": "System Display Name"}, "name": {"type": "string", "title": "Name"}, "row": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Row"}}, "type": "object", "required": ["code", "system_key", "system_display_name", "name"], "title": "UploadCustomCodesPreviewItem", "description": "Validated CSV row ready for confirmation."}, "UploadCustomCodesPreviewResponse": {"properties": {"preview": {"items": {"$ref": "#/components/schemas/UploadCustomCodesPreviewItem"}, "type": "array", "title": "Preview"}, "code_systems": {"$ref": "#/components/schemas/CodeSystemIndex"}, "codes_processed": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Codes Processed"}, "total_custom_codes_in_configuration": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Total Custom Codes In Configuration"}}, "type": "object", "required": ["preview", "code_systems"], "title": "UploadCustomCodesPreviewResponse", "description": "Validated CSV preview for delayed confirmation; only valid if preview."}, "UploadCustomCodesResponse": {"properties": {"message": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Message"}, "codes_processed": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Codes Processed"}, "total_custom_codes_in_configuration": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Total Custom Codes In Configuration"}, "errors": {"anyOf": [{"items": {"additionalProperties": true, "type": "object"}, "type": "array"}, {"type": "null"}], "title": "Errors"}}, "type": "object", "title": "UploadCustomCodesResponse", "description": "CSV response model. Errors are surfaced via the `errors` array."}, "UserResponse": {"properties": {"id": {"type": "string", "format": "uuid", "title": "Id"}, "username": {"type": "string", "title": "Username"}, "jurisdiction_id": {"type": "string", "title": "Jurisdiction Id"}, "notifications": {"$ref": "#/components/schemas/NotificationsToRender"}}, "type": "object", "required": ["id", "username", "jurisdiction_id", "notifications"], "title": "UserResponse", "description": "User information to send to the client."}, "ValidateCustomCodeInput": {"properties": {"current_code": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Current Code"}, "desired_code": {"type": "string", "title": "Desired Code"}}, "type": "object", "required": ["current_code", "desired_code"], "title": "ValidateCustomCodeInput", "description": "Input model when validating a config's custom code."}, "ValidateCustomCodeResponse": {"properties": {"valid": {"type": "boolean", "title": "Valid"}}, "type": "object", "required": ["valid"], "title": "ValidateCustomCodeResponse", "description": "Validation response model."}, "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"}}}}