Weavr Customer Data & Due Diligence API

Manage customer profile data and KYC/KYB due diligence flows for corporates and consumers.

Operations 8

GET /corporates Get a corporate #
PATCH /corporates Update a corporate #
POST /corporates/kyb Start KYB for a corporate #
GET /corporates/kyb Get KYB for a corporate #
GET /consumers Get a consumer #
PATCH /consumers Update a consumer #
POST /consumers/kyc Start KYC for a consumer #
GET /consumers/kyc Get KYC for a consumer #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/weavr-customer-data-due-diligence-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no email required.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

weavr-customer-data-due-diligence-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  version: v3
  title: Weavr Multi Product Customer Data & Due Diligence API
  x-logo:
    url: https://storage.googleapis.com/weavr-cdn/weavr_logo-new.png
    backgroundColor: '#FFFFFF'
    altText: Weavr
  description: 'Weavr Multi API provides a simple and flexible way to issue cards and accounts to your customers.


    By integrating Weavr Multi API in your application you can embed banking capabilities within your app and provide a seamless experience for your customers.


    # Authentication


    Each request to the Multi API must include an `api-key` that represents your account. You can obtain an API Key by registering for a Multi account [here](https://portal.weavr.io).


    Almost all endpoints require a secondary authentication token `auth_token` that represents the user for whom the request is being executed.

    '
  contact:
    name: Weavr
    url: https://weavr.io
servers:
- description: Weavr Sandbox Environment
  url: https://sandbox.weavr.io/multi
tags:
- name: Customer Data & Due Diligence
  description: Manage customer profile data and KYC/KYB due diligence flows for corporates and consumers.
paths:
  /corporates:
    get:
      tags:
      - Customer Data & Due Diligence
      description: Retrieve the details of the logged-in corporate.
      summary: Get a corporate
      operationId: corporateGet
      x-permissions:
      - i:corporates:get
      responses:
        '200':
          $ref: '#/components/responses/CorporateResponse'
        '400':
          $ref: '#/components/responses/BadRequestError'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '500':
          $ref: '#/components/responses/InternalServerError'
        '503':
          $ref: '#/components/responses/ServiceUnavailable'
        default:
          $ref: '#/components/responses/Error'
      security:
      - auth_token: []
        api-key: []
    patch:
      tags:
      - Customer Data & Due Diligence
      description: "Update the details of the logged-in corporate identity.\n\nThe following Corporate details are verified during due diligence (KYB) and cannot be updated via the API once the Corporate has been verified:\n  - Root User Name\n  - Root User Surname\n  - Root User Email\n  - Root User Mobile Country Code\n  - Root User Mobile Number\n  - Business Address\n  - Date of birth\n\n*If these details need to be changed after due diligence is completed, please contact Customer Support to restart the Due Diligence process.*\n"
      summary: Update a corporate
      operationId: corporateUpdate
      x-permissions:
      - i:corporates:update
      parameters:
      - $ref: '#/components/parameters/idempotency-ref'
      requestBody:
        $ref: '#/components/requestBodies/CorporateUpdateRequest'
      responses:
        '200':
          $ref: '#/components/responses/CorporateResponse'
        '400':
          $ref: '#/components/responses/BadRequestError'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '409':
          $ref: '#/components/responses/CorporateUpdateConflict'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '500':
          $ref: '#/components/responses/InternalServerError'
        '503':
          $ref: '#/components/responses/ServiceUnavailable'
        default:
          $ref: '#/components/responses/Error'
      security:
      - auth_token: []
        api-key: []
  /corporates/kyb:
    post:
      tags:
      - Customer Data & Due Diligence
      description: 'Corporates need to complete due diligence (KYB) before they can create instruments and perform transactions.


        This operation initiates the due diligence process for the logged-in corporate.


        Due Diligence is handled by a KYB provider - you will need to embed the KYB UI Component in your application so that the Corporate will be able to perform the KYB process.


        To initialise the KYB UI Component, you need a `reference` that is given you in the response of this operation.

        '
      summary: Start KYB for a corporate
      operationId: corporateKybStart
      x-permissions:
      - i:corporates:kyb_start
      responses:
        '200':
          description: Success
          headers:
            request-ref:
              $ref: '#/components/headers/request-ref'
          content:
            application/json:
              schema:
                required:
                - reference
                type: object
                properties:
                  reference:
                    type: string
                    pattern: ^[0-9]+$
                    description: The reference required to initialise the KYB UI Component.
        '400':
          $ref: '#/components/responses/BadRequestError'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                type: object
                properties:
                  errorCode:
                    type: string
                    enum:
                    - KYB_ALREADY_APPROVED
                    - KYB_PERMANENTLY_REJECTED
                    - KYB_PENDING_REVIEW
                    - EMAIL_UNVERIFIED
                    - MANAGED_ONBOARDING_PENDING
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '500':
          $ref: '#/components/responses/InternalServerError'
        '503':
          $ref: '#/components/responses/ServiceUnavailable'
        default:
          $ref: '#/components/responses/Error'
      security:
      - auth_token: []
        api-key: []
    get:
      tags:
      - Customer Data & Due Diligence
      description: Returns the KYB status for the logged-in corporate.
      summary: Get KYB for a corporate
      operationId: corporateKybGet
      x-permissions:
      - i:corporates:kyb_get
      responses:
        '200':
          $ref: '#/components/responses/CorporateKybGetResponse'
        '400':
          $ref: '#/components/responses/BadRequestError'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '500':
          $ref: '#/components/responses/InternalServerError'
        '503':
          $ref: '#/components/responses/ServiceUnavailable'
        default:
          $ref: '#/components/responses/Error'
      security:
      - auth_token: []
        api-key: []
  /consumers:
    get:
      tags:
      - Customer Data & Due Diligence
      description: Retrieve the details of the logged-in Consumer.
      summary: Get a consumer
      operationId: consumerGet
      x-permissions:
      - i:consumers:get
      responses:
        '200':
          $ref: '#/components/responses/ConsumerResponse'
        '400':
          $ref: '#/components/responses/BadRequestError'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '500':
          $ref: '#/components/responses/InternalServerError'
        '503':
          $ref: '#/components/responses/ServiceUnavailable'
        default:
          $ref: '#/components/responses/Error'
      security:
      - auth_token: []
        api-key: []
    patch:
      tags:
      - Customer Data & Due Diligence
      description: "Update the details of the logged-in consumer identity.\n\nIf the Consumer root user has already completed KYC, the following details cannot be updated:\n  - name\n  - surname\n  - email\n  - mobile Country Code\n  - mobile Number\n  - date of Birth\n  - address\n"
      summary: Update a consumer
      operationId: consumerUpdate
      x-permissions:
      - i:consumers:update
      requestBody:
        $ref: '#/components/requestBodies/ConsumerUpdateRequest'
      responses:
        '200':
          $ref: '#/components/responses/ConsumerResponse'
        '400':
          $ref: '#/components/responses/BadRequestError'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '409':
          $ref: '#/components/responses/ConsumerUpdateConflict'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '500':
          $ref: '#/components/responses/InternalServerError'
        '503':
          $ref: '#/components/responses/ServiceUnavailable'
        default:
          $ref: '#/components/responses/Error'
      security:
      - auth_token: []
        api-key: []
  /consumers/kyc:
    post:
      tags:
      - Customer Data & Due Diligence
      description: "Consumers need to complete due diligence (KYC) before they can create instruments and fund transaction.\n\nThis operation initiates the due diligence process for the logged-in consumer.  \n\nDue Diligence is handled by a KYC provider, you will need to embed the KYC UI Component in your application to show the KYC screens to your users.\n\nTo initialise the KYC UI Component, you need a `reference` that is given to you in the response of this operation.\n"
      summary: Start KYC for a consumer
      operationId: consumerKycStart
      x-permissions:
      - i:consumers:kyc_start
      requestBody:
        $ref: '#/components/requestBodies/ConsumerKycLevelRequest'
      responses:
        '200':
          $ref: '#/components/responses/ConsumerKycStartResponse'
        '400':
          $ref: '#/components/responses/BadRequestError'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '409':
          $ref: '#/components/responses/ConsumerKycStartConflict'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '500':
          $ref: '#/components/responses/InternalServerError'
        '503':
          $ref: '#/components/responses/ServiceUnavailable'
        default:
          $ref: '#/components/responses/Error'
      security:
      - auth_token: []
        api-key: []
    get:
      tags:
      - Customer Data & Due Diligence
      description: Returns the KYC status for the logged-in consumer.
      summary: Get KYC for a consumer
      operationId: consumerKycGet
      x-permissions:
      - i:consumers:kyc_get
      responses:
        '200':
          $ref: '#/components/responses/ConsumerKycGetResponse'
        '400':
          $ref: '#/components/responses/BadRequestError'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '500':
          $ref: '#/components/responses/InternalServerError'
        '503':
          $ref: '#/components/responses/ServiceUnavailable'
        default:
          $ref: '#/components/responses/Error'
      security:
      - auth_token: []
        api-key: []
components:
  responses:
    InternalServerError:
      description: Internal Server Error - There is a problem with the server. Please try again later.
      headers:
        request-ref:
          $ref: '#/components/headers/request-ref'
    TooManyRequests:
      description: Too many requests.
      headers:
        request-ref:
          $ref: '#/components/headers/request-ref'
        x-ratelimit-limit:
          $ref: '#/components/headers/x-ratelimit-limit'
        x-ratelimit-reset:
          $ref: '#/components/headers/x-ratelimit-reset'
    CorporateResponse:
      description: Success
      headers:
        request-ref:
          $ref: '#/components/headers/request-ref'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Corporate'
    Unauthorized:
      description: Unauthorized - Your credentials or access token are invalid.
      headers:
        request-ref:
          $ref: '#/components/headers/request-ref'
    ConsumerKycStartConflict:
      description: Conflict
      content:
        application/json:
          schema:
            type: object
            properties:
              errorCode:
                type: string
                enum:
                - KYC_ALREADY_APPROVED
                - KYC_PENDING_REVIEW
                - KYC_REJECTED
                - EMAIL_UNVERIFIED
    CorporateUpdateConflict:
      description: Conflict
      content:
        application/json:
          schema:
            type: object
            properties:
              errorCode:
                type: string
                enum:
                - FEE_GROUP_INVALID
                - COUNTRY_INVALID
                - EMAIL_NOT_UNIQUE
                - ROOT_USER_ALREADY_VERIFIED
                - COUNTRY_UNSUPPORTED
                - MOBILE_OR_COUNTRY_CODE_INVALID
                - MOBILE_NO_CHANGE_LIMIT_EXCEEDED
                - TOO_FREQUENT_EMAIL_CHANGES
                - EMAIL_DOMAIN_NOT_ALLOWED
                - MOBILE_CHANGE_NOT_ALLOWED
                - UNSUPPORTED_CURRENCY
                - TERMINATION_DATE_IN_PAST
    Forbidden:
      description: Forbidden - Access to the requested resource or action is forbidden.
      headers:
        request-ref:
          $ref: '#/components/headers/request-ref'
      content:
        application/json:
          schema:
            type: object
            properties:
              errorCode:
                type: string
                enum:
                - INSUFFICIENT_PERMISSIONS
    ConsumerUpdateConflict:
      description: Conflict
      content:
        application/json:
          schema:
            type: object
            properties:
              errorCode:
                type: string
                enum:
                - FEE_GROUP_INVALID
                - COUNTRY_INVALID
                - CONSUMER_VERIFIED
                - EMAIL_NOT_UNIQUE
                - MOBILE_OR_COUNTRY_CODE_INVALID
                - COUNTRY_UNSUPPORTED
                - MOBILE_NO_CHANGE_LIMIT_EXCEEDED
                - TOO_FREQUENT_EMAIL_CHANGES
                - EMAIL_DOMAIN_NOT_ALLOWED
                - MOBILE_CHANGE_NOT_ALLOWED
                - TERMINATION_DATE_IN_PAST
    NotFound:
      description: Not found - The requested resource couldn't be found.
      headers:
        request-ref:
          $ref: '#/components/headers/request-ref'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    ConsumerKycStartResponse:
      description: Success
      headers:
        request-ref:
          $ref: '#/components/headers/request-ref'
      content:
        application/json:
          schema:
            required:
            - reference
            - kycLevel
            type: object
            properties:
              reference:
                type: string
                pattern: ^[0-9]+$
                description: The reference used to initialise the KYC UI Component.
              kycLevel:
                $ref: '#/components/schemas/KycLevel'
                description: The KYC level assigned to the consumer.
    CorporateKybGetResponse:
      description: Success
      headers:
        request-ref:
          $ref: '#/components/headers/request-ref'
      content:
        application/json:
          schema:
            type: object
            properties:
              kybStatus:
                description: The effective due diligence status of the logged-in corporate user.
                $ref: '#/components/schemas/KyiStatus'
              ongoingKybStatus:
                description: The ongoing due diligence status of the logged-in corporate user.
                $ref: '#/components/schemas/KyiStatus'
    ConsumerResponse:
      description: Success
      headers:
        request-ref:
          $ref: '#/components/headers/request-ref'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Consumer'
    ConsumerKycGetResponse:
      description: Success
      headers:
        request-ref:
          $ref: '#/components/headers/request-ref'
      content:
        application/json:
          schema:
            type: object
            required:
            - fullDueDiligence
            - ongoingFullDueDiligence
            properties:
              fullDueDiligence:
                description: The status of the Due Diligence for the consumer.
                $ref: '#/components/schemas/KyiStatus'
              kycLevel:
                description: The customer's level of due diligence.
                $ref: '#/components/schemas/KycLevel'
              ongoingFullDueDiligence:
                description: The status of the ongoing Due Diligence process for the consumer
                $ref: '#/components/schemas/KyiStatus'
              ongoingKycLevel:
                description: The level of due diligence of the ongoing KYC process.
                $ref: '#/components/schemas/KycLevel'
    BadRequestError:
      description: Bad Request Error - Your request is invalid.
      headers:
        request-ref:
          $ref: '#/components/headers/request-ref'
      content:
        application/json:
          schema:
            type: object
            properties:
              message:
                maxLength: 255
                type: string
                description: When present helps to identify and fix the problem.
              syntaxErrors:
                $ref: '#/components/schemas/SyntaxError'
    Error:
      description: Error
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    ServiceUnavailable:
      description: Service Unavailable - The requested service is temporarily unavailable. Please try again later.
      headers:
        request-ref:
          $ref: '#/components/headers/request-ref'
  schemas:
    CorporateRootUser:
      required:
      - id
      - email
      - name
      - surname
      - mobile
      - active
      - emailVerified
      - mobileNumberVerified
      - companyPosition
      type: object
      properties:
        id:
          $ref: '#/components/schemas/IdentityId'
        name:
          maxLength: 100
          type: string
          description: First name of the root user.
        surname:
          maxLength: 100
          type: string
          description: Last name of the root user.
        email:
          $ref: '#/components/schemas/Email'
        mobile:
          $ref: '#/components/schemas/Mobile'
        companyPosition:
          $ref: '#/components/schemas/CompanyPosition'
        active:
          type: boolean
          description: The state of the root user. If false, then the user will not be able to log in.
        emailVerified:
          type: boolean
          description: Indicates if the root user's email has been verified.
        mobileNumberVerified:
          type: boolean
          description: Indicates if the root user's mobile number has been verified.
        dateOfBirth:
          description: Date of birth of the authorised user.
          $ref: '#/components/schemas/Date'
        tag:
          $ref: '#/components/schemas/Tag'
        locale:
          $ref: '#/components/schemas/UserLocale'
        brand:
          $ref: '#/components/schemas/Brand'
    AddressWithCountryRequired:
      required:
      - country
      type: object
      description: The address, with none of the separate fields being set as required.
      properties:
        addressLine1:
          type: string
          description: The first line of the address.
        addressLine2:
          type: string
          description: The second line of the address.
        city:
          type: string
          description: The city of the address.
        postCode:
          maxLength: 10
          pattern: ^[A-Za-z0-9 -]*$
          type: string
          description: The post code associated with the address.
        state:
          maxLength: 50
          type: string
          description: The state of the address.
        country:
          maxLength: 2
          minLength: 2
          pattern: ^[A-Z]+$
          type: string
          description: The country of the address expressed in ISO 3166 alpha-2 format.
    Brand:
      type: string
      pattern: ^[a-zA-Z0-9]+$
      description: 'Brand identifier used to determine the set of email and SMS user notification templates. Must be alphanumeric, up to 25 characters, and contain no spaces.

        '
      maxLength: 25
    Industry:
      type: string
      description: The industry of the identity.
      deprecated: true
      enum:
      - ACCOUNTING
      - AUDIT
      - FINANCE
      - PUBLIC_SECTOR_ADMINISTRATION
      - ART_ENTERTAINMENT
      - AUTO_AVIATION
      - BANKING_LENDING
      - BUSINESS_CONSULTANCY_LEGAL
      - CONSTRUCTION_REPAIR
      - EDUCATION_PROFESSIONAL_SERVICES
      - INFORMATIONAL_TECHNOLOGIES
      - TOBACCO_ALCOHOL
      - GAMING_GAMBLING
      - MEDICAL_SERVICES
      - MANUFACTURING
      - PR_MARKETING
      - PRECIOUS_GOODS_JEWELRY
      - NON_GOVERNMENTAL_ORGANIZATION
      - INSURANCE_SECURITY
      - RETAIL_WHOLESALE
      - TRAVEL_TOURISM
      - FREELANCER
    AddressWithNoRequiredFields:
      type: object
      description: The address, with none of the separate fields being set as required.
      properties:
        addressLine1:
          type: string
          description: The first line of the address.
        addressLine2:
          type: string
          description: The second line of the address.
        city:
          type: string
          description: The city of the address.
        postCode:
          maxLength: 10
          pattern: ^[A-Za-z0-9 -]*$
          type: string
          description: The post code associated with the address.
        state:
          maxLength: 50
          type: string
          description: The state of the address.
        country:
          maxLength: 2
          minLength: 2
          pattern: ^[A-Z]+$
          type: string
          description: The country of the address expressed in ISO 3166 alpha-2 format.
    Mobile:
      required:
      - number
      - countryCode
      type: object
      properties:
        countryCode:
          maxLength: 4
          minLength: 1
          type: string
          pattern: ^\+[0-9]+$
          description: The country code of the user mobile number (e.g. +44).
        number:
          pattern: ^[0-9]{1,12}$
          type: string
          description: The mobile number of the user - excluding country code.
    KycLevel:
      deprecated: true
      type: string
      description: "The KYC level, which determines what KYC information will be requested from the consumer:\n  - KYC_LEVEL_1: The most basic level of KYC required. \n  - KYC_LEVEL_2: Full due diligence level 2\n"
      enum:
      - KYC_LEVEL_1
      - KYC_LEVEL_2
    UserLocale:
      type: string
      pattern: ^[a-z]{2}(-[A-Z]{2})?$
      description: 'BCP47 locale code (e.g. en, en-US). The locale determines which email and SMS user notification templates are used.

        '
      maxLength: 5
      example: en-GB
    CompanyType:
      type: string
      description: Supported company types - if company type is not listed, please contact our support team to check if the company type can be supported.
      enum:
      - SOLE_TRADER
      - LLC
      - PUBLIC_LIMITED_COMPANY
      - LIMITED_LIABILITY_PARTNERSHIP
      - NON_PROFIT_ORGANISATION
    CorporateSourceOfFunds:
      type: string
      description: The corporate's source of funds.
      deprecated: true
      enum:
      - LABOUR_CONTRACT
      - CIVIL_CONTRACT
      - RENT
      - FUNDS_FROM_OTHER_AUXILIARY_SOURCES
      - SALE_OF_MOVABLE_ASSETS
      - SALE_OF_REAL_ESTATE
      - ORDINARY_BUSINESS_ACTIVITY
      - DIVIDENDS
      - LOAN_FROM_FINANCIAL_INSTITUTIONS_CREDIT_UNIONS
      - LOAN_FROM_THIRD_PARTIES
      - SALE_OF_COMPANY_SHARES_BUSINESS
      - OTHER
      - DONATION
      - INHERITANCE
      - ORIGIN_OF_FUNDS_UNKNOWN
    SyntaxError:
      type: object
      description: Is returned as part of an HTTP error response whenever a syntax error is detected. A list of the fields together with their syntax error will be provided.
      properties:
        invalidFields:
          type: array
          items:
            type: object
            properties:
              params:
                type: array
                items:
                  type: string
              fieldName:
                type: string
              error:
                type: string
                enum:
                - REQUIRED
                - HAS_TEXT
                - REQUIRES
                - SIZE
                - RANGE
                - IN
                - NOT_IN
                - REGEX
                - EXACTLY
                - AT_LEAST
                - AT_MOST
                - ALL_OR_NONE
    Consumer:
      required:
      - id
      - profileId
      - rootUser
      - ipAddress
      - creationTimestamp
      type: object
      properties:
        id:
          description: The unique identifier of the Consumer Identity.
          $ref: '#/components/schemas/IdentityId'
        profileId:
          $ref: '#/components/schemas/ProfileId'
        tag:
          $ref: '#/components/schemas/Tag'
        rootUser:
          description: The root user of the Consumer Identity.
          $ref: '#/components/schemas/ConsumerRootUser'
        creationTimestamp:
          type: integer
          format: int64
          description: The time when this consumer was created, expressed in Epoch timestamp using millisecond precision.
        ipAddress:
          maxLength: 45
          minLength: 5
          type: string
          description: The IP address of the consumer user doing the registration.
        acceptedTerms:
          type: boolean
          description: Must be set to *true* to indicate that the consumer root user has accepted the terms and conditions.
        baseCurrency:
          $ref: '#/components/schemas/Currency'
        feeGroup:
          type: string
          description: The fee group which the consumer is bound to.
        sourceOfFunds:
          $ref: '#/components/schemas/ConsumerSourceOfFunds'
        sourceOfFundsOther:
          type: string
          description: Description of source of funds in case `OTHER` was chosen.
          deprecated: true
    Error:
      type: object
      properties:
        code:
          type: string
        message:
          type: string
    KyiStatus:
      type: string
      enum:
      - NOT_STARTED
      - INITIATED
      - PENDING_REVIEW
      - APPROVED
      - REJECTED
    Date:
      required:
      - year
      - month
      - day
      type: object
      properties:
        year:
          type: integer
          format: int32
          maximum: 2100
          minimum: 1900
        month:
          type: integer
          format: int32
          maximum: 12
          minimum: 1
        day:
          type: integer
          format: int32
          maximum: 31
          minimum: 1
    Corporate:
      required:
      - id
      - profileId
      - rootUser
      - company
      - ipAddress
      - baseCurrency
      - creationTimestamp
      type: object
      properties:
        id:
          description: The unique identifier of the Corporate Identity.
          $ref: '#/components/schemas/IdentityId'
        profileId:
          $ref: '#/components/schemas/ProfileId'
        tag:
          $ref: '#/components/schemas/Tag'
        rootUser:
          description: The root user of the Corporate Identity.
          $ref: '#/components/schemas/CorporateRootUser'
        company:
          required:
          - name
          - type
          - countryOfRegistration
          type: object
          properties:
            name:
              maxLength: 100
              type: string
              description: The registered name of the company.
            type:
              $ref: '#/components/schemas/CompanyType'
            registrationNumber:
              maxLength: 20
              minLength: 1
              type: string
              description: The company registration number.
            registeredAddress:
              $ref: '#/components/schemas/LegalAddress'
            businessAddress:
              description: The address where the business is based.
              $ref: '#/components/schemas/Address'
            countryOfRegistration:
              maxLength: 2
              minLength: 2
              pattern: ^[A-Z]+$
              type: string
              description: The country of company registration in ISO 3166 alpha-2.
            incorporatedOn:
              description: The company's date of incorporation
              $ref: '#/components/schemas/Date'
        industry:
          $ref: '#/components/schemas/Industry'
        sourceOfFunds:
          $ref: '#/components/schemas/CorporateSourceOfFunds'
        sourceOfFundsOther:
          type: string
          description: Description of source of funds in case `OTHER` was chosen.
          deprecated: true
        acceptedTerms:
          type: boolean
          description: Must be set to *true* to indicate that the root user has accepted the terms and conditions.
        ipAddress:
          maxLength: 45
          minLength: 5
          type: string
          description: The IP address of the user doing the registration.
        baseCurrency:
          $ref: '#/components/schemas/Currency'
        feeGroup:
          type: string
          description: Fee groups allow the possibility to charge different fees to users under the same profile. If fee groups are not required, ignore this field.
        creationTimestamp:
          type: integer
          format: int64
          description: The time when the Corporate was created, expressed in Epoch timestamp using millisecond precision.
        retailQualifier:
          type: string
          description: Indicates the type of corporate entity based on its retail status.
          enum:
          - RETAIL
          - NON_RETAIL
          - UNKNOWN
    IdentityId:
      required:
      - type
      - id
      type: object
      properties:
        type:
          enum:
          - CONSUMER
          - CORPORATE
          type: string
          description: Indicates the identity type.
        id:
          type: string
          pattern: ^[0-9]+$
          description: The identifier for the identity.
    Address:
      required:
      - addressLine1
      - city
      - postCode
      - country
      type: object
      properties:
        addressLine1:
          minLength: 1
          maxLength: 150
          type: string
          description: The first line of the address.
        addressLine2:
          maxLength: 150
          type: string
          description: The second line of the address.
        city:
          maxLength: 50
          type: string
          description: The city of the address.
        postCode:
          maxLength: 10
          pattern: ^[A-Za-z0-9 -]*$
          type: string
          description: The post code associated with the address.
        state:
          maxLength: 50
          type: string
          description: The state of the address.
        country:
          maxLength: 2
          minLength: 2
          pattern: ^[A-Z]+$
          type: string
          description: The country of the address expressed in ISO 3166 alpha-2 format.
    Tag:
      type: string
      description: The tag field is a custom field that can be used to search and filter.
      maxLength: 50
      pattern: ^[a-zA-Z0-9_-]+$
    LegalAddress:
      required:
      - addressLine1
      - city
      - country
      type: object
      description: The legal address of the company. This information is captured via the Due Diligence (KYB) process.
      properties:
        addressLine1:
          type: string
        addressLine2:
          type: string
        city:
          type: string
        postCode:
          maxLength: 10
          pattern: ^[A-Za-z0-9 -]*$
          type: string
        state:
       

# --- truncated at 32 KB (44 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/weavr/refs/heads/main/openapi/weavr-customer-data-due-diligence-api-openapi.yml