Certifyos Facility Credentialing Workflow API

APIs for managing facility credentialing workflows

OpenAPI Specification

certifyos-facilitycredentialingworkflow-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  description: API for Certify application
  title: Certify API Layer Facility Credentialing Workflow API
  version: 1.0.0
servers:
- url: http://localhost:9000
  description: Local Development Server
- url: https://api-service.staging.certifyos.com
  description: Staging Server
- url: https://api-service.internal.certifyos.com
  description: Internal Server
- url: https://api-service.test.certifyos.com
  description: Test Server
- url: https://api-service.demo.certifyos.com
  description: Demo Server
- url: https://api-service.certifyos.com
  description: Production Server
tags:
- name: FacilityCredentialingWorkflow
  description: APIs for managing facility credentialing workflows
paths:
  /facility-credentialing-workflows:
    get:
      summary: Get facility credentialing workflows
      description: Retrieves a list of facility credentialing workflows based on filter criteria
      operationId: getFacilityCredentialingWorkflows
      tags:
      - FacilityCredentialingWorkflow
      parameters:
      - description: End at document ID, for backward cursor-based pagination
        name: endAtId
        in: query
        schema:
          type: string
      - description: "## Filter Criteria\n\nThe filter parameter must be URL encoded when sent. Filters are specified as JSON objects where each field can have\none or more filter operations.\n\n### Filterable Fields\n\n#### Core Workflow Fields\n- **id**: Workflow unique identifier (String)\n- **createdAt**: Workflow creation timestamp (Timestamp)\n- **updatedAt**: Workflow last update timestamp (Timestamp)\n\n#### Data Fields - Workflow Information\n- **data.credentialingCycle**: Credentialing cycle (String)\n- **data.facilityFileType**: Type of facility file (String)\n- **data.assignedTo**: User assigned to the workflow (String)\n- **data.assignedBy**: User who assigned the workflow (String)\n\n#### Data Fields - Status & Dates\n- **data.credentialingStatus**: Current workflow status (String)\n- **data.psvReadyDate**: PSV ready date (Timestamp)\n- **data.psvCompletedDate**: PSV completed date (Timestamp)\n- **data.credentialingStatusLastUpdatedDate**: Status last updated date (Timestamp)\n- **data.previousCredentialedDate**: Previous credentialing date (Date)\n- **data.credentialingDueDate**: Credentialing due date (Date)\n- **data.nextCredentialingDate**: Next credentialing date (Date)\n- **data.credentialingDecisionDate**: Credentialing decision date (Date)\n\n#### Data Fields - Facility Information\n- **data.facility.npi**: National Provider Identifier (String)\n- **data.facility.name**: Facility name (String)\n- **data.facility.tin**: Tax Identification Number (String)\n- **data.facility.externalId**: External identifier (String)\n- **data.facility.primaryEmail**: Primary email address (String)\n- **data.facility.facilityType**: Type of facility (String)\n- **data.facility.lineOfBusiness**: Array of lines of business (Array - eq/in only)\n- **data.facility.licensedStates**: Array of licensed states (Array - eq/in only)\n\n### Supported Filter Operations\n\n#### String Fields (eq, neq, in, nin, contains)\n- **eq**: Exact match - `{\"field\":{\"eq\":\"value\"}}`\n- **neq**: Not equal - `{\"field\":{\"neq\":\"value\"}}`\n- **in**: Match any value in array - `{\"field\":{\"in\":[\"value1\",\"value2\"]}}`\n- **nin**: Not match any value in array - `{\"field\":{\"nin\":[\"value1\",\"value2\"]}}`\n- **contains**: Substring match - `{\"field\":{\"contains\":\"partial\"}}`\n\n#### Timestamp/Date Fields (eq, neq, gt, gte, lt, lte)\n- **eq**: Exact match - `{\"field\":{\"eq\":\"2023-01-01T00:00:00Z\"}}`\n- **neq**: Not equal - `{\"field\":{\"neq\":\"2023-01-01T00:00:00Z\"}}`\n- **gt**: Greater than - `{\"field\":{\"gt\":\"2023-01-01T00:00:00Z\"}}`\n- **gte**: Greater than or equal - `{\"field\":{\"gte\":\"2023-01-01T00:00:00Z\"}}`\n- **lt**: Less than - `{\"field\":{\"lt\":\"2023-01-01T00:00:00Z\"}}`\n- **lte**: Less than or equal - `{\"field\":{\"lte\":\"2023-01-01T00:00:00Z\"}}`\n\n#### Array Fields (eq, in only)\n- **eq**: Array contains value - `{\"field\":{\"eq\":\"value\"}}`\n- **in**: Array contains any of these values - `{\"field\":{\"in\":[\"value1\",\"value2\"]}}`\n\n### Filter Examples\n\n#### Basic Filters (before URL encoding)\n```json\n// Filter by id\n{\"id\":{\"eq\":\"123\"}}\n\n// Filter by credentialing status\n{\"data.credentialingStatus\":{\"eq\":\"PSV_READY\"}}\n\n// Filter by assigned user\n{\"data.assignedTo\":{\"eq\":\"user123\"}}\n\n// Filter by facility file type\n{\"data.facilityFileType\":{\"eq\":\"INITIAL\"}}\n```\n\n#### Facility Filters\n```json\n// Search by facility name\n{\"data.facility.name\":{\"contains\":\"Hospital\"}}\n\n// Filter by NPI (exact match)\n{\"data.facility.npi\":{\"eq\":\"1234567890\"}}\n\n// Filter by TIN\n{\"data.facility.tin\":{\"eq\":\"12-3456789\"}}\n\n// Filter by email\n{\"data.facility.primaryEmail\":{\"contains\":\"@example.com\"}}\n\n// Filter by facility type\n{\"data.facility.facilityType\":{\"eq\":\"HOSPITAL\"}}\n\n// Filter by external ID\n{\"data.facility.externalId\":{\"eq\":\"EXT123\"}}\n```\n\n#### Array Field Filters\n```json\n// Filter by line of business\n{\"data.facility.lineOfBusiness\":{\"eq\":\"MEDICARE\"}}\n\n// Filter by multiple lines of business\n{\"data.facility.lineOfBusiness\":{\"in\":[\"MEDICARE\",\"MEDICAID\"]}}\n\n// Filter by licensed states\n{\"data.facility.licensedStates\":{\"in\":[\"CA\",\"NY\",\"TX\"]}}\n```\n\n#### Date/Timestamp Filters\n```json\n// Workflows created after a date\n{\"createdAt\":{\"gt\":\"2023-01-01T00:00:00Z\"}}\n\n// PSV ready within a date range\n{\"data.psvReadyDate\":{\"gte\":\"2023-01-01T00:00:00Z\",\"lte\":\"2023-12-31T23:59:59Z\"}}\n\n// Workflows updated in last 7 days\n{\"updatedAt\":{\"gte\":\"2023-01-15T00:00:00Z\"}}\n\n// Credentialing due date in range\n{\"data.credentialingDueDate\":{\"gte\":\"2023-01-01\",\"lte\":\"2023-12-31\"}}\n```\n\n#### Combined Filters\n```json\n// Multiple conditions (AND logic)\n{\n  \"data.facility.name\":{\"contains\":\"Hospital\"},\n  \"data.facility.npi\":{\"eq\":\"1234567890\"},\n  \"data.credentialingStatus\":{\"eq\":\"PSV_READY\"}\n}\n\n// Filter by status and date range\n{\n  \"data.credentialingStatus\":{\"eq\":\"CRED_APPROVED\"},\n  \"data.credentialingDecisionDate\":{\"gte\":\"2023-01-01\",\"lte\":\"2023-12-31\"}\n}\n\n// Filter by facility type and line of business\n{\n  \"data.facility.facilityType\":{\"eq\":\"HOSPITAL\"},\n  \"data.facility.lineOfBusiness\":{\"in\":[\"MEDICARE\",\"MEDICAID\"]}\n}\n```\n\n### cURL Examples\n```bash\n# Filter by id\ncurl -X GET 'http://localhost:8080/facility-credentialing-workflows?filter=%7B%22id%22%3A%7B%22eq%22%3A%22123%22%7D%7D'\n\n# Filter by facility name (case-sensitive)\ncurl -X GET 'http://localhost:8080/facility-credentialing-workflows?filter=%7B%22data.facility.name%22%3A%7B%22contains%22%3A%22Hospital%22%7D%7D'\n\n# Filter by NPI\ncurl -X GET 'http://localhost:8080/facility-credentialing-workflows?filter=%7B%22data.facility.npi%22%3A%7B%22eq%22%3A%221234567890%22%7D%7D'\n\n# Filter by licensed states\ncurl -X GET 'http://localhost:8080/facility-credentialing-workflows?filter=%7B%22data.facility.licensedStates%22%3A%7B%22in%22%3A%5B%22CA%22%2C%22NY%22%5D%7D%7D'\n\n# Filter by credentialing status\ncurl -X GET 'http://localhost:8080/facility-credentialing-workflows?filter=%7B%22data.credentialingStatus%22%3A%7B%22eq%22%3A%22PSV_READY%22%7D%7D'\n\n# Combined filter\ncurl -X GET 'http://localhost:8080/facility-credentialing-workflows?filter=%7B%22data.facility.name%22%3A%7B%22contains%22%3A%22Hospital%22%7D%2C%22data.credentialingStatus%22%3A%7B%22eq%22%3A%22PSV_READY%22%7D%7D'\n```\n\n**Note**: Always URL encode the JSON filter string before sending the request.\n"
        name: filter
        in: query
        schema:
          type: string
      - description: "## Sorting/Ordering\n\nSort results by specifying a field name and direction. The order parameter must be URL encoded when sent.\n\n### Sortable Fields\nYou can sort by any of the following fields:\n- **id**: Workflow unique identifier\n- **createdAt**: Workflow creation timestamp\n- **createdBy**: User who created the workflow (sortable only, not filterable)\n- **updatedAt**: Last update timestamp\n- **updatedBy**: User who last updated the workflow (sortable only, not filterable)\n- **data**: JSON data field (lexicographic ordering)\n\n### Sort Direction\n- **ASC**: Ascending order (default)\n- **DESC**: Descending order\n\n**Note**: Sort direction is case-insensitive, but uppercase is recommended (ASC/DESC).\n\n### Sort Format\n```json\n{\n  \"orderBy\": \"fieldName\",\n  \"orderByDirection\": \"ASC|DESC\"\n}\n```\n\n### Sort Examples\n\n#### Basic Sorting (before URL encoding)\n```json\n// Sort by creation date (newest first)\n{\"orderBy\":\"createdAt\",\"orderByDirection\":\"DESC\"}\n\n// Sort by id (ascending)\n{\"orderBy\":\"id\",\"orderByDirection\":\"ASC\"}\n\n// Sort by last update (newest first)\n{\"orderBy\":\"updatedAt\",\"orderByDirection\":\"DESC\"}\n```\n\n### cURL Examples\n```bash\n# Sort by creation date (newest first)\ncurl -X GET 'http://localhost:8080/facility-credentialing-workflows?order=%7B%22orderBy%22%3A%22createdAt%22%2C%22orderByDirection%22%3A%22DESC%22%7D'\n\n# Sort by id (ascending)\ncurl -X GET 'http://localhost:8080/facility-credentialing-workflows?order=%7B%22orderBy%22%3A%22id%22%2C%22orderByDirection%22%3A%22ASC%22%7D'\n\n# Sort by last update (newest first)\ncurl -X GET 'http://localhost:8080/facility-credentialing-workflows?order=%7B%22orderBy%22%3A%22updatedAt%22%2C%22orderByDirection%22%3A%22DESC%22%7D'\n\n# Combine filter and sort\ncurl -X GET 'http://localhost:8080/facility-credentialing-workflows?filter=%7B%22data.credentialingStatus%22%3A%7B%22eq%22%3A%22PSV_READY%22%7D%7D&order=%7B%22orderBy%22%3A%22createdAt%22%2C%22orderByDirection%22%3A%22DESC%22%7D'\n\n# Combine filter, sort, and pagination\ncurl -X GET 'http://localhost:8080/facility-credentialing-workflows?filter=%7B%22data.facility.name%22%3A%7B%22contains%22%3A%22Hospital%22%7D%7D&order=%7B%22orderBy%22%3A%22updatedAt%22%2C%22orderByDirection%22%3A%22DESC%22%7D&size=20&page=0'\n```\n\n**Note**: Always URL encode the JSON order string before sending the request.\n"
        name: order
        in: query
        schema:
          type: string
      - description: Page number (0-based), for offset-based pagination
        name: page
        in: query
        schema:
          type: integer
          format: int32
          default: '0'
      - description: Page size
        name: size
        in: query
        schema:
          type: integer
          format: int32
          default: '50'
      - description: Start after document ID, for forward cursor-based pagination
        name: startAfterId
        in: query
        schema:
          type: string
      - description: Tenant ID
        required: true
        name: tenant-id
        in: header
        schema:
          type: string
      responses:
        '200':
          description: Successfully retrieved facility credentialing workflows
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetFacilityCredentialingWorkflowsResponse'
        '400':
          description: Invalid request parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError1'
        '401':
          description: Unauthorized - Authentication required
        '403':
          description: Forbidden - User does not have required permissions
        '500':
          description: Internal Server Error - An unexpected error occurred
      security:
      - jwt: []
    post:
      summary: Create a facility credentialing workflow
      description: Creates a new facility credentialing workflow
      operationId: createFacilityCredentialingWorkflow
      tags:
      - FacilityCredentialingWorkflow
      parameters:
      - description: Tenant ID
        required: true
        name: tenant-id
        in: header
        schema:
          type: string
      requestBody:
        description: Facility credentialing workflow request with certifyFacilityId
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateFacilityCredentialingWorkflowRequest'
        required: true
      responses:
        '201':
          description: Successfully created the facility credentialing workflow
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetFacilityCredentialingWorkflowResponse'
        '400':
          description: Invalid request data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestErrorResponse'
        '401':
          description: Unauthorized - Authentication required
        '403':
          description: Forbidden - User does not have required permissions
        '409':
          description: Conflict - An active facility credentialing workflow already exists for this facility. Complete or withdraw the existing workflow before creating a new one.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestErrorResponse'
        '422':
          description: Unprocessable Entity - Business rule violation
        '500':
          description: Internal Server Error - An unexpected error occurred
      security:
      - jwt: []
  /facility-credentialing-workflows/assignments:
    post:
      summary: Create assignments for multiple facility credentialing workflows
      description: Creates assignments for multiple facility credentialing workflows in a single operation. Workflows are evenly distributed across the provided user IDs using round-robin distribution. To unassign workflows, provide an empty array for assignedTo. Each workflow is processed independently, and results include both successful and failed assignments.
      operationId: createBulkFacilityAssignment
      tags:
      - FacilityCredentialingWorkflow
      parameters:
      - description: Tenant ID
        required: true
        name: tenant-id
        in: header
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BulkCreateFacilityAssignmentRequest'
        required: true
      responses:
        '200':
          description: Bulk assignment operation completed. Check successful and failed arrays for individual results.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BulkFacilityAssignmentResponse'
        '400':
          description: Invalid request data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestErrorResponse'
        '401':
          description: Unauthorized - Authentication required
        '403':
          description: Forbidden - User does not have required permissions
        '500':
          description: Internal Server Error - An unexpected error occurred
      security:
      - jwt: []
  /facility-credentialing-workflows/bulk-create:
    post:
      summary: Create facility credentialing workflows for multiple facilities (async)
      description: Asynchronously creates facility credentialing workflows for multiple facilities. The request is accepted and processing begins immediately in the background. Each workflow is processed independently with automatic facility data hydration. Results are logged but not returned in the response.
      operationId: createBulkFacilityCredentialingWorkflows
      tags:
      - FacilityCredentialingWorkflow
      parameters:
      - description: Tenant ID
        required: true
        name: tenant-id
        in: header
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BulkCreateFacilityCredentialingWorkflowRequest'
        required: true
      responses:
        '202':
          description: Bulk workflow creation request accepted and processing started. The operation will complete in the background.
          content:
            application/json:
              schema:
                type: object
        '400':
          description: Invalid request data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestErrorResponse'
        '401':
          description: Unauthorized - Authentication required
        '403':
          description: Forbidden - User does not have required permissions
        '500':
          description: Internal Server Error - An unexpected error occurred
      security:
      - jwt: []
  /facility-credentialing-workflows/cloud-create:
    post:
      summary: Cloud Task callback for creating a single facility credentialing workflow
      description: 'Called by Cloud Tasks as part of the v2 bulk-create flow. Creates a single facility credentialing workflow and updates the bulk request item status. Required body fields: certifyFacilityId (string), tenantFacilityId (string), credentialingWorkflowBulkRequestId (string), credentialingWorkflowBulkRequestItemId (string). Optional body field: data (object) - workflow creation payload.'
      operationId: cloudCreateFacilityCredentialingWorkflow
      tags:
      - FacilityCredentialingWorkflow
      parameters:
      - description: Tenant ID
        name: tenant-id
        in: header
        schema:
          type: string
      - description: User ID for service-to-service calls
        name: user-id
        in: header
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/JsonNode'
        required: true
      responses:
        '201':
          description: Workflow created successfully
        '400':
          description: Missing required fields in request body
        '409':
          description: Active workflow already exists or duplicate active item
        '500':
          description: Failed to create workflow
      security:
      - jwt: []
  /facility-credentialing-workflows/replay-webhooks:
    post:
      summary: Replay missed webhooks for facility credentialing workflows
      operationId: replayFacilityWebhooks
      tags:
      - FacilityCredentialingWorkflow
      parameters:
      - name: tenant-id
        in: header
        schema:
          type: string
        required: true
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ReplayWebhooksRequest'
        required: true
      responses:
        '202':
          description: Webhook replay accepted
        '400':
          description: Bad Request
      security:
      - jwt: []
  /facility-credentialing-workflows/timeline-events:
    post:
      summary: Change status of multiple facility credentialing workflows
      description: Creates timeline events for multiple facility credentialing workflows in a single operation. This allows changing the status of multiple workflows at once. Each workflow is processed independently, and the response includes both successful and failed operations.
      operationId: bulkFacilityStatusChange
      tags:
      - FacilityCredentialingWorkflow
      parameters:
      - description: Tenant ID
        required: true
        name: tenant-id
        in: header
        schema:
          type: string
      requestBody:
        description: Bulk status change request with workflow IDs and timeline event data
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BulkFacilityStatusChangeRequest'
        required: true
      responses:
        '200':
          description: Bulk status change operation completed. Check successful and failed arrays for details.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BulkFacilityStatusChangeResponse'
        '400':
          description: Invalid request data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestErrorResponse'
        '401':
          description: Unauthorized - Authentication required
        '403':
          description: Forbidden - User does not have required permissions
        '500':
          description: Internal Server Error - An unexpected error occurred
      security:
      - jwt: []
  /facility-credentialing-workflows/v2/bulk-create:
    post:
      summary: Create facility credentialing workflows for multiple facilities via Cloud Tasks (v2)
      description: Accepts a bulk workflow creation request, creates a tracking entry in the database, and enqueues individual workflow creation tasks via Cloud Tasks for reliable processing. Each facility workflow is created independently through the cloud-create callback. Returns immediately with 202 Accepted.
      operationId: createBulkFacilityCredentialingWorkflowsV2
      tags:
      - FacilityCredentialingWorkflow
      parameters:
      - description: Tenant ID
        required: true
        name: tenant-id
        in: header
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BulkCreateFacilityCredentialingWorkflowRequest'
        required: true
      responses:
        '202':
          description: Bulk workflow creation request accepted. Individual workflows will be created via Cloud Tasks.
          content:
            application/json:
              schema:
                type: object
        '400':
          description: Invalid request data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestErrorResponse'
        '401':
          description: Unauthorized - Authentication required
        '403':
          description: Forbidden - User does not have required permissions
        '500':
          description: Internal Server Error - An unexpected error occurred
      security:
      - jwt: []
  /facility-credentialing-workflows/{id}/assignments:
    post:
      summary: Create assignment for facility credentialing workflow
      description: Creates a new assignment for the specified facility credentialing workflow
      operationId: createFacilityAssignment
      tags:
      - FacilityCredentialingWorkflow
      parameters:
      - description: ID of the facility credentialing workflow
        in: path
        required: true
        name: id
        schema:
          type: string
      - description: Tenant ID
        required: true
        name: tenant-id
        in: header
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateFacilityAssignmentRequest'
        required: true
      responses:
        '201':
          description: Successfully created the assignment
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FacilityAssignmentHistoryResponse'
        '400':
          description: Invalid request data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestErrorResponse'
        '401':
          description: Unauthorized - Authentication required
        '403':
          description: Forbidden - User does not have required permissions
        '404':
          description: Facility credentialing workflow not found
          content:
            application/json: {}
        '422':
          description: Unprocessable Entity - Target user does not have required permissions
          content:
            application/json: {}
        '500':
          description: Internal Server Error - An unexpected error occurred
      security:
      - jwt: []
  /facility-credentialing-workflows/{id}/generate-psv:
    post:
      summary: Generate PSV for facility credentialing workflow
      description: Generates a Provider Summary Verification (PSV) document for the specified facility workflow
      operationId: generateFacilityCredentialingWorkflowPsv
      tags:
      - FacilityCredentialingWorkflow
      parameters:
      - description: ID of the facility credentialing workflow
        in: path
        required: true
        name: id
        schema:
          type: string
      - description: Tenant ID
        required: true
        name: tenant-id
        in: header
        schema:
          type: string
      - description: User ID for service-to-service calls
        required: false
        name: user-id
        in: header
        schema:
          type: string
      responses:
        '200':
          description: Successfully generated the Facility PSV document
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenerateFacilityPsvResponse'
        '401':
          description: Unauthorized - Authentication required
        '403':
          description: Forbidden - User does not have required permissions
        '500':
          description: Internal Server Error - An unexpected error occurred
      security:
      - jwt: []
  /facility-credentialing-workflows/{id}/latest-psv-pdf:
    get:
      summary: Get latest PSV PDF for facility credentialing workflow
      description: Retrieves the latest PSV PDF path from timeline events for the specified facility credentialing workflow
      operationId: getLatestFacilityPsvPdf
      tags:
      - FacilityCredentialingWorkflow
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: string
      - name: tenant-id
        in: header
        schema:
          type: string
        required: true
      - name: user-id
        in: header
        schema:
          type: string
      responses:
        '200':
          description: Successfully retrieved the latest PSV PDF path
          content:
            application/json:
              schema:
                type: object
        '202':
          description: PSV PDF is being generated for the latest status transition
          content:
            application/json: {}
        '401':
          description: Unauthorized - Authentication required
        '403':
          description: Forbidden - User does not have required permissions
        '404':
          description: No PSV PDF found for this workflow
          content:
            application/json: {}
        '500':
          description: Internal Server Error - An unexpected error occurred
      security:
      - jwt: []
  /facility-credentialing-workflows/{workflowId}:
    put:
      summary: Update a facility credentialing workflow
      description: Updates an existing facility credentialing workflow
      operationId: updateFacilityCredentialingWorkflow
      tags:
      - FacilityCredentialingWorkflow
      parameters:
      - description: ID of the facility credentialing workflow
        in: path
        required: true
        name: workflowId
        schema:
          type: string
      - description: Tenant ID
        required: true
        name: tenant-id
        in: header
        schema:
          type: string
      requestBody:
        description: Updated facility credentialing workflow data
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateFacilityCredentialingWorkflowRequest'
        required: true
      responses:
        '200':
          description: Successfully updated the facility credentialing workflow
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetFacilityCredentialingWorkflowResponse'
        '400':
          description: Invalid request data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestErrorResponse'
        '401':
          description: Unauthorized - Authentication required
        '403':
          description: Forbidden - User does not have required permissions
        '404':
          description: Facility credentialing workflow not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError1'
        '500':
          description: Internal Server Error - An unexpected error occurred
      security:
      - jwt: []
    get:
      summary: Get facility credentialing workflow by ID
      description: Retrieves a single facility credentialing workflow by its ID
      operationId: getFacilityCredentialingWorkflow
      tags:
      - FacilityCredentialingWorkflow
      parameters:
      - description: ID of the facility credentialing workflow
        in: path
        required: true
        name: workflowId
        schema:
          type: string
      - description: Tenant ID
        required: true
        name: tenant-id
        in: header
        schema:
          type: string
      responses:
        '200':
          description: Successfully retrieved the facility credentialing workflow
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetFacilityCredentialingWorkflowResponse'
        '401':
          description: Unauthorized - Authentication required
        '403':
          description: Forbidden - User does not have required permissions
        '404':
          description: Facility credentialing workflow not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError1'
        '500':
          description: Internal Server Error - An unexpected error occurred
      security:
      - jwt: []
    delete:
      summary: Delete a facility credentialing workflow
      description: Deletes an existing facility credentialing workflow
      operationId: deleteFacilityCredentialingWorkflow
      tags:
      - FacilityCredentialingWorkflow
      parameters:
      - description: ID of the facility credentialing workflow
        in: path
        required: true
        name: workflowId
        schema:
          type: string
      - description: Tenant ID
        required: true
        name: tenant-id
        in: header
        schema:
          type: string
      responses:
        '204':
          description: Successfully deleted the facility credentialing workflow
        '401':
          description: Unauthorized - Authentication required
        '403':
          description: Forbidden - User does not have required permissions
        '404':
          description: Facility credentialing workflow not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError1'
        '500':
          description: Internal Server Error - An unexpected error occurred
      security:
      - jwt: []
  /facility-credentialing-workflows/{workflowId}/accreditations:
    put:
      summary: Update facility accreditations
      description: Replace all accreditations for a facility credentialing workflow
      operationId: updateFacilityCredentialingWorkflowAccreditations
      tags:
      - FacilityCredentialingWorkflow
      parameters:
      - name: workflowId
        in: path
        required: true
        schema:
          type: string
      - name: tenant-id
        in: header
        schema:
          type: string
        required: true
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: array
              items:
                $ref: '#/components/schemas/FacilityAccreditationUpdateRequest'
      responses:
        '200':
          description: Accreditations updated successfully
          content:
            application/json: {}
        '400':
          description: Invalid request
        '404':
          description: Workflow not found
      security:
      - jwt: []
  /facility-credentialing-workflows/{workflowId}/addresses:
    put:
      summary: Update addresses of a facility in a credentialing workflow
      description: Replaces the entire

# --- truncated at 32 KB (176 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/certifyos/refs/heads/main/openapi/certifyos-facilitycredentialingworkflow-api-openapi.yml