Cable person API

The person API from Cable — 1 operation(s) for person.

OpenAPI Specification

cable-person-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: API Reference alerts person API
  version: 1.0.0
servers:
- url: https://api.cable.tech
  description: Production
tags:
- name: person
paths:
  /v2/person:
    get:
      operationId: check-person
      summary: Check if a person exists
      tags:
      - person
      parameters:
      - name: person_id
        in: query
        description: The unique identifier of the person
        required: true
        schema:
          type: string
      - name: Authorization
        in: header
        description: Bearer authentication
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Person exists
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Person_checkPerson_Response_200'
        '401':
          description: Unauthorized request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GeneralError'
        '404':
          description: Person does not exist
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GeneralError'
        '429':
          description: Rate limit exceeded
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GeneralError'
        '500':
          description: Server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GeneralError'
    post:
      operationId: add-person-info
      summary: Add person information
      description: Endpoint for adding new person information
      tags:
      - person
      parameters:
      - name: Authorization
        in: header
        description: Bearer authentication
        required: true
        schema:
          type: string
      responses:
        '201':
          description: Person added successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WriteOperationResponse'
        '400':
          description: Invalid person data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GeneralError'
        '401':
          description: Unauthorized request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GeneralError'
        '409':
          description: Person already exists
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GeneralError'
        '429':
          description: Rate limit exceeded
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GeneralError'
        '500':
          description: Server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GeneralError'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/NewPersonRequest'
    put:
      operationId: update-persons
      summary: Update person in batch
      tags:
      - person
      parameters:
      - name: Authorization
        in: header
        description: Bearer authentication
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Persons updated successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WriteOperationResponse'
        '400':
          description: Invalid person data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GeneralError'
        '401':
          description: Unauthorized request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GeneralError'
        '404':
          description: Person not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GeneralError'
        '429':
          description: Rate limit exceeded
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GeneralError'
        '500':
          description: Server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GeneralError'
      requestBody:
        description: An array of person update payloads. Each payload must include the 'person_id' to identify the person and can include any other fields that need to be updated. The 'timestamp' field represents the time of update.
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdatePersonRequest'
    delete:
      operationId: delete-person
      summary: Submit a deletion request for a person and any related data
      description: 'This operation will submit a request to delete the person and any

        related data.


        The deletion request will be processed by the system and

        the data will be removed permanently from Cable''s system. Deletion

        requests are not processed immediately and may take some time to

        complete.


        The status of the deletion request can be checked using the

        deletion request ID and the status endpoint.


        <Warning>This operation is not intended for regular use and should be used with caution.</Warning>

        '
      tags:
      - person
      parameters:
      - name: Authorization
        in: header
        description: Bearer authentication
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Deletion request submitted successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Person_deletePerson_Response_200'
        '401':
          description: Unauthorized request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GeneralError'
        '404':
          description: Person does not exist
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GeneralError'
        '429':
          description: Rate limit exceeded
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GeneralError'
        '500':
          description: Server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GeneralError'
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                person_id:
                  type: string
                  description: The unique identifier of the person
                reason:
                  type: string
                  description: The reason for deletion
              required:
              - person_id
              - reason
components:
  schemas:
    Person_checkPerson_Response_200:
      type: object
      properties:
        person_id:
          type: string
          description: The unique identifier of the person
        first_seen:
          type: string
          format: date-time
          description: This represents the earliest timestamp associated with the person
        last_seen:
          type: string
          format: date-time
          description: This represents the latest timestamp associated with the person
        organization_id:
          type: string
          description: The organization ID for which the person was found
      title: Person_checkPerson_Response_200
    Address:
      type: object
      properties:
        lines:
          type: array
          items:
            type: string
        city:
          type: string
        state:
          type: string
        county:
          type: string
        postal_code:
          type: string
        country:
          type: string
      description: Legal/contact address for the entity
      title: Address
    GeneralErrorErrorsItems:
      type: object
      properties:
        field:
          type: string
        message:
          type: string
      title: GeneralErrorErrorsItems
    PersonAccountStatus:
      type: string
      enum:
      - APPROVED
      - BLOCKED
      - CLOSED
      - PENDING
      - REJECTED
      description: The account status for the related person. Refer to the Developer Guide "Entity Account Statuses" to understand what account statuses mean at Cable, and how to use them
      title: PersonAccountStatus
    PersonNationalIdentificationNumber:
      type: object
      properties:
        type:
          type: string
          description: Type of national identification number
        value:
          type: string
          description: National identification number
      required:
      - type
      - value
      title: PersonNationalIdentificationNumber
    GeneralError:
      type: object
      properties:
        code:
          type: integer
        message:
          type: string
        errors:
          type: array
          items:
            $ref: '#/components/schemas/GeneralErrorErrorsItems'
          description: Detailed information about errors in specific fields.
      required:
      - code
      - message
      title: GeneralError
    NewPersonRequest:
      type: array
      items:
        $ref: '#/components/schemas/Person'
      title: NewPersonRequest
    Person_deletePerson_Response_200:
      type: object
      properties:
        person_id:
          type: string
          description: The unique identifier of the person
        deletion_request_id:
          type: string
          description: The unique identifier of the deletion request
      title: Person_deletePerson_Response_200
    Person:
      type: object
      properties:
        person_id:
          type: string
          description: Unique external identifier of the person entity, ID stored in your database / back-office
        timestamp:
          type: string
          format: date-time
          description: When this person record was created or last modified in your system, in ISO 8601 format. For example, account opening date or KYC completion time.
        is_test_user:
          type: boolean
          default: false
          description: If the person is a test user, this should be set to true
        is_retail_customer:
          type: boolean
          description: Indicates if the person is in the context of retail companies. If the value is false, fields is_beneficial_owner, is_director, is_account_owner and is_shareholder are required.
        related_company_id:
          type: string
          description: Unique external identifier of the related company entity
        is_beneficial_owner:
          type: boolean
          description: If the person is a beneficial owner of the related company, this should be set to true. If is_retail_customer is false, this field is required.
        is_director:
          type: boolean
          description: If the person is a director of the related company, this should be set to true. If is_retail_customer is false, this field is required.
        is_account_owner:
          type: boolean
          description: If the person is an account owner of the related company, this should be set to true. If is_retail_customer is false, this field is required.
        is_sole_prop:
          type: boolean
          description: If the related company is a sole proprietorship (or sole trader if in the UK), this should be set to true.
        is_shareholder:
          type: boolean
          description: If the person is a shareholder of the related company, this should be set to true. If is_retail_customer is false, this field is required.
        is_significant_control_person:
          type: boolean
          description: If the person has significant control of the related company, this should be set to true
        ownership_percentage:
          type: number
          format: double
          description: If the person is a shareholder of the related company, this should be set to their ownership percentage, as a value between 0 and 1
        account_status:
          $ref: '#/components/schemas/PersonAccountStatus'
          description: The account status for the related person. Refer to the Developer Guide "Entity Account Statuses" to understand what account statuses mean at Cable, and how to use them
        name:
          type: string
          description: The provided full name of the person
        first_name:
          type: string
          description: The provided first name of the person
        last_name:
          type: string
          description: The provided last name of the person
        email:
          type: string
          description: Contact email for the person
        address:
          $ref: '#/components/schemas/Address'
        phone_number:
          type: string
          description: Contact telephone number for the person
        date_of_birth:
          type: string
          format: date
        nationality:
          type: string
          description: 2 or 3 Character ISO 3166 Country Code (https://w.wiki/4rY)
        occupation:
          type: string
          description: Primary occupation of the individual
        first_transaction_completed_at:
          type: string
          format: date-time
          description: Original timestamp of when the person completed their first transaction
        national_identification_number:
          $ref: '#/components/schemas/PersonNationalIdentificationNumber'
        product_type:
          type: string
      required:
      - person_id
      - timestamp
      - is_test_user
      - is_retail_customer
      description: Request body for adding information about persons
      title: Person
    WriteOperationResponse:
      type: object
      properties:
        success:
          type: boolean
          description: Indicates if the write operation was successful.
        write_count:
          type: integer
          description: The number of records written to the database.
        message:
          type: string
          description: Provides additional information about the operation result.
        organization_id:
          type: string
          description: The organization ID for which the operation was performed.
      required:
      - success
      - write_count
      - message
      - organization_id
      title: WriteOperationResponse
    UpdatePersonRequest:
      type: array
      items:
        $ref: '#/components/schemas/Person'
      title: UpdatePersonRequest
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: Authorization
    BearerAuth:
      type: http
      scheme: bearer