openapi: 3.0.0
servers:
  - url: /rest/v2
info:
  x-logo:
    url: 'https://www.sheerid.com/wp-content/uploads/2019/11/SheerID_118x27.png'
    href: '/'
    backgroundColor: '#26c0db'
    altText: 'SheerID REST API Reference'
  description: |
    ## Introduction

    The SheerID API is organized around [REST](https://en.wikipedia.org/wiki/Representational_state_transfer). You can find a Postman collection of our APIs [here](https://www.postman.com/sheeridapi).

    ### Base URL

    The base URL for the SheerID REST API is `https://services.sheerid.com/rest/v2/`.

    ### API Versions

    The SheerID API utilizes URI versioning by including the version of the API in the URI path.
    For example: `https://services.sheerid.com/rest/{api_version}/`

    The API version reflects updates to API functionality (including minor and patch updates) that are not considered a breaking change.
    A breaking change would consist of the following:

    - Naming modifications to existing endpoints or request/response parameters
    - Removal of endpoints or request/response parameters
    - Addition of required request parameters
    - Altering response field data type
    - Changing HTTP method request for existing endpoints

    The following changes are not considered a breaking change. Clients should code defensively against the following potential changes:

    - Adding additional fields to response schema
    - Adding new optional request parameters
    - Adding new endpoints or HTTP methods on existing endpoints
    - Deprecating existing endpoints, parameters or response fields
    - Adding new values to an existing enumerated string type

    Breaking changes will be incorporated in a new API version. At most, we will support 2 major API versions concurrently.

    ### Authentication

    Certain endpoints require authentication using a Bearer Token. For information about how to generate and use API 
    tokens, see the [API Quickstart](https://developer.sheerid.com/api-quickstart#basics) documentation.

    ### Verification
    
    Users can be verified via the API in 2 different ways:
    1. One is to verify the user directly against a program with a single request. This is the most common way to verify users. An example of this is the request "Submit student data against program".
    2. A second option is to first create a verification request, reserving a verificationId, and then use a second call to submit the verification, which can be done any time before the verification expires. You will see this scenario documented below starting with the "Begin verification flow" request, and continuing with a second request such as "Submit student data".

    ### Test Mode

    The outcome of a verification is affected by whether the program is in Test Mode or not. Please [see this page](https://sheerid.zendesk.com/hc/en-us/articles/7540579090715) for more information.

  version: 2.0.0
  title: SheerID API
  contact:
    email: productsupport@sheerid.com
  license:
    name: Apache 2.0
    url: 'http://www.apache.org/licenses/LICENSE-2.0.html'
paths:
  /info:
    get:
      tags:
        - info
      summary: Retrieve build information
      operationId: getBuildInformation
      responses:
        '200':
          description: 'Successful response'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BuildInformationResponseMessage'
  '/verification/program/{programId}/step/collectStudentPersonalInfo':
    post:
      tags:
        - verification
      summary: Submit student data against program
      description: >-
        Using this endpoint starts a verification and submits personal info in one request, and is the equivalent to
        POSTing to `/verification` and then `/verification/{verificationId}/step/collectStudentPersonalInfo`
      operationId: submitStudentVerificationWithProgramId
      parameters:
        - in: path
          name: programId
          description: Unique identifier for the program to use for verification
          required: true
          schema:
            type: string
      responses:
        '200':
          description: The result of the verification
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VerificationResponse'
              examples:
                Student Success:
                  $ref: '#/components/examples/studentSuccess'
                Student Document Upload:
                  $ref: '#/components/examples/studentDocumentUpload'
                Student Document Rejected:
                  $ref: '#/components/examples/studentDocumentRejected'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VerificationResponse'
              examples:
                collectStudentInfoInvalid:
                  $ref: '#/components/examples/studentCollectInfoInvalid'
        '403':
          description: Program not active, due to future start date or a past end date.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                programNotActive:
                  $ref: '#/components/examples/programInactiveError'
                programExpired:
                  $ref: '#/components/examples/programExpiredError'
        '404':
          description: Verification not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                verificationNotFound:
                  $ref: '#/components/examples/errorVerificationNotFound'
        '429':
          description: User is not permitted to perform any more verifications due to the program's person limiting policies
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                studentVerificationLimitError:
                  $ref: '#/components/examples/studentVerificationLimitError'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Student'
            example:
              firstName: Verify
              lastName: Smith
              birthDate: '1991-01-23'
              email: verify@test.com
              organization:
                id: 1234
                name: Forsyth Technical Community College
              metadata:
                status: fulltime
                major: accounting
        description: >-
          The student and university data collected from the user to be
          verified
        required: true
  '/verification/program/{programId}/step/collectActiveMilitaryPersonalInfo':
    post:
      tags:
        - verification
      summary: Submit active military data against program
      description: >-
        Using this endpoint starts a verification and submits personal info in one request, and is the equivalent to
        POSTing to `/verification` and then `/verification/{verificationId}/step/collectActiveMilitaryPersonalInfo`
      operationId: submitActiveMilitaryVerificationWithProgramId
      parameters:
        - in: path
          name: programId
          description: Unique identifier for the program to use for verification
          required: true
          schema:
            type: string
      responses:
        '200':
          description: The result of the verification
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VerificationResponse'
              examples:
                Active Military Success:
                  $ref: '#/components/examples/activeMilitaryWithProgramSuccess'
                Active Military Document Upload:
                  $ref: '#/components/examples/activeMilitaryWithProgramDocumentUpload'
                Active Military Document Rejected:
                  $ref: '#/components/examples/activeMilitaryWithProgramDocumentRejected'
                Continue To Social Security Number:
                  $ref: '#/components/examples/militaryWithProgramContinueToSocialSecurityNumber'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VerificationResponse'
              examples:
                activeMilitaryCollectInfo:
                  $ref: '#/components/examples/activeMilitaryWithProgramCollectInfoInvalid'
        '403':
          description: Program not active, due to future start date or a past end date.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                programNotActive:
                  $ref: '#/components/examples/programInactiveError'
                programExpired:
                  $ref: '#/components/examples/programExpiredError'
        '404':
          description: Verification not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                verificationNotFound:
                  $ref: '#/components/examples/errorVerificationNotFound'
        '429':
          description: User is not permitted to perform any more verifications due to the program's person limiting policies
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                activeMilitaryVerificationLimitError:
                  $ref: '#/components/examples/activeMilitaryWithProgramVerificationLimitError'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ActiveMilitary'
            example:
              firstName: Verify
              lastName: Smith
              birthDate: '1991-12-04'
              email: verify@test.com
              organization:
                id: 4073
                name: Air Force
              metadata:
                squadronName: 18th Aggressor Squadron
                squadronNickname: Blue Foxes
        description: >-
          The active military and branch of service data collected from the user to be
          verified
        required: true
  '/verification/program/{programId}/step/collectInactiveMilitaryPersonalInfo':
    post:
      tags:
        - verification
      summary: Submit inactive military data against program
      description: >-
        Using this endpoint starts a verification and submits personal info in one request, and is the equivalent to
        POSTing to `/verification` and then `/verification/{verificationId}/step/collectInactiveMilitaryPersonalInfo`
      operationId: submitInactiveMilitaryVerificationWithProgramId
      parameters:
        - in: path
          name: programId
          description: Unique identifier for the program to use for verification
          required: true
          schema:
            type: string
      responses:
        '200':
          description: The result of the verification
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VerificationResponse'
              examples:
                Inactive Military Success:
                  $ref: '#/components/examples/inactiveMilitaryWithProgramSuccess'
                Inactive Military Document Upload:
                  $ref: '#/components/examples/inactiveMilitaryWithProgramDocumentUpload'
                Inactive Military Document Rejected:
                  $ref: '#/components/examples/inactiveMilitaryWithProgramDocumentRejected'
                Continue To Social Security Number:
                  $ref: '#/components/examples/militaryWithProgramContinueToSocialSecurityNumber'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VerificationResponse'
              examples:
                inactiveMilitaryCollectInfoInvalid:
                  $ref: '#/components/examples/inactiveMilitaryWithProgramCollectInfoInvalid'
        '403':
          description: Program not active, due to future start date or a past end date.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                programNotActive:
                  $ref: '#/components/examples/programInactiveError'
                programExpired:
                  $ref: '#/components/examples/programExpiredError'
        '404':
          description: Verification not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                verificationNotFound:
                  $ref: '#/components/examples/errorVerificationNotFound'
        '429':
          description: User is not permitted to perform any more verifications due to the program's person limiting policies
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                inactiveMilitaryVerificationLimitError:
                  $ref: '#/components/examples/inactiveMilitaryWithProgramVerificationLimitError'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/InactiveMilitary'
            example:
              firstName: Verify
              lastName: Smith
              birthDate: '1955-01-31'
              dischargeDate: '1991-06-21'
              email: verify@test.com
              organization:
                id: 4073
                name: Air Force
              metadata:
                squadronName: USAF Air Demonstration Squadron
                squadronNickname: Thunderbirds
        description: >-
          The inactive duty and branch of service data collected from the user to be
          verified
        required: true
  '/verification/program/{programId}/step/collectTeacherPersonalInfo':
    post:
      tags:
        - verification
      summary: Submit teacher data against program
      description: >-
        Using this endpoint starts a verification and submits personal info in one request, and is the equivalent to
        POSTing to `/verification` and then `/verification/{verificationId}/step/collectTeacherPersonalInfo`
      operationId: submitTeacherVerificationWithProgramId
      parameters:
        - in: path
          name: programId
          description: Unique identifier for the program to use for verification
          required: true
          schema:
            type: string
      responses:
        '200':
          description: The result of the verification
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VerificationResponse'
              examples:
                Teacher Success:
                  $ref: '#/components/examples/teacherSuccess'
                Teacher Document Upload:
                  $ref: '#/components/examples/teacherDocumentUpload'
                Teacher Document Rejected:
                  $ref: '#/components/examples/teacherDocumentRejected'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VerificationResponse'
              examples:
                teacherCollectInfoInvalid:
                  $ref: '#/components/examples/teacherCollectInfoInvalid'
        '403':
          description: Program not active, due to future start date or a past end date.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                programNotActive:
                  $ref: '#/components/examples/programInactiveError'
                programExpired:
                  $ref: '#/components/examples/programExpiredError'
        '404':
          description: Verification not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                verificationNotFound:
                  $ref: '#/components/examples/errorVerificationNotFound'
        '429':
          description: User is not permitted to perform any more verifications due to the program's person limiting policies
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                teacherVerificationLimitError:
                  $ref: '#/components/examples/teacherVerificationLimitError'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Teacher'
            example:
              firstName: Verify
              lastName: Smith
              birthDate: '1998-07-11'
              email: verify@test.com
              organization:
                id: 590759
                name: Yale University
              metadata:
                gradeTaught: 11th
                honorsClass: false
        description: >-
          The teacher and school data collected from the user to be
          verified
        required: true
  '/verification/program/{programId}/step/collectSeniorPersonalInfo':
    post:
      tags:
        - verification
      summary: Submit senior data against program
      description: >-
        Using this endpoint starts a verification and submits personal info in one request, and is the equivalent to
        POSTing to `/verification` and then `/verification/{verificationId}/step/collectSeniorPersonalInfo`
      operationId: submitSeniorVerificationWithProgramId
      parameters:
        - in: path
          name: programId
          description: Unique identifier for the program to use for verification
          required: true
          schema:
            type: string
      responses:
        '200':
          description: The result of the verification
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VerificationResponse'
              examples:
                seniorSuccess:
                  $ref: '#/components/examples/seniorSuccess'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VerificationResponse'
              examples:
                seniorCollectInfoInvalid:
                  $ref: '#/components/examples/seniorCollectInfoInvalid'
        '403':
          description: Program not active, due to future start date or a past end date.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                programNotActive:
                  $ref: '#/components/examples/programInactiveError'
                programExpired:
                  $ref: '#/components/examples/programExpiredError'
        '404':
          description: Verification not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                verificationNotFound:
                  $ref: '#/components/examples/errorVerificationNotFound'
        '429':
          description: User is not permitted to perform any more verifications due to the program's person limiting policies
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                seniorVerificationLimitError:
                  $ref: '#/components/examples/seniorVerificationLimitError'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Senior'
            example:
              firstName: Verify
              lastName: Smith
              birthDate: '1957-11-07'
              postalCode: '12345'
              email: verify@test.com
              metadata:
                senior: true
                gender: male
        description: The senior data collected from the user to be verified
        required: true
  '/verification/program/{programId}/step/collectAgePersonalInfo':
    post:
      tags:
        - verification
      summary: Submit age data against program
      description: >-
        Using this endpoint starts a verification and submits personal info in one request, and is the equivalent to
        POSTing to `/verification` and then `/verification/{verificationId}/step/collectAgePersonalInfo`
      operationId: submitAgeVerificationWithProgramId
      parameters:
        - in: path
          name: programId
          description: Unique identifier for the program to use for verification
          required: true
          schema:
            type: string
      responses:
        '200':
          description: The result of the verification
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VerificationResponse'
              examples:
                Age Success:
                  $ref: '#/components/examples/ageSuccess'
                Age Document Upload:
                  $ref: '#/components/examples/ageDocumentUpload'
                Age Document Rejected:
                  $ref: '#/components/examples/ageDocumentRejected'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VerificationResponse'
              examples:
                ageCollectInfoInvalid:
                  $ref: '#/components/examples/ageCollectInfoInvalid'
        '403':
          description: Program not active, due to future start date or a past end date.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                programNotActive:
                  $ref: '#/components/examples/programInactiveError'
                programExpired:
                  $ref: '#/components/examples/programExpiredError'
        '404':
          description: Verification not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                verificationNotFound:
                  $ref: '#/components/examples/errorVerificationNotFound'
        '429':
          description: User is not permitted to perform any more verifications due to the program's person limiting policies
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                ageVerificationLimitError:
                  $ref: '#/components/examples/ageVerificationLimitError'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Age'
            example:
              firstName: Verify
              lastName: Smith
              birthDate: '1990-09-15'
              postalCode: '53207'
              email: verify@test.com
              phoneNumber: '5555555555'
              country: 'US'
              metadata:
                generation: millenial
                under18: false
        description: The age data collected from the user to be verified
        required: true
  '/verification/program/{programId}/step/collectFirstResponderPersonalInfo':
    post:
      tags:
        - verification
      summary: Submit first responder data against program
      description: >-
        Using this endpoint starts a verification and submits personal info in one request, and is the equivalent to
        POSTing to `/verification` and then `/verification/{verificationId}/step/collectFirstResponderPersonalInfo`
      operationId: submitFirstResponderVerificationWithProgramId
      parameters:
        - in: path
          name: programId
          description: Unique identifier for the program to use for verification
          required: true
          schema:
            type: string
      responses:
        '200':
          description: The result of the verification
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VerificationResponse'
              examples:
                First Responder Success:
                  $ref: '#/components/examples/firstResponderSuccess'
                First Responder Document Upload:
                  $ref: '#/components/examples/firstResponderDocumentUpload'
                First Responder Document Rejected:
                  $ref: '#/components/examples/firstResponderDocumentRejected'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VerificationResponse'
              examples:
                firstResponderCollectInfoInvalid:
                  $ref: '#/components/examples/firstResponderCollectInfoInvalid'
        '403':
          description: Program not active, due to future start date or a past end date.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                programNotActive:
                  $ref: '#/components/examples/programInactiveError'
                programExpired:
                  $ref: '#/components/examples/programExpiredError'
        '404':
          description: Verification not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                verificationNotFound:
                  $ref: '#/components/examples/errorVerificationNotFound'
        '429':
          description: User is not permitted to perform any more verifications due to the program's person limiting policies
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                firstResponderVerificationLimitError:
                  $ref: '#/components/examples/firstResponderVerificationLimitError'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/FirstResponder'
            example:
              firstName: Verify
              lastName: Smith
              birthDate: '1998-06-11'
              status: 'POLICE'
              email: verify@test.com
              organization:
                id: 616215
                name: Yale Volunteer Fire Department
              metadata:
                rank: captain
                yearsService: 11
        description: The first responder data collected from the user to be verified
        required: true
  '/verification/program/{programId}/step/collectLicensedProfessionalPersonalInfo':
    post:
      tags:
        - verification
      summary: Submit licensed professional data against program
      description: >-
        Using this endpoint starts a verification and submits personal info in one request, and is the equivalent to
        POSTing to `/verification` and then `/verification/{verificationId}/step/collectLicensedProfessionalPersonalInfo`
      operationId: submitLicensedProfessionalVerificationWithProgramId
      parameters:
        - in: path
          name: programId
          description: Unique identifier for the program to use for verification
          required: true
          schema:
            type: string
      responses:
        '200':
          description: The result of the verification
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VerificationResponse'
              examples:
                Licensed Professional Success:
                  $ref: '#/components/examples/licensedProfessionalSuccess'
                Licensed Professional Document Upload:
                  $ref: '#/components/examples/licensedProfessionalDocumentUpload'
                Licensed Professional Document Rejected:
                  $ref: '#/components/examples/licensedProfessionalDocumentRejected'

        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VerificationResponse'
              examples:
                licensedProfessionalCollectInfoInvalid:
                  $ref: '#/components/examples/licensedProfessionalCollectInfoInvalid'
        '403':
          description: Program not active, due to future start date or a past end date.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                programNotActive:
                  $ref: '#/components/examples/programInactiveError'
                programExpired:
                  $ref: '#/components/examples/programExpiredError'
        '404':
          description: Verification not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                verificationNotFound:
                  $ref: '#/components/examples/errorVerificationNotFound'
        '429':
          description: User is not permitted to perform any more verifications due to the program's person limiting policies
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                licensedProfessionalVerificationLimitError:
                  $ref: '#/components/examples/licensedProfessionalVerificationLimitError'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/LicensedProfessional'
            example:
              firstName: Verify
              lastName: Smith
              birthDate: '1991-01-11'
              statuses: [ 'LICENSED_COSMETOLOGIST' ]
              email: verify@test.com
              postalCode: '12345'
              organization:
                id: 0
                name: Beauty Beholder
              metadata:
                specialty: colorist
                rank: master stylist
        description: The licensed professional data collected from the user to be verified
        required: true
  '/verification/program/{programId}/step/collectMoverPersonalInfo':
    post:
      tags:
        - verification
      summary: Submit recent mover data against program
      description: >-
        Using this endpoint starts a verification and submits personal info in one request, and is the equivalent to
        POSTing to `/verification` and then `/verification/{verificationId}/step/collectMoverPersonalInfo`
      operationId: submitMoverVerificationWithProgramId
      parameters:
        - in: path
          name: programId
          description: Unique identifier for the program to use for verification
          required: true
          schema:
            type: string
      responses:
        '200':
          description: The result of the verification
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VerificationResponse'
              examples:
                Recent Mover Success:
                  $ref: '#/components/examples/moverSuccess'
                Mover Document Upload:
                  $ref: '#/components/examples/moverDocumentUpload'
                Mover Document Rejected:
                  $ref: '#/components/examples/moverDocumentRejected'

        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VerificationResponse'
              examples:
                moverCollectInfoInvalid:
                  $ref: '#/components/examples/moverCollectInfoInvalid'
        '403':
          description: Program not active, due to future start date or a past end date.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                programNotActive:
                  $ref: '#/components/examples/programInactiveError'
                programExpired:
                  $ref: '#/components/examples/programExpiredError'
        '404':
          description: Verification not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                verificationNotFound:
                  $ref: '#/components/examples/errorVerificationNotFound'
        '429':
          description: User is not permitted to perform any more verifications due to the program's person limiting policies
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                moverVerificationLimitError:
                  $ref: '#/components/examples/moverVerificationLimitError'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Mover'
            example:
              firstName: Verify
              lastName: Smith
              email: verify@test.com
              address1: 1111 A St
              postalCode: '12345'
              statuses: [ 'HOME_BUYER' ]
              metadata:
                homeBuyer: false
                otherMover: true
        description: The mover data collected from the user to be verified
        required: true
  '/verification/program/{programId}/step/collectMedicalProfessionalPersonalInfo':
    post:
      tags:
        - verification
      summary: Submit medical professional data against program
      description: >-
        Using this endpoint starts a verification and submits personal info in one request, and is the equivalent to
        POSTing to `/verification` and then `/verification/{verificationId}/step/collectMedicalProfessionalPersonalInfo`
      operationId: submitMedicalProfessionalVerificationWithProgramId
      parameters:
        - in: path
          name: programId
          description: Unique identifier for the program to use for verification
          required: true
          schema:
            type: string
      responses:
        '200':
          description: The result of the verification
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VerificationResponse'
              examples:
                Medical Professional Success:
                  $ref: '#/components/examples/medicalProfessionalSuccess'
                Medical Professional Document Upload:
                  $ref: '#/components/examples/medicalProfessionalDocumentUpload'
                Medical Professional Document Rejected:
                  $ref: '#/components/examples/medicalProfessionalDocumentRejected'

        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VerificationResponse'
              examples:
                medicalProfessionalCollectInfoInvalid:
                  $ref: '#/components/examples/medicalProfessionalCollectInfoInvalid'
        '403':
          description: Program not active, due to future start date or a past end date.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                programNotActive:
                  $ref: '#/components/examples/programInactiveError'
                programExpired:
                  $ref: '#/components/examples/programExpiredError'
        '404':
          description: Verification not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                verificationNotFound:
                  $ref: '#/components/examples/errorVerificationNotFound'
        '429':
          description: User is not permitted to perform any more verifications due to the program's person limiting policies
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                medicalProfessionalVerificationLimitError:
                  $ref: '#/components/examples/medicalProfessionalVerificationLimitError'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/MedicalProfessional'
            example:
              firstName: Verify
              lastName: Smith
              birthDate: '1990-09-25'
              status: 'NURSE'
              email: verify@test.com
              postalCode: '12345'
              organization:
                id: 651911
                name: Yale-New Haven Hospital
              metadata:
                yearsService: 12
                rank: RN
        description: The medical professional data collected from the user to be verified
        required: true
  '/verification/program/{programId}/step/collectDriverLicensePersonalInfo':
    post:
      tags:
        - verification
      summary: Submit driver license data against program
      description: Using this endpoint starts a verification and submits personal info in one request, and is the equivalent to
        POSTing to `/verification` and then `/verification/{verificationId}/step/collectDriverLicensePersonalInfo`
      operationId: submitDriverLicenseVerificationWithProgramId
      parameters:
        - in: path
          name: programId
          description: Unique identifier for the program to use for verification
          required: true
          schema:
            type: string
      responses:
        '200':
          description: The result of the verification
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VerificationResponse'
              examples:
                Driver License Success:
                  $ref: '#/components/examples/driverLicenseSuccess'
                Driver License Document Upload:
                  $ref: '#/components/examples/driverLicenseDocumentUpload'
                Driver License Document Rejected:
                  $ref: '#/components/examples/driverLicenseDocumentRejected'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VerificationResponse'
              examples:
                driverLicenseCollectInfoInvalid:
                  $ref: '#/components/examples/driverLicenseCollectInfoInvalid'
        '403':
          description: Program not active, due to future start date or a past end date.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                programNotActive:
                  $ref: '#/components/examples/programInactiveError'
                programExpired:
                  $ref: '#/components/examples/programExpiredError'
        '404':
          description: Verification not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                verificationNotFound:
                  $ref: '#/components/examples/errorVerificationNotFound'
        '429':
          description: User is not permitted to perform any more verifications due to the program's person limiting policies
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                driverLicenseVerificationLimitError:
                  $ref: '#/components/examples/driverLicenseVerificationLimitError'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DriverLicense'
            example:
              firstName: Verify
              lastName: Smith
              state: OR
              driverLicenseNumber: 1234567
              email: verify@test.com
          application/jose:
            schema:
              type: string
        description: The data collected from the user to be verified
        required: true
  '/verification/program/{programId}/step/collectGeneralIdentityPersonalInfo':
    post:
      tags:
        - verification
      summary: Submit general identity data against a program
      description: Using this endpoint starts a verification and submits personal info in one request, and is the equivalent to
        POSTing to `/verification` and then `/verification/{verificationId}/step/collectGeneralIdentityPersonalInfo`
      operationId: submitGeneralIdentityVerificationWithProgramId
      parameters:
        - in: path
          name: programId
          description: Unique identifier for the program to use for verification
          required: true
          schema:
            type: string
      responses:
        '200':
          description: The result of the verification
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VerificationResponse'
              examples:
                Success:
                  $ref: '#/components/examples/generalIdentitySuccess'
                Document Upload:
                  $ref: '#/components/examples/generalIdentityDocumentUpload'
                Document Rejected:
                  $ref: '#/components/examples/generalIdentityDocumentRejected'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VerificationResponse'
              examples:
                Invalid Input:
                  $ref: '#/components/examples/generalIdentityCollectInfoInvalid'
        '403':
          description: Program not active, due to future start date or a past end date.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                programNotActive:
                  $ref: '#/components/examples/programInactiveError'
                programExpired:
                  $ref: '#/components/examples/programExpiredError'
        '404':
          description: Verification not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                Verification Not Found:
                  $ref: '#/components/examples/errorVerificationNotFound'
        '429':
          description: User is not permitted to perform any more verifications due to the program's person limiting policies
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                Verification Limit Error:
                  $ref: '#/components/examples/generalIdentityVerificationLimitError'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/GeneralIdentity'
            example:
              firstName: 'Verify'
              lastName: 'Smith'
              birthDate: '1990-01-01'
              address1: '1 Main St'
              city: 'Eugene'
              state: 'OR'
              postalCode: '97000'
              email: 'verify@test.com'
        description: The data collected from the user to be verified
        required: true
  '/verification/program/{programId}/step/collectEmployeePersonalInfo':
    post:
      tags:
        - verification
      summary: Submit employee data against program
      description: >-
        Using this endpoint starts a verification and submits personal info in one request, and is the equivalent to
        POSTing to `/verification` and then `/verification/{verificationId}/step/collectEmployeePersonalInfo`
      operationId: submitEmployeeVerificationWithProgramId
      parameters:
        - in: path
          name: programId
          description: Unique identifier for the program to use for verification
          required: true
          schema:
            type: string
      responses:
        '200':
          description: The result of the verification
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VerificationResponse'
              examples:
                Employee Success:
                  $ref: '#/components/examples/employeeSuccess'
                Employee Document Upload:
                  $ref: '#/components/examples/employeeDocumentUpload'
                Employee Document Rejected:
                  $ref: '#/components/examples/employeeDocumentRejected'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VerificationResponse'
              examples:
                employeeCollectInfoInvalid:
                  $ref: '#/components/examples/employeeCollectInfoInvalid'
        '403':
          description: Program not active, due to future start date or a past end date.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                programNotActive:
                  $ref: '#/components/examples/programInactiveError'
                programExpired:
                  $ref: '#/components/examples/programExpiredError'
        '404':
          description: Verification not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                verificationNotFound:
                  $ref: '#/components/examples/errorVerificationNotFound'
        '429':
          description: User is not permitted to perform any more verifications due to the program's person limiting policies
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                employeeVerificationLimitError:
                  $ref: '#/components/examples/employeeVerificationLimitError'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Employee'
            example:
              firstName: Verify
              lastName: Smith
              email: verify@test.com
              address1: '123 Main St'
              city: Anytown
              state: OR
              postalCode: '12345'
              organization:
                id: 309361
                name: Hyster-Yale Group
              metadata:
                level: manager
                salary: 50000
        description: The employee and company data collected from the user to be verified
        required: true
  '/verification/program/{programId}/step/collectMemberPersonalInfo':
    post:
      tags:
        - verification
      summary: Submit member data against program
      description: >-
        Using this endpoint starts a verification and submits personal info in one request, and is the equivalent to
        POSTing to `/verification` and then `/verification/{verificationId}/step/collectMemberPersonalInfo`
      operationId: submitMemberVerificationWithProgramId
      parameters:
        - in: path
          name: programId
          description: Unique identifier for the program to use for verification
          required: true
          schema:
            type: string
      responses:
        '200':
          description: The result of the verification
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VerificationResponse'
              examples:
                studentSuccess:
                  $ref: '#/components/examples/memberSuccess'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VerificationResponse'
              examples:
                memberCollectInfoInvalid:
                  $ref: '#/components/examples/memberCollectInfoInvalid'
        '403':
          description: Program not active, due to future start date or a past end date.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                programNotActive:
                  $ref: '#/components/examples/programInactiveError'
                programExpired:
                  $ref: '#/components/examples/programExpiredError'
        '404':
          description: Verification not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                verificationNotFound:
                  $ref: '#/components/examples/errorVerificationNotFound'
        '429':
          description: User is not permitted to perform any more verifications due to the program's person limiting policies
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                memberVerificationLimitError:
                  $ref: '#/components/examples/memberVerificationLimitError'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Member'
            example:
              firstName: Verify
              lastName: Smith
              email: verify@test.com
              organization:
                id: 4101
                name: AARP (Washington, DC)
              metadata:
                age: 67
                state: DC
        description: >-
          The member data collected from the user to be verified
        required: true
  '/verification/program/{programId}/step/collectLowIncomePersonalInfo':
    post:
      tags:
        - verification
      summary: Submit low income personal data against program
      description: >-
        Using this endpoint starts a verification and submits personal info in one request, and is the equivalent to
        POSTing to `/verification` and then `/verification/{verificationId}/step/collectLowIncomePersonalInfo`
      operationId: submitLowIncomeVerificationWithProgramId
      parameters:
        - in: path
          name: programId
          description: Unique identifier for the program to use for verification
          required: true
          schema:
            type: string
      responses:
        '200':
          description: The result of the verification
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VerificationResponse'
              examples:
                Low Income Success:
                  $ref: '#/components/examples/lowIncomeSuccess'
                Low Income Document Upload:
                  $ref: '#/components/examples/lowIncomeDocumentUpload'
                Low Income Document Rejected:
                  $ref: '#/components/examples/lowIncomeDocumentRejected'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VerificationResponse'
              examples:
                lowIncomeCollectInfoInvalid:
                  $ref: '#/components/examples/lowIncomeCollectInfoInvalid'
        '403':
          description: Program not active, due to future start date or a past end date.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                programNotActive:
                  $ref: '#/components/examples/programInactiveError'
                programExpired:
                  $ref: '#/components/examples/programExpiredError'
        '404':
          description: Verification not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                verificationNotFound:
                  $ref: '#/components/examples/errorVerificationNotFound'
        '429':
          description: User is not permitted to perform any more verifications due to the program's person limiting policies
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                lowIncomeVerificationLimitError:
                  $ref: '#/components/examples/lowIncomeVerificationLimitError'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/LowIncome'
            example:
              country: US
              firstName: Verify
              lastName: Smith
              birthDate: '1998-05-01'
              address1: '123 Main St'
              city: 'Portland'
              state: 'OR'
              postalCode: '97222'
              phoneNumber: '5415551234'
              email: verify@test.com
              statuses: [ 'SNAP_BENEFITS' ]
              ebtCardNumber: '60048667812345678'
              metadata:
                lowIncome: true
                state: Oregon
        description: >-
          The low income personal data collected from the user to be verified
        required: true
  '/verification/{verificationId}':
    get:
      tags:
        - verification
      summary: Get verification status
      description: Get current state of a verification including the current step and submission URL if available
      operationId: getVerificationStatus
      parameters:
        - in: path
          name: verificationId
          description: Unique identifier for the ongoing verification
          required: true
          schema:
            type: string
      responses:
        '200':
          description: The current status for the verification
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VerificationResponse'
              examples:
                Success:
                  $ref: '#/components/examples/studentSuccess'
                Collect Personal Info:
                  $ref: '#/components/examples/studentCollectInfo'
                Document Upload:
                  $ref: '#/components/examples/studentDocumentUpload'
                Document Rejected:
                  $ref: '#/components/examples/studentDocumentRejected'
                Pending:
                  $ref: '#/components/examples/pending'
        '404':
          description: Verification not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                verificationNotFound:
                  $ref: '#/components/examples/errorVerificationNotFound'
        '429':
          description: >-
            User is not permitted to perform any more document uploads, or
            User is not permitted to perform any more verifications due to the program's person limiting policies
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                docReviewLimitExceeded:
                  $ref: '#/components/examples/docReviewLimitExceededError'
                verificationLimitExceeded:
                  $ref: '#/components/examples/studentVerificationLimitError'
  '/verification/search':
    post:
      tags:
        - verification
      summary: Get verification status for the specified criteria
      description: List of verifications matching the specified criteria including the current state of the verification. Please reach out to your CSM if you want to enable this endpoint for your account.
      operationId: searchVerifications
      responses:
        '200':
          description: A list of current status' for the specified criteria
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VerificationSearchResponse'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SystemErrorMessage'
              example:
                systemErrorMessage: Bad Request
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SystemErrorMessage'
              example:
                systemErrorMessage: Provided API token is empty or invalid
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/VerificationSearchRequest'
        description: >-
          The search criteria to filter based on.
        required: true
      security:
        - apiToken: [ ]
  '/verification/searchByExternalUserId':
    post:
      tags:
        - verification
      summary: Get verifications by external user id
      description: List of verifications matching the specified external user id including the current state of the verification.
      operationId: searchVerificationsByExternalUserId
      responses:
        '200':
          description: A list of current status' for the specified criteria
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VerificationSearchByExternalUserIdResponse'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SystemErrorMessage'
              example:
                systemErrorMessage: Bad Request
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SystemErrorMessage'
              example:
                systemErrorMessage: Provided API token is empty or invalid
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/VerificationSearchByExternalUserIdRequest'
        description: >-
          The external user id and date criteria.
        required: true
      security:
        - apiToken: [ ]
  '/verification/program/{programId}/trackingId/{trackingId}':
    get:
      tags:
        - verification
      summary: Get verification status by Tracking ID
      description: Get current state of a verification including the current step and submission URL if available
      operationId: getVerificationStatusByTrackingId
      parameters:
        - in: path
          name: programId
          description: Unique identifier for the program that was used for the verification
          required: true
          schema:
            type: string
        - in: path
          name: trackingId
          description: Provided trackingId for the ongoing verification to search for
          required: true
          schema:
            type: string
      responses:
        '200':
          description: The current status for the verification
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VerificationResponse'
              examples:
                Success:
                  $ref: '#/components/examples/studentSuccess'
                Collect Personal Info:
                  $ref: '#/components/examples/studentCollectInfo'
                Document Upload:
                  $ref: '#/components/examples/studentDocumentUpload'
                Document Rejected:
                  $ref: '#/components/examples/studentDocumentRejected'
                Pending:
                  $ref: '#/components/examples/pending'
        '404':
          description: Verification not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                verificationNotFound:
                  $ref: '#/components/examples/errorVerificationNotFound'
        '429':
          description: User is not permitted to perform any more document uploads
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                docReviewLimitExceeded:
                  $ref: '#/components/examples/docReviewLimitExceededError'
  '/verification/program/{programId}/trackingId/{trackingId}/history':
    get:
      tags:
        - verification
      summary: Get the 10 most recent verification statuses by Tracking ID
      description: Get list of verifications including the current step and submission URL if available by Tracking ID. Maximum of 10 verifications returned.
      operationId: getVerificationsByTrackingId
      parameters:
        - in: path
          name: programId
          description: Unique identifier for the program that was used for the verifications
          required: true
          schema:
            type: string
        - in: path
          name: trackingId
          description: Provided trackingId for the ongoing verifications to search for
          required: true
          schema:
            type: string
      responses:
        '200':
          description: The list of current verifications by Tracking ID
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/VerificationResponse'
              example:
                - verificationId: '111111111111111111111111'
                  currentStep: success
                  errorIds: [ ]
                  segment: student
                  subSegment: null
                  locale: en-US
                  country: US
                  rewardCode: EXAMPLE-CODE
                  redirectUrl: null
                - verificationId: '111111111111111111111111'
                  currentStep: error
                  errorIds: [ 'verificationLimitExceeded' ]
                  systemErrorMessage: User has exceeded the maximum number of verifications
                  segment: student
                  subSegment: null
                  locale: en-US
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SystemErrorMessage'
              example:
                systemErrorMessage: Provided API token is empty or invalid
        '404':
          description: Verifications not found by Tracking ID
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                verificationNotFound:
                  $ref: '#/components/examples/errorVerificationNotFound'
      security:
        - apiToken: [ ]
  '/verification/{verificationId}/details':
    get:
      tags:
        - verification
      summary: Get verification details
      description: Get detailed information about a verification. Requires an API token.
      operationId: getVerificationDetails
      parameters:
        - in: path
          name: verificationId
          description: Unique identifier for the ongoing verification
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Detailed information about the verification
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VerificationDetails'
              examples:
                Success Verification Details:
                  $ref: '#/components/examples/verificationDetailsSuccess'
                Document Upload Verification Details:
                  $ref: '#/components/examples/verificationDetailsDocumentUpload'
                Document Rejected Verification Details:
                  $ref: '#/components/examples/verificationDetailsDocumentRejected'
                Pending Verification Details:
                  $ref: '#/components/examples/verificationDetailsPending'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SystemErrorMessage'
              example:
                systemErrorMessage: Provided API token is empty or invalid
        '404':
          description: Verification not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SystemErrorMessage'
              example:
                systemErrorMessage: No verification found with id '111111111111111111111111'
      security:
        - apiToken: [ ]
  '/verification/{verificationId}/metadata':
    get:
      tags:
        - verification
      summary: Get verification metadata
      description: Get the metadata of a verification. Requires an API token.
      operationId: getVerificationMetadata
      parameters:
        - in: path
          name: verificationId
          description: Unique identifier for the ongoing verification
          required: true
          schema:
            type: string
      responses:
        '200':
          description: The metadata JSON object
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PersonalInfoMetadata'
              example:
                my: stuff
                goes: here
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SystemErrorMessage'
              example:
                systemErrorMessage: Provided API token is empty or invalid
        '404':
          description: Verification not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SystemErrorMessage'
              example:
                systemErrorMessage: No verification found with id '111111111111111111111111'
      security:
        - apiToken: [ ]
    put:
      tags:
        - verification
      summary: Replace verification metadata
      description: Replace the metadata of an ongoing verification. Requires an API token.
      operationId: updateVerificationMetadata
      parameters:
        - in: path
          name: verificationId
          description: Unique identifier for the ongoing verification
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PersonalInfoMetadata'
            example:
              key: value
              anotherKey: "another value"
        required: true
      responses:
        '200':
          description: The updated metadata JSON object
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PersonalInfoMetadata'
              example:
                key: value
                anotherKey: "another value"
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SystemErrorMessage'
              example:
                systemErrorMessage: Provided API token is empty or invalid
        '404':
          description: Verification not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SystemErrorMessage'
              example:
                systemErrorMessage: No verification found with id '111111111111111111111111'
      security:
        - apiToken: [ ]
  '/verification/{verificationId}/refireWebhooks':
    post:
      tags:
        - verification
      summary: Refire verification webhook
      description: Refire the most recent webhook notifications for the verification request
      operationId: refireWebhooks
      parameters:
        - in: path
          name: verificationId
          description: Unique identifier for the verification
          required: true
          schema:
            type: string
      responses:
        '204':
          description: Webhooks were successfully refired
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SystemErrorMessage'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SystemErrorMessage'
        '404':
          description: Verification not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                verificationNotFound:
                  $ref: '#/components/examples/errorVerificationNotFound'
      security:
        - apiToken: [ ]
  '/verification/{verificationId}/label/{label}':
    post:
      tags:
        - verification
      summary: Label a verification request
      description: Add a label to a verification request. Requires an API token.
      operationId: labelVerification
      parameters:
        - in: path
          name: verificationId
          description: Unique identifier for the verification
          required: true
          schema:
            type: string
        - in: path
          name: label
          description: A label for the verification request
          required: true
          schema:
            type: string
            enum:
              - suspectedFraud
              - confirmedFraud
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/LabelDetails'
            example:
              comment: Account flagged for violating Terms of Service
        description: >-
          Additional supporting details related to labeling the verification request
        required: false
      responses:
        '204':
          description: Verification was successfully labeled
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SystemErrorMessage'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SystemErrorMessage'
        '404':
          description: Verification not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                verificationNotFound:
                  $ref: '#/components/examples/errorVerificationNotFound'
      security:
        - apiToken: [ ]
  '/verification/{verificationId}/barcode':
    get:
      tags:
        - verification
      summary: Retrieves a barcode image for a given reward code
      description: >-
        Retrieves a barcode image for a given reward code, if the verification is in the proper state and has reward codes
      operationId: getBarcodeForReward
      parameters:
        - in: path
          name: verificationId
          description: Unique identifier for the verification
          required: true
          schema:
            type: string
        - in: query
          name: rewardKey
          description: The reward key for this reward. The default value for programs with a single reward is rewardCode.
          required: true
          schema:
            type: string
        - in: query
          name: symbology
          description: Barcode type
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Reward code image
          content:
            image/*:
              schema:
                type: string
                format: binary
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SystemErrorMessage'
        '404':
          description: Verification or reward code not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SystemErrorMessage'
              examples:
                verificationNotFound:
                  $ref: '#/components/examples/errorVerificationNotFound'
  /verification/{verificationId}/purgePersonData:
    post:
      tags:
        - verification
      summary: Purge personal data (PII) from a verification
      description: >-
        Submit a request to purge the personal data (PII) from the provided verification,
        and expire it if it isn't already.

        Requires an API token. User must have "Account Owner" or "Customer Service Manager" role,
        and must be a member of the account that the verification belongs to.

        The purge and expire operations are asynchronous; in most cases it will be completed within 5 minutes.
      operationId: purgeVerificationPersonData
      parameters:
        - in: path
          name: verificationId
          description: Unique identifier for the verification
          required: true
          schema:
            type: string
      responses:
        '200':
          description: The purge request has been accepted.
          content:
            application/json:
              schema:
                type: object
                description: Empty object (properties may be added in the future)
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SystemErrorMessage'
              example:
                systemErrorMessage: Provided API token is empty or invalid
        '404':
          description: Verification not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SystemErrorMessage'
              example:
                systemErrorMessage: Verification with ID '111111111111111111111111' not found
      security:
        - apiToken: [ ]
  /verification/{verificationId}/resetVerificationLimits:
    post:
      tags:
        - verification
      summary: Reset the limits for the provided verification.
      description: >-
        Submit a request to reset the verification limits for the provided verification.

        Requires an API token. User must have "Account Owner" or "Customer Service Manager" role,
        and must be a member of the account that the verification belongs to.
      operationId: resetVerificationLimits
      parameters:
        - in: path
          name: verificationId
          description: Unique identifier for the verification
          required: true
          schema:
            type: string
      responses:
        '200':
          description: The reset request has been accepted.
          content:
            application/json:
              schema:
                type: object
                description: Empty object (properties may be added in the future)
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SystemErrorMessage'
              example:
                systemErrorMessage: Provided API token is empty or invalid
        '404':
          description: Verification not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SystemErrorMessage'
              example:
                systemErrorMessage: Verification with ID '111111111111111111111111' not found
      security:
        - apiToken: [ ]
  /verification/{verificationId}/rememberMeCallToAction:
    get:
      tags:
        - verification
      summary: Stores consumer info more permanently
      description: >-
        Only for verifications with Remember Me enabled. After verification success, this endpoint can be used to
        determine what fields were collected during verification so that the consumer can be informed about which
        fields will be saved should they elect to have their information stored for future verifications.  This is
        often followed by a POST to `/verification/{verificationId]/rememberConsumer`
      operationId: rememberMeCallToAction
      parameters:
        - in: path
          name: verificationId
          description: Unique identifier for the verification
          required: true
          schema:
            type: string
      responses:
        '200':
          description: The request has been accepted.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RememberMeCallToActionResponse'
              example:
                verificationId: '111111111111111111111111'
                alreadyRemembered: true
                collectedInformation:
                  collectedFields: ['firstName', 'idNumber']
                  organization:
                    id: 1234
                    name: Forsyth Technical Community College
        '404':
          description: Verification not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SystemErrorMessage'
              example:
                systemErrorMessage: Verification with ID '111111111111111111111111' not found
  /verification/{verificationId}/rememberConsumer:
    post:
      tags:
        - verification
      summary: Stores consumer info more permanently
      description: >-
        Only for verifications with Remember Me enabled. Stores consumer info associated with the verification to be
        used for future verifications. Requires consent from consumer indicated in the request body.
      operationId: rememberConsumer
      parameters:
        - in: path
          name: verificationId
          description: Unique identifier for the verification
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RememberConsumerRequest'
        description: Consent values provided by the consumer.
        required: true
      responses:
        '200':
          description: The request has been accepted.
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SystemErrorMessage'
              example:
                systemErrorMessage: Consumer must consent in order to be remembered.
        '404':
          description: Verification not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SystemErrorMessage'
              example:
                systemErrorMessage: Verification with ID '111111111111111111111111' not found
  '/program/{programId}/theme':
    get:
      tags:
        - program
      summary: Get program theme
      description: Get the theme data (messages and CSS) for a program
      operationId: getProgramTheme
      parameters:
        - in: path
          name: programId
          description: Unique identifier for the program
          required: true
          schema:
            type: string
        - in: query
          name: locale
          description: Optionally override locale to use for translations (defaults to using locale with HTTP request)
          required: false
          schema:
            type: string
      responses:
        '200':
          description: The theme data for a program
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProgramTheme'
        '404':
          description: Program not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                systemErrorMessage: Program with ID '222222222222222222222222' not found
  '/program/{programId}/possibleSteps':
    get:
      tags:
        - program
      summary: Get the verification steps the given program may encounter in the verification flow.
      description: Get the verification steps the given program may encounter in the verification flow.
      operationId: getPossibleSteps
      parameters:
        - in: path
          name: programId
          description: Unique identifier for the program
          required: true
          schema:
            type: string
      responses:
        '200':
          description: The possible steps for a program
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PossibleStepsResponse'
        '404':
          description: Program not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                systemErrorMessage: Program with ID '222222222222222222222222' not found
  '/program/{programId}/organization':
    get:
      tags:
        - program
      summary: Get organization
      description: This endpoint has been deprecated, please use `orgSearchUrl` in ProgramVerificationConfig instead.
      operationId: getOrganizations
      deprecated: true
      parameters:
        - in: query
          name: name
          description: All or part of the organization name to use for search
          required: true
          schema:
            type: string
        - in: query
          name: country
          description: An optional country to use for filtering which orgs to show
          required: false
          schema:
            type: string
        - in: path
          name: programId
          description: The unique identifier for the program being used for the verification
          required: true
          schema:
            type: string
      responses:
        '200':
          description: The list of Organizations matching the search
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Organization'
              example:
                id: 1234
                name: Organization Name
        '404':
          description: Program not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SystemErrorMessage'
              example:
                systemErrorMessage: Program with ID '222222222222222222222222' not found
  '/program/{programId}/verificationLimit':
    post:
      tags:
        - program
      summary: Establish verification limit
      description: Create a verification limit for a given program
      operationId: createVerificationLimit
      parameters:
        - in: path
          name: programId
          description: Unique identifier for the program
          required: true
          schema:
            type: string
      responses:
        '200':
          description: The current available data for a program
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProgramConfig'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SystemErrorMessage'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SystemErrorMessage'
        '404':
          description: Program not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SystemErrorMessage'
              example:
                systemErrorMessage: Program with ID '222222222222222222222222' not found
        '409':
          description: Verification limit already exists
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SystemErrorMessage'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/VerificationLimitRequest'
        description: The create verification limit request
        required: true
      security:
        - apiToken: [ ]
    delete:
      tags:
        - program
      summary: Delete verification limit
      description: Delete verification limit for a given program
      operationId: deleteVerificationLimit
      parameters:
        - in: path
          name: programId
          description: Unique identifier for the program
          required: true
          schema:
            type: string
      responses:
        '200':
          description: The current available data for a program
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProgramConfig'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SystemErrorMessage'
        '404':
          description: Program not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SystemErrorMessage'
      security:
        - apiToken: [ ]
  '/program/{programId}/webhook':
    post:
      tags:
        - program
      summary: Create verification webhook
      description: Create a webhook for any verifications done using the given program
      operationId: createWebhook
      parameters:
        - in: path
          name: programId
          description: Unique identifier for the program
          required: true
          schema:
            type: string
      responses:
        '200':
          description: The current available data for a program
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProgramConfig'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SystemErrorMessage'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SystemErrorMessage'
        '404':
          description: Program not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SystemErrorMessage'
        '409':
          description: Webhook already exists
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SystemErrorMessage'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/WebhookRequest'
        description: The create webhook request
        required: true
      security:
        - apiToken: [ ]
    delete:
      tags:
        - program
      summary: Delete verification webhook
      description: Delete the webhook for any verifications done using the given program
      operationId: deleteWebhook
      parameters:
        - in: path
          name: programId
          description: Unique identifier for the program
          required: true
          schema:
            type: string
      responses:
        '200':
          description: The current available data for a program
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProgramConfig'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SystemErrorMessage'
        '404':
          description: Program not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SystemErrorMessage'
      security:
        - apiToken: [ ]
  '/program/{programId}/sendLink':
    post:
      tags:
        - program
      summary: Sends a link to the program
      description: Sends a link to the program to the target
      operationId: sendLink
      parameters:
        - in: path
          name: programId
          description: Unique identifier for the program
          required: true
          schema:
            type: string
      responses:
        '204':
          description: The send link request was submitted successfully
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SystemErrorMessage'
        '404':
          description: Program not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SystemErrorMessage'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SendLinkRequest'
        description: The send link request bodoy
        required: true
      security:
        - apiToken: [ ]
  '/report/verification':
    post:
      operationId: generateVerificationReport
      tags:
        - report
      summary: Generate a verification report
      description: Generate a verification report which can be downloaded later
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/VerificationReportRequest'
            example:
              startDate: '2000-12-25'
              endDate: '2000-12-31'
              format: CSV
              isPiiIncluded: true
              piiReason: 'PII request reason'
      responses:
        '202':
          description: Accepted
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ReportStatusResponse'
              examples:
                reportStatusResponsePending:
                  $ref: '#/components/examples/reportStatusResponsePending'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SystemErrorMessage'
              example:
                systemErrorMessage: Provided API token is empty or invalid
      security:
        - apiToken: [ ]
  '/report/reverify/{batchId}':
    post:
      operationId: generateReverificationReport
      tags:
        - report
      summary: Generate verification report for re-verification task
      description: Generate a verification report for a re-verification task which can be downloaded later
      parameters:
        - in: path
          name: batchId
          description: The ID of the re-verification task
          required: true
          schema:
            type: string
      responses:
        '202':
          description: Accepted
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ReportStatusResponse'
              example:
                reportStatusResponsePending:
                  $ref: '#/components/examples/reportStatusResponsePending'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SystemErrorMessage'
              example:
                systemErrorMessage: Provided API token is empty or invalid
      security:
        - apiToken: [ ]
  '/report/{reportId}/status':
    get:
      operationId: getReportStatus
      tags:
        - report
      summary: Retrieve report generation status
      description: Retrieve report generation status by report ID
      parameters:
        - in: path
          name: reportId
          description: Unique identifier of Report to retrieve
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Information indicating whether the report is ready for download yet, or not.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ReportStatusResponse'
              examples:
                reportStatusResponseComplete:
                  $ref: '#/components/examples/reportStatusResponseComplete'
        '400':
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/SystemErrorMessage"
          description: Bad Request - Invalid Report ID
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SystemErrorMessage'
          description: Unauthorized
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SystemErrorMessage'
          description: No report found having the supplied ID
      security:
        - apiToken: [ ]
  '/report/{reportId}':
    get:
      operationId: getReportData
      tags:
        - report
      summary: Download report
      description: Retrieve data for a previously-generated report
      parameters:
        - in: path
          name: reportId
          description: Unique identifier of Report to retrieve
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Successful retrieval of report data
        '202':
          description: 'Report is still being generated and is not ready yet'
        '400':
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/SystemErrorMessage"
          description: Bad Request - Invalid Report ID
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SystemErrorMessage'
          description: Unauthorized
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SystemErrorMessage'
          description: No report found having the supplied ID
        '410':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SystemErrorMessage'
          description: The requested report has been deleted/purged
      security:
        - apiToken: [ ]
  /report/fields:
    get:
      tags:
        - report
      summary: List reporting fields
      description: Retrieve a list of reporting fields available to the user's account and the programs requested
      operationId: listReportFields
      parameters:
        - in: query
          name: programIds
          description: List of program ids for which to retrieve metadata keys. If none are specified all programs under
            the user's account are included.
          schema:
            type: array
            items:
              type: string
      responses:
        "200":
          description: A list of reporting fields organized by scope.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/ReportFieldSet"
        "400":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          description: Bad Request - one or more of the requested program ids is invalid.
        "401":
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                invalidTokenError:
                  $ref: '#/components/examples/invalidTokenError'
      security:
        - apiToken: [ ]

  '/conversion/verification/{verificationId}':
    post:
      tags:
        - conversion
      summary: Store conversion information
      description: Store conversion information
      operationId: storeVerificationConversion
      parameters:
        - in: path
          name: verificationId
          description: The ID of the verification to correlate the conversion info to
          required: true
          schema:
            type: string
      responses:
        '200':
          description: The result
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ConversionResponse'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SystemErrorMessage'
        '404':
          description: Verification not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SystemErrorMessage'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ConversionRequest'
        description: >-
          The conversion information
        required: true
  '/conversion/account/{accountId}/trackingId/{trackingId}':
    post:
      tags:
        - conversion
      summary: Store conversion information by Tracking ID
      description: Store conversion information based on a tracking ID provided with the NewVerificationRequest when creating a verification
      operationId: storeVerificationConversionByTrackingId
      parameters:
        - in: path
          name: accountId
          description: Unique identifier for the account that made the conversion
          required: true
          schema:
            type: string
        - in: path
          name: trackingId
          description: The "Tracking ID" supplied when the verification was created
          required: true
          schema:
            type: string
      responses:
        '200':
          description: The result
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ConversionResponse'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SystemErrorMessage'
        '404':
          description: Account or trackingId not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SystemErrorMessage'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ConversionRequest'
        description: >-
          The conversion information
        required: true
  /organization/addSchool:
    post:
      tags:
        - addSchool
      summary: Submit an add school request
      description: Submit an add school request
      operationId: submitAddSchoolRequest
      responses:
        '204':
          description: The add school request was submitted successfully
        '400':
          description: The add school request was not properly formatted
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SystemErrorMessage'
        '404':
          description: The provided program was not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SystemErrorMessage'
        '429':
          description: Too many add school requests for the given program
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SystemErrorMessage'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AddSchoolRequest'
        description: The add school request
        required: true
  /organization/addSchool/search/domain:
    post:
      tags:
        - addSchool
      summary: Search for eligible schools by domain name as part of the add school flow
      description: Search for eligible schools by domain name as part of the add school flow
      operationId: searchForEligibleSchoolsByDomain
      responses:
        '200':
          description: The results of the search
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EligibleSchoolSearchResult'
        '400':
          description: The search was not properly formatted
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SystemErrorMessage'
        '404':
          description: The provided program was not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SystemErrorMessage'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/EligibleSchoolDomainSearch'
        required: true
  /organization/addSchool/search/name:
    post:
      tags:
        - addSchool
      summary: Search for eligible schools by name as part of the add school flow
      description: Search for eligible schools by name as part of the add school flow
      operationId: searchForEligibleSchoolsByName
      responses:
        '200':
          description: The results of the search
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EligibleSchoolSearchResult'
        '400':
          description: The search was not properly formatted
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SystemErrorMessage'
        '404':
          description: The provided program was not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SystemErrorMessage'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/EligibleSchoolNameSearch'
        required: true
  /verification:
    post:
      tags:
        - verification
      summary: Begin verification flow
      description: Start the verification flow for a given program
      operationId: newVerification
      responses:
        '200':
          description: The initial information required to render the verification form
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NewVerificationResponse'
              examples:
                collectStudentInfo:
                  $ref: '#/components/examples/studentCollectInfo'
        '403':
          description: Program not active, due to future start date or a past end date.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                programNotActive:
                  $ref: '#/components/examples/programInactiveError'
                programExpired:
                  $ref: '#/components/examples/programExpiredError'
        '404':
          description: Program not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                programNotFound:
                  $ref: '#/components/examples/programNotFoundError'
        '409':
          description: No reward codes remaining for program
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                noRemainingRewardCodes:
                  $ref: '#/components/examples/errorNoRemainingRewardCodes'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/NewVerificationRequest'
            example:
              programId: '222222222222222222222222'
        description: The request to retrieve a verification configuration for a given program
        required: true
  /verification/{verificationId}/expire:
    post:
      tags:
        - verification
      summary: Expire the provided verification.
      description: Expire the provided verification. Used when abandoning a verification attempt.
      operationId: expireVerification
      parameters:
        - in: path
          name: verificationId
          description: Unique identifier for the ongoing verification
          required: true
          schema:
            type: string
      responses:
        '200':
          description: The new status of the verification
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VerificationResponse'
              examples:
                Expired Request With Consolation:
                  $ref: '#/components/examples/consolation'
                Expired Request No Consolation:
                  $ref: '#/components/examples/errorExpiredVerification'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VerificationResponse'
        '404':
          description: Verification not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                verificationNotFound:
                  $ref: '#/components/examples/errorVerificationNotFound'
  '/verification/{verificationId}/step/collectPersonalInfo':
    post:
      tags:
        - verification
      summary: Submit data to a Remember Me enabled program
      description: Submit consumer data for a verification on a Remember Me enabled program
      operationId: submitPersonalInfoVerification
      parameters:
        - in: path
          name: verificationId
          description: Unique identifier for the ongoing verification
          required: true
          schema:
            type: string
      responses:
        '200':
          description: The result of the verification
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VerificationResponse'
              examples:
                Student Success:
                  $ref: '#/components/examples/studentSuccess'
                Student Document Upload:
                  $ref: '#/components/examples/studentDocumentUpload'
                Student Document Rejected:
                  $ref: '#/components/examples/studentDocumentRejected'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VerificationResponse'
              examples:
                collectPersonalInfoInvalid:
                  $ref: '#/components/examples/collectPersonalInfoInvalid'
        '404':
          description: Verification not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                verificationNotFound:
                  $ref: '#/components/examples/errorVerificationNotFound'
        '429':
          description: User is not permitted to perform any more verifications due to the program's person limiting policies
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                studentVerificationLimitError:
                  $ref: '#/components/examples/studentVerificationLimitError'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/GenericVerificationSubject'
            example:
              firstName: Verify
              lastName: Smith
              birthDate: '1991-01-23'
              email: verify@test.com
              organization:
                id: 1234
                name: Forsyth Technical Community College
              metadata:
                status: fulltime
                major: accounting
        description: >-
          The personal info collected from the user to be combined with the stored consumer info
          to be verified
        required: true
  '/verification/{verificationId}/step/collectStudentPersonalInfo':
    post:
      tags:
        - verification
      summary: Submit student data
      description: Submit data for a student verification
      operationId: submitStudentVerification
      parameters:
        - in: path
          name: verificationId
          description: Unique identifier for the ongoing verification
          required: true
          schema:
            type: string
      responses:
        '200':
          description: The result of the verification
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VerificationResponse'
              examples:
                Student Success:
                  $ref: '#/components/examples/studentSuccess'
                Student Document Upload:
                  $ref: '#/components/examples/studentDocumentUpload'
                Student Document Rejected:
                  $ref: '#/components/examples/studentDocumentRejected'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VerificationResponse'
              examples:
                collectStudentInfoInvalid:
                  $ref: '#/components/examples/studentCollectInfoInvalid'
        '404':
          description: Verification not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                verificationNotFound:
                  $ref: '#/components/examples/errorVerificationNotFound'
        '429':
          description: User is not permitted to perform any more verifications due to the program's person limiting policies
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                studentVerificationLimitError:
                  $ref: '#/components/examples/studentVerificationLimitError'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Student'
            example:
              firstName: Verify
              lastName: Smith
              birthDate: '1991-01-23'
              email: verify@test.com
              organization:
                id: 1234
                name: Forsyth Technical Community College
              metadata:
                status: fulltime
                major: accounting
        description: >-
          The student and university data collected from the user to be
          verified
        required: true
  '/verification/{verificationId}/step/collectMilitaryStatus':
    post:
      tags:
        - verification
      summary: Submit military status
      description: Submit military status to determine which kind of military verification to perform
      operationId: submitMilitaryStatus
      parameters:
        - in: path
          name: verificationId
          description: Unique identifier for the program to use for verification
          required: true
          schema:
            type: string
      responses:
        '200':
          description: The next step to perform in the verification flow
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VerificationResponse'
              examples:
                activeMilitaryCollectInfo:
                  $ref: '#/components/examples/activeMilitaryCollectInfo'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VerificationResponse'
              examples:
                militaryCollectStatusInvalid:
                  $ref: '#/components/examples/militaryCollectStatusInvalid'
        '404':
          description: Verification not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                verificationNotFound:
                  $ref: '#/components/examples/errorVerificationNotFound'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/MilitaryStatusRequest'
        description: The status of the military member being verified
        required: true
  '/verification/{verificationId}/step/collectActiveMilitaryPersonalInfo':
    post:
      tags:
        - verification
      summary: Submit active military data
      description: Submit data for an active military verification
      operationId: submitActiveMilitaryVerification
      parameters:
        - in: path
          name: verificationId
          description: Unique identifier for the ongoing verification
          required: true
          schema:
            type: string
      responses:
        '200':
          description: The result of the verification
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VerificationResponse'
              examples:
                Active Military Success:
                  $ref: '#/components/examples/activeMilitarySuccess'
                Active Military Document Upload:
                  $ref: '#/components/examples/activeMilitaryDocumentUpload'
                Active Military Document Rejected:
                  $ref: '#/components/examples/activeMilitaryDocumentRejected'
                Continue To Social Security Number:
                  $ref: '#/components/examples/militaryContinueToSocialSecurityNumber'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VerificationResponse'
              examples:
                activeMilitaryCollectInfoInvalid:
                  $ref: '#/components/examples/activeMilitaryCollectInfoInvalid'
        '404':
          description: Verification not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                verificationNotFound:
                  $ref: '#/components/examples/errorVerificationNotFound'
        '429':
          description: User is not permitted to perform any more verifications due to the program's person limiting policies
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                activeMilitaryVerificationLimitError:
                  $ref: '#/components/examples/activeMilitaryVerificationLimitError'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ActiveMilitary'
            example:
              firstName: Verify
              lastName: Smith
              birthDate: '1991-12-04'
              email: verify@test.com
              organization:
                id: 4073
                name: Air Force
              metadata:
                squadronName: 18th Aggressor Squadron
                squadronNickname: Blue Foxes
        description: >-
          The active military and branch of service data collected from the user to be
          verified
        required: true
  '/verification/{verificationId}/step/collectInactiveMilitaryPersonalInfo':
    post:
      tags:
        - verification
      summary: Submit inactive military data
      description: Submit data for an inactive military verification
      operationId: submitInactiveMilitaryVerification
      parameters:
        - in: path
          name: verificationId
          description: Unique identifier for the ongoing verification
          required: true
          schema:
            type: string
      responses:
        '200':
          description: The result of the verification
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VerificationResponse'
              examples:
                Inactive Military Success:
                  $ref: '#/components/examples/inactiveMilitarySuccess'
                Inactive Military Document Upload:
                  $ref: '#/components/examples/inactiveMilitaryDocumentUpload'
                Inactive Military Document Rejected:
                  $ref: '#/components/examples/inactiveMilitaryDocumentRejected'
                Continue To Social Security Number:
                  $ref: '#/components/examples/militaryContinueToSocialSecurityNumber'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VerificationResponse'
              examples:
                inactiveMilitaryCollectInfoInvalid:
                  $ref: '#/components/examples/inactiveMilitaryCollectInfoInvalid'
        '404':
          description: Verification not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                verificationNotFound:
                  $ref: '#/components/examples/errorVerificationNotFound'
        '429':
          description: User is not permitted to perform any more verifications due to the program's person limiting policies
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                inactiveMilitaryVerificationLimitError:
                  $ref: '#/components/examples/inactiveMilitaryVerificationLimitError'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/InactiveMilitary'
            example:
              firstName: Verify
              lastName: Smith
              birthDate: '1955-01-31'
              dischargeDate: '1991-06-21'
              email: verify@test.com
              organization:
                id: 4073
                name: Air Force
              metadata:
                squadronName: USAF Air Demonstration Squadron
                squadronNickname: Thunderbirds
        description: >-
          The inactive duty and branch of service data collected from the user to be
          verified
        required: true
  '/verification/{verificationId}/step/collectSocialSecurityNumber':
    post:
      tags:
        - verification
      summary: Submit Social Security Number
      description: >-
        Submit social security number for military verification.
        See `DELETE` for documentation about on how to skip this step.
      operationId: submitSocialSecurityNumber
      parameters:
        - in: path
          name: verificationId
          description: Unique identifier for the ongoing verification
          required: true
          schema:
            type: string
      responses:
        '200':
          description: The result of the verification
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VerificationResponse'
              example:
                $ref: '#/components/examples/socialSecurityNumberSuccess'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VerificationResponse'
              example:
                $ref: '#/components/examples/socialSecurityNumberInvalid'
        '404':
          description: Verification not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '429':
          description: User is not permitted to perform any more verifications due to the program's person limiting policies
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SocialSecurityNumberRequest'
            example:
              socialSecurityNumber: 111223333
        description: The social security number of the person to be verified
        required: true
    delete:
      tags:
        - verification
      summary: Skip submission of Social Security Number
      description: Skip submission of Social Security Number and proceed Doc Upload
      operationId: skipSocialSecurityNumber
      parameters:
        - in: path
          name: verificationId
          description: Unique identifier for the ongoing verification
          required: true
          schema:
            type: string
      responses:
        '200':
          description: The result of the verification
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VerificationResponse'
              example:
                $ref: '#/components/examples/socialSecurityNumberCancelled'
        '404':
          description: Verification not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                verificationNotFound:
                  $ref: '#/components/examples/errorVerificationNotFound'
  '/verification/{verificationId}/step/collectTeacherPersonalInfo':
    post:
      tags:
        - verification
      summary: Submit teacher data
      description: Submit data for a teacher verification
      operationId: submitTeacherVerification
      parameters:
        - in: path
          name: verificationId
          description: Unique identifier for the ongoing verification
          required: true
          schema:
            type: string
      responses:
        '200':
          description: The result of the verification
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VerificationResponse'
              examples:
                Teacher Success:
                  $ref: '#/components/examples/teacherSuccess'
                Teacher Document Upload:
                  $ref: '#/components/examples/teacherDocumentUpload'
                Teacher Document Rejected:
                  $ref: '#/components/examples/teacherDocumentRejected'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VerificationResponse'
              examples:
                teacherCollectInfoInvalid:
                  $ref: '#/components/examples/teacherCollectInfoInvalid'
        '404':
          description: Verification not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                verificationNotFound:
                  $ref: '#/components/examples/errorVerificationNotFound'
        '429':
          description: User is not permitted to perform any more verifications due to the program's person limiting policies
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                teacherVerificationLimitError:
                  $ref: '#/components/examples/teacherVerificationLimitError'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Teacher'
            example:
              firstName: Verify
              lastName: Smith
              birthDate: '1991-01-01'
              email: verify@test.com
              organization:
                id: 590759
                name: Yale University
              metadata:
                gradeTaught: 11th
                honorsClass: false
        description: >-
          The teacher and school data collected from the user to be
          verified
        required: true
  '/verification/{verificationId}/step/collectSeniorPersonalInfo':
    post:
      tags:
        - verification
      summary: Submit senior data
      description: Submit data for a senior verification
      operationId: submitSeniorVerification
      parameters:
        - in: path
          name: verificationId
          description: Unique identifier for the ongoing verification
          required: true
          schema:
            type: string
      responses:
        '200':
          description: The result of the verification
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VerificationResponse'
              examples:
                seniorSuccess:
                  $ref: '#/components/examples/seniorSuccess'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VerificationResponse'
              examples:
                seniorCollectInfoInvalid:
                  $ref: '#/components/examples/seniorCollectInfoInvalid'
        '404':
          description: Verification not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                verificationNotFound:
                  $ref: '#/components/examples/errorVerificationNotFound'
        '429':
          description: User is not permitted to perform any more verifications due to the program's person limiting policies
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                seniorVerificationLimitError:
                  $ref: '#/components/examples/seniorVerificationLimitError'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Senior'
            example:
              firstName: Verify
              lastName: Smith
              birthDate: '1957-11-07'
              postalCode: '12345'
              email: verify@test.com
              metadata:
                senior: true
                gender: male
        description: The senior data collected from the user to be verified
        required: true
  '/verification/{verificationId}/step/collectAgePersonalInfo':
    post:
      tags:
        - verification
      summary: Submit age data
      description: Submit data for an age verification
      operationId: submitAgeVerification
      parameters:
        - in: path
          name: verificationId
          description: Unique identifier for the ongoing verification
          required: true
          schema:
            type: string
      responses:
        '200':
          description: The result of the verification
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VerificationResponse'
              examples:
                Age Success:
                  $ref: '#/components/examples/ageSuccess'
                Age Document Upload:
                  $ref: '#/components/examples/ageDocumentUpload'
                Age Document Rejected:
                  $ref: '#/components/examples/ageDocumentRejected'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VerificationResponse'
              examples:
                ageCollectInfoInvalid:
                  $ref: '#/components/examples/ageCollectInfoInvalid'
        '404':
          description: Verification not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                verificationNotFound:
                  $ref: '#/components/examples/errorVerificationNotFound'
        '429':
          description: User is not permitted to perform any more verifications due to the program's person limiting policies
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                ageVerificationLimitError:
                  $ref: '#/components/examples/ageVerificationLimitError'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Age'
            example:
              firstName: Verify
              lastName: Smith
              birthDate: '1991-01-01'
              postalCode: '12345'
              email: verify@test.com
              phoneNumber: '5555555555'
              country: 'US'
              metadata:
                generation: millenial
                under18: false
        description: The age data collected from the user to be verified
        required: true
  '/verification/{verificationId}/step/collectFirstResponderPersonalInfo':
    post:
      tags:
        - verification
      summary: Submit first responder data
      description: Submit data for a first responder verification
      operationId: submitFirstResponderVerification
      parameters:
        - in: path
          name: verificationId
          description: Unique identifier for the ongoing verification
          required: true
          schema:
            type: string
      responses:
        '200':
          description: The result of the verification
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VerificationResponse'
              examples:
                First Responder Success:
                  $ref: '#/components/examples/firstResponderSuccess'
                First Responder Document Upload:
                  $ref: '#/components/examples/firstResponderDocumentUpload'
                First Responder Document Rejected:
                  $ref: '#/components/examples/firstResponderDocumentRejected'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VerificationResponse'
              examples:
                firstResponderCollectInfoInvalid:
                  $ref: '#/components/examples/firstResponderCollectInfoInvalid'
        '404':
          description: Verification not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                verificationNotFound:
                  $ref: '#/components/examples/errorVerificationNotFound'
        '429':
          description: User is not permitted to perform any more verifications due to the program's person limiting policies
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                firstResponderVerificationLimitError:
                  $ref: '#/components/examples/firstResponderVerificationLimitError'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/FirstResponder'
            example:
              firstName: Verify
              lastName: Smith
              birthDate: '1991-01-01'
              status: 'POLICE'
              email: verify@test.com
              organization:
                id: 616215
                name: Yale Volunteer Fire Department
              metadata:
                rank: captain
                yearsService: 11
        description: The first responder data collected from the user to be verified
        required: true
  '/verification/{verificationId}/step/collectLicensedProfessionalPersonalInfo':
    post:
      tags:
        - verification
      summary: Submit licensed professional data
      description: Submit data for a licensed professional verification
      operationId: submitLicensedProfessionalVerification
      parameters:
        - in: path
          name: verificationId
          description: Unique identifier for the ongoing verification
          required: true
          schema:
            type: string
      responses:
        '200':
          description: The result of the verification
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VerificationResponse'
              examples:
                Licensed Professional Success:
                  $ref: '#/components/examples/licensedProfessionalSuccess'
                Licensed Professional Document Upload:
                  $ref: '#/components/examples/licensedProfessionalDocumentUpload'
                Licensed Professional Document Rejected:
                  $ref: '#/components/examples/licensedProfessionalDocumentRejected'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VerificationResponse'
              examples:
                licensedProfessionalCollectInfoInvalid:
                  $ref: '#/components/examples/licensedProfessionalCollectInfoInvalid'
        '404':
          description: Verification not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                verificationNotFound:
                  $ref: '#/components/examples/errorVerificationNotFound'
        '429':
          description: User is not permitted to perform any more verifications due to the program's person limiting policies
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                licensedProfessionalVerificationLimitError:
                  $ref: '#/components/examples/licensedProfessionalVerificationLimitError'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/LicensedProfessional'
            example:
              firstName: Verify
              lastName: Smith
              birthDate: '1991-01-01'
              statuses: [ 'LICENSED_COSMETOLOGIST' ]
              email: verify@test.com
              postalCode: '12345'
              organization:
                id: 0
                name: Beauty Beholder
              metadata:
                specialty: colorist
                rank: master stylist
        description: The licensed professional and organization data collected from the user to be verified
        required: true
  '/verification/{verificationId}/step/collectMoverPersonalInfo':
    post:
      tags:
        - verification
      summary: Submit mover data
      description: Submit data for a mover verification
      operationId: submitMoverVerification
      parameters:
        - in: path
          name: verificationId
          description: Unique identifier for the ongoing verification
          required: true
          schema:
            type: string
      responses:
        '200':
          description: The result of the verification
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VerificationResponse'
              examples:
                Mover Success:
                  $ref: '#/components/examples/moverSuccess'
                Mover Document Upload:
                  $ref: '#/components/examples/moverDocumentUpload'
                Mover Document Rejected:
                  $ref: '#/components/examples/moverDocumentRejected'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VerificationResponse'
              examples:
                moverCollectInfoInvalid:
                  $ref: '#/components/examples/moverCollectInfoInvalid'
        '404':
          description: Verification not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                verificationNotFound:
                  $ref: '#/components/examples/errorVerificationNotFound'
        '429':
          description: User is not permitted to perform any more verifications due to the program's person limiting policies
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                moverVerificationLimitError:
                  $ref: '#/components/examples/moverVerificationLimitError'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Mover'
            example:
              firstName: Verify
              lastName: Smith
              email: verify@test.com
              address1: 1111 A St
              postalCode: '11111'
              statuses: [ 'HOME_BUYER' ]
              metadata:
                homeBuyer: true
                otherMover: false
        description: The mover data collected from the user to be verified
        required: true
  '/verification/{verificationId}/step/collectMedicalProfessionalPersonalInfo':
    post:
      tags:
        - verification
      summary: Submit medical professional data
      description: Submit data for a medical professional verification
      operationId: submitMedicalProfessionalVerification
      parameters:
        - in: path
          name: verificationId
          description: Unique identifier for the ongoing verification
          required: true
          schema:
            type: string
      responses:
        '200':
          description: The result of the verification
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VerificationResponse'
              examples:
                Medical Professional Success:
                  $ref: '#/components/examples/medicalProfessionalSuccess'
                Medical Professional Document Upload:
                  $ref: '#/components/examples/medicalProfessionalDocumentUpload'
                Medical Professional Document Rejected:
                  $ref: '#/components/examples/medicalProfessionalDocumentRejected'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VerificationResponse'
              examples:
                medicalProfessionalCollectInfoInvalid:
                  $ref: '#/components/examples/medicalProfessionalCollectInfoInvalid'
        '404':
          description: Verification not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                verificationNotFound:
                  $ref: '#/components/examples/errorVerificationNotFound'
        '429':
          description: User is not permitted to perform any more verifications due to the program's person limiting policies
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                medicalProfessionalVerificationLimitError:
                  $ref: '#/components/examples/medicalProfessionalVerificationLimitError'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/MedicalProfessional'
            example:
              firstName: Verify
              lastName: Smith
              birthDate: '1991-01-01'
              status: 'NURSE'
              email: verify@test.com
              postalCode: '12345'
              organization:
                id: 651911
                name: Yale-New Haven Hospital
              metadata:
                yearsService: 12
                rank: RN
        description: The medical professional and organization data collected from the user to be verified
        required: true
  '/verification/{verificationId}/step/collectDriverLicensePersonalInfo':
    post:
      tags:
        - verification
      summary: Submit driver license data
      description: Submit data for verifying a subject based on their driver license
      operationId: submitDriverLicenseVerification
      parameters:
        - in: path
          name: verificationId
          description: Unique identifier for the ongoing verification
          required: true
          schema:
            type: string
      responses:
        '200':
          description: The result of the verification
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VerificationResponse'
              examples:
                Success:
                  $ref: '#/components/examples/driverLicenseSuccess'
                Document Upload:
                  $ref: '#/components/examples/driverLicenseDocumentUpload'
                Document Rejected:
                  $ref: '#/components/examples/driverLicenseDocumentRejected'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VerificationResponse'
              examples:
                Invalid Input:
                  $ref: '#/components/examples/driverLicenseCollectInfoInvalid'
        '404':
          description: Verification not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                Verification Not Found:
                  $ref: '#/components/examples/errorVerificationNotFound'
        '429':
          description: User is not permitted to perform any more verifications due to the program's person limiting policies
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                Verification Limit Error:
                  $ref: '#/components/examples/driverLicenseVerificationLimitError'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DriverLicense'
            example:
              firstName: Verify
              lastName: Smith
              state: OR
              driverLicenseNumber: 1234567
              email: verify@test.com
          application/jose:
            schema:
              type: string
        description: The data collected from the user to be verified
        required: true
  '/verification/{verificationId}/step/collectGeneralIdentityPersonalInfo':
    post:
      tags:
        - verification
      summary: Submit general identity data
      description: Submit data for verifying a subject based on their general identity
      operationId: submitGeneralIdentityVerification
      parameters:
        - in: path
          name: verificationId
          description: Unique identifier for the ongoing verification
          required: true
          schema:
            type: string
      responses:
        '200':
          description: The result of the verification
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VerificationResponse'
              examples:
                Success:
                  $ref: '#/components/examples/generalIdentitySuccess'
                Document Upload:
                  $ref: '#/components/examples/generalIdentityDocumentUpload'
                Document Rejected:
                  $ref: '#/components/examples/generalIdentityDocumentRejected'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VerificationResponse'
              examples:
                Invalid Input:
                  $ref: '#/components/examples/generalIdentityCollectInfoInvalid'
        '404':
          description: Verification not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                Verification Not Found:
                  $ref: '#/components/examples/errorVerificationNotFound'
        '429':
          description: User is not permitted to perform any more verifications due to the program's person limiting policies
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                Verification Limit Error:
                  $ref: '#/components/examples/generalIdentityVerificationLimitError'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/GeneralIdentity'
            example:
              firstName: 'Verify'
              lastName: 'Smith'
              birthDate: '1990-01-01'
              address1: '1 Main St'
              city: 'Eugene'
              state: 'OR'
              postalCode: '97000'
              email: verify@test.com
        description: The data collected from the user to be verified
        required: true
  '/verification/{verificationId}/step/collectEmployeePersonalInfo':
    post:
      tags:
        - verification
      summary: Submit employee data
      description: Submit data for an employee verification
      operationId: submitEmployeeVerification
      parameters:
        - in: path
          name: verificationId
          description: Unique identifier for the ongoing verification
          required: true
          schema:
            type: string
      responses:
        '200':
          description: The result of the verification
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VerificationResponse'
              examples:
                Employee Success:
                  $ref: '#/components/examples/employeeSuccess'
                Employee Document Upload:
                  $ref: '#/components/examples/employeeDocumentUpload'
                Employee Document Rejected:
                  $ref: '#/components/examples/employeeDocumentRejected'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VerificationResponse'
              examples:
                employeeCollectInfoInvalid:
                  $ref: '#/components/examples/employeeCollectInfoInvalid'
        '404':
          description: Verification not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                verificationNotFound:
                  $ref: '#/components/examples/errorVerificationNotFound'
        '429':
          description: User is not permitted to perform any more verifications due to the program's person limiting policies
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                employeeVerificationLimitError:
                  $ref: '#/components/examples/employeeVerificationLimitError'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Employee'
            example:
              firstName: Verify
              lastName: Smith
              email: verify@test.com
              address1: '123 Main St'
              city: Anytown
              state: OR
              postalCode: '12345'
              country: US
              organization:
                id: 309361
                name: Hyster-Yale Group
              metadata:
                level: manager
                salary: 50000
        description: The employee and company data collected from the user to be verified
        required: true
  '/verification/{verificationId}/step/collectMemberPersonalInfo':
    post:
      tags:
        - verification
      summary: Submit member data
      description: Submit data for a member verification
      operationId: submitMemberVerification
      parameters:
        - in: path
          name: verificationId
          description: Unique identifier for the ongoing verification
          required: true
          schema:
            type: string
      responses:
        '200':
          description: The result of the verification
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VerificationResponse'
              examples:
                memberSuccess:
                  $ref: '#/components/examples/memberSuccess'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VerificationResponse'
              examples:
                memberCollectInfoInvalid:
                  $ref: '#/components/examples/memberCollectInfoInvalid'
        '404':
          description: Verification not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                verificationNotFound:
                  $ref: '#/components/examples/errorVerificationNotFound'
        '429':
          description: User is not permitted to perform any more verifications due to the program's person limiting policies
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                memberVerificationLimitError:
                  $ref: '#/components/examples/memberVerificationLimitError'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Member'
            example:
              firstName: Verify
              lastName: Smith
              email: verify@test.com
              organization:
                id: 4101
                name: AARP (Washington, DC)
              metadata:
                age: 67
                state: DC
        description: >-
          The member and organization data collected from the user to be
          verified
        required: true
  '/verification/{verificationId}/step/collectLowIncomePersonalInfo':
    post:
      tags:
        - verification
      summary: Submit low income personal data
      description: Submit data for a low income verification
      operationId: submitLowIncomeVerification
      parameters:
        - in: path
          name: verificationId
          description: Unique identifier for the ongoing verification
          required: true
          schema:
            type: string
      responses:
        '200':
          description: The result of the verification
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VerificationResponse'
              examples:
                Low Income Success:
                  $ref: '#/components/examples/lowIncomeSuccess'
                Low Income Document Upload:
                  $ref: '#/components/examples/lowIncomeDocumentUpload'
                Low Income Document Rejected:
                  $ref: '#/components/examples/lowIncomeDocumentRejected'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VerificationResponse'
              examples:
                teacherCollectInfoInvalid:
                  $ref: '#/components/examples/lowIncomeCollectInfoInvalid'
        '404':
          description: Verification not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                verificationNotFound:
                  $ref: '#/components/examples/errorVerificationNotFound'
        '429':
          description: User is not permitted to perform any more verifications due to the program's person limiting policies
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                teacherVerificationLimitError:
                  $ref: '#/components/examples/lowIncomeVerificationLimitError'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/LowIncome'
            example:
              country: US
              firstName: Verify
              lastName: Smith
              birthDate: '1991-01-01'
              address1: '123 Main St'
              city: 'Portland'
              state: 'OR'
              postalCode: '97222'
              phoneNumber: '5415551234'
              email: verify@test.com
              statuses: [ 'SNAP_BENEFITS' ]
              ebtCardNumber: '60048667812345678'
              metadata:
                lowIncome: true
                state: Oregon
        description: >-
          The low income personal data collected from the user to be verified
        required: true
  '/verification/{verificationId}/step/collectIdentifier':
    post:
      tags:
        - verification
      summary: Collect specified identifier from consumer
      description: >-
        Only for verifications with Remember Me enabled.  After verification has been initialized, start with
        collecting the specified identifier from the consumer.
      operationId: collectIdentifier
      parameters:
        - in: path
          name: verificationId
          description: Unique identifier for the ongoing verification
          required: true
          schema:
            type: string
      responses:
        '200':
          description: The next step in the verification process
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VerificationResponse'
              examples:
                completeAuthentication:
                  $ref: '#/components/examples/completeAuthentication'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                invalidStepError:
                  $ref: '#/components/examples/invalidStepError'
        '404':
          description: Verification not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                verificationNotFound:
                  $ref: '#/components/examples/errorVerificationNotFound'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Identifier'
            example:
              email: "user@place.com"
        required: true
  '/verification/{verificationId}/step/completeAuthentication':
    post:
      tags:
        - verification
      summary: Completes an authentication loop.
      description: >-
        Only for verifications with Remember Me enabled.  After an identifier has been submitted that was previously
        remembered, this allows the completion of the authentication loop by supplying a token that was provided to
        the consumer.
      operationId: completeAuthenticationLoop
      parameters:
        - in: path
          name: verificationId
          description: Unique identifier for the ongoing verification
          required: true
          schema:
            type: string
      responses:
        '200':
          description: The next step in the verification process
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VerificationResponse'
              examples:
                collectPersonalInfo:
                  $ref: '#/components/examples/collectPersonalInfo'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                invalidAuthenticationLoopTokenError:
                  $ref: '#/components/examples/invalidAuthenticationLoopToken'
        '404':
          description: Verification not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                verificationNotFound:
                  $ref: '#/components/examples/errorVerificationNotFound'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AuthenticationToken'
            example:
              authenticationToken: "123456"
        required: true
    delete:
      tags:
        - verification
      summary: Cancel authentication loop
      description: Only for verifications with Remember Me enabled. Cancels an ongoing authentication loop if the consumer wishes not to complete it.  Proceeds with normal verification.
      operationId: cancelAuthenticationLoop
      parameters:
        - in: path
          name: verificationId
          description: Unique identifier for the ongoing verification
          required: true
          schema:
            type: string
      responses:
        '200':
          description: The next step in the verification process
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VerificationResponse'
              examples:
                studentSuccess:
                  $ref: '#/components/examples/collectPersonalInfo'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VerificationResponse'
              examples:
                invalidSsoError:
                  $ref: '#/components/examples/invalidStepError'
        '404':
          description: Verification not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                verificationNotFound:
                  $ref: '#/components/examples/errorVerificationNotFound'
  '/verification/{verificationId}/step/sso':
    get:
      tags:
        - verification
      summary: Start SSO process
      description: Start the SSO process for a given verification. This endpoint will redirect the user to the appropriate login page.
      operationId: beginSso
      parameters:
        - in: path
          name: verificationId
          description: Unique identifier for the ongoing verification
          required: true
          schema:
            type: string
      responses:
        '307':
          description: Redirect to the appropriate login page.
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VerificationResponse'
              examples:
                invalidSsoError:
                  $ref: '#/components/examples/invalidSsoError'
        '404':
          description: Verification not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                verificationNotFound:
                  $ref: '#/components/examples/errorVerificationNotFound'
    delete:
      tags:
        - verification
      summary: Cancel SSO verification
      description: Cancel an SSO verification (will move the verification to the docUpload step)
      operationId: cancelSso
      parameters:
        - in: path
          name: verificationId
          description: Unique identifier for the ongoing verification
          required: true
          schema:
            type: string
      responses:
        '200':
          description: The next step in the verification process
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VerificationResponse'
              examples:
                studentSuccess:
                  $ref: '#/components/examples/studentSuccess'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VerificationResponse'
              examples:
                invalidSsoError:
                  $ref: '#/components/examples/invalidSsoError'
        '404':
          description: Verification not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                verificationNotFound:
                  $ref: '#/components/examples/errorVerificationNotFound'
  '/verification/{verificationId}/step/emailLoop':
    post:
      tags:
        - verification
      summary: Submit email loop response
      description: Complete the email loop verification using the token provided in the email sent to the subject being verified.
      operationId: completeEmailLoop
      parameters:
        - in: path
          name: verificationId
          description: Unique identifier for the ongoing verification
          required: true
          schema:
            type: string
      responses:
        '200':
          description: The next step in the verification process
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VerificationResponse'
              examples:
                studentSuccess:
                  $ref: '#/components/examples/studentSuccess'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VerificationResponse'
              examples:
                invalidEmailLoopError:
                  $ref: '#/components/examples/invalidEmailLoop'
        '404':
          description: Verification not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                verificationNotFound:
                  $ref: '#/components/examples/errorVerificationNotFound'
        '429':
          description: User is not permitted to perform any more verifications due to the program's person limiting policies
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                studentVerificationLimitError:
                  $ref: '#/components/examples/studentVerificationLimitError'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/EmailLoopToken'
            example:
              emailToken: 123456
        description: The token that was sent to the subjects email
        required: true
    delete:
      tags:
        - verification
      summary: Cancel email loop verification
      description: Cancel an ongoing email loop verification (will move the verification to the docUpload step)
      operationId: cancelEmailLoop
      parameters:
        - in: path
          name: verificationId
          description: Unique identifier for the ongoing verification
          required: true
          schema:
            type: string
      responses:
        '200':
          description: The next step in the verification process
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VerificationResponse'
              examples:
                studentSuccess:
                  $ref: '#/components/examples/studentSuccess'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VerificationResponse'
              examples:
                invalidEmailLoopError:
                  $ref: '#/components/examples/invalidEmailLoop'
        '404':
          description: Verification not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                verificationNotFound:
                  $ref: '#/components/examples/errorVerificationNotFound'
  '/verification/{verificationId}/step/emailLoop/retry':
    get:
      tags:
        - verification
      summary: Retry email loop
      description: Send a new email with a fresh email loop token to the person being verified.
      operationId: resendEmailLoopToken
      parameters:
        - in: path
          name: verificationId
          description: Unique identifier for the ongoing verification
          required: true
          schema:
            type: string
      responses:
        '204':
          description: The email was sent
        '404':
          description: Verification not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                verificationNotFound:
                  $ref: '#/components/examples/errorVerificationNotFound'
  '/verification/{verificationId}/step/emailLoop/retrieveToken':
    post:
      tags:
        - verification
      summary: Retrieve email loop token
      description: Optionally creates and returns the current email loop token.
      operationId: retrieveEmailLoopToken
      parameters:
        - in: path
          name: verificationId
          description: Unique identifier for the ongoing verification
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RetrieveEmailLoopTokenRequest'
            example:
              refreshToken: true
      responses:
        '200':
          description: Latest email loop token returned
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RetrieveEmailLoopTokenResponse'
        '404':
          description: Verification not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                verificationNotFound:
                  $ref: '#/components/examples/errorVerificationNotFound'
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          description: Bad Request
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                invalidTokenError:
                  $ref: '#/components/examples/invalidTokenError'
      security:
        - apiToken: [ ]
  '/verification/{verificationId}/step/emailLoop/resume':
    post:
      tags:
        - verification
      summary: Resume email loop
      description: >-
        Resumes a paused email loop. If provided, the given email address will be used for the Email Loop.
        Otherwise, the one already submitted for the Verification will be used.
        In either case, the domain of the email address will be validated prior to sending the email message.
        If the domain is valid for the organization associated with the request, then the user will have been
        sent an email message containing a link that will complete the email loop, unless the program is configured to bypass
        sending the email. In that case, no email message was sent, and the email loop token is included in
        the response.
      operationId: resumeEmailLoop
      parameters:
        - in: path
          name: verificationId
          description: Unique identifier for the ongoing verification
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ResumeEmailLoopRequest'
            example:
              emailAddress: 'joe.verify@sheerid.com'
      responses:
        '200':
          description: The result of resuming the email loop
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResumeEmailLoopResponse'
              examples:
                resumeResponse:
                  $ref: '#/components/examples/resumeEmailLoopResponse'
                resumeResponseWithToken:
                  $ref: '#/components/examples/resumeEmailLoopResponseWithToken'
        '404':
          description: Verification not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                verificationNotFound:
                  $ref: '#/components/examples/errorVerificationNotFound'
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EmailLoopResponse'
              examples:
                invalidEmailAddressError:
                  $ref: '#/components/examples/invalidEmailLoopAddressOverrideError'
          description: Bad Request
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                invalidTokenError:
                  $ref: '#/components/examples/invalidTokenError'
      security:
        - apiToken: [ ]
  '/verification/{verificationId}/step/emailLoop/emailAddressOverride':
    post:
      tags:
        - verification
      summary: Allow user to submit an alternate email address
      description: >-
        Allows a user to submit an alternate email address. This email address will be used for the Email Loop.
        The domain of the email address will be validated prior to sending the email message.
        If the domain is valid for the organization associated with the request, then the user will have been
        sent an email message containing a link that will complete the email loop, unless the program is configured to bypass
        sending the email.
      operationId: emailAddressOverride
      parameters:
        - in: path
          name: verificationId
          description: Unique identifier for the ongoing verification
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ResumeEmailLoopRequest'
            example:
              emailAddress: 'joe.verify@sheerid.com'
      responses:
        '200':
          description: The result of resuming the email loop
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EmailLoopResponse'
              examples:
                resumeResponse:
                  $ref: '#/components/examples/resumeEmailLoopResponse'
        '404':
          description: Verification not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                verificationNotFound:
                  $ref: '#/components/examples/errorVerificationNotFound'
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EmailLoopResponse'
              examples:
                invalidEmailAddressError:
                  $ref: '#/components/examples/invalidEmailLoopAddressOverrideError'
          description: Bad Request
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                invalidTokenError:
                  $ref: '#/components/examples/invalidTokenError'
  '/verification/{verificationId}/step/smsLoop':
    post:
      tags:
        - verification
      summary: Submit SMS code
      description: Submit the token that was provided to the person being verified via an SMS message.
      operationId: submitSMSCode
      parameters:
        - in: path
          name: verificationId
          description: Unique identifier for the ongoing verification
          required: true
          schema:
            type: string
      responses:
        '200':
          description: The next step in the verification process
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VerificationResponse'
              examples:
                studentSuccess:
                  $ref: '#/components/examples/studentSuccess'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VerificationResponse'
              examples:
                invalidSMSError:
                  $ref: '#/components/examples/invalidSMSError'
        '404':
          description: Verification not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                verificationNotFound:
                  $ref: '#/components/examples/errorVerificationNotFound'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SMSCode'
            example:
              smsCode: 123456
        description: The SMS code that was sent to the user
        required: true
  '/verification/{verificationId}/step/smsLoop/retry':
    get:
      tags:
        - verification
      summary: Retry SMS code
      description: Send a new SMS code to the person being verified.
      operationId: resendSMSCode
      parameters:
        - in: path
          name: verificationId
          description: Unique identifier for the ongoing verification
          required: true
          schema:
            type: string
      responses:
        '204':
          description: The SMS message was sent
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VerificationResponse'
              examples:
                maxSMSLimitReached:
                  $ref: '#/components/examples/maxSMSLimitReached'
        '404':
          description: Verification not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                verificationNotFound:
                  $ref: '#/components/examples/errorVerificationNotFound'
  '/verification/{verificationId}/step/docUpload':
    post:
      tags:
        - verification
      summary: Upload documents
      description: Submit files for document review
      operationId: submitDocumentReviewFilesWithoutToken
      parameters:
        - in: path
          name: verificationId
          description: Unique identifier for the ongoing verification
          required: true
          schema:
            type: string
      requestBody:
        content:
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/DocumentUploadRequest'
          application/json:
            schema:
              $ref: '#/components/schemas/InitiateDocumentUploadRequest'
        required: true
      responses:
        '200':
          description: The result of the document upload
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VerificationResponse'
              examples:
                pending:
                  $ref: '#/components/examples/pending'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VerificationResponse'
              examples:
                maxFilesExceededError:
                  $ref: '#/components/examples/maxFilesExceededError'
        '404':
          description: Verification not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                verificationNotFound:
                  $ref: '#/components/examples/errorVerificationNotFound'
        '413':
          description: Maximum allowed file size exceeded
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                maxFileSizeExceededError:
                  $ref: '#/components/examples/maxFileSizeExceededError'
        '429':
          description: User is not permitted to perform any more document uploads due to the program's upload limiting policies
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                docReviewLimitExceeded:
                  $ref: '#/components/examples/docReviewLimitExceededError'
    delete:
      tags:
        - verification
      summary: Cancel document upload
      description: Cancel document upload for a verification (will move the verification to the next step)
      operationId: cancelDocUpload
      parameters:
        - in: path
          name: verificationId
          description: Unique identifier for the ongoing verification
          required: true
          schema:
            type: string
      responses:
        '200':
          description: The next step in the verification process
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VerificationResponse'
              examples:
                override:
                  $ref: '#/components/examples/override'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VerificationResponse'
              examples:
                invalidStepError:
                  $ref: '#/components/examples/invalidStepError'
        '404':
          description: Verification not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                verificationNotFound:
                  $ref: '#/components/examples/errorVerificationNotFound'
  '/verification/{verificationId}/step/docUpload/{docUploadToken}':
    post:
      tags:
        - verification
      summary: Upload documents
      description: This endpoint has been deprecated. Use 'verification/{verificationId}/step/docUpload' instead
      operationId: submitDocumentReviewFiles
      deprecated: true
      parameters:
        - in: path
          name: verificationId
          description: Unique identifier for the ongoing verification
          required: true
          schema:
            type: string
        - in: path
          name: docUploadToken
          description: Token to authorize a document to be uploaded for a given verification
          required: true
          schema:
            type: string
      requestBody:
        content:
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/DocumentUploadRequest'
          application/json:
            schema:
              $ref: '#/components/schemas/InitiateDocumentUploadRequest'
        required: true
      responses:
        '200':
          description: The result of the document upload
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VerificationResponse'
              examples:
                pending:
                  $ref: '#/components/examples/pending'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VerificationResponse'
              examples:
                maxFilesExceededError:
                  $ref: '#/components/examples/maxFilesExceededError'
        '404':
          description: Verification not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                verificationNotFound:
                  $ref: '#/components/examples/errorVerificationNotFound'
        '413':
          description: Maximum allowed file size exceeded
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                maxFileSizeExceededError:
                  $ref: '#/components/examples/maxFileSizeExceededError'
        '429':
          description: User is not permitted to perform any more document uploads due to the program's upload limiting policies
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                docReviewLimitExceeded:
                  $ref: '#/components/examples/docReviewLimitExceededError'
  '/verification/{verificationId}/step/completeDocUpload':
    post:
      tags:
        - verification
      summary: Mark uploading documents as completed
      description: Mark uploading documents as completed
      operationId: completeDocUpload
      parameters:
        - in: path
          name: verificationId
          description: Unique identifier for the ongoing verification
          required: true
          schema:
            type: string
      responses:
        '200':
          description: The result of the document upload
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VerificationResponse'
              examples:
                pending:
                  $ref: '#/components/examples/pending'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VerificationResponse'
              examples:
                maxFilesExceededError:
                  $ref: '#/components/examples/maxFilesExceededError'
        '404':
          description: Verification not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                verificationNotFound:
                  $ref: '#/components/examples/errorVerificationNotFound'
        '429':
          description: User is not permitted to perform any more document uploads due to the program's upload limiting policies
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                docReviewLimitExceeded:
                  $ref: '#/components/examples/docReviewLimitExceededError'
  '/verification/{verificationId}/step/resultOverride':
    post:
      tags:
        - verification
      summary: Modify the result of a verification via overriding
      description: This endpoint allows someone with access to a secret code to override the verification result, forcing it to be approved
      operationId: overrideVerification
      parameters:
        - in: path
          name: verificationId
          description: Unique identifier for the ongoing verification
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/OverrideRequest'
        required: true
      responses:
        '200':
          description: The override was completed successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VerificationResponse'
              examples:
                success:
                  $ref: '#/components/examples/studentSuccess'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VerificationResponse'
              examples:
                invalidOverrideCodeError:
                  $ref: '#/components/examples/invalidOverrideCodeError'
        '404':
          description: Verification not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                verificationNotFound:
                  $ref: '#/components/examples/errorVerificationNotFound'
        '429':
          description: Incorrect verification override code attempt limit exceeded
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                verificationOverrideAttemptLimitExceeded:
                  $ref: '#/components/examples/incorrectVerificationOverrideCodeAttemptLimitExceededError'
  '/verification/marketplace':
    post:
      tags:
        - verification
      summary: Initiate Marketplace verification
      description: Create a verification that will use the Marketplace verification system
      operationId: newMarketplaceVerification
      responses:
        '200':
          description: A response including the unique verification token that can be used to verify the user
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NewMarketplaceVerificationResponse'
              examples:
                collectMarketplaceToken:
                  $ref: '#/components/examples/marketplaceCollectToken'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VerificationResponse'
              examples:
                invalidProgramError:
                  $ref: '#/components/examples/invalidProgramError'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                invalidTokenError:
                  $ref: '#/components/examples/invalidTokenError'
        '403':
          description: Program not active, due to future start date or a past end date.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                programNotActive:
                  $ref: '#/components/examples/programInactiveError'
                programExpired:
                  $ref: '#/components/examples/programExpiredError'
        '404':
          description: Program not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                programNotFound:
                  $ref: '#/components/examples/programNotFoundError'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/NewMarketplaceVerificationRequest'
            example:
              programId: '222222222222222222222222'
              trackingId: '333333333333333333333333'
              subject:
                email: 'user@place.com'
        description: The request to retrieve a verification token to verify with the provided program
        required: true
      security:
        - apiToken: [ ]
  '/verification/{verificationId}/step/collectMarketplaceToken':
    post:
      tags:
        - verification
      summary: Submit marketplace verification data
      description: Submit data for a marketplace verification
      operationId: submitMarketplaceVerification
      parameters:
        - in: path
          name: verificationId
          description: Unique identifier for the ongoing verification
          required: true
          schema:
            type: string
      responses:
        '200':
          description: The result of the verification
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VerificationResponse'
              examples:
                marketplaceSuccess:
                  $ref: '#/components/examples/marketplaceSuccess'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VerificationResponse'
              examples:
                employeeCollectInfoInvalid:
                  $ref: '#/components/examples/employeeCollectInfoInvalid'
        '404':
          description: Verification not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                verificationNotFound:
                  $ref: '#/components/examples/errorVerificationNotFound'
        '429':
          description: User is not permitted to perform any more verifications due to the program's person limiting policies
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                marketplaceVerificationLimitError:
                  $ref: '#/components/examples/marketplaceVerificationLimitError'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/VerificationToken'
            example:
              verificationToken: 'AbcdEfg1234!@#$AbcdEfg1234!@#$12'
        description: The verification token to submit a marketplace verification
        required: true
  '/verification/{verificationId}/step/idCheckLoop/upload':
    post:
      tags:
        - verification
        - idCheckLoop
      summary: Upload images for government ID check
      description: Submit images of government-issued identification
      operationId: uploadIdCheckLoopImages
      parameters:
        - in: path
          name: verificationId
          description: Unique identifier for the ongoing verification
          required: true
          schema:
            type: string
      requestBody:
        content:
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/IdCheckUploadRequest'
      responses:
        '202':
          description: The request has been enqueued for asynchronous processing
        '400':
          description: The request could not be accepted because it was invalid
        '404':
          description: Verification not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                verificationNotFound:
                  $ref: '#/components/examples/errorVerificationNotFound'
  '/verification/{verificationId}/step/submitIdCheckLoop':
    post:
      tags:
        - verification
        - idCheckLoop
      summary: Endpoint to be called after ID Check images have been uploaded
      operationId: submitIdCheckLoop
      parameters:
        - in: path
          name: verificationId
          description: Unique identifier for the ongoing verification
          required: true
          schema:
            type: string
      responses:
        '200':
          description: The verification status after submission of the ID Check
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VerificationResponse'
              examples:
                pending:
                  $ref: '#/components/examples/pending'
        '404':
          description: Verification not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                verificationNotFound:
                  $ref: '#/components/examples/errorVerificationNotFound'
  '/organization/{verificationId}':
    get:
      tags:
        - verification
      summary: Get organization details
      description: Get detailed information about the organization submitted for a verification. Requires an API token.
      operationId: getOrganizationDetails
      parameters:
        - in: path
          name: verificationId
          description: Unique identifier for the verification
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Detailed information about the organization
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OrganizationDetails'
              examples:
                Success Verification Details:
                  $ref: '#/components/examples/organizationDetailsSuccess'
        '204':
          description: Verification is NEW and/or there is no organization associated with the verification
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SystemErrorMessage'
              example:
                systemErrorMessage: Provided API token is empty or invalid
        '404':
          description: Verification not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SystemErrorMessage'
              example:
                systemErrorMessage: No verification found with id '111111111111111111111111'
      security:
        - apiToken: [ ]
  /fraud/report:
    post:
      summary: Report that verifications were fraudulent
      description: Report verifications that you identified as connected to consumers who fraudulently attempted to verify for your offer (e.g. consumers who attempted to verify more than the allowed number of times or who were approved under false pretenses). This feedback will be used by SheerID to improve verification accuracy.
      operationId: report
      tags:
        - fraudReporting
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/FraudReportRequest'
            examples:
              reportFraud:
                $ref: '#/components/examples/reportFraud'
      responses:
        "200":
          description: successful
        "400":
          $ref: "#/components/responses/400BadRequest"
        "401":
          $ref: "#/components/responses/401Unauthorized"
        "500":
          $ref: "#/components/responses/500Internal"
      security:
        - apiToken: [ ]
components:
  securitySchemes:
    apiToken:
      type: apiKey
      name: Authorization
      in: header
  schemas:
    ActiveMilitary:
      type: object
      description: An active duty member to be verified
      properties:
        firstName:
          description: The first name of the person being verified
          type: string
        lastName:
          description: The last name of the person being verified
          type: string
        deviceFingerprintHash:
          description: The device fingerprint collected for the person being verified
          type: string
        email:
          $ref: '#/components/schemas/ValidEmail'
        birthDate:
          $ref: '#/components/schemas/ValidBirthDate'
        organization:
          $ref: '#/components/schemas/Organization'
        phoneNumber:
          $ref: '#/components/schemas/ValidPhoneNumber'
        locale:
          $ref: '#/components/schemas/ValidLocale'
        ipAddress:
          $ref: '#/components/schemas/IPV4Address'
        ipAddressExtended:
          $ref: '#/components/schemas/IPAddress'
          description: supersedes the 'ipAddress' field
        externalUserId:
          description: An identifier stored with the verification for external reference
          type: string
        email2:
          $ref: '#/components/schemas/ValidEmail'
        metadata:
          $ref: '#/components/schemas/PersonalInfoMetadata'
        country:
          type: string
          description: The two character country code for the person being verified.
      required:
        - firstName
        - lastName
        - email
        - birthDate
        - organization
    AddSchoolRequest:
      type: object
      properties:
        firstName:
          type: string
          description: The first name for the user submitting the add school request
        lastName:
          type: string
          description: The last name for the user submitting the add school request
        email:
          $ref: '#/components/schemas/ValidEmail'
        programId:
          type: string
          description: The programId for the program the user is attempting to verify against
        schoolName:
          type: string
          description: The name of the school that should be added
        schoolDomain:
          type: string
          description: The domain name associated with the school that should be added
        schoolCountry:
          type: string
          description: The two character country code where the school is located
        trackingId:
          type: string
          description: An optional tracking ID to associate with the add school request
      required:
        - firstName
        - lastName
        - email
        - programId
        - schoolName
        - schoolDomain
        - schoolCountry
    CollectIdentifierMessages:
      type: object
      description: Messages to show to the user when the collectIdentifier step is reached.
      additionalProperties:
        type: string
      properties:
        submitButton:
          type: string
          description: The submit button text for the Collect Identifier step.
        inputExplanation:
          type: string
          description: A message for the input explanation.
      required:
        - submitButton
        - inputExplanation
    CompleteAuthenticationMessages:
      type: object
      description: Messages to show to the user when the authenticationLoop step is reached.
      additionalProperties:
        type: string
      properties:
        title:
          type: string
          description: The title of the page shown when the authenticationLoop step is reached.
        subtitle:
          type: string
          description: A message indicating an email was sent and instructions for completing the step.
        manuallyVerifyButton:
          type: string
          description: Message shown to indicate how to skip the authentication loop step and manually verify.
      required:
        - title
        - subtitle
        - manuallyVerifyButton
    OverrideMessages:
      type: object
      description: Messages to show to the user when the override step is reached.
      additionalProperties:
        type: string
      properties:
        title:
          type: string
          description: The title of the page shown when the override step is reached.
        subtitle:
          type: string
          description: The subtitle of the page shown when the override step is reached.
        subtitle2:
          type: string
          description: Information about how to proceed when the override step is reached.
        verificationOverrideCodeLabel:
          type: string
          description: The label for the input box provided for the override code.
        submitOverrideCodeButtonLabel:
          type: string
          description: The text shown on the button used to submit the override code.
      required:
        - title
        - subtitle
        - subtitle2
        - verificationOverrideCodeLabel
        - submitOverrideCodeButtonLabel
    ConfirmedSegment:
      type: object
      description: Segment that has been confirmed for the verification subject
      properties:
        segment:
          $ref: '#/components/schemas/Segment'
        subSegment:
          $ref: '#/components/schemas/SubSegment'
        organization:
          $ref: '#/components/schemas/Organization'
        active:
          type: boolean
          description: Whether or not the user is currently affiliated with this segment.
        startDate:
          type: string
          format: date
          description: The date the user began being affiliated with this segment, or at least the start date of the most recent interval
        endDate:
          type: string
          format: date
          description: The date the user stopped, or will stop, being affiliated with this segment.
        attributes:
          type: array
          items:
            type: string
            description: An array of attributes related to the user's affiliation to this segment, usually provided by the organization.

    ExternalVerificationType:
      type: string
      enum:
        - authoritative
        - domainValidation
        - documentReview
        - emailLoop
        - honorSystem
        - other
        - predictive
        - smsLoop
        - sso
    VerificationMethod:
      type: string
      description: The method used to decision a verification. Null for verifications that are in progress, or that expired before completion
      nullable: true
      enum:
        - INSTANT
        - MANUAL
    BrandInfo:
      type: object
      description: Information about the brand providing the offer
      properties:
        faqUrl:
          type: string
          description: The URL where a FAQ for the brand resides
        emailAddress:
          description: The email address for the brand
          $ref: '#/components/schemas/ValidEmail'
        phoneNumber:
          description: The phone number for the brand
          $ref: '#/components/schemas/ValidPhoneNumber'
      required:
        - faqUrl
        - emailAddress
        - phoneNumber
    BuildInformationResponseMessage:
      type: object
      description: The current version number and build time for the SheerID server application
      properties:
        sheeridVersion:
          type: string
          description: The version of SheerID deployed on the server
        sheeridGitCommit:
          type: string
          description: The Git SHA1 hash for the last commit in this build
        puppetGitCommit:
          type: string
          description: The Git SHA1 hash for the last commit in the puppet configuration realm at deployment time
        buildTimestamp:
          type: string
          description: The timestamp of the build which produced the version of SheerID deployed on the server
    ConsolationMessages:
      type: object
      description: The messages to be shown to the user when the consolation step is reached.
      additionalProperties:
        type: string
      properties:
        title:
          type: string
          description: The title for the page when the user reaches the consolation step.
        subtitle:
          type: string
          description: The subtitle for the page when the user reaches the consolation step.
        verificationOnly:
          type: string
          description: Message shown to direct questions about the verification process.
      required:
        - title
        - subtitle
        - verificationOnly
    ConsolationResponse:
      type: object
      description: The verification was not successful, but a consolation reward is available to the user.
      properties:
        verificationId:
          type: string
          description: >-
            The unique ID for the
            [VerificationRequest](#!/components/schemas/VerificationRequest) associated
            with this response
        currentStep:
          $ref: '#/components/schemas/VerificationStep'
        segment:
          $ref: '#/components/schemas/Segment'
        subSegment:
          $ref: '#/components/schemas/SubSegment'
        redirectUrl:
          type: string
          description: The URL to use for redirecting a user for the given error
        locale:
          $ref: '#/components/schemas/ValidLocale'
        country:
          $ref: '#/components/schemas/ValidCountryCode'
        consolationRewardCode:
          type: string
          description: The consolation reward code
        created:
          type: integer
          format: int64
        updated:
          type: integer
          format: int64
      required:
        - verificationId
        - currentStep
        - consolationRewardCode
        - redirectUrl
    ConsumerInfoState:
      type: string
      description: The status of consumer info for RememberMe enabled programs
      enum:
        - consumerNotFound
        - consumerFoundNewFieldsAvailable
        - consumerFoundNotActionable
    OverrideResponse:
      type: object
      description: The verification was not successful, but a successful result can be achieved by providing an override
        using an override code.
      properties:
        verificationId:
          type: string
          description: >-
            The unique ID for the
            [VerificationRequest](#!/components/schemas/VerificationRequest) associated
            with this response
        currentStep:
          $ref: '#/components/schemas/VerificationStep'
        segment:
          $ref: '#/components/schemas/Segment'
        subSegment:
          $ref: '#/components/schemas/SubSegment'
        submissionUrl:
          type: string
          description: The URL to use for performing a verification override
        locale:
          $ref: '#/components/schemas/ValidLocale'
        country:
          $ref: '#/components/schemas/ValidCountryCode'
        created:
          type: integer
          format: int64
        updated:
          type: integer
          format: int64
      required:
        - verificationId
        - currentStep
        - submissionUrl
    OrganizationDetails:
      type: object
      description: Detailed organization information for a given verification. Must have a valid API token to view.
      properties:
        id:
          type: integer
          format: int64
          description: The unique identifier for the organization.
        name:
          type: string
          description: The name of the organization.
        type:
          $ref: '#/components/schemas/OrganizationType'
          description: The type of the organization.
        street:
          type: string
          description: The street of the organization.
        city:
          type: string
          description: The city of the organization.
        state:
          type: string
          description: The two character state code of the organization.
        zip:
          type: string
          description: The zip code of the organization.
        country:
          type: string
          description: The two character country code of the organization.
      required:
        - id
        - name
        - type
        - street
        - city
        - state
        - zip
        - country
    ConversionRequest:
      type: object
      description: Information about a conversion
      properties:
        amount:
          type: number
          description: The amount of the conversion
          format: double
          minimum: 0
          default: 1.0
        currency:
          type: string
          description: >-
            The ISO-4217 3-letter Alphabetic Currency Code (Default: "USD")
          default: 'USD'
        tags:
          type: array
          items:
            type: string
            description: An array of any arbitrary tags to associate with the conversion
    ConversionResponse:
      type: object
      description: The result of storing the conversion.
      properties:
        id:
          type: string
          description: The ID of the stored conversion.
    CustomMetadata:
      type: object
      description: The custom metadata configuration being used for a verification
      properties:
        enabled:
          type: boolean
          description: Whether or not collecting metadata keys is enabled
        keys:
          type: array
          items:
            type: string
            description: The list of keys to be collected, if metadata collection is enabled
      required:
        - enabled
        - keys
    DriverLicense:
      type: object
      description: A person to be verified
      properties:
        firstName:
          description: The first name of the person being verified
          type: string
        lastName:
          description: The last name of the person being verified
          type: string
        state:
          description: The 2 digit state code which issued the driver license for the person being verified
          type: string
        driverLicenseNumber:
          description: The drivers license number of an individual; non-alphanumeric characters are ignored
          type: string
        email:
          $ref: '#/components/schemas/ValidEmail'
        phoneNumber:
          $ref: '#/components/schemas/ValidPhoneNumber'
        locale:
          $ref: '#/components/schemas/ValidLocale'
        deviceFingerprintHash:
          description: The device fingerprint collected for the person being verified
          type: string
        ipAddress:
          $ref: '#/components/schemas/IPV4Address'
        ipAddressExtended:
          $ref: '#/components/schemas/IPAddress'
        externalUserId:
          description: An identifier stored with the verification for external reference
          type: string
        metadata:
          $ref: '#/components/schemas/PersonalInfoMetadata'
      required:
        - firstName
        - lastName
        - state
        - driverLicenseNumber
        - email
    GeneralIdentity:
      type: object
      description: A person to be verified
      properties:
        firstName:
          description: The first name of the person being verified
          type: string
        lastName:
          description: The last name of the person being verified
          type: string
        birthDate:
          $ref: '#/components/schemas/ValidBirthDate'
        address1:
          description: The street address for the person being verified
          type: string
        city:
          description: The city for the person being verified
          type: string
        state:
          description: The 2 digit state code of residency for the person being verified
          type: string
        postalCode:
          type: string
          description: The postal code for the person being verified.
        email:
          $ref: '#/components/schemas/ValidEmail'
        phoneNumber:
          $ref: '#/components/schemas/ValidPhoneNumber'
        locale:
          $ref: '#/components/schemas/ValidLocale'
        deviceFingerprintHash:
          description: The device fingerprint collected for the person being verified
          type: string
        ipAddress:
          $ref: '#/components/schemas/IPV4Address'
        ipAddressExtended:
          $ref: '#/components/schemas/IPAddress'
        externalUserId:
          description: An identifier stored with the verification for external reference
          type: string
        metadata:
          $ref: '#/components/schemas/PersonalInfoMetadata'
      required:
        - firstName
        - lastName
        - address1
        - city
        - state
        - postalCode
        - email
    DocumentReviewResponse:
      type: object
      description: Instant verification was not successful, so a document must be uploaded for review
      properties:
        verificationId:
          type: string
          description: >-
            The unique ID for the
            [VerificationRequest](#!/components/schemas/VerificationRequest) associated
            with this response
        currentStep:
          $ref: '#/components/schemas/VerificationStep'
        submissionUrl:
          type: string
          description: The URL to use for uploading documents
        errorIds:
          type: array
          description: The list of errors that occurred, if any
          items:
            $ref: '#/components/schemas/ErrorId'
        rejectionReasons:
          type: array
          description: The keys to be used to fetch any reasons the previous documents associated with the verificaiton were rejected
          items:
            $ref: '#/components/schemas/RejectionReason'
        maxReviewTime:
          $ref: '#/components/schemas/ReviewTime'
        estimatedReviewTime:
          $ref: '#/components/schemas/EstimatedReviewTime'
        segment:
          $ref: '#/components/schemas/Segment'
        subsegment:
          $ref: '#/components/schemas/SubSegment'
        locale:
          $ref: '#/components/schemas/ValidLocale'
        country:
          $ref: '#/components/schemas/ValidCountryCode'
        created:
          type: integer
          format: int64
        updated:
          type: integer
          format: int64
        documents:
          type: array
          description: A list of documents for which upload has been initiated but not completed.
          items:
            type: object
            properties:
              documentId:
                type: string
                description: A unique identifier of the document
              status:
                $ref: '#/components/schemas/DocumentUploadStatus'
              mimeType:
                type: string
                description: The MIME type of the file to be uploaded
              fileSize:
                type: integer
                description: The size in bytes of the file to be uploaded
                minimum: 1
                maximum: 10000000
              uploadUrl:
                type: string
                description: >-
                  The URL to use to upload the file (using PUT with a multipart/form-data request).
                  Only present if the document status is PENDING_UPLOAD.
              errors:
                type: array
                description: Any errors that were encountered
                items:
                  $ref: '#/components/schemas/DocumentUploadError'
            required:
              - documentId
              - status
              - mimeType
              - fileSize
      required:
        - verificationId
        - currentStep
        - submissionUrl
        - segment
    DocumentUploadStatus:
      type: string
      description: >-
        The status of the document.
        Possible values are:
        * PENDING: The document has not yet been uploaded
        * FINISHED: The document is in the process of being reviewed
        * ERROR: An error occurred during processing of the document
      enum:
        - PENDING
        - FINISHED
        - ERROR
    DocumentUploadError:
      type: string
      description: >-
        The type of error that was encountered. Only present if the status is ERROR.
        Possible values are:
        * ZERO_SIZE: The document is empty
        * TOO_LARGE: The document is too large (maximum file size is 10 MB)
        * UNSUPPORTED_TYPE: The document MIME type is not supported
        * UNKNOWN: An unknown error occurred
      enum:
        - ZERO_SIZE
        - TOO_LARGE
        - UNSUPPORTED_TYPE
        - UNKNOWN
    DocumentUploadRequest:
      type: object
      description: Request to upload files for document review
      properties:
        file:
          type: array
          items:
            type: string
            format: binary
      required:
        - file
    DocUploadMessages:
      type: object
      properties:
        title:
          type: string
          description: The title for the document upload step
        subtitle:
          type: string
          description: The subtitle for the document upload step
      required:
        - title
        - subtitle
        - acceptedTypes
        - submitButtonLabel
        - footer
    EligibleSchoolDomainSearch:
      type: object
      properties:
        programId:
          type: string
          description: The programId for the program the user is attempting to verify against
        schoolDomain:
          type: string
          description: The domain name associated with the school
        schoolCountry:
          type: string
          description: The two character country code where the school is located
      required:
        - programId
        - schoolCountry
        - schoolDomain
    EligibleSchoolNameSearch:
      type: object
      properties:
        programId:
          type: string
          description: The programId for the program the user is attempting to verify against
        schoolName:
          type: string
          description: The name of the school
        schoolCountry:
          type: string
          description: The two character country code where the school is located
      required:
        - programId
        - schoolCountry
        - schoolName
    EligibleSchoolSearchResult:
      type: object
      properties:
        eligible:
          type: array
          description: The list of eligible schools
          items:
            $ref: '#/components/schemas/Organization'
        ineligible:
          type: array
          description: The list of schools that are not eligible for the offer
          items:
            $ref: '#/components/schemas/Organization'
        errorIds:
          type: array
          description: List of ErrorIds describing any errors that occurred during the search
          items:
            $ref: '#/components/schemas/ErrorId'
      required:
        - eligible
        - ineligible
        - errorIds
    EmailLoopMessages:
      type: object
      description: Messages to show to the user when the emailLoop step is reached.
      additionalProperties:
        type: string
      properties:
        title:
          type: string
          description: The title of the page shown when the emailLoop step is reached.
        subtitleWithoutEmail:
          type: string
          description: A message indicating an email was sent and instructions for completing the step.
        skipEmail:
          type: string
          description: Message shown to indicate how to skip the email loop step if possible.
      required:
        - title
        - subtitleWithoutEmail
        - skipEmail
    EmailLoopResponse:
      type: object
      description: The user was sent an email message with a link that includes a token that needs to be submitted.
      properties:
        verificationId:
          type: string
          description: >-
            The unique ID for the
            [VerificationRequest](#!/components/schemas/VerificationRequest) associated
            with this response
        currentStep:
          $ref: '#/components/schemas/VerificationStep'
        errorIds:
          type: array
          description: The list of errors that occurred, if any
          items:
            $ref: '#/components/schemas/ErrorId'
        segment:
          $ref: '#/components/schemas/Segment'
        subsegment:
          $ref: '#/components/schemas/SubSegment'
        locale:
          $ref: '#/components/schemas/ValidLocale'
        country:
          $ref: '#/components/schemas/ValidCountryCode'
        created:
          type: integer
          format: int64
        updated:
          type: integer
          format: int64
        submissionUrl:
          type: string
          description: The url to use for submitting the email loop token
        cancelUrl:
          type: string
          description: The url to send a DELETE request to in order to cancel an ongoing email loop verification and move to the the docUpload step. Program must have an "Email Loop with Domain Validation" verification type to use this feature.
        canResendEmailLoop:
          type: boolean
      required:
        - verificationId
        - currentStep
        - submissionUrl
    EmailLoopToken:
      type: object
      description: A token to be used for completing an email loop verification
      properties:
        emailToken:
          description: The token provided to the subject in an email
          type: string
        deviceFingerprintHash:
          description: The device fingerprint collected for the person being verified
          type: string
      required:
        - token
    AuthenticationToken:
      type: object
      description: A token to be used for completing an authentication to use stored data in a verification
      properties:
        authenticationToken:
          description: The token provided to the subject in an email
          type: string
      required:
        - authenticationToken
    CompleteAuthenticationResponse:
      type: object
      description: The user was sent an email message with a link that includes a token that needs to be submitted.
      properties:
        verificationId:
          type: string
          description: >-
            The unique ID for the
            [VerificationRequest](#!/components/schemas/VerificationRequest) associated
            with this response
        currentStep:
          $ref: '#/components/schemas/VerificationStep'
        errorIds:
          type: array
          description: The list of errors that occurred, if any
          items:
            $ref: '#/components/schemas/ErrorId'
        segment:
          $ref: '#/components/schemas/Segment'
        subsegment:
          $ref: '#/components/schemas/SubSegment'
        locale:
          $ref: '#/components/schemas/ValidLocale'
        country:
          $ref: '#/components/schemas/ValidCountryCode'
        created:
          type: integer
          format: int64
        updated:
          type: integer
          format: int64
        submissionUrl:
          type: string
          description: The url to use for submitting the authentication token
        cancelUrl:
          type: string
          description: The url to send a DELETE request to in order to cancel an ongoing authentication verification and move to the the collectPersonalInfo step.
      required:
        - verificationId
        - currentStep
        - submissionUrl
    RememberConsumerRequest:
      type: object
      description: >-
        The consent information indicating whether the consumer has explicitly elected to opt in to have their
        PII more permanently stored.
      properties:
        rememberMeConsentValue:
          type: boolean
          default: false
        sheeridMarketingConsentValue:
          type: boolean
          default: false
          description: Indicates whether the consumer consents to marketing that originates from SheerID.
      required:
        - rememberMeConsentValue
    RememberMeCallToActionResponse:
      type: object
      description: >-
        After a verification is completed, this indicates what fields were collected during verification and whether
        there is an opportunity for the consumer to elect to have that information stored for future verifications.
      properties:
        verificationId:
          type: string
          default: false
          description:
            The unique ID for the verification.
        alreadyRemembered:
          type: boolean
          description: Indicates whether the consumer is already in our Remember Me database.
        collectedInformation:
          type: object
          description: >-
            The personal information fields that was collected from the consumer during verification.
          properties:
            collectedFields:
              type: array
              description: The list of names of the person fields that were collected from the consumer.
              items:
                type: string
            organization:
              $ref: '#/components/schemas/Organization'
      required:
        - verificationId
        - alreadyRemembered
        - collectedInformation
    RetrieveEmailLoopTokenRequest:
      type: object
      description: Body of a RetrieveEmailLoopToken request
      properties:
        refreshToken:
          description: If true, regenerate the email loop token before returning it
          default: false
          type: boolean
    RetrieveEmailLoopTokenResponse:
      type: object
      description: Body of a RetrieveEmailLoopToken response
      properties:
        token:
          description: The email loop token for the requested verification
          type: string
    ResumeEmailLoopRequest:
      type: object
      description: >-
        The request body to submit to the email loop resume call.
        The optional emailAddress property can be used to override the email address used for the email loop.
        The domain of the email address will be validated prior to sending the email message.
      properties:
        emailAddress:
          $ref: '#/components/schemas/ValidEmail'
    ResumeEmailLoopResponse:
      type: object
      description: >-
        The response returned when a call to resume a paused email loop is successful.
        The token property will be null unless the program is configured to bypass sending email messages for email loop.
      properties:
        verificationId:
          type: string
          description: >-
            The unique ID for the
            [VerificationRequest](#!/components/schemas/VerificationRequest) associated
            with this response
        currentStep:
          $ref: '#/components/schemas/VerificationStep'
        errorIds:
          type: array
          description: The list of errors that occurred, if any
          items:
            $ref: '#/components/schemas/ErrorId'
        segment:
          $ref: '#/components/schemas/Segment'
        subsegment:
          $ref: '#/components/schemas/SubSegment'
        locale:
          $ref: '#/components/schemas/ValidLocale'
        country:
          $ref: '#/components/schemas/ValidCountryCode'
        created:
          type: integer
          format: int64
        updated:
          type: integer
          format: int64
        currentState:
          $ref: '#/components/schemas/EmailLoopState'
        submissionUrl:
          type: string
          description: The url to use for submitting the email loop token
        cancelUrl:
          type: string
          description: The url to send a DELETE request to in order to cancel an ongoing email loop verification and move to the the docUpload step. Program must have an "Email Loop with Domain Validation" verification type to use this feature.
        canResendEmailLoop:
          type: boolean
        token:
          description: The email loop token for the requested verification
          type: string
      required:
        - verificationId
        - currentStep
        - submissionUrl
    Employee:
      type: object
      description: An employee to be verified
      properties:
        firstName:
          description: The first name of the person being verified
          type: string
        lastName:
          description: The last name of the person being verified
          type: string
        email:
          $ref: '#/components/schemas/ValidEmail'
        address1:
          description: The street address for the person being verified
          type: string
        city:
          description: The city for the person being verified
          type: string
        state:
          description: The 2 digit state code for the person being verified
          type: string
        postalCode:
          description: The postal code for the person being verified
          type: string
        organization:
          $ref: '#/components/schemas/Organization'
        phoneNumber:
          $ref: '#/components/schemas/ValidPhoneNumber'
        locale:
          $ref: '#/components/schemas/ValidLocale'
        country:
          $ref: '#/components/schemas/ValidCountryCode'
        deviceFingerprintHash:
          description: The device fingerprint collected for the person being verified
          type: string
        ipAddress:
          $ref: '#/components/schemas/IPV4Address'
        ipAddressExtended:
          $ref: '#/components/schemas/IPAddress'
          description: supersedes the 'ipAddress' field
        externalUserId:
          description: An identifier stored with the verification for external reference
          type: string
        email2:
          $ref: '#/components/schemas/ValidEmail'
        metadata:
          $ref: '#/components/schemas/PersonalInfoMetadata'
      required:
        - firstName
        - lastName
        - email
        - address1
        - city
        - state
        - postalCode
        - organization
    EmploymentStatus:
      type: string
      enum:
        - EMPLOYEE
    ErrorId:
      type: string
      description: The unique identifier for the error messaging to show to the end user.
      enum:
        - internalServerError
        - noProgram
        - invalidProgram
        - expiredProgram
        - inactiveProgram
        - expiredVerification
        - noVerification
        - noOrganization
        - invalidRequest
        - verificationLimitExceeded
        - apiRateLimitExceeded
        - docReviewLimitExceeded
        - noRemainingRewardCodes
        - unknownError
        - invalidApiToken
        - simulatedError
        - invalidDocUploadToken
        - notFound
        - unauthorizedAccountStatus
        - unauthorizedDomain
        - unauthorizedIpAddress
        - unauthorizedRequest
        - unauthorizedUser
        - reverificationDailyLimitExceeded
        - invalidVerificationToken
        - expiredVerificationToken
        - notApproved
        - maxSMSCodeLimitExceeded
        - fraudRulesReject
        - invalidStep
        - invalidOrganization
        - invalidFirstName
        - invalidLastName
        - invalidEmail
        - invalidPhoneNumber
        - invalidBirthDate
        - invalidAddress1
        - invalidCity
        - invalidState
        - invalidPostalCode
        - invalidMilitaryStatus
        - invalidFirstResponderStatus
        - invalidMedicalProfessionalStatus
        - invalidSocialSecurityNumber
        - invalidOverrideCode
        - underagePerson
        - outsideAgePerson
        - futureBirthDate
        - invalidDischargeDate
        - dischargeDateBeforeBirthDate
        - unsupportedDocMimeType
        - invalidFileSizeMax
        - invalidFileSizeEmpty
        - invalidNumberOfFiles
        - maxMetadataValuesExceeded
        - maxMetadataLengthExceeded
        - invalidSMSCode
        - expiredSMSCode
        - incorrectSMSCodeAttemptLimitExceeded
        - incorrectVerificationOverrideCodeAttemptLimitExceeded
        - invalidEmailLoopToken
        - expiredEmailLoopToken
    ErrorMessages:
      type: object
      description: Customized messaging for the error step
      additionalProperties:
        oneOf:
          - type: string
          - type: object
      properties:
        errorId:
          type: object
          additionalProperties:
            $ref: '#/components/schemas/ErrorIdMessages'
          description: The messages that should be shown for each ErrorId
      required:
        - errorId
    ErrorIdMessages:
      type: object
      description: Customized messaging for a given error step
      properties:
        title:
          type: string
          description: The title to use on the error page for this error ID
        buttonText:
          type: string
          description: The text to use on the call to action button on the error page, if any
      required:
        - title
        - buttonText
    ErrorDetailId:
      type: string
      description: The unique identifier for the additional error messaging to show to the end user.
      enum:
        - govIdOtherFailure
        - govIdMismatch
        - govIdRetakeBiometric
        - govIdRetakeId
        - govIdUnsupportedDoc
        - personLimit
        - troubleVerifying
        - unableToVerify
        - vpnsNotAllowed
    ErrorResponse:
      type: object
      description: A non-recoverable error occurred. Check the `systemErrorMessage` property for debugging info.
      properties:
        verificationId:
          type: string
          description: >-
            The unique ID for the
            [VerificationRequest](#!/components/schemas/VerificationRequest) associated
            with this response
        errorIds:
          type: array
          description: The list of errors that occurred
          items:
            $ref: '#/components/schemas/ErrorId'
        errorDetailId:
          type: array
          description: The detailed description of the error that occurred
          items:
            $ref: '#/components/schemas/ErrorDetailId'
        currentStep:
          $ref: '#/components/schemas/VerificationStep'
        segment:
          $ref: '#/components/schemas/Segment'
        subsegment:
          $ref: '#/components/schemas/SubSegment'
        systemErrorMessage:
          type: string
          description: A description of the error that occurred to use for debugging purposes, not meant to be shown to the end user
        redirectUrl:
          type: string
          description: The URL to use for redirecting a user for the given error
        locale:
          $ref: '#/components/schemas/ValidLocale'
        country:
          $ref: '#/components/schemas/ValidCountryCode'
        created:
          type: integer
          format: int64
        updated:
          type: integer
          format: int64
        consolationRewardCode:
          type: string
          description: >-
            If a consolation reward is available for the type of error, then the reward code will be provided here.
            Otherwise, this will be null.
      required:
        - verificationId
        - currentStep
        - errorIds
        - systemErrorMessage
        - redirectUrl
    EstimatedReviewTime:
      type: string
      description: An estimation for how long an end user can expect a review to take
      enum:
        - A_FEW_MINUTES
        - A_HALF_HOUR
        - A_FEW_HOURS
        - A_FEW_DAYS
    FileUploadDescriptor:
      type: object
      description: A description of a file to be uploaded
      properties:
        fileName:
          type: string
          description: The name of the file to be uploaded
        mimeType:
          type: string
          description: The MIME type of the file to be uploaded
        fileSize:
          type: integer
          description: The size in bytes of the file to be uploaded
          minimum: 1
          maximum: 10000000
      required:
        - fileName
        - mimeType
        - fileSize
    FirstResponder:
      type: object
      description: A first responder to be verified
      properties:
        firstName:
          description: The first name of the person being verified
          type: string
        lastName:
          description: The last name of the person being verified
          type: string
        deviceFingerprintHash:
          description: The device fingerprint collected for the person being verified
          type: string
        email:
          $ref: '#/components/schemas/ValidEmail'
        birthDate:
          $ref: '#/components/schemas/ValidBirthDate'
        status:
          deprecated: true
          $ref: '#/components/schemas/FirstResponderStatus'
        statuses:
          type: array
          description: List of first responder statuses.
          items:
            $ref: '#/components/schemas/FirstResponderStatus'
        organization:
          $ref: '#/components/schemas/Organization'
        phoneNumber:
          $ref: '#/components/schemas/ValidPhoneNumber'
        locale:
          $ref: '#/components/schemas/ValidLocale'
        ipAddress:
          $ref: '#/components/schemas/IPV4Address'
        ipAddressExtended:
          $ref: '#/components/schemas/IPAddress'
          description: supersedes the 'ipAddress' field
        externalUserId:
          description: An identifier stored with the verification for external reference
          type: string
        email2:
          $ref: '#/components/schemas/ValidEmail'
        metadata:
          $ref: '#/components/schemas/PersonalInfoMetadata'
        postalCode:
          type: string
          description: The postal code for the person being verified. Provide when open org is submitted, i.e. organization id = 0
        stateCode:
          type: string
          description: The two character state code for the person being verified. Provide when open org is submitted, i.e. organization id = 0
        country:
          type: string
          description: The two character country code for the person being verified.
      required:
        - firstName
        - lastName
        - email
        - organization
        - statuses
    FirstResponderStatus:
      type: string
      enum:
        - POLICE
        - EMT
        - FIREFIGHTER
        - SEARCH_AND_RESCUE
    Identifier:
      type: object
      description: Identifier for person to be verified
      properties:
        email:
          $ref: '#/components/schemas/ValidEmail'
      required:
        - email
    IdCheckLoopResponse:
      type: object
      description: The user must submit photos of government-issued identification.
      properties:
        verificationId:
          type: string
          description: >-
            The unique ID for the
            [VerificationRequest](#!/components/schemas/VerificationRequest) associated
            with this response
        currentStep:
          $ref: '#/components/schemas/VerificationStep'
        errorIds:
          type: array
          description: The list of errors that occurred, if any
          items:
            $ref: '#/components/schemas/ErrorId'
        segment:
          $ref: '#/components/schemas/Segment'
        subsegment:
          $ref: '#/components/schemas/SubSegment'
        locale:
          $ref: '#/components/schemas/ValidLocale'
        country:
          $ref: '#/components/schemas/ValidCountryCode'
        created:
          type: integer
          format: int64
        updated:
          type: integer
          format: int64
        uploadUrl:
          type: string
          description: The URL to which the images should be uploaded. See `/{verificationId}/step/idCheckLoop/upload`
        submissionUrl:
          type: string
          description: The URL to which a POST request must be sent after the images have been uploaded
        idCheckServiceType:
          $ref: '#/components/schemas/IdCheckServiceType'
      required:
        - verificationId
        - currentStep
        - uploadUrl
        - submissionUrl
    IdCheckServiceType:
      type: string
      description: The type of ID Check to be performed. Only `ID_CHECK` is currently avaiable.
      enum:
        - ID_CHECK
        - ID_CHECK_LIVENESS
    IdCheckUploadRequest:
      type: object
      description: Front and back images of government-issued identification
      properties:
        frontImage:
          type: string
          format: binary
          description: 'Front image (maximum size: 10 MB)'
        backImage:
          type: string
          format: binary
          description: 'Back image (maximum size: 10 MB)'
      required:
        - frontImage
        - backImage
    InactiveMilitary:
      type: object
      description: An inactive military member to be verified
      properties:
        firstName:
          description: The first name of the person being verified
          type: string
        lastName:
          description: The last name of the person being verified
          type: string
        deviceFingerprintHash:
          description: The device fingerprint collected for the person being verified
          type: string
        email:
          $ref: '#/components/schemas/ValidEmail'
        birthDate:
          $ref: '#/components/schemas/ValidBirthDate'
        organization:
          $ref: '#/components/schemas/Organization'
        phoneNumber:
          $ref: '#/components/schemas/ValidPhoneNumber'
        locale:
          $ref: '#/components/schemas/ValidLocale'
        dischargeDate:
          type: string
          format: date
          description: The date the person being verified was discharged from the military
        ipAddress:
          $ref: '#/components/schemas/IPV4Address'
        ipAddressExtended:
          $ref: '#/components/schemas/IPAddress'
          description: supersedes the 'ipAddress' field
        externalUserId:
          description: An identifier stored with the verification for external reference
          type: string
        email2:
          $ref: '#/components/schemas/ValidEmail'
        metadata:
          $ref: '#/components/schemas/PersonalInfoMetadata'
        country:
          type: string
          description: The two character country code for the person being verified.
        socialSecurityNumber:
          $ref: '#/components/schemas/ValidSocialSecurityNumber'
        address1:
          description: The street address for the person being verified
          type: string
        city:
          description: The city of the address of the person being verified
          type: string
        state:
          description: The two-digit state code of the address of the person being verified
          type: string
        postalCode:
          description: The postal code of the address of the person being verified
          type: string
      required:
        - firstName
        - lastName
        - email
        - birthDate
        - organization
        - dischargeDate
    InitiateDocumentUploadRequest:
      description: Request to upload files for document review
      type: array
      items:
        $ref: '#/components/schemas/FileUploadDescriptor'
    OverrideRequest:
      description: Request to override the verification result, forcing approval
      type: object
      properties:
        overrideCode:
          type: string
          description: A secret code, which authorizes the user to override the verification result
      required:
        - overrideCode
    Internationalization:
      type: object
      properties:
        locale:
          type: string
          description: The locale to use for internationalization
        messages:
          $ref: '#/components/schemas/ProgramMessages'
      required:
        - locale
        - messages
    IPAddress:
      type: string
      format: ipv4,ipv6
      description: >-
        The end-user's public IP address. This only needs to be provided in situations where the HTTP requests do not
        come directly from the end-user.
    IPV4Address:
      type: string
      format: ipv4
      deprecated: true
      description: >-
        The end-user's public IP address. This only needs to be provided in situations where the HTTP requests do not
        come directly from the end-user.
    LabelDetails:
      type: object
      properties:
        comment:
          type: string
          description: Commentary related to application of a label
      required:
        - comment
    LicensedProfessional:
      type: object
      description: A licensed professional to be verified
      properties:
        firstName:
          description: The first name of the person being verified
          type: string
        lastName:
          description: The last name of the person being verified
          type: string
        deviceFingerprintHash:
          description: The device fingerprint collected for the person being verified
          type: string
        email:
          $ref: '#/components/schemas/ValidEmail'
        birthDate:
          $ref: '#/components/schemas/ValidBirthDate'
        postalCode:
          type: string
          description: The postal code for the person being verified
        statuses:
          type: array
          description: List of licensed professional statuses. A single value will be interpreted as a list with one entry.
          items:
            $ref: '#/components/schemas/LicensedProfessionalStatus'
        country:
          description: The country of residence of the person being verified
          $ref: '#/components/schemas/ValidCountryCode'
        organization:
          $ref: '#/components/schemas/Organization'
        phoneNumber:
          $ref: '#/components/schemas/ValidPhoneNumber'
        locale:
          $ref: '#/components/schemas/ValidLocale'
        ipAddress:
          $ref: '#/components/schemas/IPV4Address'
        ipAddressExtended:
          $ref: '#/components/schemas/IPAddress'
          description: supersedes the 'ipAddress' field
        externalUserId:
          description: An identifier stored with the verification for external reference
          type: string
        email2:
          $ref: '#/components/schemas/ValidEmail'
        metadata:
          $ref: '#/components/schemas/PersonalInfoMetadata'
      required:
        - firstName
        - lastName
        - email
        - birthDate
        - postalCode
        - organization
        - statuses
    LicensedProfessionalStatus:
      type: string
      enum:
        - LICENSED_COSMETOLOGIST
        - LICENSED_REAL_ESTATE_AGENT
        - NUTRITION_PROFESSIONAL
        - VETERINARIAN
        - CHILD_CARE_WORKER
        - LIBRARIAN
        - INTERIOR_DESIGNER
        - ARCHITECT
        - GENERAL_CONTRACTOR
    LowIncome:
      type: object
      description: A low income person to be verified
      properties:
        firstName:
          description: The first name of the person being verified
          type: string
        lastName:
          description: The last name of the person being verified
          type: string
        postalCode:
          type: string
          description: The postal code for the person being verified
        email:
          $ref: '#/components/schemas/ValidEmail'
        birthDate:
          $ref: '#/components/schemas/ValidBirthDate'
        statuses:
          type: array
          description: List of low income statuses. A single value will be interpreted as a list with one entry.
          items:
            $ref: '#/components/schemas/LowIncomeStatus'
        address1:
          type: string
          description: The street address for the person being verified
        city:
          description: The city for the person being verified
          type: string
        state:
          description: The 2 digit state code for the person being verified
          type: string
        organization:
          $ref: '#/components/schemas/Organization'
        country:
          $ref: '#/components/schemas/ValidCountryCode'
        phoneNumber:
          $ref: '#/components/schemas/ValidPhoneNumber'
        locale:
          $ref: '#/components/schemas/ValidLocale'
        ipAddress:
          $ref: '#/components/schemas/IPV4Address'
        ipAddressExtended:
          $ref: '#/components/schemas/IPAddress'
        deviceFingerprintHash:
          description: The device fingerprint collected for the person being verified
          type: string
        ebtCardNumber:
          description: The number of an EBT card.
          type: string
        externalUserId:
          description: An identifier stored with the verification for external reference
          type: string
        metadata:
          $ref: '#/components/schemas/PersonalInfoMetadata'
      required:
        - firstName
        - lastName
        - email
        - birthDate
        - country
        - address1
        - city
        - state
        - postalCode
        - statuses
    LowIncomeStatus:
      type: string
      enum:
        - SNAP_BENEFITS
        - OTHER_GOVERNMENT_ASSISTANCE
        - COMMUNITY_ELIGIBILITY_PROVISION
    MarketConsent:
      type: object
      description: The current market consent configuration data for the program being used for a verification
      properties:
        enabled:
          type: boolean
          description: The value whether or not market consent is enabled
        required:
          type: boolean
          description: The value that makes market consent to be mandatory or not
        message:
          type: string
          description: The message to display in the verification
      required:
        - enabled
        - required
        - message
    MarketplaceSubject:
      type: object
      description: A marketplace user to be verified
      properties:
        deviceFingerprintHash:
          description: The device fingerprint collected for the person being verified
          type: string
        email:
          $ref: '#/components/schemas/ValidEmail'
        ipAddress:
          $ref: '#/components/schemas/IPV4Address'
        ipAddressExtended:
          $ref: '#/components/schemas/IPAddress'
          description: supersedes the 'ipAddress' field
        externalUserId:
          description: An identifier stored with the verification for external reference
          type: string
        email2:
          $ref: '#/components/schemas/ValidEmail'
        phoneNumber:
          $ref: '#/components/schemas/ValidPhoneNumber'
        locale:
          $ref: '#/components/schemas/ValidLocale'
        metadata:
          $ref: '#/components/schemas/PersonalInfoMetadata'
      required:
        - email
    MedicalProfessional:
      type: object
      description: A medical professional to be verified
      properties:
        firstName:
          description: The first name of the person being verified
          type: string
        lastName:
          description: The last name of the person being verified
          type: string
        deviceFingerprintHash:
          description: The device fingerprint collected for the person being verified
          type: string
        email:
          $ref: '#/components/schemas/ValidEmail'
        birthDate:
          $ref: '#/components/schemas/ValidBirthDate'
        postalCode:
          type: string
          description: The postal code for the person being verified
        status:
          deprecated: true
          $ref: '#/components/schemas/MedicalProfessionalStatus'
        statuses:
          type: array
          description: List of medical professional statuses. A single value will be interpreted as a list with one entry.
          items:
            $ref: '#/components/schemas/MedicalProfessionalStatus'
        country:
          description: The country of residence of the person being verified
          $ref: '#/components/schemas/ValidCountryCode'
        organization:
          $ref: '#/components/schemas/Organization'
        phoneNumber:
          $ref: '#/components/schemas/ValidPhoneNumber'
        memberId:
          description: The unique member ID number for the person being verified
          type: string
        locale:
          $ref: '#/components/schemas/ValidLocale'
        ipAddress:
          $ref: '#/components/schemas/IPV4Address'
        ipAddressExtended:
          $ref: '#/components/schemas/IPAddress'
          description: supersedes the 'ipAddress' field
        externalUserId:
          description: An identifier stored with the verification for external reference
          type: string
        email2:
          $ref: '#/components/schemas/ValidEmail'
        metadata:
          $ref: '#/components/schemas/PersonalInfoMetadata'
      required:
        - firstName
        - lastName
        - email
        - birthDate
        - postalCode
        - organization
        - statuses
    MedicalProfessionalStatus:
      type: string
      enum:
        - NURSE
        - DOCTOR
        - DENTIST
        - PHARMACIST
        - OTHER_HEALTH_WORKER
    Member:
      type: object
      description: A member to be verified
      properties:
        firstName:
          description: The first name of the person being verified
          type: string
        lastName:
          description: The last name of the person being verified
          type: string
        deviceFingerprintHash:
          description: The device fingerprint collected for the person being verified
          type: string
        email:
          $ref: '#/components/schemas/ValidEmail'
        birthDate:
          $ref: '#/components/schemas/ValidBirthDate'
        memberId:
          description: The unique member ID number for the person being verified
          type: string
        address1:
          description: The street address for the person being verified
          type: string
        city:
          description: The city for the person being verified
          type: string
        state:
          description: The 2 digit state code for the person being verified
          type: string
        postalCode:
          description: The postal code for the person being verified
          type: string
        country:
          $ref: '#/components/schemas/ValidCountryCode'
        organization:
          $ref: '#/components/schemas/Organization'
        phoneNumber:
          $ref: '#/components/schemas/ValidPhoneNumber'
        locale:
          $ref: '#/components/schemas/ValidLocale'
        ipAddress:
          $ref: '#/components/schemas/IPV4Address'
        ipAddressExtended:
          $ref: '#/components/schemas/IPAddress'
          description: supersedes the 'ipAddress' field
        externalUserId:
          description: An identifier stored with the verification for external reference
          type: string
        email2:
          $ref: '#/components/schemas/ValidEmail'
        metadata:
          $ref: '#/components/schemas/PersonalInfoMetadata'
      required:
        - firstName
        - lastName
        - email
        - organization
    Mover:
      type: object
      description: A mover to be verified
      properties:
        firstName:
          description: The first name of the person being verified
          type: string
        lastName:
          description: The last name of the person being verified
          type: string
        address1:
          description: The street address for the person being verified
          type: string
        postalCode:
          type: string
          description: The postal code for the person being verified
        email:
          $ref: '#/components/schemas/ValidEmail'
        birthDate:
          $ref: '#/components/schemas/ValidBirthDate'
        deviceFingerprintHash:
          description: The device fingerprint collected for the person being verified
          type: string
        statuses:
          type: array
          description: List of mover statuses. A single value will be interpreted as a list with one entry.
          items:
            $ref: '#/components/schemas/MoverStatus'
        country:
          $ref: '#/components/schemas/ValidCountryCode'
        phoneNumber:
          $ref: '#/components/schemas/ValidPhoneNumber'
        locale:
          $ref: '#/components/schemas/ValidLocale'
        ipAddress:
          $ref: '#/components/schemas/IPV4Address'
        ipAddressExtended:
          $ref: '#/components/schemas/IPAddress'
        externalUserId:
          description: An identifier stored with the verification for external reference
          type: string
        metadata:
          $ref: '#/components/schemas/PersonalInfoMetadata'
      required:
        - firstName
        - lastName
        - email
        - address1
        - postalCode
        - statuses
    MoverStatus:
      type: string
      enum:
        - HOME_BUYER
        - OTHER_MOVER
    MilitaryStatus:
      type: string
      enum:
        - ACTIVE_DUTY
        - VETERAN
        - RESERVIST
        - MILITARY_RETIREE
        - MILITARY_FAMILY
        - GOLD_STAR_FAMILY
    MilitaryStatusRequest:
      type: object
      description: The military status for a military member being verified
      properties:
        status:
          $ref: '#/components/schemas/MilitaryStatus'
      required:
        - status
    NewAgeVerificationResponse:
      type: object
      allOf:
        - $ref: '#/components/schemas/NewVerificationResponse'
      description: >-
        A representation of a new verification that provides the segment being verified, a list of available statuses
        for the program, and the URL to submit data to
      properties:
        minAge:
          type: integer
          description: The minimum age of the subject in order to be verified.
        maxAge:
          type: integer
          description: The maximum age of the subject in order to be verified.
      required:
        - verificationId
        - currentStep
        - submissionUrl
        - minAge
        - maxAge
    NewCollectIdentifierResponse:
      type: object
      allOf:
        - $ref: '#/components/schemas/NewVerificationResponse'
      description: >-
        A representation of a new verification that provides the segment being verified, a list of available statuses
        for the program, and the URL to submit data to
      properties:
        identifierField:
          type: object
          properties:
            key:
              type: string
          description: The identifier field for verification
      required:
        - verificationId
        - currentStep
        - submissionUrl
        - identifierField
    NewEmploymentVerificationResponse:
      type: object
      allOf:
        - $ref: '#/components/schemas/NewVerificationResponse'
      description: >-
        A representation of a new verification that provides the segment being verified, a list of available statuses
        for the program, and the URL to submit data to
      properties:
        availableStatuses:
          type: array
          description: The list of statuses that are available for selection by the program
          items:
            $ref: '#/components/schemas/EmploymentStatus'
      required:
        - verificationId
        - currentStep
        - submissionUrl
        - availableStatuses
    NewFirstResponderVerificationResponse:
      type: object
      allOf:
        - $ref: '#/components/schemas/NewVerificationResponse'
      description: >-
        A representation of a new verification that provides the segment being verified, a list of available statuses
        for the program, and the URL to submit data to
      properties:
        availableStatuses:
          type: array
          description: The list of statuses that are available for selection by the program
          items:
            $ref: '#/components/schemas/FirstResponderStatus'
      required:
        - verificationId
        - currentStep
        - submissionUrl
        - availableStatuses
    NewMarketplaceVerificationRequest:
      type: object
      description: The program ID, tracking ID, and subject to track for a marketplace verification
      properties:
        programId:
          type: string
          description: The program ID to use for the verification
        trackingId:
          type: string
          description: An program-scope unique ID specified by the consumer
        subject:
          $ref: '#/components/schemas/MarketplaceSubject'
      required:
        - programId
        - trackingId
        - subject
    NewMarketplaceVerificationResponse:
      type: object
      allOf:
        - $ref: '#/components/schemas/NewVerificationResponse'
      description: >-
        A representation of a new verification that provides the segment being verified, a list of available statuses
        for the program, and the URL to submit data to
      properties:
        verificationToken:
          type: string
          description: The verification token that can be used to verify the user
      required:
        - verificationId
        - currentStep
        - submissionUrl
        - verificationToken
    NewMedicalProfessionalVerificationResponse:
      type: object
      allOf:
        - $ref: '#/components/schemas/NewVerificationResponse'
      description: >-
        A representation of a new verification that provides the segment being verified, a list of available statuses
        for the program, and the URL to submit data to
      properties:
        availableStatuses:
          type: array
          description: The list of statuses that are available for selection by the program
          items:
            $ref: '#/components/schemas/MedicalProfessionalStatus'
      required:
        - verificationId
        - currentStep
        - submissionUrl
        - availableStatuses
    NewMilitaryVerificationResponse:
      type: object
      allOf:
        - $ref: '#/components/schemas/NewVerificationResponse'
      description: >-
        A representation of a new verification that provides the segment being verified, a list of available statuses
        for the program, and the URL to submit data to
      properties:
        availableStatuses:
          type: array
          description: The list of statuses that are available for selection by the program
          items:
            $ref: '#/components/schemas/MilitaryStatus'
      required:
        - verificationId
        - currentStep
        - submissionUrl
        - availableStatuses
    NewVerificationRequest:
      type: object
      description: The program ID to use for the verification
      properties:
        programId:
          type: string
          description: The program ID to use for the verification
        trackingId:
          type: string
          description: An optional ID specified by the consumer to support conversion tracking
        installPageUrl:
          type: string
          description: The URL for the page installing the verification form
        locale:
          $ref: '#/components/schemas/ValidLocale'
        metadata:
          $ref: '#/components/schemas/PersonalInfoMetadata'
      required:
        - programId
    NewVerificationResponse:
      type: object
      description: A representation of a new verification that provides the segment being verified and the URL to submit data to
      properties:
        verificationId:
          type: string
          description: The unique identifier for the ongoing verification
        currentStep:
          $ref: '#/components/schemas/VerificationStep'
        submissionUrl:
          type: string
          description: The url to use for submitting person data
        errorIds:
          type: array
          description: The list of errors that occurred, if any
          items:
            $ref: '#/components/schemas/ErrorId'
        segment:
          $ref: '#/components/schemas/Segment'
        subsegment:
          $ref: '#/components/schemas/SubSegment'
        locale:
          $ref: '#/components/schemas/ValidLocale'
        country:
          $ref: '#/components/schemas/ValidCountryCode'
        created:
          type: integer
          format: int64
        updated:
          type: integer
          format: int64
      required:
        - verificationId
        - currentStep
        - submissionUrl
    OfferType:
      type: string
      description: The type of reward/offer
      enum:
        - staticCode
        - autogenCode
        - noCode
        - rewardPool
      default: autogenCode
    Organization:
      type: object
      description: An organization that can be used for instant verification of various segments (Student, Teacher, Military, etc.)
      properties:
        name:
          type: string
          description: The name of the organization
        id:
          type: integer
          format: int64
          description: >-
            The unique identifier for the organization.
            This will be ignored if idExtended is specified.
        idExtended:
          type: string
          description: >-
            The unique identifier for the Organization within the Organization service.
        source:
          type: string
          description: >-
            The service containing information about the Organization.
            This should be omitted when SheerID is the Organization service.
          $ref: '#/components/schemas/OrganizationRemoteSource'
      required:
        - id
        - name
    OrganizationRemoteSource:
      type: string
      description: An identifier used for disambiguating the service which is providing the organization information.
      enum:
        - EMPLOYER
        - PLACE
    OrganizationType:
      type: string
      enum:
        - UNIVERSITY
        - POST_SECONDARY
        - MEMBERSHIP
        - MILITARY
        - FIRST_RESPONDER
        - MEDICAL
        - NON_PROFIT
        - CORPORATE
        - K12
        - AGE_ID
        - HIGH_SCHOOL
        - NONE
    PendingMessages:
      type: object
      description: Messages to be shown when the verification reaches the pending step.
      additionalProperties:
        type: string
      properties:
        titleCountdown:
          type: string
          description: The title to show when showing the countdown timer for a user awaiting document review.
        titleReview:
          type: string
          description: The title to show when the user is awaiting document and the countdown timer has lapsed.
        subtitleCountdown:
          type: string
          description: The subtitle to show when showing the countdown timer for a user awaiting document review.
        turnaroundTime:
          type: string
          description: The subtitle to show when the user is awaiting document and the countdown timer has lapsed.
        subtitle2:
          type: string
          description: Messages indicating what the user can do while the document is being reviewed.
      required:
        - titleCountdown
        - titleReview
        - subtitleCountdown
        - turnaroundTime
        - subtitle2
    PendingResponse:
      type: object
      description: The verification is undergoing an asynchronous process (e.g. document review). A polling URL is provided to get the current status.
      properties:
        verificationId:
          type: string
          description: >-
            The unique ID for the
            [VerificationRequest](#!/components/schemas/VerificationRequest) associated
            with this response
        statusUrl:
          type: string
          description: The url to poll to determine the result of the document review
        awaitingStep:
          deprecated: true
          description: This field is deprecated, instead find the awaiting step in the 'lastResponse' field
          oneOf:
            - $ref: '#/components/schemas/VerificationStep'
        maxReviewTime:
          $ref: '#/components/schemas/ReviewTime'
        estimatedReviewTime:
          $ref: '#/components/schemas/EstimatedReviewTime'
        currentStep:
          $ref: '#/components/schemas/VerificationStep'
        errorIds:
          type: array
          description: The list of errors that occurred, if any
          items:
            $ref: '#/components/schemas/ErrorId'
        segment:
          $ref: '#/components/schemas/Segment'
        subsegment:
          $ref: '#/components/schemas/SubSegment'
        locale:
          $ref: '#/components/schemas/ValidLocale'
        country:
          $ref: '#/components/schemas/ValidCountryCode'
        created:
          type: integer
          format: int64
        updated:
          type: integer
          format: int64
        lastResponse:
          $ref: '#/components/schemas/VerificationResponse'
      required:
        - verificationId
        - currentStep
        - statusUrl
    PersonalInfoMessages:
      type: object
      properties:
        title:
          type: string
          description: The title for the collect personal information step
        subtitle:
          type: string
          description: The subtitle for the collect personal information step
        submitButtonText:
          type: string
          description: The text shown on the submit button for the collect person info step.
      required:
        - title
        - subtitle
        - submitButtonText
    PersonalInfoMetadata:
      type: object
      additionalProperties:
        type: string
        maxLength: 10000
      maxProperties: 20
      description: A collection of custom metadata to be stored with the verification
    PossibleStepsResponse:
      type: object
      description: The possible steps for a program
      properties:
        steps:
          type: array
          items:
            $ref: '#/components/schemas/VerificationStep'
      required:
        - steps
    ProgramConfig:
      type: object
      description: The current configuration data for a program.
    ProgramMessages:
      type: object
      properties:
        companyName:
          type: string
          description: The company name associated with the program. This is a dynamic value (changes per program)
        lowRewardPool:
          type: string
          description: The message to show when there are not many rewards available for the program
        optIn:
          type: string
          default: The message shown when the marketing opt-in checkbox is presented
        step:
          $ref: '#/components/schemas/StepMessages'
        errorId:
          type: object
          additionalProperties:
            type: string
          description: The messages that should be shown for each ErrorId
      required:
        - companyName
        - lowRewardPool
        - optIn
        - step
        - errorId
    ProgramTheme:
      type: object
      description: Any messaging or CSS that was configured in the self service tool for the program being used for verification
      properties:
        intl:
          $ref: '#/components/schemas/Internationalization'
        customCss:
          type: string
          description: Custom CSS to use when rendering the verification form
        themeChoices:
          $ref: "#/components/schemas/ThemeChoices"
        logoUrl:
          type: string
          description: Deprecated, use the logoUrl in the [ThemeChoices](#!/components/schemas/ThemeChoices) URL of the logo associated with this program.
          deprecated: true
        privacyPolicyUrl:
          type: string
          description: The URL to use for the privacy policy.
        isTestMode:
          type: boolean
          description: Whether or not the program is in test mode
        openOrgSearchEnabled:
          type: boolean
          description: Flag indicating whether the end-user can supply an unknown org when attempting to verify.
        isSmsNotifierConfigured:
          type: boolean
          description: Flag indicating whether this program has an SMS Notifier configured.
        smsLoopEnabled:
          type: boolean
          description: Flag indicating whether this program requires SMS loop where phoneNumber is required.
        docUploadEnabled:
          type: boolean
          description: Flag indicating whether this program may perform the doc upload step.
        emailLoopEnabled:
          type: boolean
          description: Flag indicating whether this program may perform the email loop step.
        ssoEnabled:
          type: boolean
          description: Flag indicating whether this program may perform the SSO step.
        overrideEnabled:
          type: boolean
          description: Flag indicating whether this program may perform the override step.
        threatMetrixEnabled:
          type: boolean
          description: Flag indicating whether this program is configured to use ThreatMetrix for additional fraud detection.
        ipqsDeviceFingerprintEnabled:
          type: boolean
          description: Flag indicating whether this program is configured to use IPQS Device Fingerprint for additional fraud detection.
        strictMilitaryValidationEnabled:
          type: boolean
          description: Flag indicating whether this program uses strict military validation criteria.
        affinityProgramEnabled:
          type: boolean
          description: If true, successful verifications from this program may be shown offers from Affinity program partners
        remainingRewardCodes:
          type: integer
          description: The number of remaining reward codes for the program. Will be null if this should not be shown to the user.
        externalUserIdRequired:
          type: boolean
          description: If true, externalUserId is required for all verifications on this program.
        config:
          $ref: '#/components/schemas/ProgramVerificationConfig'
      required:
        - intl
        - customCss
        - logoUrl
        - privacyPolicyUrl
        - isTestMode
        - config
        - smsLoopEnabled
        - docUploadEnabled
        - emailLoopEnabled
        - ssoEnabled
        - overrideEnabled
        - remainingRewardCodes
    ProgramVerificationConfig:
      type: object
      description: The current configuration data for the program being used for a verification
      properties:
        countries:
          type: array
          description: The list of countries that have been enabled for this program
          items:
            type: string
            description: A country that has been configured as acceptable for the program
        locales:
          type: array
          description: The list of available locales that have been configured for this program
          items:
            type: string
            description: A locale (e.g. 'en-US')
        maxReviewTime:
          $ref: '#/components/schemas/ReviewTime'
        estimatedReviewTime:
          $ref: '#/components/schemas/EstimatedReviewTime'
        marketConsent:
          $ref: '#/components/schemas/MarketConsent'
        customMetadata:
          $ref: '#/components/schemas/CustomMetadata'
        customFaqLink:
          type: string
          description: Location for faq link
        orgRemoteSource:
          description: Remote source for organization
          $ref: '#/components/schemas/OrganizationRemoteSource'
        orgSearchUrl:
          type: string
          description: The URL to use for finding organizations for verification
        orgTypes:
          type: array
          description: A list of eligible organization types for the program
          items:
            $ref: '#/components/schemas/OrganizationType'
        orgSearchCountryTags:
          type: object
          description: A map of country codes to the org search tags that should be applied when searching for organizations.
          additionalProperties:
            type: array
            description: The organization search tags to apply for a given country.
            items:
              type: string
        orgSearchAffiliationOverrides:
          type: object
          description: A map of Affiliations to key value pairs of query parameters to replace in the orgSearchUrl.
        rewardDisplay:
          type: array
          description: An list of of ways that reward should be displayed.
          items:
            type: string
            enum:
              - TEXT
              - QR
              - ITF
              - UPC_A
              - CODE_128
              - PDF417
        excludedOrganizationIds:
          type: array
          description: A list of organization IDs that have been exluded from the program
          items:
            type: integer
            format: int64
        brandInfo:
          $ref: '#/components/schemas/BrandInfo'
        segment:
          $ref: '#/components/schemas/Segment'
        offerType:
          $ref: '#/components/schemas/OfferType'
        maxAge:
          type: integer
          description: The maximum age allowed for a user to submit a verification. Will be null if no maximum is set.
        minAge:
          type: integer
          description: The minimum age allowed for a user to submit a verification. Will be null if no minimum is set.
        onfidoReportNames:
          type: array
          items:
            type: string
          description: The report names to support within onfido.
        onfidoIncludedCountries:
          type: array
          items:
            type: string
          description: The countries to support within onfido.
        customProgramData:
          type: object
          additionalProperties:
            type: string
          description: Custom program data needed for the implementation.
      required:
        - countries
        - locales
        - maxReviewTime
        - estimatedReviewTime
        - marketConsent
        - customMetadata
        - customFaqLink
        - orgSearchUrl
        - orgTypes
        - excludedOrganizationIds
        - brandInfo
        - offerType
    ThemeChoices:
      type: object
      description: The theme choices for the entity.
      properties:
        logoUrl:
          type: string
          format: uri
          description: The URL for the logo to present.
        font:
          type: string
          description: The font to use.
        backgroundColor:
          $ref: "#/components/schemas/HexColor"
        primaryFontColor:
          $ref: "#/components/schemas/HexColor"
        buttonColor:
          $ref: "#/components/schemas/HexColor"
        buttonFontColor:
          $ref: "#/components/schemas/HexColor"
        linkColor:
          $ref: "#/components/schemas/HexColor"
        h1FontColor:
          $ref: "#/components/schemas/HexColor"
        helperFontColor:
          $ref: "#/components/schemas/HexColor"
        customCss:
          type: string
          description: Custom raw CSS stylesheet to apply.
        landingPage:
          $ref: "#/components/schemas/LandingPageTheme"
    HexColor:
      type: string
      description: A hex representation of a color
      pattern: "^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$"
    LandingPageTheme:
      type: object
      description: Theme choices for the landing page.
      properties:
        logoUrl:
          type: string
          format: uri
          description: The URL for the logo to present on the landing page.
        backgroundImageUrl:
          type: string
          format: uri
          description: The URL for the background to present on the landing page.
        backgroundColor:
          $ref: "#/components/schemas/HexColor"
        primaryFontColor:
          $ref: "#/components/schemas/HexColor"
        layout:
          $ref: "#/components/schemas/LandingPageLayout"
    LandingPageLayout:
      type: string
      enum:
        - center
        - splitRight
        - fullRight
    RejectionReason:
      type: string
      enum:
        - CUSTOM_VALUE_OTHER
        - DOCUMENT_DATE_OTHER
        - DOCUMENT_EMAIL_SCREENSHOT
        - DOCUMENT_EXPIRED
        - DOCUMENT_LIKELY_FRAUD
        - DOCUMENT_PASSWORD_PROTECTED
        - DOCUMENT_STATUS_OTHER
        - DOCUMENT_TOO_FUTURE
        - DOCUMENT_UNSUPPORTED
        - DOCUMENT_UNREADABLE
        - DOCUMENT_VALID_OTHER
        - INELIGIBLE_JOB_TITLE
        - INSUFFICIENT_CUSTOM_VALUE
        - INSUFFICIENT_DOCUMENT_DATE
        - INSUFFICIENT_STATUS
        - MISMATCH_BIRTHDATE
        - MISMATCH_CUSTOM_VALUE
        - MISMATCH_PERSON_FIRST_NAME
        - MISMATCH_PERSON_LAST_NAME
        - MISMATCH_ORGANIZATION_COUNTRY
        - MISMATCH_ORGANIZATION_NAME
        - MISMATCH_STATUS
        - MISSING_CUSTOM_VALUE
        - MISSING_DOCUMENT_DATE
        - MISSING_INFORMATION_BIRTHDATE
        - MISSING_INFORMATION_ORGANIZATION_NAME
        - MISSING_PERSON_FIRST_NAME
        - MISSING_PERSON_LAST_NAME
        - ORGANIZATION_NAME_OTHER
        - OUT_OF_RANGE_BIRTHDATE
        - PERSON_BIRTHDATE_OTHER
        - PERSON_FIRST_NAME_OTHER
        - PERSON_LAST_NAME_OTHER
        - DOCUMENT_HANDWRITTEN
        - DOCUMENT_OUTDATED
        - DOCUMENT_OUTDATED_FACULTY
        - INELIGIBLE_ORGANIZATION
        - INELIGIBLE_PERSON_HIGH_SCHOOL_STUDENT
        - MISSING_INFORMATION
        - MISSING_INFORMATION_AFFILIATION_US_ARMED_FORCES
        - MISSING_INFORMATION_PERSON_NAME
        - MISSING_INFORMATION_UNIVERSITY_ENROLLMENT
        - MISSING_OR_MISMATCH_JOB_TITLE
        - MISMATCH_COMPANY_NAME_OR_ADDRESS
        - MISMATCH_PERSON_NAME
        - MISMATCH_ORGANIZATION
        - OTHER_CONTACT_US
        - PAYSTUB_OUTDATED_LAST_30_DAYS
        - MISSING_EBT_CARD_NUMBER
        - MISMATCH_EBT_CARD_NUMBER
        - INSUFFICIENT_EBT_CARD_NUMBER
        - EBT_CARD_NUMBER_OTHER
        - RESTRICTED_DOCUMENT
        - VIRUS_DETECTED

    ReportStatus:
      type: string
      enum:
        - PENDING
        - COMPLETE
        - ERROR
        - DELETED
    ReportStatusResponse:
      type: object
      properties:
        id:
          type: string
        status:
          $ref: '#/components/schemas/ReportStatus'
        statusUrl:
          type: string
          format: uri
        retrievalUrl:
          type: string
          format: uri
        requester:
          type: string
        created:
          type: integer
          format: int64
    ReviewTime:
      type: string
      description: The maximum amount of time a review can take
      enum:
        - 2_MIN
        - 20_MIN
        - 2_HRS
        - 24_HRS
        - 2_DAY
        - 3_DAY
    Segment:
      type: string
      description: The market segment being verified
      enum:
        - student
        - teacher
        - military
        - senior
        - age
        - firstResponder
        - medical
        - employment
        - marketplace
        - member
        - licensedProfessional
        - recentMover
        - other
        - lowIncome
        - identity
    Senior:
      type: object
      description: A senior to be verified
      properties:
        firstName:
          description: The first name of the person being verified
          type: string
        lastName:
          description: The last name of the person being verified
          type: string
        deviceFingerprintHash:
          description: The device fingerprint collected for the person being verified
          type: string
        email:
          $ref: '#/components/schemas/ValidEmail'
        birthDate:
          $ref: '#/components/schemas/ValidBirthDate'
        phoneNumber:
          $ref: '#/components/schemas/ValidPhoneNumber'
        locale:
          $ref: '#/components/schemas/ValidLocale'
        postalCode:
          type: string
          description: The postal code for the person being verified
        ipAddress:
          $ref: '#/components/schemas/IPV4Address'
        ipAddressExtended:
          $ref: '#/components/schemas/IPAddress'
          description: supersedes the 'ipAddress' field
        externalUserId:
          description: An identifier stored with the verification for external reference
          type: string
        email2:
          $ref: '#/components/schemas/ValidEmail'
        metadata:
          $ref: '#/components/schemas/PersonalInfoMetadata'
      required:
        - firstName
        - lastName
        - email
        - birthDate
        - postalCode
    SMSCode:
      type: object
      description: The SMS code that was sent to the user.
      properties:
        smsCode:
          type: string
          description: The SMS code that was sent to the user.
        deviceFingerprintHash:
          description: The device fingerprint collected for the person being verified
          type: string
      required:
        - smsCode
    SMSLoopResponse:
      type: object
      description: The user was sent an SMS message with a verification code that must be provided.
      properties:
        verificationId:
          type: string
          description: >-
            The unique ID for the
            [VerificationRequest](#!/components/schemas/VerificationRequest) associated
            with this response
        retryUrl:
          type: string
          description: The url to hit if a new SMS code should be generated and sent to the person being verified.
        submissionUrl:
          type: string
          description: The url to use for submitting the SMS loop token
        currentStep:
          $ref: '#/components/schemas/VerificationStep'
        errorIds:
          type: array
          description: The list of errors that occurred, if any
          items:
            $ref: '#/components/schemas/ErrorId'
        segment:
          $ref: '#/components/schemas/Segment'
        subsegment:
          $ref: '#/components/schemas/SubSegment'
        locale:
          $ref: '#/components/schemas/ValidLocale'
        country:
          $ref: '#/components/schemas/ValidCountryCode'
        created:
          type: integer
          format: int64
        updated:
          type: integer
          format: int64
      required:
        - verificationId
        - currentStep
        - retryUrl
        - submissionUrl
    Age:
      type: object
      description: A person to be age-verified
      properties:
        firstName:
          description: The first name of the person being verified.
          type: string
        lastName:
          description: The last name of the person being verified.
          type: string
        email:
          $ref: '#/components/schemas/ValidEmail'
        birthDate:
          $ref: '#/components/schemas/ValidBirthDate'
        phoneNumber:
          allOf:
            - $ref: '#/components/schemas/ValidPhoneNumber'
          description: The phone number of the person being verified. Required for instant verification.
        postalCode:
          type: string
          description: The postal code of the person being verified. Required for instant verification.
        city:
          description: The city of the person being verified.
          type: string
        address1:
          description: The home street address of the person being verified. Required for instant verification.
          type: string
        country:
          allOf:
            - $ref: '#/components/schemas/ValidCountryCode'
          description: The country code of the person being verified. Required for instant verification.
        deviceFingerprintHash:
          description: The device fingerprint collected for the person being verified
          type: string
        locale:
          $ref: '#/components/schemas/ValidLocale'
        ipAddress:
          $ref: '#/components/schemas/IPV4Address'
        ipAddressExtended:
          $ref: '#/components/schemas/IPAddress'
          description: supersedes the 'ipAddress' field
        externalUserId:
          description: An identifier stored with the verification for external reference
          type: string
        email2:
          $ref: '#/components/schemas/ValidEmail'
        metadata:
          $ref: '#/components/schemas/PersonalInfoMetadata'
        marketConsent:
          description: Whenever the market consent is accepted
          type: boolean
      required:
        - firstName
        - lastName
        - email
        - birthDate
        - phoneNumber
    SsoResponse:
      type: object
      description: The user can visit an SSO login portal at the provided login url.
      properties:
        verificationId:
          type: string
          description: >-
            The unique ID for the
            [VerificationRequest](#!/components/schemas/VerificationRequest) associated
            with this response
        loginUrl:
          type: string
          description: The url to send the user to in order to perform an SSO login to verify.
        cancelUrl:
          type: string
          description: The url to send a DELETE request to in order to cancel an ongoing SSO login attempt.
        currentStep:
          $ref: '#/components/schemas/VerificationStep'
        errorIds:
          type: array
          description: The list of errors that occurred, if any
          items:
            $ref: '#/components/schemas/ErrorId'
        segment:
          $ref: '#/components/schemas/Segment'
        subsegment:
          $ref: '#/components/schemas/SubSegment'
        locale:
          $ref: '#/components/schemas/ValidLocale'
        country:
          $ref: '#/components/schemas/ValidCountryCode'
        created:
          type: integer
          format: int64
        updated:
          type: integer
          format: int64
      required:
        - verificationId
        - currentStep
        - loginUrl
        - cancelUrl
    StepMessages:
      type: object
      properties:
        personalInfo:
          $ref: '#/components/schemas/PersonalInfoMessages'
        docUpload:
          $ref: '#/components/schemas/DocUploadMessages'
        success:
          $ref: '#/components/schemas/SuccessMessages'
        pending:
          $ref: '#/components/schemas/PendingMessages'
        consolation:
          $ref: '#/components/schemas/ConsolationMessages'
        emailLoop:
          $ref: '#/components/schemas/EmailLoopMessages'
        sso:
          $ref: '#/components/schemas/SsoMessages'
        error:
          $ref: '#/components/schemas/ErrorMessages'
        collectIdentifier:
          $ref: '#/components/schemas/CollectIdentifierMessages'
        completeAuthentication:
          $ref: '#/components/schemas/CompleteAuthenticationMessages'
        override:
          $ref: '#/components/schemas/OverrideMessages'
      required:
        - personalInfo
        - docUpload
        - success
        - pending
        - sso
        - consolation
        - error
        - collectIdentifier
        - completeAuthentication
        - override
    GenericVerificationSubject:
      type: object
      description: A person to be verified
      properties:
        firstName:
          description: The first name of the person being verified
          type: string
        lastName:
          description: The last name of the person being verified
          type: string
        address1:
          description: The home street address of the person being verified. Required for instant verification.
          type: string
        city:
          description: The city of the person being verified.
          type: string
        state:
          type: string
          description: The two character state code of the organization.
        stateCode:
          type: string
          description: The two character state code for the person being verified. Provide when open org is submitted, i.e. organization id = 0
        deviceFingerprintHash:
          description: The device fingerprint collected for the person being verified
          type: string
        dischargeDate:
          type: string
          format: date
          description: The date the person being verified was discharged from the military
        driverLicenseNumber:
          description: The drivers license number of an individual; non-alphanumeric characters are ignored
          type: string
        activeDutyStartDate:
          type: string
          format: date
          description: The date the person being verified started active duty in the military
        country:
          allOf:
            - $ref: '#/components/schemas/ValidCountryCode'
          description: The country code of the person being verified. Required for instant verification.
        memberId:
          description: The unique member ID number for the person being verified
          type: string
        verificationToken:
          description: The verification token that can be used to verify the user
          type: string
        postalCode:
          type: string
          description: The postal code for the person being verified
        trackingId:
          type: string
          description: The tracking ID that was assigned to this verification
        ebtCardNumber:
          description: The number of an EBT card.
          type: string
        statuses:
          type: array
          description: List of available statuses.
          items:
            anyOf:
              - $ref: '#/components/schemas/FirstResponderStatus'
              - $ref: '#/components/schemas/MedicalProfessionalStatus'
              - $ref: '#/components/schemas/LowIncomeStatus'
              - $ref: '#/components/schemas/LicensedProfessionalStatus'
              - $ref: '#/components/schemas/EmploymentStatus'
              - $ref: '#/components/schemas/MilitaryStatus'
              - $ref: '#/components/schemas/MoverStatus'
        email:
          $ref: '#/components/schemas/ValidEmail'
        birthDate:
          $ref: '#/components/schemas/ValidBirthDate'
        organization:
          $ref: '#/components/schemas/Organization'
        ipAddress:
          $ref: '#/components/schemas/IPV4Address'
        ipAddressExtended:
          $ref: '#/components/schemas/IPAddress'
          description: supersedes the 'ipAddress' field
        externalUserId:
          description: An identifier stored with the verification for external reference
          type: string
        phoneNumber:
          $ref: '#/components/schemas/ValidPhoneNumber'
        socialSecurityNumber:
          $ref: '#/components/schemas/ValidSocialSecurityNumber'
        locale:
          $ref: '#/components/schemas/ValidLocale'
        metadata:
          $ref: '#/components/schemas/PersonalInfoMetadata'
    SsoMessages:
      type: object
      description: Messages for the SSO step
      properties:
        title:
          type: string
          description: The title on the page when the SSO step is reached.
        subtitle:
          type: string
          description: The substitle on the page when the SSO step is reached.
        login:
          type: string
          description: The button text prompting the user to login.
      required:
        - title
        - subtitle
        - login
    Student:
      type: object
      description: A student to be verified
      properties:
        firstName:
          description: The first name of the person being verified
          type: string
        lastName:
          description: The last name of the person being verified
          type: string
        deviceFingerprintHash:
          description: The device fingerprint collected for the person being verified
          type: string
        email:
          $ref: '#/components/schemas/ValidEmail'
        birthDate:
          $ref: '#/components/schemas/ValidBirthDate'
        organization:
          $ref: '#/components/schemas/Organization'
        ipAddress:
          $ref: '#/components/schemas/IPV4Address'
        ipAddressExtended:
          $ref: '#/components/schemas/IPAddress'
          description: supersedes the 'ipAddress' field
        externalUserId:
          description: An identifier stored with the verification for external reference
          type: string
        email2:
          $ref: '#/components/schemas/ValidEmail'
        cvecNumber:
          $ref: '#/components/schemas/ValidCvecNumber'
        phoneNumber:
          $ref: '#/components/schemas/ValidPhoneNumber'
        locale:
          $ref: '#/components/schemas/ValidLocale'
        metadata:
          $ref: '#/components/schemas/PersonalInfoMetadata'
      required:
        - firstName
        - lastName
        - email
        - birthDate
        - organization
    SubSegment:
      type: string
      description: The subsegment being verified
      enum:
        - activeDuty
        - veteran
        - retiree
        - reservist
        - militaryFamily
        - goldStarFamily
        - police
        - fireFighter
        - searchAndRescue
        - emt
        - employee
        - homeBuyer
        - otherMover
        - facultyHighSchool
        - facultyUniversity
        - facultyPostSecondary
        - facultyK12
        - fullAndPartTimeUniversity
        - collegeBound
        - highSchool
        - postSecondary
        - nurse
        - doctor
        - otherHealthWorker
        - dentist
        - pharmacist
        - generalContractor
        - snapBenefits
        - otherGovernmentAssistance
        - communityEligibilityProvision
        - architect
        - interiorDesigner
        - librarian
        - childCareWorker
        - veterinarian
        - licensedRealEstateAgent
        - licensedCosmetologist
    SuccessMessages:
      type: object
      additionalProperties:
        type: string
        nullable: true
      properties:
        title:
          type: string
          description: The title for the success step
        subtitle:
          type: string
          description: The subtitle for the success step
        redirectUrl:
          type: string
          deprecated: true
          nullable: true
          description: Deprecated. Use the redirectUrl property of the [SuccessResponse](#!/components/schemas/SuccessResponse) instead
        redirectButtonText:
          type: string
          description: The text to show on the redirect button if a redirect URL was configured
        emailNotification:
          type: string
          description: The text to indicate to the user they should check their email for the reward code
      required:
        - title
        - subtitle
        - redirectButtonText
        - redirectUrl
        - emailNotification
    SuccessResponse:
      type: object
      description: A successful verification, providing the reward codes to provide to the verified user
      properties:
        verificationId:
          type: string
          description: >-
            The unique ID for the
            [VerificationRequest](#!/components/schemas/VerificationRequest) associated
            with this response
        rewardCode:
          type: string
          description: The reward code to present to the verified user
          deprecated: true
        rewardData:
          type: object
          additionalProperties:
            type: string
            maxLength: 10000
          maxProperties: 20
          description: A collection of all reward codes and values stored in the verification.
        redirectUrl:
          type: string
          description: The URL to use for redirecting the verified user once a reward has been given.
          nullable: true
        currentStep:
          $ref: '#/components/schemas/VerificationStep'
        errorIds:
          type: array
          description: The list of errors that occurred, if any
          items:
            $ref: '#/components/schemas/ErrorId'
        segment:
          $ref: '#/components/schemas/Segment'
        subSegment:
          $ref: '#/components/schemas/SubSegment'
        locale:
          $ref: '#/components/schemas/ValidLocale'
        country:
          $ref: '#/components/schemas/ValidCountryCode'
        created:
          type: integer
          format: int64
        updated:
          type: integer
          format: int64
        consumerInfoState:
          $ref: '#/components/schemas/ConsumerInfoState'
      required:
        - verificationId
        - rewardCode
        - currentStep
        - redirectUrl
    SystemErrorMessage:
      type: object
      description: An error that occurred with no verification context
      properties:
        systemErrorMessage:
          type: string
          description: The error that occurred
        errorIds:
          type: array
          items:
            $ref: '#/components/schemas/ErrorId'
          nullable: true
      required:
        - systemErrorMessage
    Teacher:
      type: object
      description: A teacher to be verified
      properties:
        firstName:
          description: The first name of the person being verified
          type: string
        lastName:
          description: The last name of the person being verified
          type: string
        deviceFingerprintHash:
          description: The device fingerprint collected for the person being verified
          type: string
        email:
          $ref: '#/components/schemas/ValidEmail'
        organization:
          $ref: '#/components/schemas/Organization'
        phoneNumber:
          $ref: '#/components/schemas/ValidPhoneNumber'
        birthDate:
          $ref: '#/components/schemas/ValidBirthDate'
        locale:
          $ref: '#/components/schemas/ValidLocale'
        postalCode:
          type: string
          description: The postal code for the person being verified. Provide when open org is submitted, i.e. organization id = 0
        ipAddress:
          $ref: '#/components/schemas/IPV4Address'
        ipAddressExtended:
          $ref: '#/components/schemas/IPAddress'
          description: supersedes the 'ipAddress' field
        externalUserId:
          description: An identifier stored with the verification for external reference
          type: string
        email2:
          $ref: '#/components/schemas/ValidEmail'
        metadata:
          $ref: '#/components/schemas/PersonalInfoMetadata'
      required:
        - firstName
        - lastName
        - email
        - organization
    ValidBirthDate:
      description: The date of birth of the person being verified (format YYYY-MM-DD). Date must be greater than `1900-01-01`.
      type: string
      format: date
    SocialSecurityNumberRequest:
      type: object
      description: A social security number to be verified
      properties:
        socialSecurityNumber:
          $ref: '#/components/schemas/ValidSocialSecurityNumber'
      required:
        - socialSecurityNumber
    CancellableResponse:
      type: object
      description: >-
        A step in the verification flow that can be canceled. When canceled, the server will respond with a different step to try, such as docReview.
      properties:
        verificationId:
          type: string
          description: The unique identifier for the ongoing verification
        currentStep:
          $ref: '#/components/schemas/VerificationStep'
        submissionUrl:
          type: string
          description: The url to use for submitting person data
        errorIds:
          type: array
          description: The list of errors that occurred, if any
          items:
            $ref: '#/components/schemas/ErrorId'
        segment:
          $ref: '#/components/schemas/Segment'
        subsegment:
          $ref: '#/components/schemas/SubSegment'
        locale:
          $ref: '#/components/schemas/ValidLocale'
        country:
          $ref: '#/components/schemas/ValidCountryCode'
        created:
          type: integer
          format: int64
        updated:
          type: integer
          format: int64
        cancelUrl:
          type: string
          description: The url to send a DELETE request to.
      required:
        - verificationId
        - currentStep
        - submissionUrl
        - cancelUrl
    ValidSocialSecurityNumber:
      type: number
      description: The social security number of the person to be verified
      pattern: '^[0-9]{9}$'
    ValidEmail:
      description: The email address of the person being verified
      type: string
      pattern: '(^\s*?[A-Za-z0-9!#$%&''*+\/=?^_`{|}~-]+(\.[A-Za-z0-9!#$%&''*+\/=?^_`{|}~-]+)*@([A-Za-z0-9!#$%&''*+\/=?^_`{|}~-]+(\.[A-Za-z0-9!#$%&''*+\/=?^_`{|}~-]+)+|\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])\s*?$)'
    ValidCountry:
      description: The country code of the person being verified
      type: string
      pattern: '^[A-Z]{2}$'
    ValidPhoneNumber:
      description: The phone number used for SMS messages
      type: string
      pattern: '\+?0*\d{10,}(x[0-9]{0,5})?'
    ValidCountryCode:
      description: The country code of the person being verified
      type: string
      pattern: '^[A-Z]{2}$'
    ValidLocale:
      description: The locale chosen by the user
      type: string
      pattern: '^[a-z]{2}-[A-Z]{2}$'
    ValidCvecNumber:
      description: The unique CVEC number for the person being verified
      type: string
      pattern: '^[a-zA-Z0-9]{12}$'
    VerificationDetails:
      type: object
      description: Detailed information about a given verification. Must have a valid API token to view.
      properties:
        created:
          type: integer
          format: int64
          description: The date that the verification was created
        updated:
          type: integer
          format: int64
          description: The date that the verification was updated
        programId:
          type: string
          description: The program ID that was used to create this verification
        trackingId:
          type: string
          description: The tracking ID that was assigned to this verification
        personId:
          type: string
          description: The person ID that was assigned to the person for this verification
        socialId:
          type: string
          description: The unique identifier that can be used to track social sharing of an offer
        lastResponse:
          $ref: '#/components/schemas/VerificationResponse'
        personInfo:
          $ref: '#/components/schemas/VerificationSubject'
        docUploadRejectionCount:
          type: number
          description: The number of times this verification had rejected document reviews
        docUploadRejectionReasons:
          type: array
          description: A list of all batches of rejection reasons in the order batches of documents were uploaded
          items:
            type: array
            items:
              $ref: '#/components/schemas/RejectionReason'
        confirmedSegments:
          type: array
          description: A list of all affiliations associated with this request
          items:
            $ref: '#/components/schemas/ConfirmedSegment'
        approvingVerificationTypes:
          type: array
          description: A list of all verification types that contributed to the final approved outcome.
          items:
            $ref: '#/components/schemas/ExternalVerificationType'
        verificationMethod:
          $ref: "#/components/schemas/VerificationMethod"
      required:
        - created
        - updated
        - programId
        - socialId
        - lastResponse
        - personInfo
        - docUploadRejectionCount
        - docUploadRejectionReasons
        - confirmedSubSegments
        - verificationMethod
    VerificationLimitRequest:
      type: object
      properties:
        quantity:
          type: integer
          description: The number of verifications to allow in a given time period
        days:
          type: integer
          description: The number of days the verification limit should be enacted
      required:
        - quantity
        - days
    VerificationReportRequest:
      type: object
      properties:
        format:
          type: string
          enum:
            - CSV
        startDate:
          type: string
          format: date-time
        endDate:
          type: string
          format: date-time
        isPiiIncluded:
          type: boolean
          description: 'Optional toggle for whether or not to include PII in report. User must have appropriate permissions to request PII. If this field is omitted, PII details will only be returned if requesting user has appropriate permissions.'
        piiReason:
          type: string
          description: 'Reason for requesting PII in the report. Required if isPiiIncluded=true.'
        verificationModeInclusion:
          $ref: "#/components/schemas/VerificationModeInclusion"
        programIds:
          type: array
          description: "Optional list of program ids belonging to the User's account. If provided, the report will only
            include verifications associated with the program ids requested."
          items:
            type: string
        countryCodes:
          type: array
          description: "Optional list of country codes. If provided, the report will only include verifications
            from the countries requested."
          items:
            type: string
        rewardEligibilities:
          type: array
          description: "Optional list of eligibility states. If provided, the report will only include verifications
            that resulted in those states requested."
          items:
            $ref: '#/components/schemas/RewardEligibility'
        communities:
          type: array
          description: "Optional list of affiliation types. If provided, the report will only include verifications
            of the affiliation types requested."
          items:
            $ref: "#/components/schemas/Community"
        metadataRowFilters:
          type: array
          description: >-
            Optional list of metadata key/value pairs. If provided, the report will only include verifications with
            metadata that contains all of the specified key/value pairs.
            See [List Report Fields](#operation/listReportFields) to retrieve a list of available metadata
            keys.
          items:
            $ref: "#/components/schemas/RowFilter"
        standardFields:
          description: >-
            The list of standard field names to include in the report.
            See [List Report Fields](#operation/listReportFields) to retrieve a list of available fields.
          type: array
          items:
            type: string
        personFields:
          description: >-
            The list of person data field names to include in the report.
            See [List Report Fields](#operation/listReportFields) to retrieve a list of available fields.
          type: array
          items:
            type: string
        metadataFields:
          type: array
          description: >-
            The list of metadata field names to include in the report.
            See [List Report Fields](#operation/listReportFields) to retrieve a list of available fields.
          items:
            type: string
      required:
        - format
    RewardEligibility:
      type: string
      enum:
        - ELIGIBLE
        - INELIGIBLE
    Community:
      type: string
      enum:
        - "Military"
        - "Education"
        - "Student"
        - "Teacher / Faculty"
        - "Employment"
        - "EMT"
        - "Firefighter"
        - "Police"
        - "First Responder"
        - "Member"
        - "Business"
        - "Non Profit"
        - "Nurse"
        - "Doctor"
        - "Dentist"
        - "Pharmacist"
        - "Other Healthcare"
        - "Medical"
        - "Age"
        - "Cosmetologist"
        - "Real Estate Agent"
        - "Identity"
        - "Veterinarian"
        - "Child Care Worker"
        - "Recent Mover"
        - "Low Income"
        - "Other"
    VerificationModeInclusion:
      description: Which verification modes to include in the verification report.
      type: string
      enum:
        - ALL
        - LIVE
        - TEST
      default: LIVE

    VerificationResponse:
      type: object
      description: The result of a verification step
      oneOf:
        - $ref: '#/components/schemas/SuccessResponse'
        - $ref: '#/components/schemas/NewVerificationResponse'
        - $ref: '#/components/schemas/NewAgeVerificationResponse'
        - $ref: '#/components/schemas/NewMilitaryVerificationResponse'
        - $ref: '#/components/schemas/NewFirstResponderVerificationResponse'
        - $ref: '#/components/schemas/NewMedicalProfessionalVerificationResponse'
        - $ref: '#/components/schemas/NewEmploymentVerificationResponse'
        - $ref: '#/components/schemas/NewMarketplaceVerificationResponse'
        - $ref: '#/components/schemas/DocumentReviewResponse'
        - $ref: '#/components/schemas/PendingResponse'
        - $ref: '#/components/schemas/ErrorResponse'
        - $ref: '#/components/schemas/SsoResponse'
        - $ref: '#/components/schemas/SMSLoopResponse'
        - $ref: '#/components/schemas/CancellableResponse'
        - $ref: '#/components/schemas/EmailLoopResponse'
        - $ref: '#/components/schemas/IdCheckLoopResponse'
        - $ref: '#/components/schemas/ConsolationResponse'
        - $ref: '#/components/schemas/OverrideResponse'
        - $ref: '#/components/schemas/NewCollectIdentifierResponse'
        - $ref: '#/components/schemas/CompleteAuthenticationResponse'
    VerificationStep:
      type: string
      enum:
        - collectStudentPersonalInfo
        - collectActiveMilitaryPersonalInfo
        - collectInactiveMilitaryPersonalInfo
        - collectTeacherPersonalInfo
        - collectSeniorPersonalInfo
        - collectAgePersonalInfo
        - collectFirstResponderPersonalInfo
        - collectMedicalProfessionalPersonalInfo
        - collectEmployeePersonalInfo
        - collectLicensedProfessionalInfo
        - collectMoverPersonalInfo
        - collectLowIncomePersonalInfo
        - collectMilitaryStatus
        - collectMarketplaceToken
        - collectSocialSecurityNumber
        - collectIdentifier
        - completeAuthentication
        - docUpload
        - sso
        - success
        - error
        - pending
        - emailLoop
        - idCheckLoop
        - smsLoop
        - consolation
        - override
    VerificationSubject:
      type: object
      description: A subject being verified
      oneOf:
        - $ref: '#/components/schemas/Student'
        - $ref: '#/components/schemas/Teacher'
        - $ref: '#/components/schemas/ActiveMilitary'
        - $ref: '#/components/schemas/InactiveMilitary'
        - $ref: '#/components/schemas/Senior'
        - $ref: '#/components/schemas/Age'
        - $ref: '#/components/schemas/FirstResponder'
        - $ref: '#/components/schemas/MedicalProfessional'
        - $ref: '#/components/schemas/Employee'
        - $ref: '#/components/schemas/MarketplaceSubject'
        - $ref: '#/components/schemas/VerificationToken'
        - $ref: '#/components/schemas/LicensedProfessional'
        - $ref: '#/components/schemas/Mover'
        - $ref: '#/components/schemas/LowIncome'
    VerificationToken:
      type: object
      description: A verification token used to complete a marketplace verification
      properties:
        verificationToken:
          description: The verification token that can be used to verify the user
          type: string
      required:
        - verificationToken
    WebhookRequest:
      type: object
      properties:
        callbackUri:
          type: string
          description: The URI to POST to on verification events
      required:
        - callbackUri
    ReportFieldSet:
      type: object
      properties:
        scope:
          type: string
          description: >-
            The scope to which the set of fields belong.
            Possible values are:
            * STANDARD - The base fields available to all reports.
            * PII - The fields containing personally identifiable information that are available to the user's account.
            * METADATA - The default and custom metadata fields available to the user's account and programs.
          enum:
            - STANDARD
            - PII
            - METADATA
        fields:
          type: array
          description: A list of field objects with each of their the names as they appear in reports and descriptions.
          items:
            $ref: '#/components/schemas/ReportField'
      required:
        - scope
        - fields
    ReportField:
      type: object
      properties:
        name:
          description: The name used to identify the report field
          type: string
        columnHeading:
          description: The column heading of the field as it will appear in generated reports
          type: string
        description:
          description: Explanation of the field's meaning and usage
          type: string
      required:
        - columnHeading
    RowFilter:
      type: object
      properties:
        field:
          type: string
        value:
          type: string
    EmailLoopState:
      type: string
      enum:
        - collectOrganizationEmail
        - pending
    SendLinkRequest:
      type: object
      properties:
        phoneNumber:
          $ref: '#/components/schemas/ValidPhoneNumber'
        externalUserId:
          description: An identifier stored with the verification for external reference
          type: string
      required:
        - phoneNumber
    VerificationSearchRequest:
      type: object
      properties:
        search:
          $ref: '#/components/schemas/VerificationSearch'
        filter:
          $ref: '#/components/schemas/VerificationSearchFilter'
    VerificationSearchByExternalUserIdResponse:
      type: object
      properties:
        verifications:
          type: array
          items:
            $ref: '#/components/schemas/VerificationRequestStatus'
        nextPageToken:
          type: string
          description: Page token for next page of results
      required: [verifications]
    VerificationRequestStatus:
      type: object
      properties:
        verificationId:
          type: string
          description: Verification id
        programId:
          type: string
          description: Program id of the verification
        created:
          type: string
          format: date
          description: Verification creation date
        updated:
          type: string
          format: date
          description: Verification update date
        status:
          type: string
          description: Verification status
        result:
          type: string
          description: Verification result
      required: [verificationId, status, created, updated]
    VerificationSearchByExternalUserIdRequest:
      type: object
      properties:
        externalUserId:
          type: string
          description: External user id
        createdAfter:
          type: string
          format: date
          description: Limit to verifications created after this date
        limit:
          type: integer
          description: Maximum number of results to return
        nextPageToken:
          type: string
          description: Starting id of next page of results
      required: [externalUserId]
    VerificationSearch:
      type: object
      properties:
        email:
          $ref: '#/components/schemas/ValidEmail'
        name:
          type: object
          properties:
            first:
              type: string
            last:
              type: string
        externalUserId:
          description: An identifier stored with the verification for external reference
          type: string
        phoneNumber:
          $ref: '#/components/schemas/ValidPhoneNumber'
        verificationId:
          type: string
    VerificationSearchFilter:
      type: object
      properties:
        programId:
          type: string
        steps:
          type: array
          items:
            $ref: '#/components/schemas/VerificationStep'
          uniqueItems: true
        created:
          type: object
          description: The date that the verification was created.
          properties:
            gte:
              type: integer
              format: int64
              description: Filter based on dates greater than or equal to this value. Defaults to 2 years in the past.
            lte:
              type: integer
              format: int64
              description: Filter based on dates less than or equal to this value. Defaults to the present.
    VerificationSearchResponse:
      type: object
      properties:
        results:
          type: array
          items:
            $ref: '#/components/schemas/VerificationResponse'
    FraudReportRequest:
      type: object
      description: The necessary data to report one or more verifications as fraudulent
      properties:
        verificationIds:
          type: array
          description: The verificationIds to be reported as fraud
          items:
            type: string
      required:
        - verificationIds
  responses:
    400BadRequest:
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/SystemErrorMessage"
      description: >-
        Bad request - one or more required fields were not supplied, or were
        improperly formatted
    401Unauthorized:
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/SystemErrorMessage"
      description: >-
        Unauthorized. The user is nor permitted to perform this action.
    404NotFound:
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/SystemErrorMessage"
      description: >-
        Not Found. The requested entity was not found.
    500Internal:
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/SystemErrorMessage"
      description: Internal server error.
  examples:
    activeMilitaryCollectInfo:
      value:
        verificationId: '111111111111111111111111'
        currentStep: collectActiveMilitaryPersonalInfo
        errorIds: [ ]
        segment: military
        subSegment: activeDuty
        locale: en-US
        country: null
        submissionUrl: /rest/v2/verification/111111111111111111111111/collectActiveMilitaryPersonalInfo
        instantMatchAttempts: 0
    activeMilitaryCollectInfoInvalid:
      value:
        verificationId: '111111111111111111111111'
        currentStep: collectActiveMilitaryPersonalInfo
        submissionUrl: /rest/v2/verification/111111111111111111111111/collectActiveMilitaryPersonalInfo
        errorIds: [ 'invalidBirthDate' ]
        segment: military
        subSegment: activeDuty
        locale: en-US
    activeMilitaryWithProgramCollectInfoInvalid:
      value:
        verificationId: '111111111111111111111111'
        currentStep: collectActiveMilitaryPersonalInfo
        submissionUrl: /rest/v2/verification/111111111111111111111111/collectActiveMilitaryPersonalInfo
        errorIds: [ 'invalidBirthDate' ]
        segment: military
        subSegment: null
        locale: en-US
    activeMilitaryDocumentRejected:
      value:
        verificationId: '111111111111111111111111'
        currentStep: docUpload
        errorIds: [ ]
        segment: military
        subSegment: activeDuty
        locale: en-US
        submissionUrl: /rest/v2/verification/111111111111111111111111/step/docUpload
        rejectionReasons: [ 'MISMATCH_PERSON_LAST_NAME', 'DOCUMENT_EXPIRED' ]
    activeMilitaryWithProgramDocumentRejected:
      value:
        verificationId: '111111111111111111111111'
        currentStep: docUpload
        errorIds: [ ]
        segment: military
        subSegment: null
        locale: en-US
        submissionUrl: /rest/v2/verification/111111111111111111111111/step/docUpload
        rejectionReasons: [ 'MISMATCH_PERSON_LAST_NAME', 'DOCUMENT_EXPIRED' ]
    activeMilitaryDocumentUpload:
      value:
        verificationId: '111111111111111111111111'
        currentStep: docUpload
        errorIds: [ ]
        segment: military
        subSegment: activeDuty
        locale: en-US
        submissionUrl: /rest/v2/verification/111111111111111111111111/step/docUpload
        rejectionReasons: [ ]
    activeMilitaryWithProgramDocumentUpload:
      value:
        verificationId: '111111111111111111111111'
        currentStep: docUpload
        errorIds: [ ]
        segment: military
        subSegment: null
        locale: en-US
        submissionUrl: /rest/v2/verification/111111111111111111111111/step/docUpload
        rejectionReasons: [ ]
    activeMilitarySuccess:
      value:
        verificationId: '111111111111111111111111'
        currentStep: success
        errorIds: [ ]
        segment: military
        subSegment: activeDuty
        locale: en-US
        country: US
        rewardCode: EXAMPLE-CODE
        redirectUrl: null
        rewardData:
          rewardCode: EXAMPLE-CODE
    activeMilitaryWithProgramSuccess:
      value:
        verificationId: '111111111111111111111111'
        currentStep: success
        errorIds: [ ]
        segment: military
        subSegment: activeDuty
        locale: en-US
        country: US
        rewardCode: EXAMPLE-CODE
        redirectUrl: null
        rewardData:
          rewardCode: EXAMPLE-CODE
    activeMilitaryVerificationLimitError:
      value:
        verificationId: '111111111111111111111111'
        currentStep: error
        errorIds: [ 'verificationLimitExceeded' ]
        systemErrorMessage: User has exceeded the maximum number of verifications
        segment: military
        subSegment: activeDuty
        locale: en-US
    activeMilitaryWithProgramVerificationLimitError:
      value:
        verificationId: '111111111111111111111111'
        currentStep: error
        errorIds: [ 'verificationLimitExceeded' ]
        systemErrorMessage: User has exceeded the maximum number of verifications
        segment: military
        subSegment: null
        locale: en-US
    ageCollectInfoInvalid:
      value:
        verificationId: '111111111111111111111111'
        currentStep: collectAgePersonalInfo
        submissionUrl: /rest/v2/verification/111111111111111111111111/collectAgePersonalInfo
        errorIds: [ 'invalidEmail' ]
        segment: age
        subSegment: null
        locale: en-US
    ageDocumentRejected:
      value:
        verificationId: '111111111111111111111111'
        currentStep: docUpload
        errorIds: [ ]
        segment: age
        subSegment: null
        locale: en-US
        submissionUrl: /rest/v2/verification/111111111111111111111111/step/docUpload
        rejectionReasons: [ 'MISMATCH_PERSON_LAST_NAME', 'DOCUMENT_EXPIRED' ]
    ageDocumentUpload:
      value:
        verificationId: '111111111111111111111111'
        currentStep: docUpload
        errorIds: [ ]
        segment: age
        subSegment: null
        locale: en-US
        submissionUrl: /rest/v2/verification/111111111111111111111111/step/docUpload
        rejectionReasons: [ ]
    ageSuccess:
      value:
        verificationId: '111111111111111111111111'
        currentStep: success
        errorIds: [ ]
        segment: age
        subSegment: null
        locale: en-US
        country: US
        rewardCode: EXAMPLE-CODE
        redirectUrl: null
        rewardData:
          rewardCode: EXAMPLE-CODE
    ageVerificationLimitError:
      value:
        verificationId: '111111111111111111111111'
        currentStep: error
        errorIds: [ 'verificationLimitExceeded' ]
        systemErrorMessage: User has exceeded the maximum number of verifications
        segment: age
        subSegment: null
        locale: en-US
    completeAuthentication:
      value:
        verificationId: '111111111111111111111111'
        currentStep: completeAuthentication
        submissionUrl: /rest/v2/verification/111111111111111111111111/completeAuthentication
        errorIds: [ ]
        segment: military
        subSegment: null
        locale: en-US
    collectPersonalInfo:
      value:
        verificationId: '111111111111111111111111'
        currentStep: collectPersonalInfo
        submissionUrl: /rest/v2/verification/111111111111111111111111/collectPersonalInfo
        errorIds: [ ]
        segment: student
        subSegment: null
        locale: en-US
    consolation:
      value:
        verificationId: '111111111111111111111111'
        currentStep: consolation
        segment: student
        subSegment: null
        locale: en-US
        consolationRewardCode: 'EXAMPLE_CONSOLATION_REWARD'
    override:
      value:
        verificationId: '111111111111111111111111'
        currentStep: override
        segment: student
        subSegment: null
        locale: en-US
        submissionUrl: /rest/v2/verification/111111111111111111111111/step/resultOverride
    docReviewLimitExceededError:
      value:
        verificationId: '111111111111111111111111'
        currentStep: error
        errorIds: [ 'docReviewLimitExceeded' ]
        systemErrorMessage: User has exceeded the maximum number of document reviews
        segment: student
        subSegment: null
        locale: en-US
    docUpload:
      value:
        verificationId: '111111111111111111111111'
        currentStep: docUpload
        rejectionReasons: [ 'DOCUMENT_EXPIRED' ]
        submissionUrl: /rest/v2/verification/111111111111111111111111/docUpload
        errorIds: [ ]
        segment: student
        subSegment: null
        locale: en-US
    driverLicenseSuccess:
      value:
        verificationId: '111111111111111111111111'
        currentStep: success
        errorIds: [ ]
        segment: identity
        subSegment: driverLicense
        locale: en-US
        country: US
        rewardCode: EXAMPLE-CODE
        redirectUrl: null
        rewardData:
          rewardCode: EXAMPLE-CODE
    driverLicenseCollectInfoInvalid:
      value:
        verificationId: '111111111111111111111111'
        currentStep: collectDriverLicensePersonalInfo
        submissionUrl: /rest/v2/verification/111111111111111111111111/collectDriverLicensePersonalInfo
        errorIds: [ 'invalidEmail' ]
        segment: identity
        subSegment: driverLicense
        locale: en-US
    driverLicenseDocumentRejected:
      value:
        verificationId: '111111111111111111111111'
        currentStep: docUpload
        errorIds: [ ]
        segment: identity
        subSegment: driverLicense
        locale: en-US
        submissionUrl: /rest/v2/verification/111111111111111111111111/step/docUpload
        rejectionReasons: [ 'MISMATCH_PERSON_LAST_NAME', 'DOCUMENT_EXPIRED' ]
    driverLicenseDocumentUpload:
      value:
        verificationId: '111111111111111111111111'
        currentStep: docUpload
        errorIds: [ ]
        segment: identity
        subSegment: driverLicense
        locale: en-US
        submissionUrl: /rest/v2/verification/111111111111111111111111/step/docUpload
        rejectionReasons: [ ]
    driverLicenseVerificationLimitError:
      value:
        verificationId: '111111111111111111111111'
        currentStep: error
        errorIds: [ 'verificationLimitExceeded' ]
        systemErrorMessage: User has exceeded the maximum number of verifications
        segment: identity
        subSegment: driverLicense
        locale: en-US
    generalIdentitySuccess:
      value:
        verificationId: '111111111111111111111111'
        currentStep: success
        errorIds: [ ]
        segment: identity
        subSegment: generalIdentity
        locale: en-US
        country: null
        rewardCode: EXAMPLE-CODE
        redirectUrl: null
        rewardData:
          rewardCode: EXAMPLE-CODE
    generalIdentityCollectInfoInvalid:
      value:
        verificationId: '111111111111111111111111'
        currentStep: collectDriverLicensePersonalInfo
        submissionUrl: /rest/v2/verification/111111111111111111111111/collectGeneralIdentityPersonalInfo
        errorIds: [ 'invalidEmail' ]
        segment: identity
        subSegment: generalIdentity
        locale: en-US
    generalIdentityDocumentRejected:
      value:
        verificationId: '111111111111111111111111'
        currentStep: docUpload
        errorIds: [ ]
        segment: identity
        subSegment: generalIdentity
        locale: en-US
        submissionUrl: /rest/v2/verification/111111111111111111111111/step/docUpload
        rejectionReasons: [ 'MISMATCH_PERSON_LAST_NAME', 'DOCUMENT_EXPIRED' ]
    generalIdentityDocumentUpload:
      value:
        verificationId: '111111111111111111111111'
        currentStep: docUpload
        errorIds: [ ]
        segment: identity
        subSegment: generalIdentity
        locale: en-US
        submissionUrl: /rest/v2/verification/111111111111111111111111/step/docUpload
        rejectionReasons: [ ]
    generalIdentityVerificationLimitError:
      value:
        verificationId: '111111111111111111111111'
        currentStep: error
        errorIds: [ 'verificationLimitExceeded' ]
        systemErrorMessage: User has exceeded the maximum number of verifications
        segment: identity
        subSegment: generalIdentity
        locale: en-US
    employeeCollectInfoInvalid:
      value:
        verificationId: '111111111111111111111111'
        currentStep: collectEmployeePersonalInfo
        submissionUrl: /rest/v2/verification/111111111111111111111111/collectEmployeePersonalInfo
        errorIds: [ 'invalidEmail' ]
        segment: employment
        subSegment: employee
        locale: en-US
    employeeDocumentRejected:
      value:
        verificationId: '111111111111111111111111'
        currentStep: docUpload
        errorIds: [ ]
        segment: employment
        subSegment: employee
        locale: en-US
        submissionUrl: /rest/v2/verification/111111111111111111111111/step/docUpload
        rejectionReasons: [ 'MISMATCH_PERSON_LAST_NAME', 'DOCUMENT_EXPIRED' ]
    employeeDocumentUpload:
      value:
        verificationId: '111111111111111111111111'
        currentStep: docUpload
        errorIds: [ ]
        segment: employment
        subSegment: employee
        locale: en-US
        submissionUrl: /rest/v2/verification/111111111111111111111111/step/docUpload
        rejectionReasons: [ ]
    employeeSuccess:
      value:
        verificationId: '111111111111111111111111'
        currentStep: success
        errorIds: [ ]
        segment: employment
        subSegment: employee
        locale: en-US
        country: US
        rewardCode: EXAMPLE-CODE
        redirectUrl: null
        rewardData:
          rewardCode: EXAMPLE-CODE
    employeeVerificationLimitError:
      value:
        verificationId: '111111111111111111111111'
        currentStep: error
        errorIds: [ 'verificationLimitExceeded' ]
        systemErrorMessage: User has exceeded the maximum number of verifications
        segment: employment
        subSegment: employee
        locale: en-US
    errorExpiredVerification:
      value:
        verificationId: '111111111111111111111111'
        currentStep: error
        errorIds: [ 'expiredVerification' ]
        systemErrorMessage: Verification with ID '111111111111111111111111' is expired
        segment: null
        subSegment: null
        locale: en-US
    errorNoRemainingRewardCodes:
      value:
        verificationId: null
        currentStep: error
        errorIds: [ 'noRemainingRewardCodes' ]
        systemErrorMessage: No reward codes remaining for program with ID '222222222222222222222222'
        segment: null
        subSegment: null
        locale: en-US
    errorVerificationNotFound:
      value:
        verificationId: null
        currentStep: error
        errorIds: [ 'noVerification' ]
        systemErrorMessage: Verification with ID '111111111111111111111111' not found
        segment: null
        subSegment: null
        locale: en-US
    firstResponderCollectInfoInvalid:
      value:
        verificationId: '111111111111111111111111'
        currentStep: collectFirstResponderPersonalInfo
        submissionUrl: /rest/v2/verification/111111111111111111111111/collectFirstResponderPersonalInfo
        errorIds: [ 'invalidEmail' ]
        availableStatuses: [ 'POLICE', 'EMT', 'FIREFIGHTER', 'SEARCH_AND_RESCUE' ]
        segment: firstResponder
        subSegment: police
        locale: en-US
    firstResponderDocumentRejected:
      value:
        verificationId: '111111111111111111111111'
        currentStep: docUpload
        errorIds: [ ]
        segment: firstResponder
        subSegment: police
        locale: en-US
        submissionUrl: /rest/v2/verification/111111111111111111111111/step/docUpload
        rejectionReasons: [ 'MISMATCH_PERSON_LAST_NAME', 'DOCUMENT_EXPIRED' ]
    firstResponderDocumentUpload:
      value:
        verificationId: '111111111111111111111111'
        currentStep: docUpload
        errorIds: [ ]
        segment: firstResponder
        subSegment: police
        locale: en-US
        submissionUrl: /rest/v2/verification/111111111111111111111111/step/docUpload
        rejectionReasons: [ ]
    firstResponderSuccess:
      value:
        verificationId: '111111111111111111111111'
        currentStep: success
        errorIds: [ ]
        segment: firstResponder
        subSegment: police
        locale: en-US
        country: US
        rewardCode: EXAMPLE-CODE
        redirectUrl: null
        rewardData:
          rewardCode: EXAMPLE-CODE
    firstResponderVerificationLimitError:
      value:
        verificationId: '111111111111111111111111'
        currentStep: error
        errorIds: [ 'verificationLimitExceeded' ]
        systemErrorMessage: User has exceeded the maximum number of verifications
        segment: firstResponder
        subSegment: police
        locale: en-US
    inactiveMilitaryCollectInfoInvalid:
      value:
        verificationId: '111111111111111111111111'
        currentStep: collectInactiveMilitaryPersonalInfo
        submissionUrl: /rest/v2/verification/111111111111111111111111/collectInactiveMilitaryPersonalInfo
        errorIds: [ 'invalidBirthDate' ]
        segment: military
        subSegment: veteran
        locale: en-US
    inactiveMilitaryWithProgramCollectInfoInvalid:
      value:
        verificationId: '111111111111111111111111'
        currentStep: collectInactiveMilitaryPersonalInfo
        submissionUrl: /rest/v2/verification/111111111111111111111111/collectInactiveMilitaryPersonalInfo
        errorIds: [ 'invalidBirthDate' ]
        segment: military
        subSegment: null
        locale: en-US
    inactiveMilitaryDocumentRejected:
      value:
        verificationId: '111111111111111111111111'
        currentStep: docUpload
        errorIds: [ ]
        segment: military
        subSegment: veteran
        locale: en-US
        submissionUrl: /rest/v2/verification/111111111111111111111111/step/docUpload
        rejectionReasons: [ 'MISMATCH_PERSON_LAST_NAME', 'DOCUMENT_EXPIRED' ]
    inactiveMilitaryWithProgramDocumentRejected:
      value:
        verificationId: '111111111111111111111111'
        currentStep: docUpload
        errorIds: [ ]
        segment: military
        subSegment: null
        locale: en-US
        submissionUrl: /rest/v2/verification/111111111111111111111111/step/docUpload
        rejectionReasons: [ 'MISMATCH_PERSON_LAST_NAME', 'DOCUMENT_EXPIRED' ]
    inactiveMilitaryDocumentUpload:
      value:
        verificationId: '111111111111111111111111'
        currentStep: docUpload
        errorIds: [ ]
        segment: military
        subSegment: veteran
        locale: en-US
        submissionUrl: /rest/v2/verification/111111111111111111111111/step/docUpload
        rejectionReasons: [ ]
    inactiveMilitaryWithProgramDocumentUpload:
      value:
        verificationId: '111111111111111111111111'
        currentStep: docUpload
        errorIds: [ ]
        segment: military
        subSegment: null
        locale: en-US
        submissionUrl: /rest/v2/verification/111111111111111111111111/step/docUpload
        rejectionReasons: [ ]
    inactiveMilitarySuccess:
      value:
        verificationId: '111111111111111111111111'
        currentStep: success
        errorIds: [ ]
        segment: military
        subSegment: veteran
        locale: en-US
        country: US
        rewardCode: EXAMPLE-CODE
        redirectUrl: null
        rewardData:
          rewardCode: EXAMPLE-CODE
    inactiveMilitaryWithProgramSuccess:
      value:
        verificationId: '111111111111111111111111'
        currentStep: success
        errorIds: [ ]
        segment: military
        subSegment: veteran
        locale: en-US
        country: US
        rewardCode: EXAMPLE-CODE
        redirectUrl: null
        rewardData:
          rewardCode: EXAMPLE-CODE
    inactiveMilitaryVerificationLimitError:
      value:
        verificationId: '111111111111111111111111'
        currentStep: error
        errorIds: [ 'verificationLimitExceeded' ]
        systemErrorMessage: User has exceeded the maximum number of verifications
        segment: military
        subSegment: veteran
        locale: en-US
    inactiveMilitaryWithProgramVerificationLimitError:
      value:
        verificationId: '111111111111111111111111'
        currentStep: error
        errorIds: [ 'verificationLimitExceeded' ]
        systemErrorMessage: User has exceeded the maximum number of verifications
        segment: military
        subSegment: null
        locale: en-US
    invalidEmailLoopAddressOverrideError:
      value:
        cancelUrl: 'https://services.sheerid.com/rest/v2/verification/111111111111111111111111/step/emailLoop'
        verificationId: '111111111111111111111111'
        currentStep: 'emailLoop'
        errorIds: [ 'invalidEmail' ]
        segment: 'student'
        subSegment: null
        locale: 'en-US'
        country: 'US'
        submissionUrl: 'https://services.sheerid.com/rest/v2/verification/111111111111111111111111/step/emailLoop/resume'
        canResendEmailLoop: false
    invalidEmailLoop:
      value:
        verificationId: '111111111111111111111111'
        currentStep: error
        errorIds: [ 'invalidEmailLoopToken' ]
        systemErrorMessage: Provided token was not correct
        segment: student
        subSegment: null
        locale: en-US
    invalidAuthenticationLoopToken:
      value:
        verificationId: '111111111111111111111111'
        currentStep: error
        errorIds: [ 'invalidAuthenticationLoopToken' ]
        systemErrorMessage: Provided token was not correct
        segment: student
        subSegment: null
        locale: en-US
    invalidOverrideCodeError:
      value:
        verificationId: '111111111111111111111111'
        currentStep: override
        submissionUrl: /rest/v2/verification/111111111111111111111111/step/resultOverride
        errorIds: [ 'invalidOverrideCode' ]
        systemErrorMessage: Provided override code was incorrect
        segment: student
        subSegment: null
        locale: en-US
    incorrectVerificationOverrideCodeAttemptLimitExceededError:
      value:
        verificationId: '111111111111111111111111'
        currentStep: error
        errorIds: [ 'incorrectVerificationOverrideCodeAttemptLimitExceeded' ]
        systemErrorMessage: Incorrect verification override code attempt limit exceeded
        segment: student
        subSegment: null
        locale: en-US
    invalidProgramError:
      value:
        verificationId: null
        currentStep: error
        errorIds: [ 'invalidProgram' ]
        systemErrorMessage: Program with id '222222222222222222222222' is not setup to perform this step
        segment: null
        subSegment: null
        locale: en-US
    invalidSMSError:
      value:
        verificationId: '111111111111111111111111'
        currentStep: smsLoop
        errorIds: [ 'invalidSMSCode' ]
        submissionUrl: /rest/v2/verification/smsLoop
        segment: student
        subSegment: null
        locale: en-US
    invalidSsoError:
      value:
        verificationId: '111111111111111111111111'
        currentStep: error
        errorIds: [ 'invalidStep' ]
        systemErrorMessage: Verification with id '111111111111111111111111' does not have an ongoing SSO request
        segment: student
        subSegment: null
        locale: en-US
    invalidStepError:
      value:
        verificationId: '111111111111111111111111'
        currentStep: override
        errorIds: [ 'invalidStep' ]
        systemErrorMessage: Verification with id '111111111111111111111111' is not at the docUpload step
        segment: student
        subSegment: null
        locale: en-US
    invalidTokenError:
      value:
        verificationId: '111111111111111111111111'
        currentStep: error
        errorIds: [ 'invalidApiToken' ]
        systemErrorMessage: Provided API token is empty or invalid
        segment: null
        subSegment: null
        locale: en-US
    licensedProfessionalCollectInfoInvalid:
      value:
        verificationId: '111111111111111111111111'
        currentStep: collectLicensedProfessionalPersonalInfo
        submissionUrl: /rest/v2/verification/111111111111111111111111/collectLicensedProfessionalPersonalInfo
        errorIds: [ 'invalidEmail' ]
        availableStatuses: [ 'LICENSED_COSMETOLOGIST', 'LICENSED_REAL_ESTATE_AGENT', 'VETERINARIAN', 'CHILD_CARE_WORKER', 'LIBRARIAN' ]
        segment: licensedProfessional
        subSegment: licensedCosmetologist
        locale: en-US
    licensedProfessionalDocumentRejected:
      value:
        verificationId: '111111111111111111111111'
        currentStep: docUpload
        errorIds: [ ]
        segment: licensedProfessional
        subSegment: licensedRealEstateAgent
        locale: en-US
        submissionUrl: /rest/v2/verification/111111111111111111111111/step/docUpload
        rejectionReasons: [ 'MISMATCH_PERSON_LAST_NAME', 'DOCUMENT_EXPIRED' ]
    licensedProfessionalDocumentUpload:
      value:
        verificationId: '111111111111111111111111'
        currentStep: docUpload
        errorIds: [ ]
        segment: licensedProfessional
        subSegment: licensedRealEstateAgent
        locale: en-US
        submissionUrl: /rest/v2/verification/111111111111111111111111/step/docUpload
        rejectionReasons: [ ]
    licensedProfessionalSuccess:
      value:
        verificationId: '111111111111111111111111'
        currentStep: success
        errorIds: [ ]
        segment: licensedProfessional
        subSegment: licensedCosmetologist
        locale: en-US
        country: US
        rewardCode: EXAMPLE-CODE
        redirectUrl: null
        rewardData:
          rewardCode: EXAMPLE-CODE
    licensedProfessionalVerificationLimitError:
      value:
        verificationId: '111111111111111111111111'
        currentStep: error
        errorIds: [ 'verificationLimitExceeded' ]
        systemErrorMessage: User has exceeded the maximum number of verifications
        segment: licensedProfessional
        subSegment: licensedRealEstateAgent
        locale: en-US
    marketplaceCollectToken:
      value:
        verificationId: '111111111111111111111111'
        currentStep: collectMarketplaceToken
        submissionUrl: /rest/v2/verification/111111111111111111111111/collectMarketplaceToken
        errorIds: [ ]
        segment: marketplace
        subSegment: null
        locale: en-US
        verificationToken: 'AbcdEfg1234!@#$AbcdEfg1234!@#$12'
    marketplaceSuccess:
      value:
        verificationId: '111111111111111111111111'
        currentStep: success
        errorIds: [ ]
        segment: marketplace
        subSegment: null
        locale: en-US
        country: null
        rewardCode: EXAMPLE-CODE
        redirectUrl: null
        rewardData:
          rewardCode: EXAMPLE-CODE
    marketplaceVerificationLimitError:
      value:
        verificationId: '111111111111111111111111'
        currentStep: error
        errorIds: [ 'verificationLimitExceeded' ]
        systemErrorMessage: User has exceeded the maximum number of verifications
        segment: marketplace
        subSegment: null
        locale: en-US
    maxFilesExceededError:
      value:
        verificationId: '111111111111111111111111'
        currentStep: error
        errorIds: [ 'invalidNumberOfFiles' ]
        systemErrorMessage: Maximum number of files has been exceeded
        segment: student
        subSegment: null
        locale: en-US
    maxFileSizeExceededError:
      value:
        verificationId: '111111111111111111111111'
        currentStep: error
        errorIds: [ 'invalidFileSizeMax' ]
        systemErrorMessage: Maximum file size has been exceeded
        segment: student
        subSegment: null
        locale: en-US
    maxSMSLimitReached:
      value:
        verificationId: '111111111111111111111111'
        currentStep: smsLoop
        errorIds: [ 'maxSMSLimitReached' ]
        systemErrorMessage: Verification with id '111111111111111111111111' can not send any more SMS codes
        segment: student
        subSegment: null
        locale: en-US
    medicalProfessionalCollectInfoInvalid:
      value:
        verificationId: '111111111111111111111111'
        currentStep: collectMedicalProfessionalPersonalInfo
        submissionUrl: /rest/v2/verification/111111111111111111111111/collectMedicalProfessionalPersonalInfo
        errorIds: [ 'invalidEmail' ]
        availableStatuses: [ 'NURSE', 'DOCTOR', 'OTHER_HEALTH_WORKER', 'DENTIST', 'PHARMACIST' ]
        segment: medical
        subSegment: nurse
        locale: en-US
    medicalProfessionalDocumentRejected:
      value:
        verificationId: '111111111111111111111111'
        currentStep: docUpload
        errorIds: [ ]
        segment: medical
        subSegment: nurse
        locale: en-US
        submissionUrl: /rest/v2/verification/111111111111111111111111/step/docUpload
        rejectionReasons: [ 'MISMATCH_PERSON_LAST_NAME', 'DOCUMENT_EXPIRED' ]
    medicalProfessionalDocumentUpload:
      value:
        verificationId: '111111111111111111111111'
        currentStep: docUpload
        errorIds: [ ]
        segment: medical
        subSegment: nurse
        locale: en-US
        submissionUrl: /rest/v2/verification/111111111111111111111111/step/docUpload
        rejectionReasons: [ ]
    medicalProfessionalSuccess:
      value:
        verificationId: '111111111111111111111111'
        currentStep: success
        errorIds: [ ]
        segment: medical
        subSegment: nurse
        locale: en-US
        country: US
        rewardCode: EXAMPLE_CODE
        redirectUrl: null
        rewardData:
          rewardCode: EXAMPLE_CODE
    medicalProfessionalVerificationLimitError:
      value:
        verificationId: '111111111111111111111111'
        currentStep: error
        errorIds: [ 'verificationLimitExceeded' ]
        systemErrorMessage: User has exceeded the maximum number of verifications
        segment: medical
        subSegment: nurse
        locale: en-US
    memberCollectInfoInvalid:
      value:
        verificationId: '111111111111111111111111'
        currentStep: collectMemberPersonalInfo
        submissionUrl: /rest/v2/verification/111111111111111111111111/collectMemberPersonalInfo
        errorIds: [ 'invalidEmail' ]
        segment: member
        subSegment: null
        locale: en-US
    memberSuccess:
      value:
        verificationId: '111111111111111111111111'
        currentStep: success
        errorIds: [ ]
        segment: member
        subSegment: null
        locale: en-US
        country: US
        rewardCode: EXAMPLE-CODE
        redirectUrl: null
        rewardData:
          rewardCode: EXAMPLE-CODE
    memberVerificationLimitError:
      value:
        verificationId: '111111111111111111111111'
        currentStep: error
        errorIds: [ 'verificationLimitExceeded' ]
        systemErrorMessage: User has exceeded the maximum number of verifications
        segment: member
        subSegment: null
        locale: en-US
    militaryCollectStatusInvalid:
      value:
        verificationId: '111111111111111111111111'
        currentStep: collectActiveMilitaryPersonalInfo
        submissionUrl: /rest/v2/verification/111111111111111111111111/collectMilitaryStatus
        availableStatuses: [ 'ACTIVE_DUTY', 'VETERAN', 'MILITARY_RETIREE', 'GOLD_STAR_FAMILY' ]
        errorIds: [ 'invalidMilitaryStatus' ]
        segment: military
        subSegment: null
        locale: en-US
    militaryContinueToSocialSecurityNumber:
      value:
        verificationId: '111111111111111111111111'
        currentStep: collectSocialSecurityNumber
        errorIds: [ ]
        submissionUrl: /rest/v2/verification/111111111111111111111111/collectSocialSecurityNumber/123456789
        cancelUrl: /rest/v2/verification/111111111111111111111111/collectSocialSecurityNumber/123456789
        segment: military
        subSegment: veteran
        locale: en-US
    militaryWithProgramContinueToSocialSecurityNumber:
      value:
        verificationId: '111111111111111111111111'
        currentStep: collectSocialSecurityNumber
        errorIds: [ ]
        submissionUrl: /rest/v2/verification/111111111111111111111111/collectSocialSecurityNumber/123456789
        cancelUrl: /rest/v2/verification/111111111111111111111111/collectSocialSecurityNumber/123456789
        segment: military
        subSegment: null
        locale: en-US
    moverCollectInfoInvalid:
      value:
        verificationId: '111111111111111111111111'
        currentStep: collectMoverPersonalInfo
        submissionUrl: /rest/v2/verification/111111111111111111111111/collectMoverlPersonalInfo
        errorIds: [ 'invalidEmail' ]
        availableStatuses: [ 'HOME_BUYER', 'OTHER_MOVER' ]
        segment: recentMover
        subSegment: homeBuyer
        locale: en-US
    moverDocumentRejected:
      value:
        verificationId: '111111111111111111111111'
        currentStep: docUpload
        errorIds: [ ]
        segment: recentMover
        subSegment: homeBuyer
        locale: en-US
        submissionUrl: /rest/v2/verification/111111111111111111111111/step/docUpload
        rejectionReasons: [ 'MISMATCH_PERSON_LAST_NAME', 'DOCUMENT_EXPIRED' ]
    moverDocumentUpload:
      value:
        verificationId: '111111111111111111111111'
        currentStep: docUpload
        errorIds: [ ]
        segment: recentMover
        subSegment: homeBuyer
        locale: en-US
        submissionUrl: /rest/v2/verification/111111111111111111111111/step/docUpload
        rejectionReasons: [ ]
    moverSuccess:
      value:
        verificationId: '111111111111111111111111'
        currentStep: success
        errorIds: [ ]
        segment: recentMover
        subSegment: otherMover
        locale: en-US
        country: null
        rewardCode: EXAMPLE-CODE
        redirectUrl: null
        rewardData:
          rewardCode: EXAMPLE-CODE
    moverVerificationLimitError:
      value:
        verificationId: '111111111111111111111111'
        currentStep: error
        errorIds: [ 'verificationLimitExceeded' ]
        systemErrorMessage: User has exceeded the maximum number of verifications
        segment: recentMover
        subSegment: homeBuyer
        locale: en-US
    organizationDetailsSuccess:
      value:
        id: 590759
        name: 'Yale University'
        type: 'UNIVERSITY'
        street: '165 Whitney Ave'
        city: 'New Haven'
        state: 'CT'
        zip: '06511'
        country: 'US'
    pending:
      value:
        verificationId: '111111111111111111111111'
        currentStep: pending
        statusUrl: /rest/v2/verification/111111111111111111111111
        errorIds: [ ]
        segment: student
        subSegment: null
        locale: en-US
        lastResponse:
          verificationId: '111111111111111111111111'
          currentStep: docUpload
          errorIds: [ ]
          segment: student
          subSegment: null
          locale: en-US
          submissionUrl: /rest/v2/verification/111111111111111111111111/step/docUpload
          rejectionReasons: [ ]
        awaitingStep: docUpload
    programNotFoundError:
      value:
        verificationId: null
        currentStep: error
        errorIds: [ 'noProgram' ]
        systemErrorMessage: Program with ID '222222222222222222222222' not found
        segment: null
        subSegment: null
        locale: en-US
    programExpiredError:
      value:
        verificationId: null
        currentStep: error
        errorIds: [ 'expiredProgram' ]
        systemErrorMessage: Program with id '222222222222222222222222' has expired
        segment: null
        subSegment: null
        locale: en-US
    programInactiveError:
      value:
        verificationId: null
        currentStep: error
        errorIds: [ 'inactiveProgram' ]
        systemErrorMessage: Program with id '222222222222222222222222' is not currently active
        segment: null
        subSegment: null
        locale: en-US
    rememberMeEnabledSuccess:
      value:
        verificationId: '111111111111111111111111'
        currentStep: success
        errorIds: [ ]
        segment: military
        subSegment: activeDuty
        locale: en-US
        country: US
        rewardCode: EXAMPLE-CODE
        redirectUrl: null
        rewardData:
          rewardCode: EXAMPLE-CODE
        consumerInfoState: consumerNotFound
    reportStatusResponseComplete:
      value:
        id: '111111111111111111111111'
        status: 'COMPLETE'
        statusUrl: 'https://services.sheerid.com/rest/v2/report/verification/111111111111111111111111/status'
        retrievalUrl: 'https://services.sheerid.com/rest/v2/report/verification/111111111111111111111111'
        requester: "222222222222222222222222"
        created: 1234567891234
    reportStatusResponsePending:
      value:
        id: '111111111111111111111111'
        status: 'PENDING'
        statusUrl: 'https://services.sheerid.com/rest/v2/report/verification/111111111111111111111111/status'
        retrievalUrl: null
        requester: "222222222222222222222222"
        created: 1234567891234
    resumeEmailLoopResponse:
      value:
        cancelUrl: 'https://services.sheerid.com/rest/v2/verification/111111111111111111111111/step/emailLoop'
        verificationId: '111111111111111111111111'
        currentStep: 'emailLoop'
        currentState: 'pending'
        errorIds: [ ]
        segment: 'student'
        subSegment: null
        locale: 'en-US'
        country: 'US'
        submissionUrl: 'https://services.sheerid.com/rest/v2/verification/111111111111111111111111/step/emailLoop'
        canResendEmailLoop: true
    resumeEmailLoopResponseWithToken:
      value:
        cancelUrl: 'https://services.sheerid.com/rest/v2/verification/111111111111111111111111/step/emailLoop'
        verificationId: '111111111111111111111111'
        currentStep: 'emailLoop'
        currentState: 'pending'
        errorIds: [ ]
        segment: 'student'
        subSegment: null
        locale: 'en-US'
        country: 'US'
        submissionUrl: 'https://services.sheerid.com/rest/v2/verification/111111111111111111111111/step/emailLoop'
        canResendEmailLoop: false
        token: '222222'
    socialSecurityNumberCancelled:
      value:
        verificationId: '111111111111111111111111'
        currentStep: docUpload
        submissionUrl: /rest/v2/verification/111111111111111111111111/docUpload
        errorIds: [ ]
        segment: military
        subSegment: veteran
        locale: en-US
    socialSecurityNumberInvalid:
      value:
        verificationId: '111111111111111111111111'
        currentStep: collectSocialSecurityNumber
        submissionUrl: /rest/v2/verification/111111111111111111111111/collectSocialSecurityNumber/123456789
        cancelUrl: /rest/v2/verification/111111111111111111111111/collectSocialSecurityNumber/123456789
        errorIds: [ 'invalidSocialSecurityNumber' ]
        segment: military
        subSegment: veteran
        locale: en-US
    socialSecurityNumberSuccess:
      value:
        verificationId: '111111111111111111111111'
        currentStep: success
        errorIds: [ ]
        segment: military
        subSegment: veteran
        locale: en-US
        country: US
        rewardCode: EXAMPLE-CODE
        redirectUrl: null
        rewardData:
          rewardCode: EXAMPLE-CODE
    seniorCollectInfoInvalid:
      value:
        verificationId: '111111111111111111111111'
        currentStep: collectSeniorPersonalInfo
        submissionUrl: /rest/v2/verification/111111111111111111111111/collectSeniorPersonalInfo
        errorIds: [ 'invalidEmail' ]
        segment: senior
        subSegment: null
        locale: en-US
    seniorSuccess:
      value:
        verificationId: '111111111111111111111111'
        currentStep: success
        errorIds: [ ]
        segment: age
        subSegment: null
        locale: en-US
        country: US
        rewardCode: EXAMPLE-CODE
        redirectUrl: null
        rewardData:
          rewardCode: EXAMPLE-CODE
    seniorVerificationLimitError:
      value:
        verificationId: '111111111111111111111111'
        currentStep: error
        errorIds: [ 'verificationLimitExceeded' ]
        systemErrorMessage: User has exceeded the maximum number of verifications
        segment: senior
        subSegment: null
        locale: en-US
    studentCollectInfo:
      value:
        verificationId: '111111111111111111111111'
        currentStep: collectStudentPersonalInfo
        submissionUrl: /rest/v2/verification/111111111111111111111111/collectStudentPersonalInfo
        errorIds: [ ]
        segment: student
        subSegment: null
        locale: en-US
    collectPersonalInfoInvalid:
      value:
        verificationId: '111111111111111111111111'
        currentStep: collectPersonalInfo
        submissionUrl: /rest/v2/verification/111111111111111111111111/collectPersonalInfo
        errorIds: [ 'invalidBirthDate' ]
        segment: student
        subSegment: null
        locale: en-US
    studentCollectInfoInvalid:
      value:
        verificationId: '111111111111111111111111'
        currentStep: collectStudentPersonalInfo
        submissionUrl: /rest/v2/verification/111111111111111111111111/collectStudentPersonalInfo
        errorIds: [ 'invalidBirthDate' ]
        segment: student
        subSegment: null
        locale: en-US
    studentDocumentRejected:
      value:
        verificationId: '111111111111111111111111'
        currentStep: docUpload
        errorIds: [ ]
        segment: student
        subSegment: null
        locale: en-US
        submissionUrl: /rest/v2/verification/111111111111111111111111/step/docUpload
        rejectionReasons: [ 'MISMATCH_PERSON_LAST_NAME', 'DOCUMENT_EXPIRED' ]
    studentDocumentUpload:
      value:
        verificationId: '111111111111111111111111'
        currentStep: docUpload
        errorIds: [ ]
        segment: student
        subSegment: null
        locale: en-US
        submissionUrl: /rest/v2/verification/111111111111111111111111/step/docUpload
        rejectionReasons: [ ]
    studentSuccess:
      value:
        verificationId: '111111111111111111111111'
        currentStep: success
        errorIds: [ ]
        segment: student
        subSegment: null
        locale: en-US
        country: US
        rewardCode: EXAMPLE-CODE
        redirectUrl: null
        rewardData:
          rewardCode: EXAMPLE-CODE
    studentVerificationLimitError:
      value:
        verificationId: '111111111111111111111111'
        currentStep: error
        errorIds: [ 'verificationLimitExceeded' ]
        systemErrorMessage: User has exceeded the maximum number of verifications
        segment: student
        subSegment: null
        locale: en-US
    teacherCollectInfoInvalid:
      value:
        verificationId: '111111111111111111111111'
        currentStep: collectTeacherPersonalInfo
        submissionUrl: /rest/v2/verification/111111111111111111111111/collectTeacherPersonalInfo
        errorIds: [ 'invalidPostalCode' ]
        segment: teacher
        subSegment: null
        locale: en-US
    teacherDocumentRejected:
      value:
        verificationId: '111111111111111111111111'
        currentStep: docUpload
        errorIds: [ ]
        segment: teacher
        subSegment: null
        locale: en-US
        submissionUrl: /rest/v2/verification/111111111111111111111111/step/docUpload
        rejectionReasons: [ 'MISMATCH_PERSON_LAST_NAME', 'DOCUMENT_EXPIRED' ]
    teacherDocumentUpload:
      value:
        verificationId: '111111111111111111111111'
        currentStep: docUpload
        errorIds: [ ]
        segment: teacher
        subSegment: null
        locale: en-US
        submissionUrl: /rest/v2/verification/111111111111111111111111/step/docUpload
        rejectionReasons: [ ]
    teacherSuccess:
      value:
        verificationId: '111111111111111111111111'
        currentStep: success
        errorIds: [ ]
        segment: teacher
        subSegment: null
        locale: en-US
        country: US
        rewardCode: EXAMPLE_CODE
        rewardData:
          rewardCode: EXAMPLE_CODE
    teacherVerificationLimitError:
      value:
        verificationId: '111111111111111111111111'
        currentStep: error
        errorIds: [ 'verificationLimitExceeded' ]
        systemErrorMessage: User has exceeded the maximum number of verifications
        segment: teacher
        subSegment: null
        locale: en-US
    lowIncomeCollectInfoInvalid:
      value:
        verificationId: '111111111111111111111111'
        currentStep: collectLowIncomePersonalInfo
        submissionUrl: /rest/v2/verification/111111111111111111111111/collectLowIncomePersonalInfo
        errorIds: [ 'invalidPostalCode' ]
        segment: lowIncome
        subSegment: null
        locale: en-US
    lowIncomeDocumentRejected:
      value:
        verificationId: '111111111111111111111111'
        currentStep: docUpload
        errorIds: [ ]
        segment: lowIncome
        subSegment: null
        locale: en-US
        submissionUrl: /rest/v2/verification/111111111111111111111111/step/docUpload
        rejectionReasons: [ 'MISMATCH_PERSON_LAST_NAME', 'DOCUMENT_EXPIRED' ]
    lowIncomeDocumentUpload:
      value:
        verificationId: '111111111111111111111111'
        currentStep: docUpload
        errorIds: [ ]
        segment: lowIncome
        subSegment: null
        locale: en-US
        submissionUrl: /rest/v2/verification/111111111111111111111111/step/docUpload
        rejectionReasons: [ ]
    lowIncomeSuccess:
      value:
        verificationId: '111111111111111111111111'
        currentStep: success
        errorIds: [ ]
        segment: lowIncome
        subSegment: snapBenefits
        locale: en-US
        country: null
        rewardCode: EXAMPLE-CODE
        redirectUrl: null
        rewardData:
          rewardCode: EXAMPLE-CODE
    lowIncomeVerificationLimitError:
      value:
        verificationId: '111111111111111111111111'
        currentStep: error
        errorIds: [ 'verificationLimitExceeded' ]
        systemErrorMessage: User has exceeded the maximum number of verifications
        segment: lowIncome
        subSegment: null
        locale: en-US
    verificationDetailsDocumentUpload:
      value:
        programId: '222222222222222222222222'
        trackingId: '333333333333333333333333'
        personId: '444444444444444444444444'
        created: 1553622624552
        updated: 1553622624552
        lastResponse:
          verificationId: '111111111111111111111111'
          currentStep: docUpload
          errorIds: [ ]
          segment: student
          subSegment: null
          locale: en-US
          submissionUrl: /rest/v2/verification/111111111111111111111111/step/docUpload
          rejectionReasons: [ ]
        personInfo:
          firstName: Joe
          lastName: Verify
          email: joe.verify@sheerid.com
          birthDate: '1991-01-01'
          metadata:
            my: stuff
          organization:
            id: 1234
            name: Some Organization
        docUploadRejectionCount: 0
        docUploadRejectionReasons: [ ]
        verificationMethod: MANUAL
        confirmedSegments:
          - segment: 'some segment'
            subSegment: 'some subsegment'
            organization:
              id: 1111
              name: 'Some Organization'
              idExtended: 'a1a1a1a1'
              source: 'Some Source'
            active: false
            startDate: 1111111111111
            endDate: 2222222222222
    verificationDetailsDocumentRejected:
      value:
        programId: '222222222222222222222222'
        trackingId: '333333333333333333333333'
        personId: '444444444444444444444444'
        created: 1553622624552
        updated: 1553622624552
        lastResponse:
          verificationId: '111111111111111111111111'
          currentStep: docUpload
          errorIds: [ ]
          segment: student
          subSegment: null
          locale: en-US
          submissionUrl: /rest/v2/verification/111111111111111111111111/step/docUpload
          rejectionReasons: [ 'MISMATCH_PERSON_LAST_NAME', 'DOCUMENT_EXPIRED' ]
        personInfo:
          firstName: Joe
          lastName: Verify
          email: joe.verify@sheerid.com
          birthDate: '1991-01-01'
          metadata:
            my: stuff
          organization:
            id: 1234
            name: Some Organization
        docUploadRejectionCount: 1
        docUploadRejectionReasons: [ 'MISMATCH_PERSON_LAST_NAME', 'DOCUMENT_EXPIRED' ]
        verificationMethod: MANUAL
        confirmedSegments: [ ]
    verificationDetailsSuccess:
      value:
        programId: '222222222222222222222222'
        trackingId: '333333333333333333333333'
        personId: '444444444444444444444444'
        created: 1553622624552
        updated: 1553622624552
        lastResponse:
          verificationId: '111111111111111111111111'
          currentStep: success
          rewardCode: MY_CODE
          errorIds: [ ]
          segment: student
          subSegment: null
          locale: en-US
        personInfo:
          firstName: Joe
          lastName: Verify
          email: joe.verify@sheerid.com
          birthDate: '1991-01-01'
          metadata:
            my: stuff
          organization:
            id: 1234
            name: Some Organization
        docUploadRejectionCount: 0
        docUploadRejectionReasons: [ ]
        verificationMethod: INSTANT
        confirmedSegments:
          - segment: 'some segment'
            subSegment: 'some subsegment'
            organization:
              id: 1111
              name: 'Some Organization'
              idExtended: 'a1a1a1a1'
              source: 'Some Source'
            active: true
            startDate: 1111111111111
            endDate: 2222222222222
    verificationDetailsPending:
      value:
        programId: '222222222222222222222222'
        trackingId: '333333333333333333333333'
        personId: '444444444444444444444444'
        created: 1553622624552
        updated: 1553622624552
        lastResponse:
          verificationId: '111111111111111111111111'
          currentStep: pending
          statusUrl: /rest/v2/verification/111111111111111111111111
          errorIds: [ ]
          segment: student
          subSegment: null
          locale: en-US
          lastResponse:
            verificationId: '111111111111111111111111'
            currentStep: docUpload
            errorIds: [ ]
            segment: student
            subSegment: null
            locale: en-US
            submissionUrl: /rest/v2/verification/111111111111111111111111/step/docUpload
            rejectionReasons: [ ]
          awaitingStep: docUpload
        personInfo:
          firstName: Joe
          lastName: Verify
          email: joe.verify@sheerid.com
          birthDate: '1991-01-01'
          metadata:
            my: stuff
          organization:
            id: 1234
            name: Some Organization
        docUploadRejectionCount: 0
        docUploadRejectionReasons: [ ]
        verificationMethod: null
        confirmedSegments: [ ]
    reportFraud:
      value:
        verificationIds: [ '111111111111111111111111', '2222222222222222222222222', '33333333333333333333333333' ]
