openapi: 3.0.1
info:
  title: Trulioo Platform API
  description: |-
    # Introduction
    The Trulioo Platform is used to create fast and compliant onboarding flows. The flow can be published from the dashboard in the Launcher page.

    ### Purpose
    Our new API helps you take advantage of our flow builder and access our catalog of KYC services. Build the flow that fits your requirements thanks to our no-code platform, embed it into your application, and onboard all your end-clients seamlessly, Trulioo Platform takes care of the rest. The orchestration document provides a flow execution API.

    ### Key features
    The Trulioo Platform API grants control of the flow execution and user state to the client. The user state is associated with a session id (x-hf-session). See the diagram below for an overview of the integration.

    <img src="https://internal.workflow.dev.trulioo.com/api-docs/src/workflow_studio_diagram.jpg" alt="workflow studio diagram"  />
  termsOfService: ""
  contact:
    name: Customer Support
    url: ""
    email: support@trulioo.com
  version: 1.0.0
servers:
- url: "https://api.workflow.{env}.trulioo.com/interpreter-v2/"
security: []
tags:
- name: Using the API
  description: |
    Four most important API Calls are:
    - Initialize
    - Submit data
    - Retrieve profile data from a client
    - Client Credential flow

    ### Other end points
    1. *FlowStep operation*

       Requests data about the current state of a user in the flow. Creates a state if none is provided by returning a Header (x-hf-session) which represents a session ID. If the header is passed in the request, the operation will return the step response according to the flow execution state, otherwise, it will generate a session and initialize the flow from the first step.
    2. *SubmitStep operation*

       Submits data - triggers the execution of the current step, modifies the state with the data provided, and returns the next step in the flow. The flow execution always ends with an END step even if it is not added to the flow.

    3. *getBackStep operation*

       Returns to the previous step in the flow - computes a backward step in the flow. Multiple backward steps can be performed until the root (first) step of the flow. Non-interactive services are re-executed if they exist between a backward and a forward step.

    ### Other Considerations
    - Flow steps defined in the builder may not coincide with the orchestration flow of execution. This can occur due to non-interactive services which are triggered in the background and condition logic which creates mutually exclusive reachable paths.
    - Some services can take a long time to execute and will return a pending state rather than wait until the next step is computed. In this case, you can call FlowStep repeatedly until you get the next step.
    - Field ids in the client form are automatically generated, therefore, we suggest implementing dynamic field mapping between the form and WF API.
    - To test version of a flow rather than the live (published) version, prefix the endpoint path with /test.
    - Flows can be published as authenticated using the flow builder UI. By restricting integration access exclusively to the Trulioo Platform API, this action enhances security and enables a regulated interaction with your flow.
    - National ID and Social service number may have different names based on country. When applicable, a tooltip is added next to the field with the proper name based on the country chosen.

    ### Resources
    - For more comprehensive information and details on the authentication process, refer to: <a href='https://developer.trulioo.com/docs/keys-and-authentication' target='_blank'>https://developer.trulioo.com/docs/keys-and-authentication</a>.
    - Please refer to the following resource for more information about the National ID and Social service number tooltips: <a href='https://developer.trulioo.com/docs/national-ids-supported-types' target='_blank'>https://developer.trulioo.com/docs/national-ids-supported-types</a>. Note: not entering information for the correct National ID or Social service number type based on the country selected may lead to failed identification.
    - If you encounter any issues or have further questions, reach out to our support team for assistance.
- name: Flow connector (deprecated)
  description: Use these endpoints when you want to connect an existing client to
    a flow.
- name: Error codes
  description: |-
    <table>
      <tr>
        <th>Error code</th>
        <th>Description</th>
      </tr>
      <tr>
        <td>4000</td>
        <td>Flow not found</td>
      </tr>
      <tr>
        <td>4001</td>
        <td>Flow theme not found</td>
      </tr>
      <tr>
        <td>4002</td>
        <td>Node not found</td>
      </tr>
      <tr>
        <td>4003</td>
        <td>Flow is empty</td>
      </tr>
      <tr>
        <td>4005</td>
        <td>Root node is not a subsequent token node</td>
      </tr>
      <tr>
        <td>4006</td>
        <td>Missing data for required element</td>
      </tr>
      <tr>
        <td>4007</td>
        <td>Submitted data is malformed</td>
      </tr>
      <tr>
        <td>4008</td>
        <td>Failed validation for submitted data</td>
      </tr>
      <tr>
        <td>4009</td>
        <td>Service execution failed</td>
      </tr>
      <tr>
        <td>4011</td>
        <td>Invalid token</td>
      </tr>
      <tr>
        <td>4012</td>
    <td>Token has expired</td>
      </tr>
      <tr>
        <td>4013</td>
        <td>Flow already finished</td>
      </tr>
      <tr>
        <td>4014</td>
        <td>Invalid submit data</td>
      </tr>
      <tr>
        <td>4015</td>
        <td>Invalid direct submit on root not form node</td>
      </tr>
      <tr>
        <td>4016</td>
        <td>The uploaded file type is not supported</td>
      </tr>
     <tr>
        <td>4017</td>
        <td>Flow is not in a valid state and cannot be executed in test mode</td>
      </tr>
     <tr>
        <td>4050</td>
        <td>Invalid credentials</td>
      </tr>
      <tr>
        <td>4100</td>
        <td>Client not found</td>
      </tr>
        <tr>
        <td>4101</td>
      <td>Client has no flow with given ID</td>
      </tr>
      <tr>
        <td>4102</td>
        <td>Subsequent token not found</td>
      </tr>
        <tr>
        <td>4103</td>
      <td>Illegal back action</td>
      </tr>
      <tr>
        <td>4105</td>
        <td>Create linked leads invalid request</td>
      </tr>
      <tr>
        <td>4106</td>
        <td>Delete linked leads invalid request</td>
      </tr>
      <tr>
        <td>4109</td>
      <td>EndClient marked as abandoned</td>
      </tr>
      <tr>
        <td>4110</td>
      <td>Could not retrieve full end client data</td>
      </tr>
      <tr>
        <td>4200</td>
        <td>Service not configured</td>
      </tr>
      <tr>
        <td>4201</td>
        <td>Service not configured for country</td>
      </tr>
     <tr>
        <td>5000</td>
        <td>Internal error</td>
      </tr>
        <tr>
        <td>5300</td>
        <td>Invalid Twilio code</td>
      </tr>
      <tr>
        <td>5301</td>
        <td>Failed to send SMS to phone number</td>
      </tr>
      <tr>
        <td>5302</td>
        <td>Twilio internal error</td>
      </tr>
     <tr>
        <td>6504</td>
        <td>Service has timed out</td>
      </tr>
    </table>
- name: EndClient API
  description: |-
    Use these endpoints when you want to link/unlink end clients or delete end clients in bulk.

    ### Test Routes
    To test these endpoints against a non-live version, prefix the endpoint path with `/test`.

    For example, the path `/end-clients` becomes `/test/end-clients` for testing.
paths:
  /flow/{flowId}:
    get:
      tags:
      - Using the API
      summary: Get current step or initialize a flow
      operationId: flow
      parameters:
      - name: flowId
        in: path
        description: The ID of the flow
        required: true
        schema:
          type: string
      - name: x-hf-session
        in: header
        description: UUID for a user state in the execution flow (generated in the
          first interaction with a flow)
        schema:
          type: string
      - name: x-hf-language
        in: header
        description: Selected language for flow execution
        content:
          application/json:
            schema:
              type: string
              enum:
              - ar
              - bn
              - bg
              - zh-HK
              - zh-Hans-CN
              - zh-Hant-TW
              - cs
              - da
              - nl-NL
              - en-CA
              - en-GB
              - en-US
              - et
              - fi
              - fr-CA
              - fr-FR
              - de-DE
              - el
              - gu
              - he
              - hi
              - hu
              - id
              - it-IT
              - ja
              - kn
              - ko
              - lt
              - ml
              - mr
              - "no"
              - pl
              - pt-BR
              - pt-PT
              - ro
              - ru
              - sk
              - sl
              - es-MX
              - es-ES
              - sv
              - ta
              - te
              - th
              - tr
              - uk
              - vi
      responses:
        "200":
          description: Returns the step required to be submitted in the current flow
            execution
          headers:
            x-hf-session:
              description: if x-hf-session header is missing in request (it's the
                first interaction with the flow) one will be generated and returned
                in response
              style: simple
              schema:
                type: string
          content:
            application/json:
              schema:
                oneOf:
                - $ref: '#/components/schemas/form'
                - $ref: '#/components/schemas/subsequent'
                - $ref: '#/components/schemas/twilio'
                - $ref: '#/components/schemas/trulioo_kyb_search'
                - $ref: '#/components/schemas/flow_connector'
                - $ref: '#/components/schemas/trulioo_doc_v'
                - $ref: '#/components/schemas/trulioo_electronic_id'
                - $ref: '#/components/schemas/person_ocr'
                - $ref: '#/components/schemas/business_ocr'
                - $ref: '#/components/schemas/pending'
                - $ref: '#/components/schemas/end'
        "404":
          description: Wrong flow ID or x-hf-session UUID
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        "500":
          description: Internal server error (which might be caused by a temporary
            issue)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
  /init/{flowId}:
    get:
      tags:
      - Using the API
      summary: Get init data for a flow
      operationId: init_get
      parameters:
      - name: flowId
        in: path
        description: The ID of the flow
        required: true
        schema:
          type: string
      responses:
        "200":
          description: Returns the fields that support prefill and can be initialised
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetInitDataResponse'
        "401":
          description: Invalid token provided
        "404":
          description: Wrong flow ID
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        "500":
          description: Internal server error (which might be caused by a temporary
            issue)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
    post:
      tags:
      - Using the API
      summary: Create a new user state ID or update an existing one with some initialization
        data
      operationId: init
      parameters:
      - name: flowId
        in: path
        description: The ID of the flow
        required: true
        schema:
          type: string
      - name: x-hf-session
        in: header
        description: |-
          ID for a user state in the execution flow (generated in the first interaction with a flow).

          When x-hf-session header is used, the provided user state will be updated.
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/init_data'
      responses:
        "200":
          description: Returns the new x-hf-session created or the same one if provided
            in the x-hf-session
          headers:
            x-hf-session:
              description: "if x-hf-session header is missing in request (it's the\
                \ first interaction with the flow) one will be generated and returned\
                \ in response, otherwise the same x-hf-session will be returned"
              required: true
              style: simple
              schema:
                type: string
        "400":
          description: Client provided invalid data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        "401":
          description: Invalid token provided
        "500":
          description: Internal server error (which might be caused by a temporary
            issue)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
  /signed-url/{flowId}:
    post:
      tags:
      - Using the API
      summary: Generate Signed URL for User Session
      operationId: signed_url
      parameters:
      - name: flowId
        in: path
        description: The ID of the flow
        required: true
        schema:
          type: string
      - name: endClientId
        in: query
        description: |-
          ID for a user state in the execution flow (generated in the first interaction with a flow).

          When endClientId is used, the provided user state will be updated. If no endClientId is provided, a new user state ID is created and returned
        schema:
          type: string
      responses:
        "200":
          description: Returns the new x-hf-session created or the same one if provided
            in the x-hf-session
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreateSignedUrlResponse'
        "400":
          description: Client provided invalid data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        "401":
          description: Invalid token provided
        "500":
          description: Internal server error (which might be caused by a temporary
            issue)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
  /submit/{flowId}:
    post:
      tags:
      - Using the API
      summary: Submit data for the current step of a flow
      operationId: submit
      parameters:
      - name: flowId
        in: path
        description: The ID of the flow
        required: true
        schema:
          type: string
      - name: x-hf-session
        in: header
        description: |-
          ID for a user state in the execution flow (generated in the first interaction with a flow).

          Alternatively, this header can be omitted to directly submit data for the first form node. Note that direct submission is only supported for form nodes.
        schema:
          type: string
      - name: x-hf-language
        in: header
        description: Selected language for flow execution
        content:
          application/json:
            schema:
              type: string
              enum:
              - ar
              - bn
              - bg
              - zh-HK
              - zh-Hans-CN
              - zh-Hant-TW
              - cs
              - da
              - nl-NL
              - en-CA
              - en-GB
              - en-US
              - et
              - fi
              - fr-CA
              - fr-FR
              - de-DE
              - el
              - gu
              - he
              - hi
              - hu
              - id
              - it-IT
              - ja
              - kn
              - ko
              - lt
              - ml
              - mr
              - "no"
              - pl
              - pt-BR
              - pt-PT
              - ro
              - ru
              - sk
              - sl
              - es-MX
              - es-ES
              - sv
              - ta
              - te
              - th
              - tr
              - uk
              - vi
      - name: x-hf-retry-on-pending
        in: header
        description: |-
          This header determines whether the conditional node should block the flow's execution until the service completes and returns the next node. When set to `true`, the system will attempt to return the next node within 30 seconds.

          - **Interactive Node:** If the next node is interactive (e.g. a form node or an interactive service node), it will be returned.
          - **End Node:** If the next node is an end node, the end node will be returned.
          - **Pending Response:** If the process exceeds 30 seconds, the response will include `"type": "pending"`, along with the header `"x-hf-session"`, containing the session ID for tracking the user's state in the flow. This session ID can be used for continued polling to retrieve information related to that specific execution.

          This mechanism allows the flow to continue progressing, even if the complete result is not immediately available.
        schema:
          type: boolean
      requestBody:
        content:
          application/json:
            schema:
              oneOf:
              - $ref: '#/components/schemas/form_submit'
              - $ref: '#/components/schemas/twilio_submit'
              - $ref: '#/components/schemas/trulioo_kyb_search_submit'
              - $ref: '#/components/schemas/docv_submit'
              - $ref: '#/components/schemas/flow_connector_submit'
              - $ref: '#/components/schemas/trulioo_electronic_id_submit'
              - $ref: '#/components/schemas/person_ocr_submit'
              - $ref: '#/components/schemas/business_ocr_submit'
      responses:
        "200":
          description: Returns the step required to be submitted next in the current
            flow execution
          headers:
            x-hf-session:
              description: if x-hf-session header is missing in request (it's the
                first interaction with the flow) one will be generated and returned
                in response
              style: simple
              schema:
                type: string
          content:
            application/json:
              schema:
                oneOf:
                - $ref: '#/components/schemas/form'
                - $ref: '#/components/schemas/subsequent'
                - $ref: '#/components/schemas/twilio'
                - $ref: '#/components/schemas/trulioo_kyb_search'
                - $ref: '#/components/schemas/trulioo_doc_v'
                - $ref: '#/components/schemas/trulioo_electronic_id'
                - $ref: '#/components/schemas/flow_connector'
                - $ref: '#/components/schemas/person_ocr'
                - $ref: '#/components/schemas/business_ocr'
                - $ref: '#/components/schemas/pending'
                - $ref: '#/components/schemas/end'
        "400":
          description: Client provided invalid data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        "500":
          description: Internal server error (which might be caused by a temporary
            issue)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
  /file/{flowId}:
    post:
      tags:
      - Using the API
      summary: Submit file for the current step of a flow
      operationId: submitFile
      parameters:
      - name: flowId
        in: path
        description: The ID of the flow
        required: true
        schema:
          type: string
      - name: x-hf-session
        in: header
        description: UUID for a user state in the execution flow (generated in the
          first interaction with a flow)
        required: true
        schema:
          type: string
      requestBody:
        content:
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/FileUploadForm'
      responses:
        "201":
          description: File successfully uploaded
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FileUploadResponse'
        "400":
          description: Client provided invalid data or invalid filetype
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        "413":
          description: File size too large
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        "500":
          description: Internal server error (which might be caused by a temporary
            issue)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
  /back/{flowId}:
    get:
      tags:
      - Using the API
      summary: Computes a backward step in the flow execution.
      operationId: xback
      parameters:
      - name: flowId
        in: path
        description: The ID of the flow
        required: true
        schema:
          type: string
      - name: x-hf-session
        in: header
        description: UUID for a user state in the execution flow (generated in the
          first interaction with a flow)
        schema:
          type: string
      - name: x-hf-language
        in: header
        description: Selected language for flow execution
        content:
          application/json:
            schema:
              type: string
              enum:
              - ar
              - bn
              - bg
              - zh-HK
              - zh-Hans-CN
              - zh-Hant-TW
              - cs
              - da
              - nl-NL
              - en-CA
              - en-GB
              - en-US
              - et
              - fi
              - fr-CA
              - fr-FR
              - de-DE
              - el
              - gu
              - he
              - hi
              - hu
              - id
              - it-IT
              - ja
              - kn
              - ko
              - lt
              - ml
              - mr
              - "no"
              - pl
              - pt-BR
              - pt-PT
              - ro
              - ru
              - sk
              - sl
              - es-MX
              - es-ES
              - sv
              - ta
              - te
              - th
              - tr
              - uk
              - vi
      responses:
        "200":
          description: Returns previously submitted step
          content:
            application/json:
              schema:
                oneOf:
                - $ref: '#/components/schemas/form'
                - $ref: '#/components/schemas/subsequent'
                - $ref: '#/components/schemas/twilio'
                - $ref: '#/components/schemas/trulioo_kyb_search'
                - $ref: '#/components/schemas/trulioo_doc_v'
                - $ref: '#/components/schemas/trulioo_electronic_id'
                - $ref: '#/components/schemas/flow_connector'
                - $ref: '#/components/schemas/person_ocr'
                - $ref: '#/components/schemas/business_ocr'
                - $ref: '#/components/schemas/pending'
                - $ref: '#/components/schemas/end'
        "404":
          description: Wrong flow ID or x-hf-session UUID
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        "400":
          description: Can not go back in the current flow execution
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        "500":
          description: Internal server error (which might be caused by a temporary
            issue)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
  /connector/{clientId}/{flowId}:
    get:
      tags:
      - Flow connector (deprecated)
      summary: Connect a clientId to a flow by generating a token
      operationId: connector
      parameters:
      - name: clientId
        in: path
        description: UUID for a user state in the execution flow (generated in the
          first interaction with a flow)
        required: true
        schema:
          type: string
      - name: flowId
        in: path
        description: The ID of the flow
        required: true
        schema:
          type: string
      responses:
        "200":
          description: Token generated
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FlowConnectorResponse'
        "400":
          description: Client provided invalid data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        "500":
          description: Internal server error (which might be caused by a temporary
            issue)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      deprecated: true
  /flow-connect/{token}:
    get:
      tags:
      - Flow connector (deprecated)
      summary: Connects a user with a flow with a token
      operationId: flowConnect
      parameters:
      - name: token
        in: path
        description: "The token generated in #connector endpoint"
        required: true
        schema:
          type: string
      responses:
        "200":
          description: Token was processed successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FlowConnectResponse'
        "400":
          description: Token is expired
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        "500":
          description: Internal server error (which might be caused by a temporary
            issue)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      deprecated: true
  /end-clients:
    post:
      tags:
      - EndClient API
      summary: Create a link between two end clients
      operationId: createLinkedLead
      requestBody:
        content:
          application/json:
            schema:
              oneOf:
              - $ref: '#/components/schemas/CreateLinkedLeadsRequestPayload'
      responses:
        "201":
          description: Link created
        "400":
          description: Client provided invalid data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        "401":
          description: Invalid token provided
        "403":
          description: Forbidden
          content:
            text/plain:
              schema:
                type: string
              example: The supplied authentication is not authorized to access this
                resource
        "500":
          description: Internal server error (which might be caused by a temporary
            issue)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
    delete:
      tags:
      - EndClient API
      summary: Delete a link between two end clients
      operationId: deleteLinkedLead
      requestBody:
        content:
          application/json:
            schema:
              oneOf:
              - $ref: '#/components/schemas/DeleteLinkedLeadsRequestPayload'
      responses:
        "200":
          description: Link was deleted successfully
        "400":
          description: Client provided invalid data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        "401":
          description: Invalid token provided
        "403":
          description: Forbidden
          content:
            text/plain:
              schema:
                type: string
              example: The supplied authentication is not authorized to access this
                resource
        "500":
          description: Internal server error (which might be caused by a temporary
            issue)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
  /end-clients/delete-manually:
    delete:
      tags:
      - EndClient API
      summary: Delete end clients in bulk
      operationId: deleteEndclientsManually
      requestBody:
        content:
          application/json:
            schema:
              oneOf:
              - $ref: '#/components/schemas/DeleteEndclientsManuallyRequestPayload'
      responses:
        "200":
          description: Any found end clients were deleted
        "400":
          description: Client provided invalid data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        "401":
          description: Invalid token provided
        "403":
          description: Forbidden
          content:
            text/plain:
              schema:
                type: string
              example: The supplied authentication is not authorized to access this
                resource
        "500":
          description: Internal server error (which might be caused by a temporary
            issue)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
  /end-clients/status:
    put:
      tags:
      - EndClient API
      summary: Update end clients status in bulk
      operationId: updateEndClientsStatusManually
      requestBody:
        content:
          application/json:
            schema:
              oneOf:
              - $ref: '#/components/schemas/UpdateEndClientsStatusRequestPayload'
      responses:
        "200":
          description: The status for the end clients was updated
        "400":
          description: Client provided invalid data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        "401":
          description: Invalid token provided
        "403":
          description: Forbidden
          content:
            text/plain:
              schema:
                type: string
              example: The supplied authentication is not authorized to access this
                resource
        "500":
          description: Internal server error (which might be caused by a temporary
            issue)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
components:
  schemas:
    CheckboxOption:
      type: object
      properties:
        name:
          type: string
          description: Name of the checkbox option. This will be used when submitting
            the data
        description:
          type: string
          description: Additional description of the option
        label:
          type: string
          description: Label of the checkbox option. This can be displayed to the
            end-user when completing the flow
      description: List of checkboxes
    ClientPhoneNumber:
      required:
      - area
      type: object
      properties:
        area:
          type: string
        number:
          type: string
        country:
          type: string
      description: Default value to be prefilled
    Comparable:
      type: object
      description: To be compared with value given by <i>fieldId</i>
    FormElement:
      type: object
      description: List of form elements
      oneOf:
      - $ref: '#/components/schemas/text'
      - $ref: '#/components/schemas/number'
      - $ref: '#/components/schemas/phone_number'
      - $ref: '#/components/schemas/email'
      - $ref: '#/components/schemas/password'
      - $ref: '#/components/schemas/select'
      - $ref: '#/components/schemas/textarea'
      - $ref: '#/components/schemas/date_picker'
      - $ref: '#/components/schemas/spacing'
      - $ref: '#/components/schemas/plain_text'
      - $ref: '#/components/schemas/radio'
      - $ref: '#/components/schemas/check_box'
      - $ref: '#/components/schemas/country_select'
      - $ref: '#/components/schemas/file'
      - $ref: '#/components/schemas/enhanced_file'
      - $ref: '#/components/schemas/currency_select'
      - $ref: '#/components/schemas/owner'
      - $ref: '#/components/schemas/date_part_select'
    FormElementCondition:
      required:
      - type
      type: object
      properties:
        type:
          type: string
          enum:
          - AND
          - OR
        rules:
          type: array
          description: Condition applies if all/any of rules applies
          items:
            $ref: '#/components/schemas/Rule'
      description: Condition for when to hide/show the element
    OwnerGroupElements:
      type: object
      oneOf:
      - $ref: '#/components/schemas/text'
      - $ref: '#/components/schemas/number'
      - $ref: '#/components/schemas/phone_number'
      - $ref: '#/components/schemas/email'
      - $ref: '#/components/schemas/password'
      - $ref: '#/components/schemas/select'
      - $ref: '#/components/schemas/textarea'
      - $ref: '#/components/schemas/date_picker'
      - $ref: '#/components/schemas/spacing'
      - $ref: '#/components/schemas/plain_text'
      - $ref: '#/components/schemas/radio'
      - $ref: '#/components/schemas/check_box'
      - $ref: '#/components/schemas/country_select'
      - $ref: '#/components/schemas/file'
      - $ref: '#/components/schemas/enhanced_file'
      - $ref: '#/components/schemas/currency_select'
    OwnerPrefill:
      type: object
      properties:
        elements:
          type: array
          description: Elements with prefill value
          items:
            $ref: '#/components/schemas/OwnerPrefillElement'
      description: List of owners to be prefilled
    OwnerPrefillElement:
      required:
      - elementId
      - value
      type: object
      properties:
        elementId:
          type: string
        value:
          $ref: '#/components/schemas/PrefillValue'
      description: Elements with prefill value
    PrefillValue:
      required:
      - prefillType
      - value
      type: object
      properties:
        value:
          type: string
        prefillType:
          $ref: '#/components/schemas/PrefillValueType'
    PrefillValueType:
      type: object
    RadioOption:
      type: object
      properties:
        name:
          type: string
          description: Name of the radio option. This will be used when submitting
            the data
        description:
          type: string
          description: Additional description of the option
        label:
          type: string
          description: Label of the radio option. This can be displayed to the end-user
            when completing the flow
      description: Radio button options
    RegexData:
      required:
      - value
      type: object
      properties:
        value:
          type: string
        errorMessage:
          type: string
      description: Input must match <a href="https://www.w3schools.com/java/java_regex.asp">regular
        expression</a>
    Rule:
      required:
      - action
      type: object
      properties:
        fieldId:
          type: string
          description: ID of the field to compare value with <i>comparable</i>
        operator:
          type: string
          description: Operator to use when comparing values given by <i>fieldId</i>
            and <i>comparable</i>
          enum:
          - "null"
          - hv
          - =
          - '!='
          - cv
          - nc
          - <
          - '>'
          - in
          - nin
        comparable:
          $ref: '#/components/schemas/Comparable'
        action:
          type: string
          enum:
          - show
          - hide
      description: Condition applies if all/any of rules applies
    SelectOption:
      type: object
      properties:
        name:
          type: string
          description: Name of the select option. This will be used when submitting
            the data
        label:
          type: string
          description: Label of the select option. This can be displayed to the end-user
            when completing the flow
      description: Select options
    Validation:
      type: object
      description: Required input validations
      oneOf:
      - $ref: '#/components/schemas/required'
      - $ref: '#/components/schemas/min'
      - $ref: '#/components/schemas/max'
      - $ref: '#/components/schemas/min_length'
      - $ref: '#/components/schemas/max_length'
      - $ref: '#/components/schemas/min_date'
      - $ref: '#/components/schemas/max_date'
      - $ref: '#/components/schemas/regex'
      - $ref: '#/components/schemas/max_number_of_elements'
      - $ref: '#/components/schemas/max_file_size'
    check_box:
      required:
      - id
      - name
      - validations
      type: object
      properties:
        id:
          type: string
          description: ID of the form element
        condition:
          $ref: '#/components/schemas/FormElementCondition'
        name:
          type: string
          description: Field label
        supportingText:
          type: string
          description: Supporting text value (short desription for the field)
        validations:
          type: array
          description: Required input validations
          items:
            $ref: '#/components/schemas/Validation'
        options:
          type: array
          description: List of checkboxes
          items:
            $ref: '#/components/schemas/CheckboxOption'
        value:
          type: array
          description: List of checkboxes to be prechecked
          items:
            type: string
            description: List of checkboxes to be prechecked
          default: []
        role:
          type: string
          enum:
          - first_name
          - last_name
          - second_last_name
          - middle_name
          - full_name
          - alternate_full_name
          - alias
          - cpr
          - email
          - confirm_email
          - phone_number
          - mobile_number
          - address_1
          - address_street
          - address_street_nr
          - address_street_type
          - address_house_nr
          - address_building_name
          - address_floor
          - address_letter
          - address_city
          - address_zip
          - address_state
          - address_country
          - gender
          - dob
          - national_id_nr
          - social_service_number
          - nationality
          - company_nr
          - company_duns_nr
          - company_country_incorporation
          - company_name
          - company_doi
          - company_nace
          - company_lei
          - company_vat
          - company_street
          - company_building_nr
          - company_city
          - company_zip
          - company_state
          - company_state_address
          - company_country
          - company_postal_code
          - company_building_name
          - company_street_type
          - company_street_number
          - company_unit_number
          - company_address_full
          - company_type
          - company_status
          - company_email
          - company_phone_number
          - phone_verification
          - owner_first_name
          - owner_last_name
          - owner_second_last_name
          - owner_company_name
          - owner_company_nr
          - owner_country_incorporation
          - owner_middle_name
          - owner_full_name
          - owner_alias
          - owner_ssn
          - owner_entity_type
          - owner_is_active
          - owner_is_director
          - owner_is_owner
          - owner_email
          - owner_phone_number
          - owner_mobile_number
          - owner_address_street
          - owner_address_street_nr
          - owner_address_house_nr
          - owner_address_floor
          - owner_address_letter
          - owner_address_full
          - owner_address_street_type
          - owner_address_building_name
          - owner_address_city
          - owner_address_zip
          - owner_address_state
          - owner_address_country
          - owner_inactivity_reason
          - owner_inactivity_reason_details
          - owner_gender
          - owner_dob
          - owner_national_id_nr
          - owner_nationality
          - owner_social_service_number
          - owner_id
          - ownership
          - ownership_date
          - utility_provider
          - external_customer_id
          - branch_or_division
          - owner_context
    country_select:
      required:
      - id
      - name
      - prefillOptions
      - validations
      type: object
      properties:
        id:
          type: string
          description: ID of the form element
        condition:
          $ref: '#/components/schemas/FormElementCondition'
        name:
          type: string
          description: Field label
        placeholder:
          type: string
          description: <a href="https://www.w3schools.com/TAGS/att_input_placeholder.asp">Placeholder</a>
            value (short hint that describes the expected value of an input field)
        supportingText:
          type: string
          description: Supporting text value (short desription for the field)
        validations:
          type: array
          description: Required input validations
          items:
            $ref: '#/components/schemas/Validation'
        value:
          type: string
          description: Default value to be prefilled
        role:
          type: string
          enum:
          - first_name
          - last_name
          - second_last_name
          - middle_name
          - full_name
          - alternate_full_name
          - alias
          - cpr
          - email
          - confirm_email
          - phone_number
          - mobile_number
          - address_1
          - address_street
          - address_street_nr
          - address_street_type
          - address_house_nr
          - address_building_name
          - address_floor
          - address_letter
          - address_city
          - address_zip
          - address_state
          - address_country
          - gender
          - dob
          - national_id_nr
          - social_service_number
          - nationality
          - company_nr
          - company_duns_nr
          - company_country_incorporation
          - company_name
          - company_doi
          - company_nace
          - company_lei
          - company_vat
          - company_street
          - company_building_nr
          - company_city
          - company_zip
          - company_state
          - company_state_address
          - company_country
          - company_postal_code
          - company_building_name
          - company_street_type
          - company_street_number
          - company_unit_number
          - company_address_full
          - company_type
          - company_status
          - company_email
          - company_phone_number
          - phone_verification
          - owner_first_name
          - owner_last_name
          - owner_second_last_name
          - owner_company_name
          - owner_company_nr
          - owner_country_incorporation
          - owner_middle_name
          - owner_full_name
          - owner_alias
          - owner_ssn
          - owner_entity_type
          - owner_is_active
          - owner_is_director
          - owner_is_owner
          - owner_email
          - owner_phone_number
          - owner_mobile_number
          - owner_address_street
          - owner_address_street_nr
          - owner_address_house_nr
          - owner_address_floor
          - owner_address_letter
          - owner_address_full
          - owner_address_street_type
          - owner_address_building_name
          - owner_address_city
          - owner_address_zip
          - owner_address_state
          - owner_address_country
          - owner_inactivity_reason
          - owner_inactivity_reason_details
          - owner_gender
          - owner_dob
          - owner_national_id_nr
          - owner_nationality
          - owner_social_service_number
          - owner_id
          - ownership
          - ownership_date
          - utility_provider
          - external_customer_id
          - branch_or_division
          - owner_context
        prefillOptions:
          type: string
          description: "Desired prefill behaviour of the field - by default it is\
            \ prefillable_editable. A field can be prefilled from the data returned\
            \ by a previous service which is associated to the field, or in the case\
            \ of end-to-end KYB, the data submitted on behalf of an owner in the KYB\
            \ flow is automatically prefilled in the KYC flow which the owner interacts\
            \ with."
          enum:
          - non_prefillable
          - prefillable_editable
          - prefillable_non_editable_hidden
          - prefillable_non_editable_visible
      description: "Country selector input. The 2-letter country code as defined by\
        \ ISO 3166-1 alpha-2. Must be uppercase. (Example: US, CA, GB)"
    currency_select:
      required:
      - id
      - name
      - validations
      type: object
      properties:
        id:
          type: string
          description: ID of the form element
        condition:
          $ref: '#/components/schemas/FormElementCondition'
        name:
          type: string
          description: Field label
        placeholder:
          type: string
          description: <a href="https://www.w3schools.com/TAGS/att_input_placeholder.asp">Placeholder</a>
            value (short hint that describes the expected value of an input field)
        supportingText:
          type: string
          description: Supporting text value (short desription for the field)
        validations:
          type: array
          description: Required input validations
          items:
            $ref: '#/components/schemas/Validation'
        value:
          type: string
          description: Default value to be prefilled
        role:
          type: string
          enum:
          - first_name
          - last_name
          - second_last_name
          - middle_name
          - full_name
          - alternate_full_name
          - alias
          - cpr
          - email
          - confirm_email
          - phone_number
          - mobile_number
          - address_1
          - address_street
          - address_street_nr
          - address_street_type
          - address_house_nr
          - address_building_name
          - address_floor
          - address_letter
          - address_city
          - address_zip
          - address_state
          - address_country
          - gender
          - dob
          - national_id_nr
          - social_service_number
          - nationality
          - company_nr
          - company_duns_nr
          - company_country_incorporation
          - company_name
          - company_doi
          - company_nace
          - company_lei
          - company_vat
          - company_street
          - company_building_nr
          - company_city
          - company_zip
          - company_state
          - company_state_address
          - company_country
          - company_postal_code
          - company_building_name
          - company_street_type
          - company_street_number
          - company_unit_number
          - company_address_full
          - company_type
          - company_status
          - company_email
          - company_phone_number
          - phone_verification
          - owner_first_name
          - owner_last_name
          - owner_second_last_name
          - owner_company_name
          - owner_company_nr
          - owner_country_incorporation
          - owner_middle_name
          - owner_full_name
          - owner_alias
          - owner_ssn
          - owner_entity_type
          - owner_is_active
          - owner_is_director
          - owner_is_owner
          - owner_email
          - owner_phone_number
          - owner_mobile_number
          - owner_address_street
          - owner_address_street_nr
          - owner_address_house_nr
          - owner_address_floor
          - owner_address_letter
          - owner_address_full
          - owner_address_street_type
          - owner_address_building_name
          - owner_address_city
          - owner_address_zip
          - owner_address_state
          - owner_address_country
          - owner_inactivity_reason
          - owner_inactivity_reason_details
          - owner_gender
          - owner_dob
          - owner_national_id_nr
          - owner_nationality
          - owner_social_service_number
          - owner_id
          - ownership
          - ownership_date
          - utility_provider
          - external_customer_id
          - branch_or_division
          - owner_context
    date_part_select:
      required:
      - compositeGroup
      - id
      - name
      - partType
      - prefillOptions
      - validations
      type: object
      properties:
        id:
          type: string
          description: ID of the form element
        condition:
          $ref: '#/components/schemas/FormElementCondition'
        name:
          type: string
          description: Field label
        placeholder:
          type: string
          description: <a href="https://www.w3schools.com/TAGS/att_input_placeholder.asp">Placeholder</a>
            value (short hint that describes the expected value of an input field)
        supportingText:
          type: string
          description: Supporting text value (short desription for the field)
        value:
          type: string
          description: Default value to be prefilled
        prefillOptions:
          type: string
          description: "Desired prefill behaviour of the field - by default it is\
            \ prefillable_editable. A field can be prefilled from the data returned\
            \ by a previous service which is associated to the field, or in the case\
            \ of end-to-end KYB, the data submitted on behalf of an owner in the KYB\
            \ flow is automatically prefilled in the KYC flow which the owner interacts\
            \ with."
          enum:
          - non_prefillable
          - prefillable_editable
          - prefillable_non_editable_hidden
          - prefillable_non_editable_visible
        validations:
          type: array
          description: Required input validations
          items:
            $ref: '#/components/schemas/Validation'
        compositeGroup:
          type: string
        partType:
          type: string
        normalizedName:
          type: string
          description: Normalized name or alias of the field. Use this to identify
            the field when role attribute is not defined.
    date_picker:
      required:
      - id
      - name
      - prefillOptions
      - validations
      type: object
      properties:
        id:
          type: string
          description: ID of the form element
        condition:
          $ref: '#/components/schemas/FormElementCondition'
        name:
          type: string
          description: Field label
        placeholder:
          type: string
          description: <a href="https://www.w3schools.com/TAGS/att_input_placeholder.asp">Placeholder</a>
            value (short hint that describes the expected value of an input field)
        supportingText:
          type: string
          description: Supporting text value (short desription for the field)
        validations:
          type: array
          description: Required input validations
          items:
            $ref: '#/components/schemas/Validation'
        value:
          type: string
          description: Default value to be prefilled
        role:
          type: string
          enum:
          - first_name
          - last_name
          - second_last_name
          - middle_name
          - full_name
          - alternate_full_name
          - alias
          - cpr
          - email
          - confirm_email
          - phone_number
          - mobile_number
          - address_1
          - address_street
          - address_street_nr
          - address_street_type
          - address_house_nr
          - address_building_name
          - address_floor
          - address_letter
          - address_city
          - address_zip
          - address_state
          - address_country
          - gender
          - dob
          - national_id_nr
          - social_service_number
          - nationality
          - company_nr
          - company_duns_nr
          - company_country_incorporation
          - company_name
          - company_doi
          - company_nace
          - company_lei
          - company_vat
          - company_street
          - company_building_nr
          - company_city
          - company_zip
          - company_state
          - company_state_address
          - company_country
          - company_postal_code
          - company_building_name
          - company_street_type
          - company_street_number
          - company_unit_number
          - company_address_full
          - company_type
          - company_status
          - company_email
          - company_phone_number
          - phone_verification
          - owner_first_name
          - owner_last_name
          - owner_second_last_name
          - owner_company_name
          - owner_company_nr
          - owner_country_incorporation
          - owner_middle_name
          - owner_full_name
          - owner_alias
          - owner_ssn
          - owner_entity_type
          - owner_is_active
          - owner_is_director
          - owner_is_owner
          - owner_email
          - owner_phone_number
          - owner_mobile_number
          - owner_address_street
          - owner_address_street_nr
          - owner_address_house_nr
          - owner_address_floor
          - owner_address_letter
          - owner_address_full
          - owner_address_street_type
          - owner_address_building_name
          - owner_address_city
          - owner_address_zip
          - owner_address_state
          - owner_address_country
          - owner_inactivity_reason
          - owner_inactivity_reason_details
          - owner_gender
          - owner_dob
          - owner_national_id_nr
          - owner_nationality
          - owner_social_service_number
          - owner_id
          - ownership
          - ownership_date
          - utility_provider
          - external_customer_id
          - branch_or_division
          - owner_context
        dateFormat:
          type: string
          description: "The format used to display the date field ('dd-mm-yyyy' or\
            \ 'mm-dd-yyyy') as configured in Workflow Studio flow builder. ATTENTION,\
            \ this is not the format used to submit the form field (the format for\
            \ submit will always be 'yyyy-mm-dd')."
        prefillOptions:
          type: string
          description: "Desired prefill behaviour of the field - by default it is\
            \ prefillable_editable. A field can be prefilled from the data returned\
            \ by a previous service which is associated to the field, or in the case\
            \ of end-to-end KYB, the data submitted on behalf of an owner in the KYB\
            \ flow is automatically prefilled in the KYC flow which the owner interacts\
            \ with."
          enum:
          - non_prefillable
          - prefillable_editable
          - prefillable_non_editable_hidden
          - prefillable_non_editable_visible
    email:
      required:
      - id
      - name
      - prefillOptions
      - validations
      type: object
      properties:
        id:
          type: string
          description: ID of the form element
        condition:
          $ref: '#/components/schemas/FormElementCondition'
        name:
          type: string
          description: Field label
        placeholder:
          type: string
          description: <a href="https://www.w3schools.com/TAGS/att_input_placeholder.asp">Placeholder</a>
            value (short hint that describes the expected value of an input field)
        supportingText:
          type: string
          description: Supporting text value (short desription for the field)
        validations:
          type: array
          description: Required input validations
          items:
            $ref: '#/components/schemas/Validation'
        value:
          type: string
          description: Default value to be prefilled
        role:
          type: string
          enum:
          - first_name
          - last_name
          - second_last_name
          - middle_name
          - full_name
          - alternate_full_name
          - alias
          - cpr
          - email
          - confirm_email
          - phone_number
          - mobile_number
          - address_1
          - address_street
          - address_street_nr
          - address_street_type
          - address_house_nr
          - address_building_name
          - address_floor
          - address_letter
          - address_city
          - address_zip
          - address_state
          - address_country
          - gender
          - dob
          - national_id_nr
          - social_service_number
          - nationality
          - company_nr
          - company_duns_nr
          - company_country_incorporation
          - company_name
          - company_doi
          - company_nace
          - company_lei
          - company_vat
          - company_street
          - company_building_nr
          - company_city
          - company_zip
          - company_state
          - company_state_address
          - company_country
          - company_postal_code
          - company_building_name
          - company_street_type
          - company_street_number
          - company_unit_number
          - company_address_full
          - company_type
          - company_status
          - company_email
          - company_phone_number
          - phone_verification
          - owner_first_name
          - owner_last_name
          - owner_second_last_name
          - owner_company_name
          - owner_company_nr
          - owner_country_incorporation
          - owner_middle_name
          - owner_full_name
          - owner_alias
          - owner_ssn
          - owner_entity_type
          - owner_is_active
          - owner_is_director
          - owner_is_owner
          - owner_email
          - owner_phone_number
          - owner_mobile_number
          - owner_address_street
          - owner_address_street_nr
          - owner_address_house_nr
          - owner_address_floor
          - owner_address_letter
          - owner_address_full
          - owner_address_street_type
          - owner_address_building_name
          - owner_address_city
          - owner_address_zip
          - owner_address_state
          - owner_address_country
          - owner_inactivity_reason
          - owner_inactivity_reason_details
          - owner_gender
          - owner_dob
          - owner_national_id_nr
          - owner_nationality
          - owner_social_service_number
          - owner_id
          - ownership
          - ownership_date
          - utility_provider
          - external_customer_id
          - branch_or_division
          - owner_context
        prefillOptions:
          type: string
          description: "Desired prefill behaviour of the field - by default it is\
            \ prefillable_editable. A field can be prefilled from the data returned\
            \ by a previous service which is associated to the field, or in the case\
            \ of end-to-end KYB, the data submitted on behalf of an owner in the KYB\
            \ flow is automatically prefilled in the KYC flow which the owner interacts\
            \ with."
          enum:
          - non_prefillable
          - prefillable_editable
          - prefillable_non_editable_hidden
          - prefillable_non_editable_visible
    enhanced_file:
      required:
      - id
      - name
      - validations
      type: object
      properties:
        id:
          type: string
          description: ID of the form element
        condition:
          $ref: '#/components/schemas/FormElementCondition'
        name:
          type: string
          description: Field label
        placeholder:
          type: string
          description: <a href="https://www.w3schools.com/TAGS/att_input_placeholder.asp">Placeholder</a>
            value (short hint that describes the expected value of an input field)
        supportingText:
          type: string
          description: Supporting text value (short desription for the field)
        validations:
          type: array
          description: Required input validations
          items:
            $ref: '#/components/schemas/Validation'
        accept:
          type: string
        availableForOcr:
          type: boolean
          default: false
    file:
      required:
      - id
      - name
      - validations
      type: object
      properties:
        id:
          type: string
          description: ID of the form element
        condition:
          $ref: '#/components/schemas/FormElementCondition'
        name:
          type: string
          description: Field label
        placeholder:
          type: string
          description: <a href="https://www.w3schools.com/TAGS/att_input_placeholder.asp">Placeholder</a>
            value (short hint that describes the expected value of an input field)
        supportingText:
          type: string
          description: Supporting text value (short desription for the field)
        validations:
          type: array
          description: Required input validations
          items:
            $ref: '#/components/schemas/Validation'
        accept:
          type: string
    form:
      required:
      - id
      type: object
      properties:
        id:
          type: string
          description: ID of the node
        title:
          type: string
          description: Title of the form
        subtitle:
          type: string
          description: Subtitle of the form
        elements:
          type: array
          description: List of form elements
          items:
            $ref: '#/components/schemas/FormElement'
        canGoBack:
          type: boolean
          description: Flow control for going back to previous step
          default: false
        countryOfResidence:
          type: string
          description: "The country code that was submitted in previous nodes in an\
            \ input with ADDRESS_COUNTRY role, if one is available"
        countryOfIncorporation:
          type: string
          description: "The country code that was submitted in previous nodes in an\
            \ input with COMPANY_COUNTRY_INCORPORATION role, if one is available"
        accountId:
          type: string
          default: ""
    max:
      required:
      - data
      type: object
      properties:
        data:
          type: integer
          format: int32
    max_date:
      type: object
      properties:
        data:
          type: string
          description: YYYY-MM-DD format
    max_file_size:
      type: object
      properties:
        data:
          type: integer
          description: File size limit in bytes
          format: int64
    max_length:
      required:
      - data
      type: object
      properties:
        data:
          type: integer
          format: int32
    max_number_of_elements:
      required:
      - data
      type: object
      properties:
        data:
          type: integer
          format: int32
    min:
      required:
      - data
      type: object
      properties:
        data:
          type: integer
          format: int32
    min_date:
      type: object
      properties:
        data:
          type: string
          description: YYYY-MM-DD format
    min_length:
      required:
      - data
      type: object
      properties:
        data:
          type: integer
          format: int32
    number:
      required:
      - id
      - name
      - prefillOptions
      - validations
      type: object
      properties:
        id:
          type: string
          description: ID of the form element
        condition:
          $ref: '#/components/schemas/FormElementCondition'
        name:
          type: string
          description: Field label
        placeholder:
          type: string
          description: <a href="https://www.w3schools.com/TAGS/att_input_placeholder.asp">Placeholder</a>
            value (short hint that describes the expected value of an input field)
        supportingText:
          type: string
          description: Supporting text value (short desription for the field)
        step:
          type: integer
          format: int32
        validations:
          type: array
          description: Required input validations
          items:
            $ref: '#/components/schemas/Validation'
        value:
          type: integer
          description: Default value to be prefilled
          format: int32
        role:
          type: string
          enum:
          - first_name
          - last_name
          - second_last_name
          - middle_name
          - full_name
          - alternate_full_name
          - alias
          - cpr
          - email
          - confirm_email
          - phone_number
          - mobile_number
          - address_1
          - address_street
          - address_street_nr
          - address_street_type
          - address_house_nr
          - address_building_name
          - address_floor
          - address_letter
          - address_city
          - address_zip
          - address_state
          - address_country
          - gender
          - dob
          - national_id_nr
          - social_service_number
          - nationality
          - company_nr
          - company_duns_nr
          - company_country_incorporation
          - company_name
          - company_doi
          - company_nace
          - company_lei
          - company_vat
          - company_street
          - company_building_nr
          - company_city
          - company_zip
          - company_state
          - company_state_address
          - company_country
          - company_postal_code
          - company_building_name
          - company_street_type
          - company_street_number
          - company_unit_number
          - company_address_full
          - company_type
          - company_status
          - company_email
          - company_phone_number
          - phone_verification
          - owner_first_name
          - owner_last_name
          - owner_second_last_name
          - owner_company_name
          - owner_company_nr
          - owner_country_incorporation
          - owner_middle_name
          - owner_full_name
          - owner_alias
          - owner_ssn
          - owner_entity_type
          - owner_is_active
          - owner_is_director
          - owner_is_owner
          - owner_email
          - owner_phone_number
          - owner_mobile_number
          - owner_address_street
          - owner_address_street_nr
          - owner_address_house_nr
          - owner_address_floor
          - owner_address_letter
          - owner_address_full
          - owner_address_street_type
          - owner_address_building_name
          - owner_address_city
          - owner_address_zip
          - owner_address_state
          - owner_address_country
          - owner_inactivity_reason
          - owner_inactivity_reason_details
          - owner_gender
          - owner_dob
          - owner_national_id_nr
          - owner_nationality
          - owner_social_service_number
          - owner_id
          - ownership
          - ownership_date
          - utility_provider
          - external_customer_id
          - branch_or_division
          - owner_context
        prefillOptions:
          type: string
          description: "Desired prefill behaviour of the field - by default it is\
            \ prefillable_editable. A field can be prefilled from the data returned\
            \ by a previous service which is associated to the field, or in the case\
            \ of end-to-end KYB, the data submitted on behalf of an owner in the KYB\
            \ flow is automatically prefilled in the KYC flow which the owner interacts\
            \ with."
          enum:
          - non_prefillable
          - prefillable_editable
          - prefillable_non_editable_hidden
          - prefillable_non_editable_visible
    owner:
      required:
      - id
      - name
      - validations
      type: object
      properties:
        id:
          type: string
          description: ID of the form element
        condition:
          $ref: '#/components/schemas/FormElementCondition'
        name:
          type: string
          description: Field label
        validations:
          type: array
          description: Required input validations
          items:
            $ref: '#/components/schemas/Validation'
        placeholder:
          type: string
          description: <a href="https://www.w3schools.com/TAGS/att_input_placeholder.asp">Placeholder</a>
            value (short hint that describes the expected value of an input field)
        supportingText:
          type: string
          description: Supporting text value (short desription for the field)
        elements:
          type: array
          description: Form elements to be completed for each owner
          items:
            $ref: '#/components/schemas/OwnerGroupElements'
        value:
          type: array
          description: List of owners to be prefilled
          items:
            $ref: '#/components/schemas/OwnerPrefill'
          default: []
        pscHeaderText:
          type: string
          description: Custom header for each PSC entry
        isPscLimitExceeded:
          type: object
          description: Indicates whether the number of People of Significant Control
            (PSC) exceeds the maximum limit.
    password:
      required:
      - id
      - name
      - validations
      type: object
      properties:
        id:
          type: string
          description: ID of the form element
        condition:
          $ref: '#/components/schemas/FormElementCondition'
        name:
          type: string
          description: Field label
        placeholder:
          type: string
          description: <a href="https://www.w3schools.com/TAGS/att_input_placeholder.asp">Placeholder</a>
            value (short hint that describes the expected value of an input field)
        supportingText:
          type: string
          description: Supporting text value (short desription for the field)
        validations:
          type: array
          description: Required input validations
          items:
            $ref: '#/components/schemas/Validation'
        value:
          type: string
          description: Default value to be prefilled
        role:
          type: string
          enum:
          - first_name
          - last_name
          - second_last_name
          - middle_name
          - full_name
          - alternate_full_name
          - alias
          - cpr
          - email
          - confirm_email
          - phone_number
          - mobile_number
          - address_1
          - address_street
          - address_street_nr
          - address_street_type
          - address_house_nr
          - address_building_name
          - address_floor
          - address_letter
          - address_city
          - address_zip
          - address_state
          - address_country
          - gender
          - dob
          - national_id_nr
          - social_service_number
          - nationality
          - company_nr
          - company_duns_nr
          - company_country_incorporation
          - company_name
          - company_doi
          - company_nace
          - company_lei
          - company_vat
          - company_street
          - company_building_nr
          - company_city
          - company_zip
          - company_state
          - company_state_address
          - company_country
          - company_postal_code
          - company_building_name
          - company_street_type
          - company_street_number
          - company_unit_number
          - company_address_full
          - company_type
          - company_status
          - company_email
          - company_phone_number
          - phone_verification
          - owner_first_name
          - owner_last_name
          - owner_second_last_name
          - owner_company_name
          - owner_company_nr
          - owner_country_incorporation
          - owner_middle_name
          - owner_full_name
          - owner_alias
          - owner_ssn
          - owner_entity_type
          - owner_is_active
          - owner_is_director
          - owner_is_owner
          - owner_email
          - owner_phone_number
          - owner_mobile_number
          - owner_address_street
          - owner_address_street_nr
          - owner_address_house_nr
          - owner_address_floor
          - owner_address_letter
          - owner_address_full
          - owner_address_street_type
          - owner_address_building_name
          - owner_address_city
          - owner_address_zip
          - owner_address_state
          - owner_address_country
          - owner_inactivity_reason
          - owner_inactivity_reason_details
          - owner_gender
          - owner_dob
          - owner_national_id_nr
          - owner_nationality
          - owner_social_service_number
          - owner_id
          - ownership
          - ownership_date
          - utility_provider
          - external_customer_id
          - branch_or_division
          - owner_context
    phone_number:
      required:
      - id
      - name
      - prefillOptions
      - validations
      type: object
      properties:
        id:
          type: string
          description: ID of the form element
        condition:
          $ref: '#/components/schemas/FormElementCondition'
        name:
          type: string
          description: Field label
        placeholder:
          type: string
          description: <a href="https://www.w3schools.com/TAGS/att_input_placeholder.asp">Placeholder</a>
            value (short hint that describes the expected value of an input field)
        supportingText:
          type: string
          description: Supporting text value (short desription for the field)
        validations:
          type: array
          description: Required input validations
          items:
            $ref: '#/components/schemas/Validation'
        role:
          type: string
          enum:
          - first_name
          - last_name
          - second_last_name
          - middle_name
          - full_name
          - alternate_full_name
          - alias
          - cpr
          - email
          - confirm_email
          - phone_number
          - mobile_number
          - address_1
          - address_street
          - address_street_nr
          - address_street_type
          - address_house_nr
          - address_building_name
          - address_floor
          - address_letter
          - address_city
          - address_zip
          - address_state
          - address_country
          - gender
          - dob
          - national_id_nr
          - social_service_number
          - nationality
          - company_nr
          - company_duns_nr
          - company_country_incorporation
          - company_name
          - company_doi
          - company_nace
          - company_lei
          - company_vat
          - company_street
          - company_building_nr
          - company_city
          - company_zip
          - company_state
          - company_state_address
          - company_country
          - company_postal_code
          - company_building_name
          - company_street_type
          - company_street_number
          - company_unit_number
          - company_address_full
          - company_type
          - company_status
          - company_email
          - company_phone_number
          - phone_verification
          - owner_first_name
          - owner_last_name
          - owner_second_last_name
          - owner_company_name
          - owner_company_nr
          - owner_country_incorporation
          - owner_middle_name
          - owner_full_name
          - owner_alias
          - owner_ssn
          - owner_entity_type
          - owner_is_active
          - owner_is_director
          - owner_is_owner
          - owner_email
          - owner_phone_number
          - owner_mobile_number
          - owner_address_street
          - owner_address_street_nr
          - owner_address_house_nr
          - owner_address_floor
          - owner_address_letter
          - owner_address_full
          - owner_address_street_type
          - owner_address_building_name
          - owner_address_city
          - owner_address_zip
          - owner_address_state
          - owner_address_country
          - owner_inactivity_reason
          - owner_inactivity_reason_details
          - owner_gender
          - owner_dob
          - owner_national_id_nr
          - owner_nationality
          - owner_social_service_number
          - owner_id
          - ownership
          - ownership_date
          - utility_provider
          - external_customer_id
          - branch_or_division
          - owner_context
        value:
          $ref: '#/components/schemas/ClientPhoneNumber'
        prefillOptions:
          type: string
          description: "Desired prefill behaviour of the field - by default it is\
            \ prefillable_editable. A field can be prefilled from the data returned\
            \ by a previous service which is associated to the field, or in the case\
            \ of end-to-end KYB, the data submitted on behalf of an owner in the KYB\
            \ flow is automatically prefilled in the KYC flow which the owner interacts\
            \ with."
          enum:
          - non_prefillable
          - prefillable_editable
          - prefillable_non_editable_hidden
          - prefillable_non_editable_visible
    plain_text:
      required:
      - id
      - name
      type: object
      properties:
        id:
          type: string
          description: ID of the form element
        condition:
          $ref: '#/components/schemas/FormElementCondition'
        name:
          type: string
          description: Field label
        content:
          type: string
          description: Text to be shown
    radio:
      required:
      - id
      - name
      - prefillOptions
      - validations
      type: object
      properties:
        id:
          type: string
          description: ID of the form element
        condition:
          $ref: '#/components/schemas/FormElementCondition'
        name:
          type: string
          description: Field label
        supportingText:
          type: string
          description: Supporting text value (short desription for the field)
        validations:
          type: array
          description: Required input validations
          items:
            $ref: '#/components/schemas/Validation'
        options:
          type: array
          description: Radio button options
          items:
            $ref: '#/components/schemas/RadioOption'
        value:
          type: string
          description: Default value to be prefilled
        role:
          type: string
          enum:
          - first_name
          - last_name
          - second_last_name
          - middle_name
          - full_name
          - alternate_full_name
          - alias
          - cpr
          - email
          - confirm_email
          - phone_number
          - mobile_number
          - address_1
          - address_street
          - address_street_nr
          - address_street_type
          - address_house_nr
          - address_building_name
          - address_floor
          - address_letter
          - address_city
          - address_zip
          - address_state
          - address_country
          - gender
          - dob
          - national_id_nr
          - social_service_number
          - nationality
          - company_nr
          - company_duns_nr
          - company_country_incorporation
          - company_name
          - company_doi
          - company_nace
          - company_lei
          - company_vat
          - company_street
          - company_building_nr
          - company_city
          - company_zip
          - company_state
          - company_state_address
          - company_country
          - company_postal_code
          - company_building_name
          - company_street_type
          - company_street_number
          - company_unit_number
          - company_address_full
          - company_type
          - company_status
          - company_email
          - company_phone_number
          - phone_verification
          - owner_first_name
          - owner_last_name
          - owner_second_last_name
          - owner_company_name
          - owner_company_nr
          - owner_country_incorporation
          - owner_middle_name
          - owner_full_name
          - owner_alias
          - owner_ssn
          - owner_entity_type
          - owner_is_active
          - owner_is_director
          - owner_is_owner
          - owner_email
          - owner_phone_number
          - owner_mobile_number
          - owner_address_street
          - owner_address_street_nr
          - owner_address_house_nr
          - owner_address_floor
          - owner_address_letter
          - owner_address_full
          - owner_address_street_type
          - owner_address_building_name
          - owner_address_city
          - owner_address_zip
          - owner_address_state
          - owner_address_country
          - owner_inactivity_reason
          - owner_inactivity_reason_details
          - owner_gender
          - owner_dob
          - owner_national_id_nr
          - owner_nationality
          - owner_social_service_number
          - owner_id
          - ownership
          - ownership_date
          - utility_provider
          - external_customer_id
          - branch_or_division
          - owner_context
        prefillOptions:
          type: string
          description: "Desired prefill behaviour of the field - by default it is\
            \ prefillable_editable. A field can be prefilled from the data returned\
            \ by a previous service which is associated to the field, or in the case\
            \ of end-to-end KYB, the data submitted on behalf of an owner in the KYB\
            \ flow is automatically prefilled in the KYC flow which the owner interacts\
            \ with."
          enum:
          - non_prefillable
          - prefillable_editable
          - prefillable_non_editable_hidden
          - prefillable_non_editable_visible
    regex:
      type: object
      properties:
        data:
          $ref: '#/components/schemas/RegexData'
    required:
      type: object
    select:
      required:
      - id
      - name
      - validations
      type: object
      properties:
        id:
          type: string
          description: ID of the form element
        condition:
          $ref: '#/components/schemas/FormElementCondition'
        name:
          type: string
          description: Field label
        placeholder:
          type: string
          description: <a href="https://www.w3schools.com/TAGS/att_input_placeholder.asp">Placeholder</a>
            value (short hint that describes the expected value of an input field)
        supportingText:
          type: string
          description: Supporting text value (short desription for the field)
        validations:
          type: array
          description: Required input validations
          items:
            $ref: '#/components/schemas/Validation'
        options:
          type: array
          description: Select options
          items:
            $ref: '#/components/schemas/SelectOption'
        value:
          type: string
          description: Default value to be prefilled
        role:
          type: string
          enum:
          - first_name
          - last_name
          - second_last_name
          - middle_name
          - full_name
          - alternate_full_name
          - alias
          - cpr
          - email
          - confirm_email
          - phone_number
          - mobile_number
          - address_1
          - address_street
          - address_street_nr
          - address_street_type
          - address_house_nr
          - address_building_name
          - address_floor
          - address_letter
          - address_city
          - address_zip
          - address_state
          - address_country
          - gender
          - dob
          - national_id_nr
          - social_service_number
          - nationality
          - company_nr
          - company_duns_nr
          - company_country_incorporation
          - company_name
          - company_doi
          - company_nace
          - company_lei
          - company_vat
          - company_street
          - company_building_nr
          - company_city
          - company_zip
          - company_state
          - company_state_address
          - company_country
          - company_postal_code
          - company_building_name
          - company_street_type
          - company_street_number
          - company_unit_number
          - company_address_full
          - company_type
          - company_status
          - company_email
          - company_phone_number
          - phone_verification
          - owner_first_name
          - owner_last_name
          - owner_second_last_name
          - owner_company_name
          - owner_company_nr
          - owner_country_incorporation
          - owner_middle_name
          - owner_full_name
          - owner_alias
          - owner_ssn
          - owner_entity_type
          - owner_is_active
          - owner_is_director
          - owner_is_owner
          - owner_email
          - owner_phone_number
          - owner_mobile_number
          - owner_address_street
          - owner_address_street_nr
          - owner_address_house_nr
          - owner_address_floor
          - owner_address_letter
          - owner_address_full
          - owner_address_street_type
          - owner_address_building_name
          - owner_address_city
          - owner_address_zip
          - owner_address_state
          - owner_address_country
          - owner_inactivity_reason
          - owner_inactivity_reason_details
          - owner_gender
          - owner_dob
          - owner_national_id_nr
          - owner_nationality
          - owner_social_service_number
          - owner_id
          - ownership
          - ownership_date
          - utility_provider
          - external_customer_id
          - branch_or_division
          - owner_context
    spacing:
      required:
      - id
      type: object
      properties:
        id:
          type: string
          description: ID of the form element
        condition:
          $ref: '#/components/schemas/FormElementCondition'
        height:
          type: integer
          description: Height of the spacing in pixels
          format: int32
    text:
      required:
      - id
      - name
      - prefillOptions
      - validations
      type: object
      properties:
        id:
          type: string
          description: ID of the form element
        condition:
          $ref: '#/components/schemas/FormElementCondition'
        name:
          type: string
          description: Field label
        placeholder:
          type: string
          description: <a href="https://www.w3schools.com/TAGS/att_input_placeholder.asp">Placeholder</a>
            value (short hint that describes the expected value of an input field)
        supportingText:
          type: string
          description: Supporting text value (short desription for the field)
        validations:
          type: array
          description: Required input validations
          items:
            $ref: '#/components/schemas/Validation'
        value:
          type: string
          description: Default value to be prefilled
        role:
          type: string
          enum:
          - first_name
          - last_name
          - second_last_name
          - middle_name
          - full_name
          - alternate_full_name
          - alias
          - cpr
          - email
          - confirm_email
          - phone_number
          - mobile_number
          - address_1
          - address_street
          - address_street_nr
          - address_street_type
          - address_house_nr
          - address_building_name
          - address_floor
          - address_letter
          - address_city
          - address_zip
          - address_state
          - address_country
          - gender
          - dob
          - national_id_nr
          - social_service_number
          - nationality
          - company_nr
          - company_duns_nr
          - company_country_incorporation
          - company_name
          - company_doi
          - company_nace
          - company_lei
          - company_vat
          - company_street
          - company_building_nr
          - company_city
          - company_zip
          - company_state
          - company_state_address
          - company_country
          - company_postal_code
          - company_building_name
          - company_street_type
          - company_street_number
          - company_unit_number
          - company_address_full
          - company_type
          - company_status
          - company_email
          - company_phone_number
          - phone_verification
          - owner_first_name
          - owner_last_name
          - owner_second_last_name
          - owner_company_name
          - owner_company_nr
          - owner_country_incorporation
          - owner_middle_name
          - owner_full_name
          - owner_alias
          - owner_ssn
          - owner_entity_type
          - owner_is_active
          - owner_is_director
          - owner_is_owner
          - owner_email
          - owner_phone_number
          - owner_mobile_number
          - owner_address_street
          - owner_address_street_nr
          - owner_address_house_nr
          - owner_address_floor
          - owner_address_letter
          - owner_address_full
          - owner_address_street_type
          - owner_address_building_name
          - owner_address_city
          - owner_address_zip
          - owner_address_state
          - owner_address_country
          - owner_inactivity_reason
          - owner_inactivity_reason_details
          - owner_gender
          - owner_dob
          - owner_national_id_nr
          - owner_nationality
          - owner_social_service_number
          - owner_id
          - ownership
          - ownership_date
          - utility_provider
          - external_customer_id
          - branch_or_division
          - owner_context
        prefillOptions:
          type: string
          description: "Desired prefill behaviour of the field - by default it is\
            \ prefillable_editable. A field can be prefilled from the data returned\
            \ by a previous service which is associated to the field, or in the case\
            \ of end-to-end KYB, the data submitted on behalf of an owner in the KYB\
            \ flow is automatically prefilled in the KYC flow which the owner interacts\
            \ with."
          enum:
          - non_prefillable
          - prefillable_editable
          - prefillable_non_editable_hidden
          - prefillable_non_editable_visible
        autoCaptureOptions:
          type: string
          description: Desired autocapture behaviour. By default the field it will
            be hidden in the form and its value will be filled automatically when
            executing the flow.</br>'manually_entered' - the field will be visible
            and can be filled by the user.</br>'auto_populate' - behaves the same
            way as the default (no value).
          enum:
          - auto_populate
          - manually_entered
        normalizedName:
          type: string
          description: Normalized name or alias of the field. Use this to identify
            the field when role attribute is not defined.
        useAlternateFullName:
          type: object
    textarea:
      required:
      - id
      - name
      - validations
      type: object
      properties:
        id:
          type: string
          description: ID of the form element
        condition:
          $ref: '#/components/schemas/FormElementCondition'
        name:
          type: string
          description: Field label
        placeholder:
          type: string
          description: <a href="https://www.w3schools.com/TAGS/att_input_placeholder.asp">Placeholder</a>
            value (short hint that describes the expected value of an input field)
        supportingText:
          type: string
          description: Supporting text value (short desription for the field)
        validations:
          type: array
          description: Required input validations
          items:
            $ref: '#/components/schemas/Validation'
        value:
          type: string
          description: Default value to be prefilled
        role:
          type: string
          enum:
          - first_name
          - last_name
          - second_last_name
          - middle_name
          - full_name
          - alternate_full_name
          - alias
          - cpr
          - email
          - confirm_email
          - phone_number
          - mobile_number
          - address_1
          - address_street
          - address_street_nr
          - address_street_type
          - address_house_nr
          - address_building_name
          - address_floor
          - address_letter
          - address_city
          - address_zip
          - address_state
          - address_country
          - gender
          - dob
          - national_id_nr
          - social_service_number
          - nationality
          - company_nr
          - company_duns_nr
          - company_country_incorporation
          - company_name
          - company_doi
          - company_nace
          - company_lei
          - company_vat
          - company_street
          - company_building_nr
          - company_city
          - company_zip
          - company_state
          - company_state_address
          - company_country
          - company_postal_code
          - company_building_name
          - company_street_type
          - company_street_number
          - company_unit_number
          - company_address_full
          - company_type
          - company_status
          - company_email
          - company_phone_number
          - phone_verification
          - owner_first_name
          - owner_last_name
          - owner_second_last_name
          - owner_company_name
          - owner_company_nr
          - owner_country_incorporation
          - owner_middle_name
          - owner_full_name
          - owner_alias
          - owner_ssn
          - owner_entity_type
          - owner_is_active
          - owner_is_director
          - owner_is_owner
          - owner_email
          - owner_phone_number
          - owner_mobile_number
          - owner_address_street
          - owner_address_street_nr
          - owner_address_house_nr
          - owner_address_floor
          - owner_address_letter
          - owner_address_full
          - owner_address_street_type
          - owner_address_building_name
          - owner_address_city
          - owner_address_zip
          - owner_address_state
          - owner_address_country
          - owner_inactivity_reason
          - owner_inactivity_reason_details
          - owner_gender
          - owner_dob
          - owner_national_id_nr
          - owner_nationality
          - owner_social_service_number
          - owner_id
          - ownership
          - ownership_date
          - utility_provider
          - external_customer_id
          - branch_or_division
          - owner_context
    subsequent:
      required:
      - id
      type: object
      properties:
        id:
          type: string
          description: ID of the node
    twilio:
      required:
      - id
      type: object
      properties:
        id:
          type: string
          description: ID of the node
        token:
          type: string
          description: Token that needs to be passed in the submit step
        canGoBack:
          type: boolean
          description: Flow control for going back to previous step
          default: false
        accountId:
          type: string
          default: ""
    CompanySearch:
      type: object
      properties:
        name:
          type: string
          description: Name of the company
        registrationNumber:
          type: string
          description: Company registration number
        dunsNumber:
          type: string
        businessStatus:
          type: string
        businessType:
          type: string
        fullAddress:
          type: string
        address:
          $ref: '#/components/schemas/CompanySearchAddress'
      description: Companies found
    CompanySearchAddress:
      type: object
      properties:
        streetNumber:
          type: string
        streetName:
          type: string
        streetType:
          type: string
        provinceState:
          type: string
        city:
          type: string
        postalCode:
          type: string
        unitNumber:
          type: string
        buildingName:
          type: string
        buildingNumber:
          type: string
    trulioo_kyb_search:
      required:
      - id
      type: object
      properties:
        id:
          type: string
          description: ID of the node
        results:
          type: array
          description: Companies found
          items:
            $ref: '#/components/schemas/CompanySearch'
        canGoBack:
          type: boolean
          description: Flow control for going back to previous step
          default: false
        accountId:
          type: string
          default: ""
    Owner:
      type: object
      properties:
        firstName:
          type: string
          description: Firstname of the owner
        lastName:
          type: string
          description: Lastname of the owner
        target:
          type: string
          description: Email/SMS of the owner
      description: owners that email/sms will be sent to
    flow_connector:
      required:
      - id
      type: object
      properties:
        id:
          type: string
          description: ID of the node
        shareType:
          type: string
          description: Type of the target (EMAIL/SMS)
          enum:
          - sms
          - email
          - none
        owners:
          type: array
          description: owners that email/sms will be sent to
          items:
            $ref: '#/components/schemas/Owner'
        canGoBack:
          type: boolean
          description: Flow control for going back to previous step
          default: false
        accountId:
          type: string
          default: ""
    trulioo_doc_v:
      required:
      - id
      type: object
      properties:
        id:
          type: string
          description: ID of the node
        shortCode:
          type: string
          description: Code needed to initialize Trulioo DocV SDK
        supportedLanguage:
          type: string
          description: Configuration of Localization language for the DocV SDK
        shouldShowRegionSelect:
          type: boolean
          description: Determine whether to show the UI for DocV Region Selection
        canGoBack:
          type: boolean
          description: Flow control for going back to previous step
          default: false
        accountId:
          type: string
          default: ""
    trulioo_electronic_id:
      required:
      - id
      type: object
      properties:
        id:
          type: string
          description: ID of the node
        authenticationUrl:
          type: string
          description: "The authentication url the end client will use to authenticate\
            \ with the 3rd party vendor. It's possible to add an optional query param\
            \ to the authentication url, so that when the end client finishes the\
            \ e-ID experience they will be redirected to the specified page. The query\
            \ param name is 'redirectUrl' and you can append it to the authentication\
            \ url like such: 'authenticationUrl&redirectUrl=my.page.com'. The 'authenticationUrl'\
            \ will always have at least one query param, so you should always add\
            \ another one named 'redirectUrl'. When the end client opens this url,\
            \ it will be prompted with the 3rd party vendor's authentication page.\
            \ When the authentication flow is completed by the end client, eventually\
            \ a callback to WFS will be triggered and the end client's service data\
            \ will be available. If you provided the 'redirectUrl' query param, the\
            \ end client will also be redirected to that page."
        providerName:
          type: string
          description: The name of the 3rd party provider that will be used for authentication
        canGoBack:
          type: boolean
          description: Flow control for going back to previous step
          default: false
        accountId:
          type: string
          default: ""
    InitOcrOption:
      type: object
      properties:
        id:
          type: string
          description: Unique identifier for the extracted profile. This ID must be
            submitted in the 'selectedIds' field.
        title:
          type: string
          description: "A display-friendly title, usually the extracted full name,\
            \ used to represent the candidate option during selection."
        fields:
          type: array
          description: A collection of structured attributes identified by the OCR
            engine for a candidate option. These fields provide the preview data used
            to help the client select the correct profile.
          items:
            $ref: '#/components/schemas/InitOcrOptionField'
      description: "A list of candidate Persons with Significant Control (PSCs) or\
        \ shareholder entities identified in the document. If 'extractPscs' is true,\
        \ the client should select the relevant IDs and submit them via the 'selectedIds'\
        \ field to proceed."
    InitOcrOptionField:
      type: object
      properties:
        label:
          type: string
          description: The standardized label identifying the category of information
            mapped from the raw document data.
          enum:
          - first_name
          - last_name
          - second_last_name
          - middle_name
          - full_name
          - alternate_full_name
          - alias
          - cpr
          - email
          - confirm_email
          - phone_number
          - mobile_number
          - address_1
          - address_street
          - address_street_nr
          - address_street_type
          - address_house_nr
          - address_building_name
          - address_floor
          - address_letter
          - address_city
          - address_zip
          - address_state
          - address_country
          - gender
          - dob
          - national_id_nr
          - social_service_number
          - nationality
          - company_nr
          - company_duns_nr
          - company_country_incorporation
          - company_name
          - company_doi
          - company_nace
          - company_lei
          - company_vat
          - company_street
          - company_building_nr
          - company_city
          - company_zip
          - company_state
          - company_state_address
          - company_country
          - company_postal_code
          - company_building_name
          - company_street_type
          - company_street_number
          - company_unit_number
          - company_address_full
          - company_type
          - company_status
          - company_email
          - company_phone_number
          - phone_verification
          - owner_first_name
          - owner_last_name
          - owner_second_last_name
          - owner_company_name
          - owner_company_nr
          - owner_country_incorporation
          - owner_middle_name
          - owner_full_name
          - owner_alias
          - owner_ssn
          - owner_entity_type
          - owner_is_active
          - owner_is_director
          - owner_is_owner
          - owner_email
          - owner_phone_number
          - owner_mobile_number
          - owner_address_street
          - owner_address_street_nr
          - owner_address_house_nr
          - owner_address_floor
          - owner_address_letter
          - owner_address_full
          - owner_address_street_type
          - owner_address_building_name
          - owner_address_city
          - owner_address_zip
          - owner_address_state
          - owner_address_country
          - owner_inactivity_reason
          - owner_inactivity_reason_details
          - owner_gender
          - owner_dob
          - owner_national_id_nr
          - owner_nationality
          - owner_social_service_number
          - owner_id
          - ownership
          - ownership_date
          - utility_provider
          - external_customer_id
          - branch_or_division
          - owner_context
        value:
          type: string
          description: The specific data extracted for the attribute. Returns 'N/A'
            if the information is missing or illegible in the document.
      description: A collection of structured attributes identified by the OCR engine
        for a candidate option. These fields provide the preview data used to help
        the client select the correct profile.
    person_ocr:
      required:
      - id
      type: object
      properties:
        id:
          type: string
          description: ID of the node
        options:
          type: array
          description: A list of candidate profiles extracted from the uploaded documents.
            The client must submit exactly one option ID to advance the workflow.
          items:
            $ref: '#/components/schemas/InitOcrOption'
        canGoBack:
          type: boolean
          description: Flow control for going back to previous step
          default: false
        accountId:
          type: string
          default: ""
    business_ocr:
      required:
      - id
      type: object
      properties:
        id:
          type: string
          description: ID of the node
        business:
          type: array
          description: A list of normalized corporate attributes extracted from the
            document.
          items:
            $ref: '#/components/schemas/InitOcrOptionField'
        pscs:
          type: array
          description: "A list of candidate Persons with Significant Control (PSCs)\
            \ or shareholder entities identified in the document. If 'extractPscs'\
            \ is true, the client should select the relevant IDs and submit them via\
            \ the 'selectedIds' field to proceed."
          items:
            $ref: '#/components/schemas/InitOcrOption'
        extractPscs:
          type: boolean
          description: "Indicates whether the workflow is configured to extract PSC\
            \ data. When true, the client must present the list of PSCs to the end\
            \ user and submit the selected IDs to advance the workflow."
        canGoBack:
          type: boolean
          description: Flow control for going back to previous step
          default: false
        accountId:
          type: string
          default: ""
    pending:
      type: object
      properties:
        pendingMessage:
          type: string
          description: Message to display while pending
    end:
      required:
      - id
      type: object
      properties:
        id:
          type: string
          description: ID of the node
        text:
          type: string
          description: Text to display at the end of the flow
        redirectUrl:
          type: string
          description: URL to be redirected to at the end of the flow
        fullClientData:
          type: string
          description: Full client service data in JSON format
    ErrorResponse:
      type: object
      properties:
        message:
          type: string
          description: Error message
        code:
          type: integer
          description: Internal API error code
          format: int32
    init_data:
      type: object
      example:
        fieldInitDataMap:
          some_node_id:
            firstNameFieldId: John
            aNumberFieldId: 123
          some_node_id2:
            anEmailFieldId: some_email@trulioo.com
            phoneNumberFieldId:
              area: "+1"
              country: CA
              number: "2154567890"
    GetInitDataResponse:
      type: object
      properties:
        nodeId:
          type: string
          description: Node ID of form elements
        title:
          type: string
          description: Node title
        elements:
          type: array
          description: List of elements available to be initialized
          items:
            $ref: '#/components/schemas/InitDataElement'
    InitDataElement:
      type: object
      properties:
        id:
          type: string
          description: ID of the form element
        label:
          type: string
          description: Field label
        role:
          type: string
          enum:
          - first_name
          - last_name
          - second_last_name
          - middle_name
          - full_name
          - alternate_full_name
          - alias
          - cpr
          - email
          - confirm_email
          - phone_number
          - mobile_number
          - address_1
          - address_street
          - address_street_nr
          - address_street_type
          - address_house_nr
          - address_building_name
          - address_floor
          - address_letter
          - address_city
          - address_zip
          - address_state
          - address_country
          - gender
          - dob
          - national_id_nr
          - social_service_number
          - nationality
          - company_nr
          - company_duns_nr
          - company_country_incorporation
          - company_name
          - company_doi
          - company_nace
          - company_lei
          - company_vat
          - company_street
          - company_building_nr
          - company_city
          - company_zip
          - company_state
          - company_state_address
          - company_country
          - company_postal_code
          - company_building_name
          - company_street_type
          - company_street_number
          - company_unit_number
          - company_address_full
          - company_type
          - company_status
          - company_email
          - company_phone_number
          - phone_verification
          - owner_first_name
          - owner_last_name
          - owner_second_last_name
          - owner_company_name
          - owner_company_nr
          - owner_country_incorporation
          - owner_middle_name
          - owner_full_name
          - owner_alias
          - owner_ssn
          - owner_entity_type
          - owner_is_active
          - owner_is_director
          - owner_is_owner
          - owner_email
          - owner_phone_number
          - owner_mobile_number
          - owner_address_street
          - owner_address_street_nr
          - owner_address_house_nr
          - owner_address_floor
          - owner_address_letter
          - owner_address_full
          - owner_address_street_type
          - owner_address_building_name
          - owner_address_city
          - owner_address_zip
          - owner_address_state
          - owner_address_country
          - owner_inactivity_reason
          - owner_inactivity_reason_details
          - owner_gender
          - owner_dob
          - owner_national_id_nr
          - owner_nationality
          - owner_social_service_number
          - owner_id
          - ownership
          - ownership_date
          - utility_provider
          - external_customer_id
          - branch_or_division
          - owner_context
        normalizedName:
          type: string
          description: Normalized name or alias of the field. Use this to identify
            the field when role attribute is not defined.
        type:
          type: string
          description: The type of the field data that needs to be submitted
          enum:
          - text
          - number
          - email
          - radio
          - country_select
          - date_picker
          - phone_number
      description: List of elements available to be initialized
    CreateSignedUrlResponse:
      type: object
      properties:
        signedUrl:
          type: string
          description: The generated URL
        endClientId:
          type: string
          description: The ID of the end client for which the URL was generated
    form_submit:
      type: object
      additionalProperties:
        type: object
        example:
          firstNameFieldId: John
          lastNameFieldId: Doe
          streetFieldId: main street
          aNumberFieldId: 4
          aCheckBoxGroupElementId:
          - first_check_box_selected
          - second_check_box_selected
          phoneNumberFieldId:
            area: "+1"
            number: "2154567890"
      example:
        firstNameFieldId: John
        lastNameFieldId: Doe
        streetFieldId: main street
        aNumberFieldId: 4
        aCheckBoxGroupElementId:
        - first_check_box_selected
        - second_check_box_selected
        phoneNumberFieldId:
          area: "+1"
          number: "2154567890"
    twilio_submit:
      type: object
      properties:
        code:
          type: string
          description: The code used to validate client's phone number. Should have
            the format <code>&lt;token_received_at_init&gt;:&lt;4_digit_code_submitted_by_client&gt;</code>.
    KybCompanyAddress:
      type: object
      properties:
        streetNumber:
          type: string
        streetName:
          type: string
        streetType:
          type: string
        state:
          type: string
        city:
          type: string
        postalCode:
          type: string
        unitNumber:
          type: string
        buildingName:
          type: string
        buildingNumber:
          type: string
      description: The detailed address of the company
    trulioo_kyb_search_submit:
      type: object
      properties:
        name:
          type: string
          description: Name of the company selected
        registrationNumber:
          type: string
          description: Company registration number
        businessStatus:
          type: string
          description: The status of the company
        dunsNumber:
          type: string
          description: Data Universal Numbering System is a proprietary system that
            assigns a unique numeric identifier referred to as a 'DUNS number' to
            a single business entity
        businessType:
          type: string
          description: The type of the company
        fullAddress:
          type: string
          description: The full address of the company
        address:
          $ref: '#/components/schemas/KybCompanyAddress'
    docv_submit:
      type: object
      properties:
        transactionId:
          type: string
          description: Transaction ID for the Trulioo DocV process
        errorMessage:
          type: string
          description: The error message from Trulioo DocV
    flow_connector_submit:
      type: object
    trulioo_electronic_id_submit:
      required:
      - externalFlowFinished
      type: object
      properties:
        externalFlowFinished:
          type: boolean
    person_ocr_submit:
      type: object
      properties:
        selectedIds:
          type: array
          description: "An array containing the unique ID of the selected OCR profile.\
            \ For this step, exactly one valid ID must be provided to advance the\
            \ workflow; providing multiple or invalid IDs will result in an error."
          items:
            type: string
            description: "An array containing the unique ID of the selected OCR profile.\
              \ For this step, exactly one valid ID must be provided to advance the\
              \ workflow; providing multiple or invalid IDs will result in an error."
    business_ocr_submit:
      type: object
      properties:
        selectedIds:
          type: array
          description: "An array of unique IDs corresponding to the selected PSCs.\
            \ Unlike Person OCR, Business OCR accepts multiple IDs to identify all\
            \ relevant shareholders or beneficial owners. If no relevant candidates\
            \ are found or selected, submit an empty array '[]' to advance the workflow."
          items:
            type: string
            description: "An array of unique IDs corresponding to the selected PSCs.\
              \ Unlike Person OCR, Business OCR accepts multiple IDs to identify all\
              \ relevant shareholders or beneficial owners. If no relevant candidates\
              \ are found or selected, submit an empty array '[]' to advance the workflow."
    FileUploadResponse:
      type: object
      properties:
        key:
          type: string
          description: Name of the uploaded file
    FileUploadForm:
      required:
      - file
      type: object
      properties:
        file:
          type: string
          description: File to upload
          format: binary
        fieldId:
          type: string
          description: Optional field ID for file upload
      description: Form data for file upload
    FlowConnectorResponse:
      type: object
      properties:
        token:
          type: string
          description: The generated token
    FlowConnectResponse:
      type: object
      properties:
        flowId:
          type: string
          description: The ID of the flow connected with
    CreateLinkedLeadsRequestPayload:
      type: object
      properties:
        to:
          type: string
          description: EndClient ID to link to
        from:
          type: string
          description: EndClient ID to link from
        type:
          type: string
          description: Type of the link to be created
          enum:
          - RELATES_TO
          - DUPLICATE_OF
          - OWNS
          - OWNED_BY
    DeleteEndclientsManuallyRequestPayload:
      type: object
      properties:
        endClientIds:
          type: array
          description: List of end client IDs to be deleted. A maximum of 2000 IDs
            can be specified in a single request.
          items:
            type: string
            description: List of end client IDs to be deleted. A maximum of 2000 IDs
              can be specified in a single request.
    DeleteLinkedLeadsRequestPayload:
      type: object
      properties:
        to:
          type: string
          description: EndClient ID to link to
        from:
          type: string
          description: EndClient ID to link from
    UpdateEndClientsStatusRequestPayload:
      type: object
      properties:
        endClientIds:
          type: array
          description: A list of unique identifiers for the clients to update. A maximum
            of 2000 IDs can be included.
          items:
            type: string
            description: A list of unique identifiers for the clients to update. A
              maximum of 2000 IDs can be included.
        status:
          type: string
          description: "The new status to apply to all specified clients. \nThe request\
            \ will be validated to ensure only permitted status transitions occur.\
            \ \n\n**Allowed Transitions:** \n- From `Accepted` to `Declined` or `Pending\
            \ Review` \n- From `In Progress` to `Abandoned` \n- From `Declined`to\
            \ `Accepted` or `Pending Review` \n- From `Pending Review` to `Accepted`\
            \ or `Declined` \n\nNote: Leads with a status of `Abandoned` or `Not Started`\
            \ cannot be updated."
          enum:
          - ACCEPTED
          - REJECTED
          - PENDING_REVIEW
          - IN_PROGRESS
          - NOT_STARTED
          - ABANDONED
        noteBody:
          type: string
          description: A note detailing the reason for the status update.
