{ "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/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\nRaises:\n HTTPException: 400 if a system is not provided\n HTTPException: 400 if a code is not provided\n HTTPException: 404 if the configuration can't be found\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}/{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 (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 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", "in": "path", "required": true, "schema": { "type": "string", "title": "System" } }, { "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": { "type": "string", "title": "Response Updatesection" } } } }, "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/demo/upload": { "post": { "tags": [ "demo" ], "summary": "Demo Upload", "description": "Handles the demo upload workflow for eICR refinement.\n\nSteps:\n1. Obtain the demo 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 (`independent_testing`) 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" } } } }, "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/IndependentTestUploadResponse" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/v1/demo/download/{filename}": { "get": { "tags": [ "demo" ], "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/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": { "$ref": "#/components/schemas/CodeSystem" }, "name": { "type": "string", "title": "Name" } }, "type": "object", "required": [ "code", "system", "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_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": { "uploaded_file": { "anyOf": [ { "type": "string", "contentMediaType": "application/octet-stream" }, { "type": "null" } ], "title": "Uploaded File" } }, "type": "object", "title": "Body_uploadEcr" }, "CodeCategoryCompletenessStatus": { "properties": { "category": { "type": "string", "title": "Category" }, "name": { "type": "string", "title": "Name" }, "included": { "type": "boolean", "title": "Included" } }, "type": "object", "required": [ "category", "name", "included" ], "title": "CodeCategoryCompletenessStatus", "description": "Code category completeness status model." }, "CodeSetStatus": { "type": "string", "enum": [ "not expanded", "partially complete", "fully complete" ] }, "CodeSystem": { "type": "string", "enum": [ "LOINC", "SNOMED", "ICD-10", "RxNorm", "CVX", "Other" ], "title": "CodeSystem", "description": "An Enum for code systems." }, "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": { "type": "string", "title": "System" }, "code": { "type": "string", "title": "Code" }, "name": { "type": "string", "title": "Name" } }, "type": "object", "required": [ "id", "system", "code", "name" ], "title": "CustomCodeUploadEventResponse", "description": "Response model for a custom code upload event." }, "DbConfigurationCustomCode": { "properties": { "code": { "type": "string", "title": "Code" }, "system": { "$ref": "#/components/schemas/CodeSystem" }, "name": { "type": "string", "title": "Name" } }, "type": "object", "required": [ "code", "system", "name" ], "title": "DbConfigurationCustomCode", "description": "Custom code associated with a Configuration." }, "DbConfigurationSectionProcessing": { "properties": { "include": { "type": "boolean", "title": "Include" }, "narrative": { "type": "boolean", "title": "Narrative" }, "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" ] }, "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." }, "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" } }, "type": "object", "required": [ "id", "display_name", "completeness_status", "codes" ], "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": { "items": { "$ref": "#/components/schemas/DbConfigurationCustomCode" }, "type": "array", "title": "Custom Codes" }, "section_processing": { "items": { "$ref": "#/components/schemas/DbConfigurationSectionProcessing" }, "type": "array", "title": "Section Processing" }, "section_metadata": { "$ref": "#/components/schemas/SectionMetadata" }, "all_versions": { "items": { "$ref": "#/components/schemas/GetConfigurationResponseVersion" }, "type": "array", "title": "All Versions" }, "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", "section_metadata", "all_versions", "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." }, "IndependentTestUploadResponse": { "properties": { "message": { "type": "string", "title": "Message" }, "conditions_without_matching_configs": { "items": { "type": "string" }, "type": "array", "title": "Conditions Without Matching Configs" }, "conditions_without_active_configs": { "items": { "type": "string" }, "type": "array", "title": "Conditions Without Active Configs" }, "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", "conditions_without_matching_configs", "conditions_without_active_configs", "refined_conditions_found", "refined_conditions", "unrefined_eicr", "refined_download_key", "file_info_response" ], "title": "IndependentTestUploadResponse", "description": "Model for the response when uploading a document in the testing suite." }, "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." }, "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." }, "SectionMetadata": { "properties": { "disabled_sections": { "prefixItems": [ { "type": "string", "const": "83910-0" }, { "type": "string", "const": "88085-6" } ], "type": "array", "maxItems": 2, "minItems": 2, "title": "Disabled Sections", "default": [ "83910-0", "88085-6" ] }, "narrative_only_sections": { "prefixItems": [ { "type": "string", "const": "10154-3" }, { "type": "string", "const": "29299-5" }, { "type": "string", "const": "10164-2" }, { "type": "string", "const": "10187-3" } ], "type": "array", "maxItems": 4, "minItems": 4, "title": "Narrative Only Sections", "default": [ "10154-3", "29299-5", "10164-2", "10187-3" ] } }, "type": "object", "title": "SectionMetadata", "description": "Utility class to help Orval ship these values to the frontend.\n\nThese sets of LOINC codes drive UI behavior in the eICR Sections\ntable and are sourced from refiner policy + the eICR specification.\nShipping them as literal-typed defaults means the frontend imports\nreal values rather than re-declaring them." }, "SectionUpdateInput": { "properties": { "include": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "title": "Include" }, "narrative": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "title": "Narrative" }, "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": "Request body for modifying a section." }, "UpdateCustomCodeInput": { "properties": { "system": { "type": "string", "title": "System" }, "code": { "type": "string", "title": "Code" }, "name": { "type": "string", "title": "Name" }, "new_code": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "New Code" }, "new_system": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "New System" }, "new_name": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "New Name" } }, "type": "object", "required": [ "system", "code", "name", "new_code", "new_system", "new_name" ], "title": "UpdateCustomCodeInput", "description": "Input model when updating a config's custom code." }, "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": { "$ref": "#/components/schemas/CodeSystem" }, "name": { "type": "string", "title": "Name" }, "row": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "title": "Row" } }, "type": "object", "required": [ "code", "system", "name" ], "title": "UploadCustomCodesPreviewItem", "description": "Validated CSV row ready for confirmation." }, "UploadCustomCodesPreviewResponse": { "properties": { "preview": { "items": { "$ref": "#/components/schemas/UploadCustomCodesPreviewItem" }, "type": "array", "title": "Preview" }, "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" ], "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" } } } }