Sikoia Identity Verification API

The Identity Verification API from Sikoia — 3 operation(s) for identity verification.

OpenAPI Specification

sikoia-identity-verification-api-openapi.yml Raw ↑
openapi: 3.0.1
info:
  title: Sikoia Adverse Media Identity Verification API
  termsOfService: https://sikoia.com/About/Terms
  version: '1.0'
servers:
- url: https://api.sikoia.com
  description: API (Production)
- url: https://oauth2.sikoia.com
  description: Authorization Server (Production)
- url: https://api-staging.sikoia.com
  description: API (Staging)
- url: https://oauth2-staging.sikoia.com
  description: Authorization Server (Staging)
security:
- authorizationHeader: []
- apiKeyHeader: []
tags:
- name: Identity Verification
paths:
  /v2/identity:
    post:
      tags:
      - Identity Verification
      summary: Request IDV
      description: "### Requests an identity verification for a person.\r\n\r\nProvide the `person_id`, and optionally specify the `country_code` if you already know the country of issue for the document to be provided.\r\n\r\nThis returns Sikoia's `verification_url` and an IDV provider's `direct_url` (if the country is specified in the request). Both URLs can be used to commence the identity verification process.\r\n"
      operationId: POST_v2-identity
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SikoiaSharedModels.BusinessSupport.Identity.Request.IdentityVerificationRequest'
            example:
              person_id: 0fa323ec-b6e2-4a7a-8fea-58f2b264c57e
              country_code: GB
      responses:
        '201':
          description: IDV Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SikoiaSharedModels.BusinessSupport.Identity.Response.IdentityVerificationResponse'
              example:
                request_id: 0baa703c-950b-46b7-a424-8c24991987fd
                status: Pending
                person_id: 0fa323ec-b6e2-4a7a-8fea-58f2b264c57e
                datetime_requested: '2024-02-12T15:03:40.3890000+00:00'
                datetime_completed: string
                message: string
                country_code: GB
                verification_url: https://verify.sikoia.com/v2/123456
                direct_url: https://alchemy.veriff.com/v/123456
        '400':
          description: Company Entity Deleted/Not Found or Country Not Recognised
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SikoiaCore.Common.SikoiaErrorResponse'
              example:
                type: InvalidRequest
                status: 400
                title: Validation Errors
                detail: Entity Id is required.
                correlation_id: ee62da4a-9d31-4665-a6bc-078f43e702cb
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SikoiaCore.Common.SikoiaErrorResponse'
              example:
                type: InvalidToken
                status: 401
                title: Invalid Token
                detail: Invalid token
                correlation_id: 1bc27606-b675-4a5e-aa93-19bfe4b88d07
        '403':
          description: Insufficient Credits
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SikoiaCore.Common.SikoiaErrorResponse'
              example:
                type: InsufficientPermissions
                status: 403
                title: Service not enabled
                detail: Service is not currently enabled.
                correlation_id: f6a20bae-f8ee-47ee-9a87-2f48b5392ff9
        '429':
          description: Too Many Requests
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SikoiaCore.Common.SikoiaErrorResponse'
              example:
                type: RateLimit
                status: 429
                title: Too Many Requests
                detail: You've exceeded the maximum API request limit per minute. Please try again later.
                correlation_id: 76074003-8334-4910-aa14-867f5bd0ecc0
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SikoiaCore.Common.SikoiaErrorResponse'
              example:
                type: ServerError
                status: 500
                title: Internal Server Error
                detail: Something has gone wrong, please try again
                correlation_id: e7388aa0-caf7-4472-ba83-9fd773c67dba
  /v2/persons/{person_id}/identity-verifications:
    get:
      tags:
      - Identity Verification
      summary: List all IDV requests
      description: "### Returns a list of all identity verification requests for a person.\r\n\r\nThis endpoint provides a list of all identity verification requests created for a specific `person_id`.\r\n\r\nThe list includes the `request_id` for each request, which can be used to retrieve the identity verification result using the `GET /v2/identity/{request_id}` endpoint.\r\n"
      operationId: GET_v2-persons-person_id-identity-verifications
      parameters:
      - name: person_id
        in: path
        description: Sikoia ID for the person
        required: true
        schema:
          type: string
      - name: complete
        in: query
        description: Exclude incomplete requests from the list, defaults to false
        schema:
          type: boolean
      - name: verification_status
        in: query
        description: Filter by verification status. Can be comma-separated for multiple values.
        schema:
          type: string
      responses:
        '200':
          description: IDV Requests List
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SikoiaSharedModels.BusinessSupport.Identity.Response.IdentityVerificationListResponse'
              example:
                person_id: 0fa323ec-b6e2-4a7a-8fea-58f2b264c57e
                identity_verification_requests:
                - request_id: 0baa703c-950b-46b7-a424-8c24991987fd
                  status: Pending
                  verification_status: ''
                  datetime_requested: '2024-02-12T15:03:40.3890000+00:00'
                  datetime_completed: string
                  message: string
                  country_code: GB
                  verification_url: https://verify.sikoia.com/v2/123456
                  direct_url: https://alchemy.veriff.com/v/123456
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SikoiaCore.Common.SikoiaErrorResponse'
              example:
                type: InvalidToken
                status: 401
                title: Invalid Token
                detail: Invalid token
                correlation_id: 081c4cdd-3b7c-42c2-81b9-5f7b903f0f2f
        '404':
          description: Person Entity Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SikoiaCore.Common.SikoiaErrorResponse'
              example:
                type: ResourceNotFound
                status: 404
                title: Resource Not Found
                detail: No resources found with id 014cd371-3a72-4933-ad88-4c62bd3f1b24.
                correlation_id: bda9e81b-f8c0-4f75-a059-6acc5d8c5175
        '429':
          description: Too Many Requests
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SikoiaCore.Common.SikoiaErrorResponse'
              example:
                type: RateLimit
                status: 429
                title: Too Many Requests
                detail: You've exceeded the maximum API request limit per minute. Please try again later.
                correlation_id: 8066dd9e-42e3-43e8-85fc-a3585d8b52a1
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SikoiaCore.Common.SikoiaErrorResponse'
              example:
                type: ServerError
                status: 500
                title: Internal Server Error
                detail: Something has gone wrong, please try again
                correlation_id: c9f4ad7f-1ed1-49df-80d9-765a66c5c8bb
  /v2/identity/{request_id}:
    get:
      tags:
      - Identity Verification
      summary: Retrieve IDV result
      description: "### Retrieve IDV status and result.\r\n\r\nThis endpoint provides the result of a specific IDV request identified by `request_id` in a structured format.\r\n\r\nThe information includes details on the verification status, the verified person, and the provided document.\r\n"
      operationId: GET_v2-identity-request_id
      parameters:
      - name: request_id
        in: path
        description: Sikoia ID for the request
        required: true
        schema:
          type: string
      responses:
        '200':
          description: IDV Result
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SikoiaSharedModels.BusinessSupport.Identity.Response.Mapped.IdentityVerificationMappedResponse'
              example:
                request_id: 0baa703c-950b-46b7-a424-8c24991987fd
                status: Complete
                person_id: 0fa323ec-b6e2-4a7a-8fea-58f2b264c57e
                datetime_requested: '2024-02-12T15:03:40.3890000+00:00'
                datetime_completed: '2024-02-12T15:19:37.2110000+00:00'
                message: string
                country_code: GB
                verification_url: https://verify.sikoia.com/v2/123456
                direct_url: https://alchemy.veriff.com/v/123456
                data:
                  verification_status: Approved
                  acceptance_time: '2024-02-12T15:03:40.2370000+00:00'
                  decision_time: '2024-02-12T15:19:34.9040000+00:00'
                  person:
                    first_name: John
                    surname: Smith
                    full_name: John Smith
                    date_of_birth: '1980-01-01'
                    birth_year: '1980'
                    birth_month: '1'
                    birth_day: '1'
                    place_of_birth: string
                    gender: string
                    nationality: string
                    address: string
                  document:
                    type: Passport
                    number: '1234567890'
                    country_code: GB
                    date_of_issue: '2020-01-01'
                    date_of_expiry: '2030-01-01'
                  media:
                  - mime_type: video/webm
                    type: selfid_video
                    size: '621901'
                    upload_date: string
                    uri: https://sikoialake.blob.core.windows.net/12345678
                    uri_expiry_in_minutes: '30'
                  meta_data:
                    status_codes:
                    - value: '0'
                      type: DocumentStatusReport2.Remark
                      description: The authentication tests passed.
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SikoiaCore.Common.SikoiaErrorResponse'
              example:
                type: InvalidToken
                status: 401
                title: Invalid Token
                detail: Invalid token
                correlation_id: 00b3d778-84d1-40da-aaed-519c498ea4bf
        '404':
          description: Request ID Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SikoiaCore.Common.SikoiaErrorResponse'
              example:
                type: ResourceNotFound
                status: 404
                title: Resource Not Found
                detail: No resources found with id 1221d5e0-8bc5-46b9-9943-65bb609a8ce2.
                correlation_id: 1ed8383f-c0dd-4bc4-93d3-842e636b3355
        '429':
          description: Too Many Requests
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SikoiaCore.Common.SikoiaErrorResponse'
              example:
                type: RateLimit
                status: 429
                title: Too Many Requests
                detail: You've exceeded the maximum API request limit per minute. Please try again later.
                correlation_id: 75fe7a2e-1381-4e30-8ae5-af394d31f8f8
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SikoiaCore.Common.SikoiaErrorResponse'
              example:
                type: ServerError
                status: 500
                title: Internal Server Error
                detail: Something has gone wrong, please try again
                correlation_id: c14ab866-e8fe-4ccd-af70-4cd448d93008
components:
  schemas:
    SikoiaSharedModels.BusinessSupport.Identity.Request.IdentityVerificationRequest:
      title: Identity Verification Request
      required:
      - person_id
      type: object
      properties:
        person_id:
          minLength: 1
          type: string
          description: Sikoia ID for the person
          format: uuid
          example: 0fa323ec-b6e2-4a7a-8fea-58f2b264c57e
        country_code:
          type: string
          description: Two letter ISO country code, e.g. GB
          nullable: true
          example: GB
      additionalProperties: false
    SikoiaSharedModels.BusinessSupport.Identity.Response.IdentityVerificationOrchestrationResponse:
      title: Identity Verification Orchestration Response
      type: object
      properties:
        request_id:
          type: string
          description: Sikoia ID for the request
          nullable: true
          example: 0baa703c-950b-46b7-a424-8c24991987fd
        status:
          type: string
          description: The status of the request(`Pending` `Complete` `Failed` `Expired`)
          nullable: true
          example: Pending
        verification_status:
          enum:
          - Approved
          - Declined
          - ResubmissionRequested
          - NotCompleted
          type: string
          description: The Status of Verification
          nullable: true
          example: ''
        datetime_requested:
          type: string
          description: The time the request was made
          nullable: true
          readOnly: true
          example: '2024-02-12T15:03:40.389Z'
        datetime_completed:
          type: string
          description: The time the request was completed
          nullable: true
          readOnly: true
        message:
          type: string
          description: Additional detail about the request
          nullable: true
        country_code:
          type: string
          description: Two letter ISO country code, e.g. GB
          nullable: true
          example: GB
        verification_url:
          type: string
          description: Sikoia’s verification URL
          nullable: true
          example: https://verify.sikoia.com/v2/123456
        direct_url:
          type: string
          description: IDV provider’s verification URL
          nullable: true
          example: https://alchemy.veriff.com/v/123456
      additionalProperties: false
    SikoiaSharedModels.BusinessSupport.Identity.Response.Mapped.Person:
      title: Person
      type: object
      properties:
        first_name:
          type: string
          description: The First Name Found on the Document
          nullable: true
          example: John
        surname:
          type: string
          description: The Surname Found on the Document
          nullable: true
          example: Smith
        full_name:
          type: string
          description: The Full Name Found on the Document
          nullable: true
          example: John Smith
        date_of_birth:
          type: string
          description: The Date Of Birth Found on the Document
          nullable: true
          example: '1980-01-01'
        birth_year:
          type: integer
          description: The Birth Year Found on the Document
          format: int32
          nullable: true
          example: '1980'
        birth_month:
          type: integer
          description: The Birth Month Found on the Document
          format: int32
          nullable: true
          example: '1'
        birth_day:
          type: integer
          description: The Birth Day Found on the Document
          format: int32
          nullable: true
          example: '1'
        place_of_birth:
          type: string
          description: The Place Of Birth Found on the Document
          nullable: true
        gender:
          type: string
          description: The Gender Found on the Document
          nullable: true
        nationality:
          type: string
          description: The Nationality Found on the Document
          nullable: true
        address:
          type: string
          description: The Address Found on the Document
          nullable: true
      additionalProperties: false
    SikoiaSharedModels.BusinessSupport.Identity.Response.Mapped.Status:
      title: Identity Verification Status
      type: object
      properties:
        value:
          type: string
          description: The actual status value, can be either numeric or text
          nullable: true
          example: '0'
        type:
          type: string
          description: The context for the content in `value` to separate full status messages from supplementary information provided in remarks
          nullable: true
          example: DocumentStatusReport2.Remark
        description:
          type: string
          description: A short explanation for the content in `value`
          nullable: true
          example: The authentication tests passed.
      additionalProperties: false
    SikoiaSharedModels.BusinessSupport.Identity.Response.Mapped.Media:
      title: Media
      type: object
      properties:
        mime_type:
          type: string
          description: The MIME Type of the Media (e.g. image/jpg)
          nullable: true
          example: video/webm
        type:
          type: string
          description: The Type of the Media (e.g. ID Front or Selfie)
          nullable: true
          example: selfid_video
        size:
          type: integer
          description: The Size (in bytes) of the Media
          format: int32
          nullable: true
          example: '621901'
        upload_date:
          type: string
          description: The Timestamp of the Media Upload
          nullable: true
        uri:
          type: string
          description: The URI Where the Media Can Be Downloaded
          nullable: true
          example: https://sikoialake.blob.core.windows.net/12345678
        uri_expiry_in_minutes:
          type: integer
          description: The Expiry Time (in minutes) of the URI
          format: int32
          nullable: true
          example: '30'
      additionalProperties: false
    SikoiaSharedModels.BusinessSupport.Identity.Response.Mapped.IdentityVerificationData:
      title: Identity Verification Data
      type: object
      properties:
        verification_status:
          enum:
          - Approved
          - Declined
          - ResubmissionRequested
          - NotCompleted
          type: string
          description: "The Sikoia standardised verification status. Possible values are:\n- `Approved`: The IDV has been successful. The document is authentic and matches the person.\n- `Declined`: The IDV has been declined. The document may not be authentic or not match the person.\n- `Resubmission Requested`: It was not possible to make a decision based on the media provided (e.g. they were blurry). The person will need to go through the IDV process again.\n- `Not Completed`: The IDV process was either never started or abandoned. \n"
          nullable: true
          example: Approved
        acceptance_time:
          type: string
          description: The Acceptance Time of the IDV Request
          nullable: true
          example: '2024-02-12T15:03:40.237Z'
        decision_time:
          type: string
          description: The Decision Time of the IDV Request
          nullable: true
          example: '2024-02-12T15:19:34.904Z'
        person:
          $ref: '#/components/schemas/SikoiaSharedModels.BusinessSupport.Identity.Response.Mapped.Person'
        document:
          $ref: '#/components/schemas/SikoiaSharedModels.BusinessSupport.Identity.Response.Mapped.Document'
        media:
          type: array
          items:
            $ref: '#/components/schemas/SikoiaSharedModels.BusinessSupport.Identity.Response.Mapped.Media'
          description: The List of Images/Videos Collected for the IDV
          nullable: true
        meta_data:
          $ref: '#/components/schemas/SikoiaSharedModels.BusinessSupport.Identity.Response.Mapped.IdentityVerificationMetaData'
      additionalProperties: false
    SikoiaSharedModels.BusinessSupport.Identity.Response.IdentityVerificationListResponse:
      title: Identity Verification List Response
      type: object
      properties:
        person_id:
          type: string
          description: Sikoia ID for the person
          format: uuid
          nullable: true
          readOnly: true
          example: 0fa323ec-b6e2-4a7a-8fea-58f2b264c57e
        identity_verification_requests:
          type: array
          items:
            $ref: '#/components/schemas/SikoiaSharedModels.BusinessSupport.Identity.Response.IdentityVerificationOrchestrationResponse'
          description: The list of all IDV requests for the person
          nullable: true
      additionalProperties: false
    SikoiaCore.Common.SikoiaErrorResponse:
      title: Error Response
      type: object
      properties:
        type:
          type: string
          description: The error type
          readOnly: true
        status:
          type: integer
          description: HTTP status code of the error
          format: HttpCode
          readOnly: true
        title:
          type: string
          description: A short description of the error
          readOnly: true
        detail:
          type: string
          description: More details about what went wrong
          readOnly: true
        correlation_id:
          type: string
          description: Correlation ID, please include this in any support tickets raised
          readOnly: true
      additionalProperties: false
      description: 'See the [Response Guide](https://docs.sikoia.com/docs/api-behaviour#responses) for more detail '
    SikoiaSharedModels.BusinessSupport.Identity.Response.IdentityVerificationResponse:
      title: Identity Verification Response
      type: object
      properties:
        request_id:
          type: string
          description: Sikoia ID for the request
          nullable: true
          example: 0baa703c-950b-46b7-a424-8c24991987fd
        status:
          type: string
          description: The status of the request(`Pending` `Failed`)
          nullable: true
          example: Pending
        person_id:
          type: string
          description: Sikoia ID for the person
          format: uuid
          nullable: true
          readOnly: true
          example: 0fa323ec-b6e2-4a7a-8fea-58f2b264c57e
        datetime_requested:
          type: string
          description: The time the request was made
          nullable: true
          readOnly: true
          example: '2024-02-12T15:03:40.389Z'
        datetime_completed:
          type: string
          description: The time the identity verification was completed
          nullable: true
          readOnly: true
        message:
          type: string
          description: Additional detail about the request
          nullable: true
        country_code:
          type: string
          description: Two letter ISO country code, e.g. GB
          nullable: true
          example: GB
        verification_url:
          type: string
          description: Sikoia’s verification URL
          nullable: true
          example: https://verify.sikoia.com/v2/123456
        direct_url:
          type: string
          description: IDV Provider's Verification URL
          nullable: true
          example: https://alchemy.veriff.com/v/123456
      additionalProperties: false
    SikoiaSharedModels.BusinessSupport.Identity.Response.Mapped.IdentityVerificationMetaData:
      title: Identity Verification Meta Data
      type: object
      properties:
        status_codes:
          type: array
          items:
            $ref: '#/components/schemas/SikoiaSharedModels.BusinessSupport.Identity.Response.Mapped.Status'
          description: All status codes found in the IDV response and their definitions. May contain success, failure and/or information codes that qualify the overall IDV decision.
          nullable: true
      additionalProperties: false
    SikoiaSharedModels.BusinessSupport.Identity.Response.Mapped.Document:
      title: Document
      type: object
      properties:
        type:
          type: string
          description: The Document Type (e.g. Driving License)
          nullable: true
          example: Passport
        number:
          type: string
          description: The Document Number
          nullable: true
          example: '1234567890'
        country_code:
          type: string
          description: The Country Code
          nullable: true
          example: GB
        date_of_issue:
          type: string
          description: The Document Date Of Issue
          nullable: true
          example: '2020-01-01'
        date_of_expiry:
          type: string
          description: The Document Date Of Expiry
          nullable: true
          example: '2030-01-01'
      additionalProperties: false
    SikoiaSharedModels.BusinessSupport.Identity.Response.Mapped.IdentityVerificationMappedResponse:
      title: Identity Verification Response
      type: object
      properties:
        request_id:
          type: string
          description: Sikoia ID for the request
          nullable: true
          example: 0baa703c-950b-46b7-a424-8c24991987fd
        status:
          type: string
          description: The status of the request(`Pending` `Complete` `Failed` `Expired`)
          nullable: true
          example: Complete
        person_id:
          type: string
          description: Sikoia ID for the person
          format: uuid
          nullable: true
          readOnly: true
          example: 0fa323ec-b6e2-4a7a-8fea-58f2b264c57e
        datetime_requested:
          type: string
          description: The time the request was made
          nullable: true
          readOnly: true
          example: '2024-02-12T15:03:40.389Z'
        datetime_completed:
          type: string
          description: The time the request was completed
          nullable: true
          readOnly: true
          example: '2024-02-12T15:19:37.211Z'
        message:
          type: string
          description: Additional detail about the request
          nullable: true
        country_code:
          type: string
          description: Two letter ISO country code, e.g. GB
          nullable: true
          example: GB
        verification_url:
          type: string
          description: Sikoia’s verification URL
          nullable: true
          example: https://verify.sikoia.com/v2/123456
        direct_url:
          type: string
          description: IDV provider’s verification URL
          nullable: true
          example: https://alchemy.veriff.com/v/123456
        data:
          $ref: '#/components/schemas/SikoiaSharedModels.BusinessSupport.Identity.Response.Mapped.IdentityVerificationData'
      additionalProperties: false
  securitySchemes:
    authorizationHeader:
      type: http
      scheme: bearer
      bearerFormat: JWT
    apiKeyHeader:
      type: apiKey
      name: apikey
      in: header