CDC configurations API
The configurations API from CDC — 15 operation(s) for configurations.
The configurations API from CDC — 15 operation(s) for configurations.
openapi: 3.1.0
info:
title: DIBBs eCR Refiner app-notifications configurations API
description: 'Please visit the repo for more info: https://github.com/CDCgov/dibbs-ecr-refiner'
version: 1.0.0
tags:
- name: configurations
paths:
/api/v1/configurations/:
get:
tags:
- configurations
summary: Get Configurations
description: "Returns a list of configurations based on the logged-in user.\n\nReturns:\n List of configuration objects."
operationId: getConfigurations
responses:
'200':
description: Successful Response
content:
application/json:
schema:
items:
$ref: '#/components/schemas/GetConfigurationsResponse'
type: array
title: Response Getconfigurations
post:
tags:
- configurations
summary: Create Configuration
description: Create a new configuration for a jurisdiction.
operationId: createConfiguration
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/CreateConfigInput'
required: true
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/CreateConfigurationResponse'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
/api/v1/configurations/{configuration_id}:
get:
tags:
- configurations
summary: Get Configuration
description: Get a single configuration by its ID including all associated conditions.
operationId: getConfiguration
parameters:
- name: configuration_id
in: path
required: true
schema:
type: string
format: uuid
title: Configuration Id
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/GetConfigurationResponse'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
/api/v1/configurations/{configuration_id}/code-sets:
put:
tags:
- configurations
summary: Associate Condition Codeset With Configuration
description: "Associate a specified code set with the given configuration.\n\nArgs:\n configuration_id (UUID): ID of the configuration\n body (AssociateCodesetInput): payload containing a condition_id\n user (dict[str, Any], optional): User making the request\n db (AsyncDatabaseConnection, optional): Database connection\n\nRaises:\n HTTPException: 404 if configuration is not found in JD\n HTTPException: 404 if configuration is not found\n HTTPException: 409 if configuration is not a draft and therefore not editable\n HTTPException: 500 if configuration cannot be updated\n\nReturns:\n AssociateCodesetResponse: ID of updated configuration, the full list of included conditions,\n and the condition_name"
operationId: associateConditionWithConfiguration
parameters:
- name: configuration_id
in: path
required: true
schema:
type: string
format: uuid
title: Configuration Id
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/AssociateCodesetInput'
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/AssociateCodesetResponse'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
/api/v1/configurations/{configuration_id}/code-sets/{condition_id}:
delete:
tags:
- configurations
summary: Remove Condition Codeset From Configuration
description: "Remove a specified code set from the given configuration.\n\nArgs:\n configuration_id (UUID): ID of the configuration\n condition_id (UUID): ID of the condition to remove\n user (DbUser): User making the request\n db (AsyncDatabaseConnection): Database connection\n\nRaises:\n HTTPException: 404 if configuration is not found in JD\n HTTPException: 404 if condition is not found\n HTTPException: 409 if trying to remove the main condition\n HTTPException: 409 if configuration is not a draft and therefore not editable\n HTTPException: 500 if configuration is cannot be updated\n\nReturns:\n AssociateCodesetResponse: ID of updated configuration and the full list\n of included conditions plus condition_name"
operationId: disassociateConditionWithConfiguration
parameters:
- name: configuration_id
in: path
required: true
schema:
type: string
format: uuid
title: Configuration Id
- name: condition_id
in: path
required: true
schema:
type: string
format: uuid
title: Condition Id
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/AssociateCodesetResponse'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
/api/v1/configurations/{configuration_id}/custom-codes:
post:
tags:
- configurations
summary: Add Custom Code
description: "Add a user-defined custom code to a configuration.\n\nArgs:\n configuration_id (UUID): The ID of the configuration to update.\n body (AddCustomCodeInput): The custom code information provided by the user.\n user (dict[str, Any]): The logged-in user.\n db (AsyncDatabaseConnection): The database connection.\n\nRaises:\n HTTPException: 404 if configuration isn't found\n HTTPException: 409 if configuration is not a draft and therefore not editable\n HTTPException: 500 if custom code can't be added\n\nReturns:\n ConfigurationCustomCodeResponse: Updated configuration"
operationId: addCustomCodeToConfiguration
parameters:
- name: configuration_id
in: path
required: true
schema:
type: string
format: uuid
title: Configuration Id
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/AddCustomCodeInput'
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/ConfigurationCustomCodeResponse'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
put:
tags:
- configurations
summary: Edit Custom Code
description: "Modify a configuration's custom code based on system_key/code pair.\n\nArgs:\n configuration_id (UUID): The ID of the configuration to modify.\n body (UpdateCustomCodeInput): User-provided object containing custom code info.\n user (dict[str, Any]): The logged-in user.\n db (AsyncDatabaseConnection): The database connection.\n logger (Logger): The system logger.\n\nRaises:\n HTTPException: 409 if configuration is not a draft and therefore not editable\n HTTPException: 500 if the configuration can't be updated\n\nReturns:\n ConfigurationCustomCodeResponse: The updated configuration."
operationId: editCustomCodeFromConfiguration
parameters:
- name: configuration_id
in: path
required: true
schema:
type: string
format: uuid
title: Configuration Id
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateCustomCodeInput'
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/ConfigurationCustomCodeResponse'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
/api/v1/configurations/{configuration_id}/custom-codes/upload:
post:
tags:
- configurations
summary: Upload Custom Codes Csv
description: "Accepts a CSV payload in JSON body.\n\nExpected CSV headers:\n code_number,code_system,display_name\n\nReturns:\n UploadCustomCodesResponse"
operationId: uploadCustomCodesCsv
parameters:
- name: configuration_id
in: path
required: true
schema:
type: string
format: uuid
title: Configuration Id
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/UploadCustomCodesCsvInput'
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/UploadCustomCodesPreviewResponse'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
/api/v1/configurations/{configuration_id}/custom-codes/confirm:
post:
tags:
- configurations
summary: Confirm Upload Custom Codes Csv
description: Confirm and save custom codes from preview list.
operationId: confirmUploadCustomCodesCsv
parameters:
- name: configuration_id
in: path
required: true
schema:
type: string
format: uuid
title: Configuration Id
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ConfirmUploadCustomCodesInput'
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/UploadCustomCodesResponse'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
/api/v1/configurations/{configuration_id}/custom-codes/{system_key}/{code}:
delete:
tags:
- configurations
summary: Delete Custom Code
description: "Delete a custom code from a configuration.\n\nArgs:\n configuration_id (UUID): The ID of the configuration to modify.\n system_key (str): System of the custom code.\n code (str): Code of the custom code.\n user (dict[str, Any]): The logged-in user.\n db (AsyncDatabaseConnection): The database connection.\n\nRaises:\n HTTPException: 400 if system_key is not provided\n HTTPException: 400 if code is not provided\n HTTPException: 404 if configuration can't be found\n HTTPException: 409 if configuration is not a draft and therefore not editable\n HTTPException: 500 if configuration can't be updated\n\nReturns:\n ConfigurationCustomCodeResponse: The updated configuration"
operationId: deleteCustomCodeFromConfiguration
parameters:
- name: configuration_id
in: path
required: true
schema:
type: string
format: uuid
title: Configuration Id
- name: system_key
in: path
required: true
schema:
type: string
title: System Key
- name: code
in: path
required: true
schema:
type: string
title: Code
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/ConfigurationCustomCodeResponse'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
/api/v1/configurations/{configuration_id}/custom-codes/validate:
post:
tags:
- configurations
summary: Validate Custom Code
description: "Determines whether a custom code update is valid or not.\n\nIf the desired code is already associated with the configuration, then the update is\ninvalid.\n\nArgs:\n configuration_id (UUID): The configuration ID\n body (ValidateCustomCodeInput): Body including the code to validate\n user (DbUser, optional): The logged in user\n db (AsyncDatabaseConnection, optional): The database connection\n\nReturns:\n bool: Returns True if the code name has not been used, otherwise returns False"
operationId: validateCustomCodeFromConfiguration
parameters:
- name: configuration_id
in: path
required: true
schema:
type: string
format: uuid
title: Configuration Id
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ValidateCustomCodeInput'
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/ValidateCustomCodeResponse'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
/api/v1/configurations/{configuration_id}/export:
get:
tags:
- configurations
summary: Get Configuration Export
description: Create a CSV export of a configuration and all associated codes.
operationId: getConfigurationExport
parameters:
- name: configuration_id
in: path
required: true
schema:
type: string
format: uuid
title: Configuration Id
responses:
'200':
description: Successful Response
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
/api/v1/configurations/test:
post:
tags:
- configurations
summary: Run Configuration Test
description: "Runs an inline test of a given configuration against an eICR/RR pair.\n\nThis endpoint orchestrates the validation and refinement process by:\n1. Handling file input, either from a user upload or a default sample file.\n2. Calling the `inline_testing` service, which validates that the specified\n configuration's condition is reportable in the provided file.\n3. Handling the service response:\n - If validation fails, raises a 400 Bad Request with a specific error.\n - If successful, proceeds with the returned refined document.\n4. Packaging the original eICR, RR, and the single refined eICR into a\n new in-memory zip archive.\n5. Uploading the archive to S3 and generating a pre-signed download URL.\n6. Returning a `ConfigurationTestResponse` with the download URL and details\n of the successful refinement.\n\nArgs:\n id: The ID of the configuration to test.\n uploaded_file: An optional user-provided zip file with an eICR and RR.\n create_output_zip: Dependency to create a zip archive in memory.\n upload_zip: Dependency to upload the archive to S3.\n user: The authenticated user making the request.\n db: The database connection.\n sample_zip_path: Path to the default sample zip file.\n logger: The application logger.\n\nReturns:\n A response object containing the original eICR, a URL to download the\n zipped results, and details about the refined condition."
operationId: runInlineConfigurationTest
requestBody:
content:
multipart/form-data:
schema:
$ref: '#/components/schemas/Body_runInlineConfigurationTest'
required: true
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/ConfigurationTestResponse'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
/api/v1/configurations/{configuration_id}/sections:
post:
tags:
- configurations
summary: Insert Custom Section
description: "Create a new custom section for a given configuration ID.\n\nArgs:\n configuration_id (UUID): The ID of the configuration\n section_input (CustomSectionInput): Desired properties of the section\n user (DbUser): The logged-in user\n db (AsyncDatabaseConnection): The database connection"
operationId: addCustomSection
parameters:
- name: configuration_id
in: path
required: true
schema:
type: string
format: uuid
title: Configuration Id
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/AddSectionInput'
responses:
'200':
description: Successful Response
content:
application/json:
schema:
type: string
title: Response Addcustomsection
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
delete:
tags:
- configurations
summary: Delete Custom Section
description: "Delete a custom section.\n\nArgs:\n configuration_id (UUID): ID of the configuration with custom section to delete\n section_input (DeleteCustomSectionInput): Custom section deletion input\n user (DbUser): The logged in user\n db (AsyncDatabaseConnection): The database connection\n\nRaises:\n HTTPException: 404 if configuration isn't found\n HTTPException: 409 if configuration isn't a draft\n HTTPException: 404 if custom section code to delete isn't found\n\nReturns:\n str: Deleted custom section code"
operationId: deleteCustomSection
parameters:
- name: configuration_id
in: path
required: true
schema:
type: string
format: uuid
title: Configuration Id
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/DeleteSectionInput'
responses:
'200':
description: Successful Response
content:
application/json:
schema:
type: string
title: Response Deletecustomsection
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
patch:
tags:
- configurations
summary: Update Section
description: "Update a section entry for a configuration.\n\nArgs:\n configuration_id (UUID): ID of the configuration to update\n section_input (SectionUpdateInput): Updated section info\n user (DbUser): The logged-in user\n db (AsyncDatabaseConnection): Database connection\n\nRaises:\n HTTPException: 400 if the code is not valid, code is in use, or name is in use\n HTTPException: 404 if configuration isn't found\n HTTPException: 409 if configuration is not a draft and therefore not editable\n HTTPException: 500 if section processing can't be updated\n\nReturns:\n UpdateSectionProcessingResponse: The message to show the user"
operationId: updateSection
parameters:
- name: configuration_id
in: path
required: true
schema:
type: string
format: uuid
title: Configuration Id
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/SectionUpdateInput'
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateSectionProcessingResponse'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
/api/v1/configurations/{configuration_id}/activate:
patch:
tags:
- configurations
summary: Activate Configuration
description: "Activate the specified configuration.\n\nArgs:\n configuration_id (UUID): ID of the configuration to update\n user (DbUser): The logged-in user\n logger (Logger): The standard logger\n db (AsyncDatabaseConnection): Database connection\n\nRaises:\n HTTPException: 400 if configuration can't be activated because of its current state\n HTTPException: 404 if configuration can't be found\n HTTPException: 500 if configuration can't be activated by the server\n\nReturns:\n ActivateConfigurationResponse: Metadata about the activated condition for confirmation"
operationId: activateConfiguration
parameters:
- name: configuration_id
in: path
required: true
schema:
type: string
format: uuid
title: Configuration Id
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/ConfigurationStatusUpdateResponse'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
/api/v1/configurations/{configuration_id}/deactivate:
patch:
tags:
- configurations
summary: Deactivate Configuration
description: "Deactivate the specified configuration.\n\nArgs:\n configuration_id (UUID): ID of the configuration to update\n user (DbUser): The logged-in user\n logger (Logger): The standard application logger\n db (AsyncDatabaseConnection): Database connection\n\nRaises:\n HTTPException: 400 if configuration can't be deactivated because of its current state\n HTTPException: 404 if configuration can't be found\n HTTPException: 500 if configuration can't be deactivated by the server\n\nReturns:\n ConfigurationStatusUpdateResponse: Metadata about the activated condition for confirmation"
operationId: deactivateConfiguration
parameters:
- name: configuration_id
in: path
required: true
schema:
type: string
format: uuid
title: Configuration Id
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/ConfigurationStatusUpdateResponse'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
/api/v1/configurations/{configuration_id}/release-lock:
post:
tags:
- configurations
summary: Release Configuration Lock
description: "Release config lock if held by user.\n\nArgs:\n configuration_id (UUID): ID of the configuration to update\n user (DbUser): The logged-in user\n db (AsyncDatabaseConnection): Database connection"
operationId: releaseConfigurationLock
parameters:
- name: configuration_id
in: path
required: true
schema:
type: string
format: uuid
title: Configuration Id
responses:
'200':
description: Successful Response
content:
application/json:
schema: {}
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
components:
schemas:
DbSectionType:
type: string
enum:
- standard
- custom
NarrativeOnlySection:
type: string
enum:
- 10154-3
- 29299-5
- 10164-2
- 10187-3
title: NarrativeOnlySection
description: 'These sections have no entry match rules in the eICR specification.
They are conveyed via the narrative block only. Configuring them for
"refine" is meaningless (there is nothing to match against), so the UI
disables the refine toggle for them and the refinement plan normalizes
"refine" -> "retain" for these codes (see refine.py). The Enum values
remain the single source of truth shipped to the frontend. A unit test
guards that this enum stays in sync with the spec catalog (every code
listed here has has_match_rules=False in the catalog, and every catalog
section with has_match_rules=False is listed here).'
UploadCustomCodesPreviewResponse:
properties:
preview:
items:
$ref: '#/components/schemas/UploadCustomCodesPreviewItem'
type: array
title: Preview
code_systems:
$ref: '#/components/schemas/CodeSystemIndex'
codes_processed:
anyOf:
- type: integer
- type: 'null'
title: Codes Processed
total_custom_codes_in_configuration:
anyOf:
- type: integer
- type: 'null'
title: Total Custom Codes In Configuration
type: object
required:
- preview
- code_systems
title: UploadCustomCodesPreviewResponse
description: Validated CSV preview for delayed confirmation; only valid if preview.
CustomCodes:
properties:
codes:
items:
$ref: '#/components/schemas/DbConfigurationCustomCode'
type: array
title: Codes
code_systems:
$ref: '#/components/schemas/CodeSystemIndex'
type: object
required:
- codes
- code_systems
title: CustomCodes
description: Model for custom codes response, with systems bundled alongside codes for frontend display.
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.
DbCodeSystem:
properties:
id:
type: string
format: uuid
title: Id
key:
$ref: '#/components/schemas/CodeSystemKey'
display_name:
type: string
title: Display Name
oid:
type: string
title: Oid
type: object
required:
- id
- key
- display_name
- oid
title: DbCodeSystem
description: A code system row from the `systems` table.
DbNarrativeAction:
type: string
enum:
- retain
- remove
- reconstruct
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).
UploadCustomCodesPreviewItem:
properties:
code:
type: string
title: Code
system_key:
type: string
title: System Key
system_display_name:
type: string
title: System Display Name
name:
type: string
title: Name
row:
anyOf:
- type: integer
- type: 'null'
title: Row
type: object
required:
- code
- system_key
- system_display_name
- name
title: UploadCustomCodesPreviewItem
description: Validated CSV row ready for confirmation.
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
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.
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.
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.
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.
AssociateCodesetInput:
properties:
condition_id:
type: string
format: uuid
title: Condition Id
type: object
required:
- condition_id
title: AssociateCodesetInput
description: Condition association input model.
LockedByUser:
properties:
id:
type: string
format: uuid
# --- truncated at 32 KB (47 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/cdc/refs/heads/main/openapi/cdc-configurations-api-openapi.yml