CoinList Requirements API

The Requirements API from CoinList — 2 operation(s) for requirements.

OpenAPI Specification

coinlist-requirements-api-openapi.yml Raw ↑
openapi: 3.0.0
info:
  title: Frontline DocumentSubmissions Requirements API
  version: 0.1.0
servers:
- url: https://api.coinlist.co
  variables: {}
security: []
tags:
- name: Requirements
paths:
  /v1/offers/{offer_id}/requirements:
    get:
      callbacks: {}
      operationId: listOfferRequirements
      parameters:
      - description: The offer ID
        in: path
        name: offer_id
        required: true
        schema:
          type: string
          x-struct: null
          x-validate: null
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OfferRequirements'
          description: Successful response.
        default:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
          description: Error response.
      security:
      - OAuth2: []
      summary: List requirements for all options of an offer
      tags:
      - Requirements
  /v1/offers/{offer_id}/requirements/statuses:
    get:
      callbacks: {}
      operationId: listOfferRequirementStatuses
      parameters:
      - description: The offer ID
        in: path
        name: offer_id
        required: true
        schema:
          type: string
          x-struct: null
          x-validate: null
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RequirementStatuses'
          description: Successful response.
        default:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
          description: Error response.
      security:
      - OAuth2: []
      summary: List requirement statuses for all options of an offer
      tags:
      - Requirements
components:
  schemas:
    OptionRequirementJurisdictionDetails:
      properties:
        filter_type:
          description: The type of filter
          enum:
          - allow
          - reject
          example: allow
          type: string
          x-struct: null
          x-validate: null
        filters:
          description: List of jurisdiction filters
          items:
            $ref: '#/components/schemas/OptionRequirementJurisdictionFilter'
          type: array
          x-struct: null
          x-validate: null
      required:
      - filter_type
      - filters
      title: OptionRequirementJurisdictionDetails
      type: object
      x-struct: Elixir.FrontlineAPIWeb.OpenApi.Schemas.OptionRequirement.JurisdictionDetails
      x-validate: null
    OptionRequirement:
      properties:
        details:
          description: 'Requirement-specific details.

            Null for kyc_approved, accreditation, identity_verified,

            proof_of_address, and source_of_funds types.

            ExternalWalletDetails for external_wallet type.

            WhitelistedWalletDetails for whitelisted_wallet type.

            JurisdictionDetails for jurisdiction type.

            DocumentDetails for document type.

            '
          nullable: true
          oneOf:
          - $ref: '#/components/schemas/OptionRequirementExternalWalletDetails'
          - $ref: '#/components/schemas/OptionRequirementWhitelistedWalletDetails'
          - $ref: '#/components/schemas/OptionRequirementJurisdictionDetails'
          - $ref: '#/components/schemas/OptionRequirementDocumentDetails'
          x-struct: null
          x-validate: null
        id:
          description: Unique identifier for the object.
          example: 05edea81-98a7-4582-aa7c-040d57cb1858
          type: string
          x-struct: null
          x-validate: null
        object:
          description: String representing the object's type. Objects of the same type share the same value.
          enum:
          - requirement
          type: string
          x-struct: null
          x-validate: null
        type:
          description: The requirement type
          enum:
          - kyc_approved
          - identity_verified
          - proof_of_address
          - source_of_funds
          - external_wallet
          - whitelisted_wallet
          - jurisdiction
          - accreditation
          - document
          example: kyc_approved
          type: string
          x-struct: null
          x-validate: null
      required:
      - object
      - id
      - type
      title: OptionRequirement
      type: object
      x-struct: Elixir.FrontlineAPIWeb.OpenApi.Schemas.OptionRequirement
      x-validate: null
    OptionRequirementDocumentDetails:
      properties:
        document_type:
          description: The type of document the user must sign
          enum:
          - tax_certification
          example: tax_certification
          type: string
          x-struct: null
          x-validate: null
      required:
      - document_type
      title: OptionRequirementDocumentDetails
      type: object
      x-struct: Elixir.FrontlineAPIWeb.OpenApi.Schemas.OptionRequirement.DocumentDetails
      x-validate: null
    OptionRequirementWhitelistedWalletDetails:
      properties:
        max_wallets:
          description: Maximum number of whitelisted wallets a user may connect for this option
          example: 1
          type: integer
          x-struct: null
          x-validate: null
      required:
      - max_wallets
      title: OptionRequirementWhitelistedWalletDetails
      type: object
      x-struct: Elixir.FrontlineAPIWeb.OpenApi.Schemas.OptionRequirement.WhitelistedWalletDetails
      x-validate: null
    OptionRequirementExternalWalletDetails:
      properties:
        protocol:
          description: The blockchain protocol
          example: ethereum
          type: string
          x-struct: null
          x-validate: null
      required:
      - protocol
      title: OptionRequirementExternalWalletDetails
      type: object
      x-struct: Elixir.FrontlineAPIWeb.OpenApi.Schemas.OptionRequirement.ExternalWalletDetails
      x-validate: null
    Error:
      additionalProperties: false
      properties:
        code:
          description: A human-readable message providing more details about the error.
          type: string
          x-struct: null
          x-validate: null
        errors:
          additionalProperties:
            items:
              type: string
              x-struct: null
              x-validate: null
            type: array
            x-struct: null
            x-validate: null
          type: object
          x-struct: null
          x-validate: null
        event_id:
          description: The unique identifier for the error event. This is useful for tracking and debugging.
          type: string
          x-struct: null
          x-validate: null
        message:
          description: For some errors that could be handled programmatically, a short string indicating the error code reported.
          type: string
          x-struct: null
          x-validate: null
        type:
          description: The type of error returned. One of `api_error`, `invalid_request_error`
          enum:
          - api_error
          - invalid_request_error
          type: string
          x-struct: null
          x-validate: null
      required:
      - type
      - message
      title: Error
      type: object
      x-struct: Elixir.FrontlineAPIWeb.OpenApi.Schemas.ApiError
      x-validate: null
    RequirementStatuses:
      properties:
        object:
          description: String representing the object's type. Objects of the same type share the same value.
          enum:
          - requirement_statuses
          type: string
          x-struct: null
          x-validate: null
        offer_id:
          description: The offer ID
          type: string
          x-struct: null
          x-validate: null
        statuses:
          additionalProperties:
            anyOf:
            - enum:
              - not_started
              - in_progress
              - action_needed
              - completed
              - rejected
              type: string
              x-struct: null
              x-validate: null
            - description: 'Object form, used when the status carries extra data: the action-needed reason and/or the Sumsub flow that resolves the requirement (kyc_level + kyc_reset, to be sent to the kyc-token endpoint as-is).'
              properties:
                action:
                  enum:
                  - kyc_not_verified
                  - update_pii_data
                  type: string
                  x-struct: null
                  x-validate: null
                kyc_level:
                  description: The Sumsub verification level that resolves this requirement
                  enum:
                  - Sorting_KYC_Level
                  - BasicKYCLevel
                  - AccreditationIndividual_FullVerification
                  type: string
                  x-struct: null
                  x-validate: null
                kyc_reset:
                  description: Whether the Sumsub applicant must be reset before starting the flow (redoing an already-approved level, e.g. to update stale PII)
                  type: boolean
                  x-struct: null
                  x-validate: null
                status:
                  enum:
                  - not_started
                  - in_progress
                  - action_needed
                  - completed
                  - rejected
                  type: string
                  x-struct: null
                  x-validate: null
              required:
              - status
              type: object
              x-struct: null
              x-validate: null
            x-struct: null
            x-validate: null
          description: Map of requirement ID to status
          type: object
          x-struct: null
          x-validate: null
      required:
      - object
      - offer_id
      - statuses
      title: RequirementStatuses
      type: object
      x-struct: Elixir.FrontlineAPIWeb.OpenApi.Schemas.RequirementStatuses
      x-validate: null
    OfferRequirements:
      properties:
        object:
          description: String representing the object's type. Objects of the same type share the same value.
          enum:
          - offer_requirements
          type: string
          x-struct: null
          x-validate: null
        offer_id:
          description: The offer ID
          type: string
          x-struct: null
          x-validate: null
        options:
          additionalProperties:
            properties:
              data:
                items:
                  $ref: '#/components/schemas/OptionRequirement'
                type: array
                x-struct: null
                x-validate: null
              object:
                description: String representing the object's type. Objects of the same type share the same value.
                enum:
                - list
                type: string
                x-struct: null
                x-validate: null
            required:
            - object
            - data
            type: object
            x-struct: null
            x-validate: null
          description: Map of option ID to list of requirements for that option
          type: object
          x-struct: null
          x-validate: null
      required:
      - object
      - offer_id
      - options
      title: OfferRequirements
      type: object
      x-struct: Elixir.FrontlineAPIWeb.OpenApi.Schemas.OfferRequirements
      x-validate: null
    OptionRequirementJurisdictionFilter:
      properties:
        country_iso_2:
          description: The ISO 3166-1 alpha-2 country code
          example: US
          type: string
          x-struct: null
          x-validate: null
        regions:
          description: List of region codes for the country
          example:
          - CA
          - NY
          items:
            type: string
            x-struct: null
            x-validate: null
          type: array
          x-struct: null
          x-validate: null
      required:
      - country_iso_2
      title: OptionRequirementJurisdictionFilter
      type: object
      x-struct: Elixir.FrontlineAPIWeb.OpenApi.Schemas.OptionRequirement.JurisdictionFilter
      x-validate: null
  securitySchemes:
    OAuth2:
      description: OAuth 2.0 authorization and token endpoints
      flows:
        authorizationCode:
          authorizationUrl: /oauth/authorize
          refreshUrl: /oauth/token
          scopes: {}
          tokenUrl: /oauth/token
        clientCredentials:
          refreshUrl: /oauth/token
          scopes: {}
          tokenUrl: /oauth/token
      type: oauth2
    TokenAuth:
      description: Session token for user authentication during OAuth authorization
      scheme: bearer
      type: http