Forta Health Onboarding Questionnaires API

The onboarding_questionnaires API from Forta Health — 17 operation(s) for onboarding_questionnaires.

OpenAPI Specification

forta-health-onboarding-questionnaires-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Fast Onboarding Questionnaires API
  version: 0.1.0
tags:
- name: onboarding_questionnaires
paths:
  /api/v1/onboarding_questionnaires/:
    post:
      tags:
      - onboarding_questionnaires
      summary: Send Onboarding Questionnaire
      description: 'Send onboarding questionnaire.


        Creates a questionnaire on first send for the (provider, client) pair. On resend,

        returns the existing row for that pair. ``date_sent`` (stamped server-side as a

        UTC-aware datetime at send time) and ``date_sent_utc_offset`` are refreshed on resend

        except when the questionnaire is COMPLETED.'
      operationId: send_onboarding_questionnaire_api_v1_onboarding_questionnaires__post
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/OnboardingQuestionnaireSendRequest'
        required: true
      responses:
        '201':
          description: A new questionnaire was created (first send for this provider and client).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OnboardingQuestionnaireResponse'
        '200':
          description: A questionnaire row already exists for this provider and client; the same row is
            returned (no second questionnaire is created).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OnboardingQuestionnaireResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      security:
      - HTTPBearer: []
  /api/v1/onboarding_questionnaires:
    get:
      tags:
      - onboarding_questionnaires
      summary: List Onboarding Questionnaires
      description: 'List onboarding questionnaires (basic columns only, newest date_sent first).


        Each returned row also includes a lightweight ``provider`` and ``client`` summary

        (id/name/email) for the linked provider and client.


        Filter by ``provider_id``, ``client_id``, ``status``, and a ``date_sent`` window

        (``date_start`` inclusive, ``date_end`` inclusive of the whole day). The window is

        padded by one extra day on each side so records that land on an adjacent UTC day

        (because ``date_sent`` is stored as naive UTC while the bounds are treated as UTC days)

        are still returned. When no filter is provided, results are limited to the past month.


        Callers without an overriding role may only list their own questionnaires (403 when

        ``provider_id`` is someone else''s); the filter is otherwise scoped to the caller''s own

        id. 400 when ``date_start`` is after ``date_end``.'
      operationId: list_onboarding_questionnaires_api_v1_onboarding_questionnaires_get
      security:
      - HTTPBearer: []
      parameters:
      - name: provider_id
        in: query
        required: false
        schema:
          anyOf:
          - type: integer
            exclusiveMinimum: 0
          - type: 'null'
          description: Filter by provider id (must be > 0).
          title: Provider Id
        description: Filter by provider id (must be > 0).
      - name: client_id
        in: query
        required: false
        schema:
          anyOf:
          - type: integer
            exclusiveMinimum: 0
          - type: 'null'
          description: Filter by client id (must be > 0).
          title: Client Id
        description: Filter by client id (must be > 0).
      - name: date_start
        in: query
        required: false
        schema:
          anyOf:
          - type: string
            format: date
          - type: 'null'
          description: Only include questionnaires with date_sent on/after this date.
          title: Date Start
        description: Only include questionnaires with date_sent on/after this date.
      - name: date_end
        in: query
        required: false
        schema:
          anyOf:
          - type: string
            format: date
          - type: 'null'
          description: Only include questionnaires with date_sent on/before this date.
          title: Date End
        description: Only include questionnaires with date_sent on/before this date.
      - name: status
        in: query
        required: false
        schema:
          anyOf:
          - $ref: '#/components/schemas/OnboardingQuestionnaireStatusEnum'
          - type: 'null'
          description: Filter by questionnaire status.
          title: Status
        description: Filter by questionnaire status.
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/OnboardingQuestionnaireListResponse'
                title: Response List Onboarding Questionnaires Api V1 Onboarding Questionnaires Get
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/v1/onboarding_questionnaires/by_provider/{provider_id}:
    get:
      tags:
      - onboarding_questionnaires
      summary: Get Onboarding Questionnaire By Provider
      description: 'All questionnaires for the provider (newest date_sent first).


        A provider usually has several clients assigned, so this returns every questionnaire

        at once; pass ``client_id`` to narrow to a single client.


        Callers with broad visibility (an overriding role, or the provider looking up their

        own id) get the real outcome: an empty list when none exists and ``404`` if the

        provider is missing. Any other caller only sees the questionnaires they are authorized

        to read (an active provider assignment to the client); when none are readable, a

        missing provider, an absent questionnaire, and a forbidden one all return the same

        ``403`` so existence is not observable to someone who could not read it.'
      operationId: get_onboarding_questionnaire_by_provider_api_v1_onboarding_questionnaires_by_provider__provider_id__get
      security:
      - HTTPBearer: []
      parameters:
      - name: provider_id
        in: path
        required: true
        schema:
          type: integer
          exclusiveMinimum: 0
          description: Provider id (must be > 0)
          title: Provider Id
        description: Provider id (must be > 0)
      - name: client_id
        in: query
        required: false
        schema:
          anyOf:
          - type: integer
            minimum: 1
          - type: 'null'
          description: When set, narrows the result to this provider and client (at most one row). When
            omitted, returns every questionnaire for the provider.
          title: Client Id
        description: When set, narrows the result to this provider and client (at most one row). When
          omitted, returns every questionnaire for the provider.
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/OnboardingQuestionnaireResponse'
                title: Response Get Onboarding Questionnaire By Provider Api V1 Onboarding Questionnaires
                  By Provider  Provider Id  Get
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/v1/onboarding_questionnaires/{questionnaire_id}:
    get:
      tags:
      - onboarding_questionnaires
      summary: Get Onboarding Questionnaire By Id
      description: 'Full questionnaire with nested sections, or 404 if not found.

        403 unless the caller holds an overriding role, is the assigned provider, or has

        an active provider assignment to the questionnaire''s client.'
      operationId: get_onboarding_questionnaire_by_id_api_v1_onboarding_questionnaires__questionnaire_id__get
      security:
      - HTTPBearer: []
      parameters:
      - name: questionnaire_id
        in: path
        required: true
        schema:
          type: integer
          exclusiveMinimum: 0
          description: Onboarding questionnaire id (must be > 0)
          title: Questionnaire Id
        description: Onboarding questionnaire id (must be > 0)
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OnboardingQuestionnaireDetailResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/v1/onboarding_questionnaires/{questionnaire_id}/general_info:
    patch:
      tags:
      - onboarding_questionnaires
      summary: Patch Onboarding Questionnaire General Info
      description: 'Merge partial general info for the questionnaire (omit fields to leave unchanged).

        403 if caller is not the assigned provider; 404 if questionnaire missing.'
      operationId: patch_onboarding_questionnaire_general_info_api_v1_onboarding_questionnaires__questionnaire_id__general_info_patch
      security:
      - HTTPBearer: []
      parameters:
      - name: questionnaire_id
        in: path
        required: true
        schema:
          type: integer
          exclusiveMinimum: 0
          description: Onboarding questionnaire id (must be > 0)
          title: Questionnaire Id
        description: Onboarding questionnaire id (must be > 0)
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/OnboardingQuestionnaireGeneralInfoPatchRequest'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OnboardingQuestionnaireGeneralInfoResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/v1/onboarding_questionnaires/{questionnaire_id}/insurance/primary:
    patch:
      tags:
      - onboarding_questionnaires
      summary: Patch Onboarding Questionnaire Insurance Primary
      description: Merge partial primary insurance (insurance_type PRIMARY). 403/404 like general_info.
      operationId: patch_onboarding_questionnaire_insurance_primary_api_v1_onboarding_questionnaires__questionnaire_id__insurance_primary_patch
      security:
      - HTTPBearer: []
      parameters:
      - name: questionnaire_id
        in: path
        required: true
        schema:
          type: integer
          exclusiveMinimum: 0
          description: Onboarding questionnaire id (must be > 0)
          title: Questionnaire Id
        description: Onboarding questionnaire id (must be > 0)
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/OnboardingQuestionnaireInsurancePatchRequest'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OnboardingQuestionnaireInsuranceResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/v1/onboarding_questionnaires/{questionnaire_id}/insurance/secondary:
    patch:
      tags:
      - onboarding_questionnaires
      summary: Patch Onboarding Questionnaire Insurance Secondary
      description: Merge partial secondary insurance (insurance_type SECONDARY). 403/404 like general_info.
      operationId: patch_onboarding_questionnaire_insurance_secondary_api_v1_onboarding_questionnaires__questionnaire_id__insurance_secondary_patch
      security:
      - HTTPBearer: []
      parameters:
      - name: questionnaire_id
        in: path
        required: true
        schema:
          type: integer
          exclusiveMinimum: 0
          description: Onboarding questionnaire id (must be > 0)
          title: Questionnaire Id
        description: Onboarding questionnaire id (must be > 0)
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/OnboardingQuestionnaireInsurancePatchRequest'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OnboardingQuestionnaireInsuranceResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
    delete:
      tags:
      - onboarding_questionnaires
      summary: Delete Onboarding Questionnaire Insurance Secondary
      description: Drop secondary insurance row. 204 either way; 403/404 same as PATCH insurance.
      operationId: delete_onboarding_questionnaire_insurance_secondary_api_v1_onboarding_questionnaires__questionnaire_id__insurance_secondary_delete
      security:
      - HTTPBearer: []
      parameters:
      - name: questionnaire_id
        in: path
        required: true
        schema:
          type: integer
          exclusiveMinimum: 0
          description: Onboarding questionnaire id (must be > 0)
          title: Questionnaire Id
        description: Onboarding questionnaire id (must be > 0)
      responses:
        '204':
          description: Successful Response
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/v1/onboarding_questionnaires/{questionnaire_id}/insurance/preferences:
    patch:
      tags:
      - onboarding_questionnaires
      summary: Patch Onboarding Questionnaire Insurance Preferences
      description: Save no-secondary choice; clears secondary row when true. 403/404 like other insurance
        PATCH.
      operationId: patch_onboarding_questionnaire_insurance_preferences_api_v1_onboarding_questionnaires__questionnaire_id__insurance_preferences_patch
      security:
      - HTTPBearer: []
      parameters:
      - name: questionnaire_id
        in: path
        required: true
        schema:
          type: integer
          exclusiveMinimum: 0
          description: Onboarding questionnaire id (must be > 0)
          title: Questionnaire Id
        description: Onboarding questionnaire id (must be > 0)
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/OnboardingQuestionnaireInsurancePreferencesPatchRequest'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OnboardingQuestionnaireInsurancePreferencesResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/v1/onboarding_questionnaires/{questionnaire_id}/insurance-card/extract:
    post:
      tags:
      - onboarding_questionnaires
      summary: Extract Onboarding Questionnaire Insurance Card
      description: 'Extract insurance fields from saved front/back card images (prefill only; not persisted).

        403 if caller is not the assigned provider; 404 if questionnaire missing.'
      operationId: extract_onboarding_questionnaire_insurance_card_api_v1_onboarding_questionnaires__questionnaire_id__insurance_card_extract_post
      security:
      - HTTPBearer: []
      parameters:
      - name: questionnaire_id
        in: path
        required: true
        schema:
          type: integer
          exclusiveMinimum: 0
          description: Onboarding questionnaire id (must be > 0)
          title: Questionnaire Id
        description: Onboarding questionnaire id (must be > 0)
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/InsuranceCardExtractRequest'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExtractedInsuranceCardResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/v1/onboarding_questionnaires/{questionnaire_id}/insurance-card/extraction-jobs:
    post:
      tags:
      - onboarding_questionnaires
      summary: Create Onboarding Questionnaire Insurance Card Extraction Job
      description: Create async insurance card extraction job; poll GET extraction-jobs/{job_id} for results.
      operationId: create_onboarding_questionnaire_insurance_card_extraction_job_api_v1_onboarding_questionnaires__questionnaire_id__insurance_card_extraction_jobs_post
      security:
      - HTTPBearer: []
      parameters:
      - name: questionnaire_id
        in: path
        required: true
        schema:
          type: integer
          exclusiveMinimum: 0
          description: Onboarding questionnaire id (must be > 0)
          title: Questionnaire Id
        description: Onboarding questionnaire id (must be > 0)
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/InsuranceCardExtractionJobCreateRequest'
      responses:
        '202':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InsuranceCardExtractionJobCreateResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/v1/onboarding_questionnaires/{questionnaire_id}/insurance-card/extraction-jobs/{job_id}:
    get:
      tags:
      - onboarding_questionnaires
      summary: Get Onboarding Questionnaire Insurance Card Extraction Job
      description: 'Poll extraction job status and result. 403 unless the caller holds an overriding

        role, is the assigned provider, or has an active provider assignment to the

        questionnaire''s client.'
      operationId: get_onboarding_questionnaire_insurance_card_extraction_job_api_v1_onboarding_questionnaires__questionnaire_id__insurance_card_extraction_jobs__job_id__get
      security:
      - HTTPBearer: []
      parameters:
      - name: questionnaire_id
        in: path
        required: true
        schema:
          type: integer
          exclusiveMinimum: 0
          description: Onboarding questionnaire id (must be > 0)
          title: Questionnaire Id
        description: Onboarding questionnaire id (must be > 0)
      - name: job_id
        in: path
        required: true
        schema:
          type: integer
          exclusiveMinimum: 0
          description: Extraction job id (must be > 0)
          title: Job Id
        description: Extraction job id (must be > 0)
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InsuranceCardExtractionJobStatusResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/v1/onboarding_questionnaires/{questionnaire_id}/referral:
    patch:
      tags:
      - onboarding_questionnaires
      summary: Patch referral section
      description: Merge referral fields; lists replace the whole list ([] clears). Empty body with no
        saved row returns the same empty shell as GET; with a saved row, returns the current section unchanged.
      operationId: patch_onboarding_questionnaire_referral_api_v1_onboarding_questionnaires__questionnaire_id__referral_patch
      security:
      - HTTPBearer: []
      parameters:
      - name: questionnaire_id
        in: path
        required: true
        schema:
          type: integer
          exclusiveMinimum: 0
          description: Onboarding questionnaire id (must be > 0)
          title: Questionnaire Id
        description: Onboarding questionnaire id (must be > 0)
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/OnboardingQuestionnaireReferralPatchRequest'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OnboardingQuestionnaireReferralSectionResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/v1/onboarding_questionnaires/{questionnaire_id}/agreement:
    patch:
      tags:
      - onboarding_questionnaires
      summary: Patch agreement section
      description: 'Partially updates agreement; empty body is a no-op. Idempotent re-PATCH of the same

        values does not error. 403 if caller is not the assigned provider; 404 if questionnaire

        id is unknown; 400 when questionnaire status is COMPLETED.'
      operationId: patch_onboarding_questionnaire_agreement_api_v1_onboarding_questionnaires__questionnaire_id__agreement_patch
      security:
      - HTTPBearer: []
      parameters:
      - name: questionnaire_id
        in: path
        required: true
        schema:
          type: integer
          exclusiveMinimum: 0
          description: Onboarding questionnaire id (must be > 0)
          title: Questionnaire Id
        description: Onboarding questionnaire id (must be > 0)
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/OnboardingQuestionnaireAgreementPatchRequest'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OnboardingQuestionnaireAgreementResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/v1/onboarding_questionnaires/{questionnaire_id}/submit:
    post:
      tags:
      - onboarding_questionnaires
      summary: Submit Onboarding Questionnaire
      description: 'Validate required sections then set status to COMPLETED (idempotent if already done).

        403 if caller is not the assigned provider; 404 if questionnaire missing; 400 if

        any required section is incomplete.'
      operationId: submit_onboarding_questionnaire_api_v1_onboarding_questionnaires__questionnaire_id__submit_post
      security:
      - HTTPBearer: []
      parameters:
      - name: questionnaire_id
        in: path
        required: true
        schema:
          type: integer
          exclusiveMinimum: 0
          description: Onboarding questionnaire id (must be > 0)
          title: Questionnaire Id
        description: Onboarding questionnaire id (must be > 0)
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/OnboardingQuestionnaireSubmitRequest'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OnboardingQuestionnaireResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/v1/onboarding_questionnaires/{questionnaire_id}/status:
    patch:
      tags:
      - onboarding_questionnaires
      summary: Update Onboarding Questionnaire Status
      description: 'Forward-only status chain (STARTED→IN_PROGRESS); same status is a no-op. Completing

        a questionnaire is not allowed here — use POST /{id}/submit, which validates required

        sections and records date_concluded; requesting COMPLETED returns 400. 400/422/403/404

        on bad transition, invalid stored status, wrong provider, or id.'
      operationId: update_onboarding_questionnaire_status_api_v1_onboarding_questionnaires__questionnaire_id__status_patch
      security:
      - HTTPBearer: []
      parameters:
      - name: questionnaire_id
        in: path
        required: true
        schema:
          type: integer
          exclusiveMinimum: 0
          description: Onboarding questionnaire id (must be > 0)
          title: Questionnaire Id
        description: Onboarding questionnaire id (must be > 0)
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/OnboardingQuestionnaireStatusUpdateRequest'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OnboardingQuestionnaireResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/v1/onboarding_questionnaires/{questionnaire_id}/documents/:
    post:
      tags:
      - onboarding_questionnaires
      summary: Upload Onboarding Questionnaire Document
      description: 'Upload PDF/PNG/JPEG to S3 and save metadata (title, type, size rules in service).

        Returns the full questionnaire document list (oldest first), same shape as GET

        ``.../documents/``, so clients can refresh UI without a follow-up list call.

        404/422/400/403 on bad questionnaire id, validation, or wrong provider.'
      operationId: upload_onboarding_questionnaire_document_api_v1_onboarding_questionnaires__questionnaire_id__documents__post
      security:
      - HTTPBearer: []
      parameters:
      - name: questionnaire_id
        in: path
        required: true
        schema:
          type: integer
          exclusiveMinimum: 0
          description: Onboarding questionnaire id (must be > 0)
          title: Questionnaire Id
        description: Onboarding questionnaire id (must be > 0)
      requestBody:
        required: true
        content:
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/Body_upload_onboarding_questionnaire_document_api_v1_onboarding_questionnaires__questionnaire_id__documents__post'
      responses:
        '201':
          description: Successful Response
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/OnboardingQuestionnaireDocumentResponse'
                title: Response Upload Onboarding Questionnaire Document Api V1 Onboarding Questionnaires  Questionnaire
                  Id  Documents  Post
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
    get:
      tags:
      - onboarding_questionnaires
      summary: List Onboarding Questionnaire Documents
      description: 'Metadata-only list, oldest first; empty list if none. No presigned URLs here (use

        GET by document id). 404/422 if questionnaire invalid. 403 unless the caller holds an

        overriding role, is the assigned provider, or has an active provider assignment to the

        questionnaire''s client.'
      operationId: list_onboarding_questionnaire_documents_api_v1_onboarding_questionnaires__questionnaire_id__documents__get
      security:
      - HTTPBearer: []
      parameters:
      - name: questionnaire_id
        in: path
        required: true
        schema:
          type: integer
          exclusiveMinimum: 0
          description: Onboarding questionnaire id (must be > 0)
          title: Questionnaire Id
        description: Onboarding questionnaire id (must be > 0)
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/OnboardingQuestionnaireDocumentResponse'
                title: Response List Onboarding Questionnaire Documents Api V1 Onboarding Questionnaires  Questionnaire
                  Id  Documents  Get
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/v1/onboarding_questionnaires/{questionnaire_id}/documents/{document_id}:
    get:
      tags:
      - onboarding_questionnaires
      summary: Get Onboarding Questionnaire Document
      description: 'One document''s metadata plus a presigned URL; 404 unless document belongs to this

        questionnaire (no cross-scope leaks). 422 on non-positive ids. 403 unless the caller

        holds an overriding role, is the assigned provider, or has an active provider

        assignment to the questionnaire''s client.'
      operationId: get_onboarding_questionnaire_document_api_v1_onboarding_questionnaires__questionnaire_id__documents__document_id__get
      security:
      - HTTPBearer: []
      parameters:
      - name: questionnaire_id
        in: path
        required: true
        schema:
          type: integer
          exclusiveMinimum: 0
          description: Onboarding questionnaire id (must be > 0)
          title: Questionnaire Id
        description: Onboarding questionnaire id (must be > 0)
      - name: document_id
        in: path
        required: true
        schema:
          type: integer
          exclusiveMinimum: 0
          description: Questionnaire document id (must be > 0)
          title: Document Id
        description: Questionnaire document id (must be > 0)
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OnboardingQuestionnaireDocumentWithUrlResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
    delete:
      tags:
      - onboarding_questionnaires
      summary: Delete Onboarding Questionnaire Document
      description: 'Delete DB row then best-effort S3 cleanup; extraction jobs referencing the document

        are removed first. Returns 204 once the DB row is gone; S3 failures are logged only.

        404/422/403 on missing scope, bad ids, or wrong provider.'
      operationId: delete_onboarding_questionnaire_document_api_v1_onboarding_questionnaires__questionnaire_id__documents__document_id__delete
      security:
      - HTTPBearer: []
      parameters:
      - name: questionnaire_id
        in: path
        required: true
        schema:
          type: integer
          exclusiveMinimum: 0
          description: Onboarding questionnaire id (must be > 0)
          

# --- truncated at 32 KB (78 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/forta-health/refs/heads/main/openapi/forta-health-onboarding-questionnaires-api-openapi.yml