Weavr Customer Data & Due Diligence API

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

OpenAPI Specification

weavr-customer-data-due-diligence-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  version: v3
  title: Weavr Multi Product BackOffice Access Token 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 Back Office API allows you, as an innovator, to perform various back office operations concerning

    identities and their instruments, without requiring the users to be logged in.


    A token is to be obtained through the `access_token` method, and this will allow relevant operations

    to be performed on behalf of this same identity.

    '
  contact:
    name: Weavr
    url: https://weavr.io
servers:
- description: Weavr Sandbox Environment
  url: https://sandbox.weavr.io/multi/backoffice
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:
  requestBodies:
    ConsumerKycLevelRequest:
      content:
        application/json:
          schema:
            type: object
            properties:
              kycLevel:
                $ref: '#/components/schemas/KycLevel'
                description: The KYC level that the consumer will be assigned to, which determines the due diligence details that the user will need to provide.
              prefillDetails:
                description: List of KYC details to be prefilled for the consumer.
                type: array
                items:
                  type: object
                  properties:
                    name:
                      type: string
                    value:
                      type: string
    ConsumerUpdateRequest:
      required: true
      content:
        application/json:
          schema:
            type: object
            properties:
              tag:
                $ref: '#/components/schemas/Tag'
              name:
                maxLength: 20
                pattern: ^[^0-9~!@#$%^*()_+={}\|:;,<>/?]*$
                type: string
                description: The first name of the Consumer root user.
              surname:
                maxLength: 20
                pattern: ^[^0-9~!@#$%^*()_+={}\|:;,<>/?]*$
                type: string
                description: The last name of the Consumer root user.
              email:
                $ref: '#/components/schemas/Email'
              mobile:
                $ref: '#/components/schemas/Mobile'
              dateOfBirth:
                description: Date of birth of the consumer root user.
                $ref: '#/components/schemas/Date'
              address:
                description: Address of the consumer root user.
                $ref: '#/components/schemas/AddressWithCountryRequired'
              feeGroup:
                type: string
                description: The fee group which the consumer will be bound to. Do not specify this if you are not using fee groups.
              baseCurrency:
                $ref: '#/components/schemas/Currency'
              occupation:
                $ref: '#/components/schemas/Occupation'
              sourceOfFunds:
                $ref: '#/components/schemas/ConsumerSourceOfFunds'
              sourceOfFundsOther:
                deprecated: true
                type: string
                description: Description of source of funds in case `OTHER` was chosen.
              placeOfBirth:
                type: string
                description: The place of birth of the consumer root user.
              nationality:
                description: Nationality of the consumer root user, in ISO 3166 alpha-2 format.
                $ref: '#/components/schemas/Nationality'
              resetMobileCounter:
                type: boolean
              userTag:
                description: The tag to be assigned to the root user.
                $ref: '#/components/schemas/Tag'
              locale:
                $ref: '#/components/schemas/UserLocale'
              brand:
                $ref: '#/components/schemas/Brand'
    CorporateUpdateRequest:
      required: true
      content:
        application/json:
          schema:
            type: object
            properties:
              tag:
                $ref: '#/components/schemas/Tag'
              industry:
                $ref: '#/components/schemas/Industry'
              sourceOfFunds:
                $ref: '#/components/schemas/CorporateSourceOfFunds'
              sourceOfFundsOther:
                type: string
                deprecated: true
                description: Description of source of funds in case `OTHER` was chosen.
              companyBusinessAddress:
                $ref: '#/components/schemas/Address'
              feeGroup:
                type: string
                description: The fee group which the Corporate will be bound to. Do not specify this if you are not using fee groups.
              baseCurrency:
                $ref: '#/components/schemas/Currency'
              name:
                maxLength: 20
                pattern: ^[^0-9~!@#$%^*()_+={}\|:;,<>/?]*$
                type: string
                description: The first name of the Corporate root user.
              surname:
                maxLength: 20
                pattern: ^[^0-9~!@#$%^*()_+={}\|:;,<>/?]*$
                type: string
                description: The last name of the Corporate root user.
              email:
                $ref: '#/components/schemas/Email'
              mobile:
                $ref: '#/components/schemas/Mobile'
              dateOfBirth:
                description: Date of birth of the authorised user.
                $ref: '#/components/schemas/Date'
              resetMobileCounter:
                type: boolean
              userTag:
                description: The tag to be assigned to the root user.
                $ref: '#/components/schemas/Tag'
              locale:
                $ref: '#/components/schemas/UserLocale'
              brand:
                $ref: '#/components/schemas/Brand'
  responses:
    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
    InternalServerError:
      description: Internal Server Error - There is a problem with the server. Please try again later.
      headers:
        request-ref:
          $ref: '#/components/headers/request-ref'
    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'
    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.
    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'
    ServiceUnavailable:
      description: Service Unavailable - The requested service is temporarily unavailable. Please try again later.
      headers:
        request-ref:
          $ref: '#/components/headers/request-ref'
    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'
    ConsumerKycStartConflict:
      description: Conflict
      content:
        application/json:
          schema:
            type: object
            properties:
              errorCode:
                type: string
                enum:
                - KYC_ALREADY_APPROVED
                - KYC_PENDING_REVIEW
                - KYC_REJECTED
                - EMAIL_UNVERIFIED
    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
    CorporateResponse:
      description: Success
      headers:
        request-ref:
          $ref: '#/components/headers/request-ref'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Corporate'
    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'
    Unauthorized:
      description: Unauthorized - Your credentials or access token are invalid.
      headers:
        request-ref:
          $ref: '#/components/headers/request-ref'
    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
    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'
  schemas:
    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
    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'
    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
    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.
    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
    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
    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
    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.
    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
    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
    KyiStatus:
      type: string
      enum:
      - NOT_STARTED
      - INITIATED
      - PENDING_REVIEW
      - APPROVED
      - REJECTED
    ConsumerSourceOfFunds:
      deprecated: true
      type: string
      description: The consumer's source of funds.
      enum:
     

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