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