openapi: 3.2.0 info: title: Identity API description: Registration, verification and management of CFX identities associated with financial transactions on the CFX network. termsOfService: '' contact: name: API Owner email: api@cfxlabs.com license: name: '' url: '' version: '@VERSION@' summary: CFX Identity API servers: - url: https://api.dev.cfx.to description: Customer Sandbox - url: https://api.cfx.to description: Production security: - ApiKeyAuth: [] ApiSecretAuth: [] tags: - name: Identity description: Register, retrieve, update, and verify identities. paths: /v1/identity: post: summary: Create a new identity tags: - Identity description: 'An individual/person must be registered and verified as an identity before it can perform transactions on this platform. If you have an agreement to verify an identity yourself, please provide `customerVerification`. Otherwise, a KYC process will be initiated for this identity. The identity will remain in `PENDING_VERIFICATION` until the compliance checks have successfully completed.' requestBody: required: true content: application/json: schema: type: object required: - name - countryOfResidence - email - phone - dateOfBirth properties: referenceId: type: string description: Customer's unique identifier for this identity name: type: object required: - firstName - lastName properties: firstName: type: string minLength: 1 middleName: type: string lastName: type: string minLength: 1 description: Legal name of the person countryOfResidence: type: string description: ISO-3166-1 Alpha-2 country code where the identity resides example: US taxId: type: string description: The identity's tax identification number — SSN or ITIN for a US person, the local equivalent elsewhere. example: 123-45-6789 email: type: string description: Email to contact the identity phone: type: string description: E.164 format contact phone number for the identity example: '+12125551234' customerVerification: type: object required: - id properties: id: type: string description: Unique identifier for KYC in the customer system. This reference will be used when requiring compliance information. description: Customer provides their own verification dateOfBirth: type: string description: 'Date of birth in ISO-8601 format: `yyyy-MM-dd`' example: '1980-10-23' metadata: type: object maxProperties: 50 propertyNames: minLength: 1 maxLength: 40 pattern: ^[^\[\]]*$ description: Your own key/value pairs for this identity, returned as stored. At most 50 keys. A key is 1 to 40 characters and cannot contain `[` or `]`; a value is a string of at most 500 characters. additionalProperties: type: string maxLength: 500 parameters: - schema: type: string in: header name: Idempotency-Key required: false responses: '201': description: Default Response content: application/json: schema: type: object required: - id - status - name - countryOfResidence - email - phone - metadata - createdAt - updatedAt properties: id: type: string description: Unique identifier for this identity example: id_..... referenceId: type: string description: Customer's unique identifier for this identity status: enum: - ACTIVE - PENDING_VERIFICATION - REVIEW - DISABLED - BLOCKED - DELETED type: string description: '* `ACTIVE`: Identity can transact * `PENDING_VERIFICATION`: Waiting for verification to complete before it can transact * `REVIEW`: Identity is being reviewed for compliance * `DISABLED`: Identity has been disabled by the customer * `BLOCKED`: Identity has been blocked from transacting due to compliance * `DELETED`: The identity has been deleted and cannot be used' name: type: object required: - firstName - lastName properties: firstName: type: string minLength: 1 middleName: type: string lastName: type: string minLength: 1 description: Legal name of the person countryOfResidence: type: string description: ISO-3166-1 Alpha-2 country code where the identity resides example: US dateOfBirth: type: string description: 'Date of birth in ISO-8601 format: `yyyy-MM-dd`' example: '1980-10-23' taxId: type: string description: The identity's tax identification number — SSN or ITIN for a US person, the local equivalent elsewhere. example: 123-45-6789 email: type: string description: Email to contact the identity phone: type: string description: E.164 format contact phone number for the identity example: '+12125551234' customerVerification: type: object required: - id properties: id: type: string description: Unique identifier for KYC in the customer system. This reference will be used when requiring compliance information. description: Customer provides their own verification amlVerification: type: object required: - status properties: status: enum: - PENDING - REVIEW - APPROVED - DECLINED type: string description: Anti-money laundering verification identityDocumentVerification: type: object required: - status properties: status: enum: - PENDING - REVIEW - APPROVED - DECLINED type: string description: Identity document, e.g. passport, government ID card, etc. verification metadata: type: object maxProperties: 50 propertyNames: minLength: 1 maxLength: 40 pattern: ^[^\[\]]*$ description: Your own key/value pairs for this identity, returned as stored. At most 50 keys. A key is 1 to 40 characters and cannot contain `[` or `]`; a value is a string of at most 500 characters. additionalProperties: type: string maxLength: 500 createdAt: type: string format: date-time description: When this record was created updatedAt: type: string format: date-time description: When this record was last updated deletedAt: type: string format: date-time description: When this record was deleted '400': description: Default Response content: application/json: schema: type: object required: - code - message properties: code: type: string enum: - INVALID_REQUEST - INVALID_COUNTRY - INVALID_PHONE - INVALID_EMAIL - INVALID_DATE_OF_BIRTH - DUPLICATE - METADATA_TOO_LARGE - METADATA_INVALID - IDENTITY_PROFILE_REJECTED - CANNOT_BYO_KYC - PRODUCT_INACTIVE description: '- `INVALID_REQUEST`: The service cannot understand the request - `INVALID_COUNTRY`: Invalid country code. Please provide an ISO-3166-1 Alpha-2 country code. - `INVALID_PHONE`: Invalid phone number. Please provide an E.164 format contact phone number. - `INVALID_EMAIL`: Invalid email address - `INVALID_DATE_OF_BIRTH`: Invalid date of birth. Please provide an ISO-8601 data (`yyyy-MM-dd`). - `DUPLICATE`: An identity with this email or phone number has already been registered. - `METADATA_TOO_LARGE`: Metadata exceeds a limit: more than 50 keys, a key over 40 characters, or a value over 500 characters. - `METADATA_INVALID`: Metadata is malformed: a value that is not a string (or `null` on update), an empty key, a key containing `[` or `]`, or a NUL character or unpaired surrogate in a key or value. - `IDENTITY_PROFILE_REJECTED`: Verification could not start with these details. Nothing was created; correct the details and try again. - `CANNOT_BYO_KYC`: You are not configured to skip the verification process - `PRODUCT_INACTIVE`: You are not configured to skip the verification process' message: type: string errors: type: array items: type: object properties: {} additionalProperties: true duplicateIds: type: array items: type: string '401': description: The access to this resource has been denied content: application/json: schema: type: object required: - code - message properties: code: type: string enum: - UNAUTHORIZED message: type: string title: UNAUTHORIZED description: The access to this resource has been denied '403': description: The credentials are valid but the caller is not permitted to transact content: application/json: schema: type: object required: - code - message properties: code: type: string enum: - FORBIDDEN message: type: string title: FORBIDDEN description: The credentials are valid but the caller is not permitted to transact '409': description: A duplicate request with this idempotency key is already in progress content: application/json: schema: type: object required: - code - message properties: code: type: string enum: - IDEMPOTENCY_IN_PROGRESS message: type: string title: IDEMPOTENCY_IN_PROGRESS description: A duplicate request with this idempotency key is already in progress '422': description: Another request with this idempotency key was made using a different body content: application/json: schema: type: object required: - code - message properties: code: type: string enum: - IDEMPOTENCY_KEY_REUSED message: type: string title: IDEMPOTENCY_KEY_REUSED description: Another request with this idempotency key was made using a different body default: description: Catch-all error response for any unexpected internal errors content: application/json: schema: type: object required: - code - message properties: code: type: string enum: - INTERNAL message: type: string enum: - An unexpected internal error has occurred title: INTERNAL description: Catch-all error response for any unexpected internal errors operationId: postV1Identity x-operation-id-source: derived get: summary: Search for identities tags: - Identity description: 'If no results are found, an empty array is returned. To return deleted identities, `DELETED` status must be supplied explicitly for `statuses` query param.' parameters: - schema: type: string in: query name: ids required: false description: Return all identities matching these IDs (comma-separated list). - schema: type: string in: query name: referenceIds required: false description: Return all identities matching these customer reference IDs (comma-separated list). - schema: type: string in: query name: statuses required: false description: Return all identities matching these statuses (comma-separated list). - schema: type: string in: query name: countriesOfResidence required: false description: Return all identities matching these countries of residence (comma-separated list). - schema: type: string in: query name: emails required: false description: Return all identities matching these emails (comma-separated list). - schema: type: string in: query name: phones required: false description: Return all identities matching these phone numbers (comma-separated list). - schema: type: string in: query name: nameLike required: false description: Return all identities whose name partially matches first name, middle name, last name or full name (case-insensitive). - schema: type: string in: query name: referenceIdLike required: false description: Return all identities whose customer reference ID partially matches this value (case-insensitive). - schema: type: string in: query name: emailLike required: false description: Return all identities whose email partially matches this value (case-insensitive). - schema: type: string in: query name: phoneLike required: false description: Return all identities whose phone number partially matches this value (case-insensitive). - schema: type: boolean in: query name: hasCustomerVerification required: false description: Return only identities that have customer verification or don't. Omit to return identities regardless of customer verification. - schema: type: string in: query name: amlVerificationStatuses required: false description: Anti-money laundering verification statuses (comma-separated list). - schema: type: string in: query name: identityDocumentVerificationStatuses required: false description: Identity document verification statuses (comma-separated list). - schema: type: string format: date-time in: query name: createdBefore required: false description: Filter identities created before the specified date-time - schema: type: string format: date-time in: query name: createdAfter required: false description: Filter identities created after the specified date-time - schema: type: string format: date-time in: query name: updatedBefore required: false description: Filter identities updated before the specified date-time - schema: type: string format: date-time in: query name: updatedAfter required: false description: Filter identities updated after the specified date-time - schema: type: string in: query name: orderBy required: false description: 'Comma-separated list of fields and directions to order the results by. Format: `:,...` * ``: `createdAt`, `updatedAt` * ``: `ASC`, `DESC`' - schema: type: integer default: 1 in: query name: page required: false description: Result page number to return, starting from 1 - schema: type: integer default: 10 maximum: 50 in: query name: pageSize required: false description: Items per page to return responses: '200': description: Default Response content: application/json: schema: type: object required: - items - hasNext properties: items: type: array items: type: object required: - id - status - name - countryOfResidence - email - phone - metadata - createdAt - updatedAt properties: id: type: string description: Unique identifier for this identity example: id_..... referenceId: type: string description: Customer's unique identifier for this identity status: enum: - ACTIVE - PENDING_VERIFICATION - REVIEW - DISABLED - BLOCKED - DELETED type: string description: '* `ACTIVE`: Identity can transact * `PENDING_VERIFICATION`: Waiting for verification to complete before it can transact * `REVIEW`: Identity is being reviewed for compliance * `DISABLED`: Identity has been disabled by the customer * `BLOCKED`: Identity has been blocked from transacting due to compliance * `DELETED`: The identity has been deleted and cannot be used' name: type: object required: - firstName - lastName properties: firstName: type: string minLength: 1 middleName: type: string lastName: type: string minLength: 1 description: Legal name of the person countryOfResidence: type: string description: ISO-3166-1 Alpha-2 country code where the identity resides example: US dateOfBirth: type: string description: 'Date of birth in ISO-8601 format: `yyyy-MM-dd`' example: '1980-10-23' taxId: type: string description: The identity's tax identification number — SSN or ITIN for a US person, the local equivalent elsewhere. example: 123-45-6789 email: type: string description: Email to contact the identity phone: type: string description: E.164 format contact phone number for the identity example: '+12125551234' customerVerification: type: object required: - id properties: id: type: string description: Unique identifier for KYC in the customer system. This reference will be used when requiring compliance information. description: Customer provides their own verification amlVerification: type: object required: - status properties: status: enum: - PENDING - REVIEW - APPROVED - DECLINED type: string description: Anti-money laundering verification identityDocumentVerification: type: object required: - status properties: status: enum: - PENDING - REVIEW - APPROVED - DECLINED type: string description: Identity document, e.g. passport, government ID card, etc. verification metadata: type: object maxProperties: 50 propertyNames: minLength: 1 maxLength: 40 pattern: ^[^\[\]]*$ description: Your own key/value pairs for this identity, returned as stored. At most 50 keys. A key is 1 to 40 characters and cannot contain `[` or `]`; a value is a string of at most 500 characters. additionalProperties: type: string maxLength: 500 createdAt: type: string format: date-time description: When this record was created updatedAt: type: string format: date-time description: When this record was last updated deletedAt: type: string format: date-time description: When this record was deleted hasNext: type: boolean '400': description: The service cannot understand the request content: application/json: schema: type: object required: - code - message properties: code: type: string enum: - INVALID_REQUEST message: type: string errors: type: array items: type: object properties: {} additionalProperties: true title: INVALID_REQUEST description: The service cannot understand the request '401': description: The access to this resource has been denied content: application/json: schema: type: object required: - code - message properties: code: type: string enum: - UNAUTHORIZED message: type: string title: UNAUTHORIZED description: The access to this resource has been denied '403': description: The credentials are valid but the caller is not permitted to transact content: application/json: schema: type: object required: - code - message properties: code: type: string enum: - FORBIDDEN message: type: string title: FORBIDDEN description: The credentials are valid but the caller is not permitted to transact default: description: Catch-all error response for any unexpected internal errors content: application/json: schema: type: object required: - code - message properties: code: type: string enum: - INTERNAL message: type: string enum: - An unexpected internal error has occurred title: INTERNAL description: Catch-all error response for any unexpected internal errors operationId: getV1Identity x-operation-id-source: derived /v1/identity/{id}: get: summary: Get an identity tags: - Identity parameters: - schema: type: string example: id_..... in: path name: id required: true description: Unique identifier for this identity responses: '200': description: Default Response content: application/json: schema: type: object required: - id - status - name - countryOfResidence - email - phone - metadata - createdAt - updatedAt properties: id: type: string description: Unique identifier for this identity example: id_..... referenceId: type: string description: Customer's unique identifier for this identity status: enum: - ACTIVE - PENDING_VERIFICATION - REVIEW - DISABLED - BLOCKED - DELETED type: string description: '* `ACTIVE`: Identity can transact * `PENDING_VERIFICATION`: Waiting for verification to complete before it can transact * `REVIEW`: Identity is being reviewed for compliance * `DISABLED`: Identity has been disabled by the customer * `BLOCKED`: Identity has been blocked from transacting due to compliance * `DELETED`: The identity has been deleted and cannot be used' name: type: object required: - firstName - lastName properties: firstName: type: string minLength: 1 middleName: type: string lastName: type: string minLength: 1 description: Legal name of the person countryOfResidence: type: string description: ISO-3166-1 Alpha-2 country code where the identity resides example: US dateOfBirth: type: string description: 'Date of birth in ISO-8601 format: `yyyy-MM-dd`' example: '1980-10-23' taxId: type: string description: The identity's tax identification number — SSN or ITIN for a US person, the local equivalent elsewhere. example: 123-45-6789 email: type: string description: Email to contact the identity phone: type: string description: E.164 format contact phone number for the identity example: '+12125551234' customerVerification: type: object required: - id properties: id: type: string description: Unique identifier for KYC in the customer system. This reference will be used when requiring compliance information. description: Customer provides their own verification amlVerification: type: object required: - status properties: status: enum: - PENDING - REVIEW - APPROVED - DECLINED type: string description: Anti-money laundering verification identityDocumentVerification: type: object required: - status properties: status: enum: - PENDING - REVIEW - APPROVED - DECLINED type: string description: Identity document, e.g. passport, government ID card, etc. verification metadata: type: object maxProperties: 50 propertyNames: minLength: 1 maxLength: 40 pattern: ^[^\[\]]*$ description: Your own key/value pairs for this identity, returned as stored. At most 50 keys. A key is 1 to 40 characters and cannot contain `[` or `]`; a value is a string of at most 500 characters. additionalProperties: type: string maxLength: 500 createdAt: type: string format: date-time description: When this record was created updatedAt: type: string format: date-time description: When this record was last updated deletedAt: type: string format: date-time description: When this record was deleted '400': description: The service cannot understand the request content: application/json: schema: type: object required: - code - message properties: code: type: string enum: - INVALID_REQUEST message: type: string errors: type: array items: type: object properties: {} additionalProperties: true title: INVALID_REQUEST description: The service cannot understand the request '401': description: The access to this resource has been denied content: application/json: schema: type: object required: - code - message properties: code: type: string enum: - UNAUTHORIZED message: type: string title: UNAUTHORIZED description: The access to this resource has been denied '403': description: The credentials are valid but the caller is not permitted to transact content: application/json: schema: type: object required: - code - message properties: code: type: string enum: - FORBIDDEN message: type: string title: FORBIDDEN description: The credentials are valid but the caller is not permitted to transact '404': description: The resource was not found content: application/json: schema: type: object required: - code - message properties: code: type: string enum: - NOT_FOUND message: type: string title: NOT_FOUND description: The resource was not found default: description: Catch-all error response for any unexpected internal errors content: application/json: schema: type: object required: - code - message properties: code: type: string enum: - INTERNAL message: type: string enum: - An unexpected internal error has occurred title: INTERNAL description: Catch-all error response for any unexpected internal errors operationId: getV1IdentityById x-operation-id-source: derived patch: summary: Update an identity tags: - Identity requestBody: required: true content: application/json: schema: type: object properties: status: enum: - ACTIVE - DISABLED type: string referenceId: type: string description: Customer's unique identifier for this identity dateOfBirth: type: string description: 'Date of birth in ISO-8601 format: `yyyy-MM-dd`' example: '1980-10-23' taxId: type: string description: The identity's tax identification number — SSN or ITIN for a US person, the local equivalent elsewhere. example: 123-45-6789 email: type: string description: Email to contact the identity phone: type: string description: E.164 format contact phone number for the identity example: '+12125551234' customerVerification: type: object required: - id properties: id: type: string description: Unique identifier for KYC in the customer system. This reference will be used when requiring compliance information. description: Customer provides their own verification metadata: type: object additionalProperties: anyOf: - type: string maxLength: 500 title: Value - type: 'null' title: Remove parameters: - schema: type: string example: id_..... in: path name: id required: true description: Unique identifier for this identity - schema: type: string in: header name: Idempotency-Key required: false responses: '200': description: Default Response content: application/json: schema: type: object required: - id - status - name - countryOfResidence - email - phone - metadata - createdAt - updatedAt properties: id: type: string description: Unique identifier for this identity example: id_..... referenceId: type: string description: Customer's unique identifier for this identity status: enum: - ACTIVE - PENDING_VERIFICATION - REVIEW - DISABLED - BLOCKED - DELETED type: string description: '* `ACTIVE`: Identity can transact * `PENDING_VERIFICATION`: Waiting for verification to complete before it can transact * `REVIEW`: Identity is being reviewed for compliance * `DISABLED`: Identity has been disabled by the customer * `BLOCKED`: Identity has been blocked from transacting due to compliance * `DELETED`: The identity has been deleted and cannot be used' name: type: object required: - firstName - lastName properties: firstName: type: string minLength: 1 middleName: type: string lastName: type: string minLength: 1 description: Legal name of the person countryOfResidence: type: string description: ISO-3166-1 Alpha-2 country code where the identity resides example: US dateOfBirth: type: string description: 'Date of birth in ISO-8601 format: `yyyy-MM-dd`' example: '1980-10-23' taxId: type: string description: The identity's tax identification number — SSN or ITIN for a US person, the local equivalent elsewhere. example: 123-45-6789 email: type: string description: Email to contact the identity phone: type: string description: E.164 format contact phone number for the identity example: '+12125551234' customerVerification: type: object required: - id properties: id: type: string description: Unique identifier for KYC in the customer system. This reference will be used when requiring compliance information. description: Customer provides their own verification amlVerification: type: object required: - status properties: status: enum: - PENDING - REVIEW - APPROVED - DECLINED type: string description: Anti-money laundering verification identityDocumentVerification: type: object required: - status properties: status: enum: - PENDING - REVIEW - APPROVED - DECLINED type: string description: Identity document, e.g. passport, government ID card, etc. verification metadata: type: object maxProperties: 50 propertyNames: minLength: 1 maxLength: 40 pattern: ^[^\[\]]*$ description: Your own key/value pairs for this identity, returned as stored. At most 50 keys. A key is 1 to 40 characters and cannot contain `[` or `]`; a value is a string of at most 500 characters. additionalProperties: type: string maxLength: 500 createdAt: type: string format: date-time description: When this record was created updatedAt: type: string format: date-time description: When this record was last updated deletedAt: type: string format: date-time description: When this record was deleted '400': description: Default Response content: application/json: schema: type: object required: - code - message properties: code: type: string enum: - INVALID_REQUEST - INVALID_COUNTRY - INVALID_PHONE - INVALID_EMAIL - INVALID_DATE_OF_BIRTH - DUPLICATE - METADATA_TOO_LARGE - METADATA_INVALID - IDENTITY_PROFILE_REJECTED - CANNOT_BYO_KYC - INVALID_STATUS - CANNOT_UPDATE_NAME description: '- `INVALID_REQUEST`: The service cannot understand the request - `INVALID_COUNTRY`: Invalid country code. Please provide an ISO-3166-1 Alpha-2 country code. - `INVALID_PHONE`: Invalid phone number. Please provide an E.164 format contact phone number. - `INVALID_EMAIL`: Invalid email address - `INVALID_DATE_OF_BIRTH`: Invalid date of birth. Please provide an ISO-8601 data (`yyyy-MM-dd`). - `DUPLICATE`: An identity with this email or phone number has already been registered. - `METADATA_TOO_LARGE`: Metadata exceeds a limit: more than 50 keys, a key over 40 characters, or a value over 500 characters. - `METADATA_INVALID`: Metadata is malformed: a value that is not a string (or `null` on update), an empty key, a key containing `[` or `]`, or a NUL character or unpaired surrogate in a key or value. - `IDENTITY_PROFILE_REJECTED`: Verification could not start with these details. Nothing was created; correct the details and try again. - `CANNOT_BYO_KYC`: You are not configured to skip the verification process - `INVALID_STATUS`: You can only toggle between `ACTIVE` and `DISABLED` statuses. - `CANNOT_UPDATE_NAME`: The legal name cannot be updated once it is set.' message: type: string errors: type: array items: type: object properties: {} additionalProperties: true duplicateIds: type: array items: type: string '401': description: The access to this resource has been denied content: application/json: schema: type: object required: - code - message properties: code: type: string enum: - UNAUTHORIZED message: type: string title: UNAUTHORIZED description: The access to this resource has been denied '403': description: The credentials are valid but the caller is not permitted to transact content: application/json: schema: type: object required: - code - message properties: code: type: string enum: - FORBIDDEN message: type: string title: FORBIDDEN description: The credentials are valid but the caller is not permitted to transact '404': description: The resource was not found content: application/json: schema: type: object required: - code - message properties: code: type: string enum: - NOT_FOUND message: type: string title: NOT_FOUND description: The resource was not found '409': description: A duplicate request with this idempotency key is already in progress content: application/json: schema: type: object required: - code - message properties: code: type: string enum: - IDEMPOTENCY_IN_PROGRESS message: type: string title: IDEMPOTENCY_IN_PROGRESS description: A duplicate request with this idempotency key is already in progress '422': description: Another request with this idempotency key was made using a different body content: application/json: schema: type: object required: - code - message properties: code: type: string enum: - IDEMPOTENCY_KEY_REUSED message: type: string title: IDEMPOTENCY_KEY_REUSED description: Another request with this idempotency key was made using a different body default: description: Catch-all error response for any unexpected internal errors content: application/json: schema: type: object required: - code - message properties: code: type: string enum: - INTERNAL message: type: string enum: - An unexpected internal error has occurred title: INTERNAL description: Catch-all error response for any unexpected internal errors operationId: patchV1IdentityById x-operation-id-source: derived delete: summary: Delete an identity tags: - Identity description: You can no longer use a deleted identity to transact, and deleting is idempotent — a second delete of the same identity returns `404`. A deleted identity is excluded from `GET /v1/identity/{id}`, which likewise returns `404`; to retrieve one, supply `DELETED` explicitly in the `statuses` query parameter on search. parameters: - schema: type: string example: id_..... in: path name: id required: true description: Unique identifier for this identity responses: '200': description: Default Response content: application/json: schema: type: object required: - id - status - name - countryOfResidence - email - phone - metadata - createdAt - updatedAt properties: id: type: string description: Unique identifier for this identity example: id_..... referenceId: type: string description: Customer's unique identifier for this identity status: enum: - ACTIVE - PENDING_VERIFICATION - REVIEW - DISABLED - BLOCKED - DELETED type: string description: '* `ACTIVE`: Identity can transact * `PENDING_VERIFICATION`: Waiting for verification to complete before it can transact * `REVIEW`: Identity is being reviewed for compliance * `DISABLED`: Identity has been disabled by the customer * `BLOCKED`: Identity has been blocked from transacting due to compliance * `DELETED`: The identity has been deleted and cannot be used' name: type: object required: - firstName - lastName properties: firstName: type: string minLength: 1 middleName: type: string lastName: type: string minLength: 1 description: Legal name of the person countryOfResidence: type: string description: ISO-3166-1 Alpha-2 country code where the identity resides example: US dateOfBirth: type: string description: 'Date of birth in ISO-8601 format: `yyyy-MM-dd`' example: '1980-10-23' taxId: type: string description: The identity's tax identification number — SSN or ITIN for a US person, the local equivalent elsewhere. example: 123-45-6789 email: type: string description: Email to contact the identity phone: type: string description: E.164 format contact phone number for the identity example: '+12125551234' customerVerification: type: object required: - id properties: id: type: string description: Unique identifier for KYC in the customer system. This reference will be used when requiring compliance information. description: Customer provides their own verification amlVerification: type: object required: - status properties: status: enum: - PENDING - REVIEW - APPROVED - DECLINED type: string description: Anti-money laundering verification identityDocumentVerification: type: object required: - status properties: status: enum: - PENDING - REVIEW - APPROVED - DECLINED type: string description: Identity document, e.g. passport, government ID card, etc. verification metadata: type: object maxProperties: 50 propertyNames: minLength: 1 maxLength: 40 pattern: ^[^\[\]]*$ description: Your own key/value pairs for this identity, returned as stored. At most 50 keys. A key is 1 to 40 characters and cannot contain `[` or `]`; a value is a string of at most 500 characters. additionalProperties: type: string maxLength: 500 createdAt: type: string format: date-time description: When this record was created updatedAt: type: string format: date-time description: When this record was last updated deletedAt: type: string format: date-time description: When this record was deleted '400': description: The service cannot understand the request content: application/json: schema: type: object required: - code - message properties: code: type: string enum: - INVALID_REQUEST message: type: string errors: type: array items: type: object properties: {} additionalProperties: true title: INVALID_REQUEST description: The service cannot understand the request '401': description: The access to this resource has been denied content: application/json: schema: type: object required: - code - message properties: code: type: string enum: - UNAUTHORIZED message: type: string title: UNAUTHORIZED description: The access to this resource has been denied '403': description: The credentials are valid but the caller is not permitted to transact content: application/json: schema: type: object required: - code - message properties: code: type: string enum: - FORBIDDEN message: type: string title: FORBIDDEN description: The credentials are valid but the caller is not permitted to transact '404': description: The resource was not found content: application/json: schema: type: object required: - code - message properties: code: type: string enum: - NOT_FOUND message: type: string title: NOT_FOUND description: The resource was not found default: description: Catch-all error response for any unexpected internal errors content: application/json: schema: type: object required: - code - message properties: code: type: string enum: - INTERNAL message: type: string enum: - An unexpected internal error has occurred title: INTERNAL description: Catch-all error response for any unexpected internal errors operationId: deleteV1IdentityById x-operation-id-source: derived /v1/identity/{id}/verification-url: post: summary: Get the verification URL for an identity tags: - Identity description: This URL can be send to a person to fill out. Currently, the verification only covers identity documents. requestBody: required: true content: application/json: schema: type: object required: - redirectUrl properties: redirectUrl: type: string description: The URL to redirect to, once the verification is completed parameters: - schema: type: string example: id_..... in: path name: id required: true description: Unique identifier for this identity - schema: type: string in: header name: Idempotency-Key required: false responses: '200': description: Default Response content: application/json: schema: type: object required: - url properties: url: type: string description: The verification URL '400': description: Default Response content: application/json: schema: type: object required: - code - message properties: code: type: string enum: - INVALID_REQUEST - NOT_VERIFIED description: '- `INVALID_REQUEST`: The service cannot understand the request - `NOT_VERIFIED`: This identity''s verification is not managed by this platform' message: type: string errors: type: array items: type: object properties: {} additionalProperties: true '401': description: The access to this resource has been denied content: application/json: schema: type: object required: - code - message properties: code: type: string enum: - UNAUTHORIZED message: type: string title: UNAUTHORIZED description: The access to this resource has been denied '403': description: The credentials are valid but the caller is not permitted to transact content: application/json: schema: type: object required: - code - message properties: code: type: string enum: - FORBIDDEN message: type: string title: FORBIDDEN description: The credentials are valid but the caller is not permitted to transact '404': description: The resource was not found content: application/json: schema: type: object required: - code - message properties: code: type: string enum: - NOT_FOUND message: type: string title: NOT_FOUND description: The resource was not found '409': description: A duplicate request with this idempotency key is already in progress content: application/json: schema: type: object required: - code - message properties: code: type: string enum: - IDEMPOTENCY_IN_PROGRESS message: type: string title: IDEMPOTENCY_IN_PROGRESS description: A duplicate request with this idempotency key is already in progress '422': description: Another request with this idempotency key was made using a different body content: application/json: schema: type: object required: - code - message properties: code: type: string enum: - IDEMPOTENCY_KEY_REUSED message: type: string title: IDEMPOTENCY_KEY_REUSED description: Another request with this idempotency key was made using a different body default: description: Catch-all error response for any unexpected internal errors content: application/json: schema: type: object required: - code - message properties: code: type: string enum: - INTERNAL message: type: string enum: - An unexpected internal error has occurred title: INTERNAL description: Catch-all error response for any unexpected internal errors operationId: postV1IdentityByIdVerificationUrl x-operation-id-source: derived components: securitySchemes: ApiKeyAuth: name: x-api-key type: apiKey in: header ApiSecretAuth: name: x-api-secret type: apiKey in: header externalDocs: description: Find out more about CFX url: https://www.cfxlabs.com/