{"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"}, "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", "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."}, "NotificationInfo": {"properties": {"should_show": {"type": "boolean", "title": "Should Show"}, "date_acknowledged": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Date Acknowledged"}}, "type": "object", "required": ["should_show"], "title": "NotificationInfo", "description": "Information for a single notification."}, "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": [{"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": {"name": {"type": "string", "title": "Name"}, "date_acknowledged": {"type": "string", "title": "Date Acknowledged"}}, "type": "object", "required": ["name", "date_acknowledged"], "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."}, "UserNotifications": {"properties": {"most_recent_app_update": {"$ref": "#/components/schemas/NotificationInfo"}}, "type": "object", "required": ["most_recent_app_update"], "title": "UserNotifications", "description": "User notification state."}, "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/UserNotifications"}}, "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"}}}}