Lorum Customers API

The Customers API from Lorum — 10 operation(s) for customers.

OpenAPI Specification

lorum-customers-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Fuse Accounts Customers API
  description: 'Lorum (Fuse) clearing, settlement and treasury API: multi-currency accounts, payments, exchanges, transfers, customers/KYC, documents, batch payments and sandbox simulation. Harvested from the provider''s public ReadMe reference (per-operation OpenAPI definitions).'
  contact:
    name: Lorum
    url: https://docs.lorum.com
  license:
    name: Proprietary license
  version: 0.1.0
servers:
- url: https://api.fuse.me
  description: Production
- url: https://api-sandbox.fuse.me
  description: Sandbox
security:
- OAuth2: []
tags:
- name: Customers
paths:
  /v1/customers/businesses:
    post:
      tags:
      - Customers
      summary: Add business
      description: Add business
      operationId: add_business
      parameters:
      - name: Idempotency-Key
        in: header
        description: Idempotency key to allow safe retrying of the operation. The value should be a unique UUID for each distinct operation. See our understanding idempotency guide for full details.
        required: false
        schema:
          type:
          - string
          - 'null'
          format: uuid
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AddBusinessRequest'
        required: true
      responses:
        '201':
          description: Business has been created successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AddCustomerResponse'
        '400':
          description: Invalid request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '401':
          description: Authentication error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '409':
          description: Conflict error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
  /v1/customers/individuals:
    post:
      tags:
      - Customers
      summary: Add individual
      description: Add individual
      operationId: add_individual
      parameters:
      - name: Idempotency-Key
        in: header
        description: Idempotency key to allow safe retrying of the operation. The value should be a unique UUID for each distinct operation. See our understanding idempotency guide for full details.
        required: false
        schema:
          type:
          - string
          - 'null'
          format: uuid
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AddIndividualRequest'
        required: true
      responses:
        '201':
          description: Individual has been created successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AddCustomerResponse'
        '400':
          description: Invalid request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '401':
          description: Authentication error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '409':
          description: Conflict error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
  /v1/customers/businesses/{customer_id}/shareholders:
    post:
      tags:
      - Customers
      summary: Add a shareholder to a business
      description: Add a shareholder to a business
      operationId: add_shareholder
      parameters:
      - name: customer_id
        in: path
        description: Id of the customer
        required: true
        schema:
          type: string
          format: Uuid
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AddShareholderRequest'
        required: true
      responses:
        '201':
          description: Business has been created successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AddShareholderResponse'
        '400':
          description: Invalid request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '401':
          description: Authentication error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      deprecated: true
    get:
      tags:
      - Customers
      summary: List shareholders for a business
      description: List shareholders for a business
      operationId: list_shareholders
      parameters:
      - name: customer_id
        in: path
        description: Id of the customer
        required: true
        schema:
          type: string
          format: Uuid
      responses:
        '200':
          description: List of shareholders
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/ShareholderSummary'
        '400':
          description: Invalid request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '401':
          description: Authentication error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      deprecated: true
  /v1/customers/{customer_id}/archive:
    patch:
      tags:
      - Customers
      summary: Archive the customer so it is no longer available for use in the system.
      description: 'Archive the customer so it is no longer available for use in the system.

        customer linked to an open account can not be archived.'
      operationId: archive_customer
      parameters:
      - name: customer_id
        in: path
        required: true
        schema:
          type: string
          format: uuid
      responses:
        '204':
          description: Customer has been updated successfully
        '400':
          description: Invalid request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '401':
          description: Authentication error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
  /v1/customers/{customer_id}:
    get:
      tags:
      - Customers
      summary: Get customer
      description: Get customer
      operationId: get_customer
      parameters:
      - name: customer_id
        in: path
        description: Id of the customer
        required: true
        schema:
          type: string
          format: Uuid
      responses:
        '200':
          description: Successfully retrieved contents of directory
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetCustomerResponse'
    patch:
      tags:
      - Customers
      summary: Update customer
      description: Update customer
      operationId: update_customer
      parameters:
      - name: customer_id
        in: path
        required: true
        schema:
          type: string
          format: uuid
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateCustomerRequest'
        required: true
      responses:
        '204':
          description: Customer has been updated successfully
        '400':
          description: Invalid request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '401':
          description: Authentication error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '409':
          description: Conflict error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
  /v1/customers/{customer_id}/onboarding/{currency}:
    get:
      tags:
      - Customers
      summary: Get Customer Onboarding Status for a specific currency
      description: Get Customer Onboarding Status for a specific currency
      operationId: get_customer_onboarding
      parameters:
      - name: customer_id
        in: path
        required: true
        schema:
          type: string
          format: uuid
      - name: currency
        in: path
        required: true
        schema:
          $ref: '#/components/schemas/OnboardingCurrency'
        example: usd
      responses:
        '200':
          description: Successfully retrieved customer onboarding status
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Onboarding'
    post:
      tags:
      - Customers
      summary: Onboard a customer for a specific currency
      description: Onboard a customer for a specific currency
      operationId: onboard_customer
      parameters:
      - name: customer_id
        in: path
        required: true
        schema:
          type: string
          format: uuid
      - name: currency
        in: path
        required: true
        schema:
          $ref: '#/components/schemas/OnboardingCurrency'
        example: usd
      responses:
        '201':
          description: Customer successfully onboarded
        '400':
          description: Invalid request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '401':
          description: Authentication error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
  /v1/customers/businesses/shareholders/{shareholder_id}:
    get:
      tags:
      - Customers
      summary: Get a shareholder
      description: Get a shareholder
      operationId: get_shareholder
      parameters:
      - name: shareholder_id
        in: path
        description: Id of the customer
        required: true
        schema:
          type: string
          format: Uuid
      responses:
        '200':
          description: Returns the shareholder
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetShareholderResponse'
        '400':
          description: Invalid request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '401':
          description: Authentication error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      deprecated: true
    patch:
      tags:
      - Customers
      summary: Update a shareholder
      description: Update a shareholder
      operationId: update_shareholder
      parameters:
      - name: shareholder_id
        in: path
        description: Id of the shareholder
        required: true
        schema:
          type: string
          format: Uuid
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateShareholderRequest'
        required: true
      responses:
        '204':
          description: Shareholder has been updated successfully
        '400':
          description: Invalid request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '401':
          description: Authentication error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      deprecated: true
  /v1/customers/{customer_id}/documents:
    post:
      tags:
      - Customers
      summary: Submit a document
      description: Submit a document
      operationId: link_document
      parameters:
      - name: customer_id
        in: path
        required: true
        schema:
          type: string
          format: uuid
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/LinkDocumentRequest'
        required: true
      responses:
        '200':
          description: Document successfully linked to customer
        '400':
          description: Invalid request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '401':
          description: Authentication error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
  /v1/customers:
    get:
      tags:
      - Customers
      summary: List customers
      description: List customers
      operationId: list_customers
      parameters:
      - name: reference
        in: query
        description: Filter customers by reference ID
        required: false
        schema:
          type: string
      - name: customer_type
        in: query
        description: Filter customers by their type
        required: false
        schema:
          $ref: '#/components/schemas/CustomerTypeFilter'
      - name: cursor
        in: query
        description: Base64 encoded pagination cursor for fetching subsequent pages
        required: false
        schema:
          type:
          - string
          - 'null'
      - name: page_size
        in: query
        description: Number of customers to return per page
        required: false
        schema:
          type: integer
          format: int32
          minimum: 0
      responses:
        '200':
          description: Successfully retrieved list of customers
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListCustomersResponse'
  /v1/customers/{customer_id}/documents/{document_id}:
    delete:
      tags:
      - Customers
      summary: Unlink a document from a customer.
      description: 'Unlink a document from a customer.

        A document belonging to a USD onboarded customer cannot be unlinked from the customer.'
      operationId: unlink_document
      parameters:
      - name: customer_id
        in: path
        required: true
        schema:
          type: string
          format: uuid
      - name: document_id
        in: path
        required: true
        schema:
          type: string
          format: uuid
      responses:
        '204':
          description: Document successfully unlinked from customer
        '400':
          description: Invalid request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '401':
          description: Authentication error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
components:
  schemas:
    CustomerRelationshipType:
      oneOf:
      - type: string
        description: 'The customer is a direct customer of the organisation.

          The customer is contracted with the organisation.'
        enum:
        - direct
      - type: object
        description: 'The customer is a sub-customer of the organisation.

          The customer is contracted with a direct customer of the organisation.'
        required:
        - indirect
        properties:
          indirect:
            type: object
            description: 'The customer is a sub-customer of the organisation.

              The customer is contracted with a direct customer of the organisation.'
            required:
            - parent_customer_id
            properties:
              parent_customer_id:
                type: string
                format: uuid
      description: Represents the relationship between a customer and the organisation.
    UpdateCustomerExtraAPI:
      oneOf:
      - type: object
        title: Individual
        required:
        - individual
        properties:
          individual:
            type: object
            properties:
              currency_extra:
                type:
                - array
                - 'null'
                items:
                  $ref: '#/components/schemas/IndividualCurrencyExtra'
              date_of_birth:
                type:
                - string
                - 'null'
                format: date
              first_name:
                type:
                - string
                - 'null'
                format: string
                maxLength: 45
              gender:
                oneOf:
                - type: 'null'
                - $ref: '#/components/schemas/Gender'
              identification:
                oneOf:
                - type: 'null'
                - $ref: '#/components/schemas/IndividualIdentification'
              last_name:
                type:
                - string
                - 'null'
                format: string
                maxLength: 45
              middle_name:
                type:
                - string
                - 'null'
                format: string
                maxLength: 45
              nationality:
                type:
                - string
                - 'null'
                format: string
                maxLength: 2
                minLength: 2
      - type: object
        title: Business
        required:
        - business
        properties:
          business:
            type: object
            properties:
              business_name:
                type:
                - string
                - 'null'
                format: string
                maxLength: 140
              country_of_issuance:
                type:
                - string
                - 'null'
                format: string
              currency_extra:
                type:
                - array
                - 'null'
                items:
                  $ref: '#/components/schemas/BusinessCurrencyExtra'
              issuance_authority:
                type:
                - string
                - 'null'
                format: string
                maxLength: 140
              linked_documents:
                type:
                - array
                - 'null'
                items:
                  type: string
                  format: uuid
                deprecated: true
              registration_date:
                type:
                - string
                - 'null'
                format: date
              registration_number:
                type:
                - string
                - 'null'
                format: string
                maxLength: 140
              regulatory_licenses:
                type:
                - array
                - 'null'
                items:
                  $ref: '#/components/schemas/RegulatoryLicenseType'
    AddShareholderRequest:
      allOf:
      - $ref: '#/components/schemas/AddShareholder'
      - type: object
        required:
        - holding_percentage
        properties:
          holding_percentage:
            type: integer
            format: int32
            minimum: 0
          shareholder_of:
            type:
            - string
            - 'null'
            format: Uuid
      description: "Company 1\n  |--> Shareholder 1 (Business)\n  |    |--> Shareholder 3 (Individual)\n  |--> Shareholder 2 (Business)\n  |    |--> Shareholder 4 (Business)\n            |--> Shareholder 5 (Individual)\n\n"
    UpdateCustomerRequest:
      allOf:
      - oneOf:
        - type: 'null'
        - $ref: '#/components/schemas/UpdateCustomerExtraAPI'
      - type: object
        properties:
          address:
            oneOf:
            - type: 'null'
            - $ref: '#/components/schemas/UpdateAddress'
          display_name:
            type:
            - string
            - 'null'
            format: string
            maxLength: 140
          reference:
            type:
            - string
            - 'null'
            format: string
            maxLength: 36
    Address:
      type: object
      required:
      - line_1
      - country_code
      properties:
        country_code:
          type: string
          format: string
          maxLength: 2
          minLength: 2
        line_1:
          type: string
          format: string
          maxLength: 50
        line_2:
          type:
          - string
          - 'null'
          format: string
          description: '***optional*** for `AED` payments but ***mandatory*** for `USD` payments'
          maxLength: 50
        line_3:
          type:
          - string
          - 'null'
          format: string
          maxLength: 50
        line_4:
          type:
          - string
          - 'null'
          format: string
          maxLength: 50
    WatchlistIdType:
      type: string
      enum:
      - passport
      - national_id
    Shareholder:
      oneOf:
      - type: object
        required:
        - shareholder
        properties:
          shareholder:
            type: object
            required:
            - first_name
            - last_name
            - dob
            - pob
            - id_type
            - id_number
            properties:
              dob:
                type: string
                format: date
              first_name:
                type: string
              id_number:
                type: string
              id_type:
                type: string
              last_name:
                type: string
              middle_name:
                type:
                - string
                - 'null'
              pob:
                type: string
      - type: object
        required:
        - business_shareholder
        properties:
          business_shareholder:
            type: object
            required:
            - name
            - registration_number
            properties:
              name:
                type: string
              registration_number:
                type: string
    IndividualIdentification:
      oneOf:
      - type: object
        title: Passport
        required:
        - number
        - expiry_date
        - country_of_issuance
        - type
        properties:
          country_of_issuance:
            type: string
            format: string
            description: 'Country of issuance (i.e: US, AE)'
            maxLength: 2
            minLength: 2
          expiry_date:
            type: string
            format: date
            description: Expiry date of the passport.
          number:
            type: string
            format: string
            description: Passport number.
            maxLength: 100
            minLength: 1
          type:
            type: string
            enum:
            - passport
      - type: object
        title: NationalId
        required:
        - number
        - expiry_date
        - country_of_issuance
        - type
        properties:
          country_of_issuance:
            type: string
            format: string
            description: 'Country of issuance. (i.e: US, AE)'
            maxLength: 2
            minLength: 2
          expiry_date:
            type: string
            format: date
            description: Expiry date of the ID.
          number:
            type: string
            format: string
            description: National ID number.
            maxLength: 100
            minLength: 1
          type:
            type: string
            enum:
            - national_id
      description: 'Individual Identification


        Identification document of an individual.'
    Customer:
      allOf:
      - $ref: '#/components/schemas/CustomerExtraAPI'
      - type: object
        required:
        - id
        - reference
        - display_name
        - address
        - documents
        - approval_status
        - relationship_type
        properties:
          address:
            $ref: '#/components/schemas/Address'
          approval_status:
            $ref: '#/components/schemas/ApprovalStatus'
          display_name:
            type: string
          documents:
            type: array
            items:
              $ref: '#/components/schemas/DocumentSummary'
          id:
            type: string
            format: uuid
          reference:
            type: string
            maxLength: 36
          rejection_reason:
            oneOf:
            - type: 'null'
            - $ref: '#/components/schemas/RejectionReason'
          relationship_type:
            $ref: '#/components/schemas/CustomerRelationshipType'
    OnboardingCurrency:
      type: string
      enum:
      - usd
      - eur
      - gbp
      - aed
    Cursor_String:
      type: object
      required:
      - size
      properties:
        next:
          type:
          - string
          - 'null'
        size:
          type: integer
          minimum: 0
    OnboardingStatus:
      oneOf:
      - type: string
        enum:
        - pending
      - type: string
        enum:
        - completed
      - type: object
        required:
        - failed
        properties:
          failed:
            $ref: '#/components/schemas/OnboardingError'
    UpdateShareholderRequest:
      allOf:
      - oneOf:
        - type: 'null'
        - $ref: '#/components/schemas/UpdateShareholder'
      - type: object
        properties:
          holding_percentage:
            type:
            - integer
            - 'null'
            format: int32
            minimum: 0
          shareholder_of:
            type:
            - string
            - 'null'
            format: Uuid
    CustomerSummary:
      type: object
      required:
      - id
      - reference
      - customer_type
      - display_name
      - created_at
      - approval_status
      properties:
        approval_status:
          $ref: '#/components/schemas/ApprovalStatus'
        created_at:
          type: string
          format: date-time
        customer_type:
          $ref: '#/components/schemas/CustomerTypeFilter'
        display_name:
          type: string
        id:
          type: string
          format: uuid
        reference:
          type: string
          maxLength: 36
    CustomerExtraAPI:
      oneOf:
      - type: object
        title: Individual
        required:
        - individual
        properties:
          individual:
            type: object
            required:
            - first_name
            - last_name
            - date_of_birth
            - gender
            - nationality
            - currency_extra
            properties:
              currency_extra:
                type: array
                items:
                  $ref: '#/components/schemas/IndividualCurrencyExtra'
              date_of_birth:
                type: string
                format: date-time
              first_name:
                type: string
              gender:
                $ref: '#/components/schemas/Gender'
              identification:
                oneOf:
                - type: 'null'
                - $ref: '#/components/schemas/IndividualIdentification'
              last_name:
                type: string
              middle_name:
                type:
                - string
                - 'null'
              nationality:
                type: string
                format: string
                maxLength: 2
                minLength: 2
      - type: object
        title: Business
        required:
        - business
        properties:
          business:
            type: object
            required:
            - business_name
            - registration_number
            - country_of_issuance
            - regulatory_licenses
            - currency_extra
            properties:
              business_name:
                type: string
              country_of_issuance:
                type: string
                format: string
                maxLength: 2
                minLength: 2
              currency_extra:
                type: array
                items:
                  $ref: '#/components/schemas/BusinessCurrencyExtra'
              issuance_authority:
                type:
                - string
                - 'null'
              registration_date:
                type:
                - string
                - 'null'
                format: date
              registration_number:
                type: string
              regulatory_licenses:
                type: array
                items:
                  $ref: '#/components/schemas/RegulatoryLicenseType'
    GetShareholderResponse:
      allOf:
      - $ref: '#/components/schemas/Shareholder'
      - type: object
        required:
        - shareholder_type
        - holding_percent
        properties:
          holding_percent:
            type: integer
            format: int32
            minimum: 0
          shareholder_of:
            type:
            - string
            - 'null'
            format: Uuid
          shareholder_type:
            $ref: '#/components/schemas/ShareholderType'
    DocumentType:
      type: string
      description: Types of documents that can be uploaded for customers and transactions.
      enum:
      - passport
      - visa
      - national_id
      - trade_licence
      - commercial_licence
      - identity_verification_biometrics
      - incorporation_cert
      - incumbency_cert
      - memorandum_articles
      - bank_statement
      - photo
      - proof_of_address
      - regulatory_license
      - articles_of_association
      - source_of_funds
      - aml_cft_sanctions_ind_audit
      - aml_cft_sanctions_policy
      - compliance_officer_resume
      - financial_statements
      - share_certificate
      - corporate_resolution
      - wolfsberg_gcbddq
      - edd_concentration_form
      - other
    AedLicenseIssuer:
      type: string
     

# --- truncated at 32 KB (47 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/lorum/refs/heads/main/openapi/lorum-customers-api-openapi.yml