Weavr Consumers API

The Consumers API from Weavr — 3 operation(s) for consumers.

Operations 3

POST /consumers/fees/charge Charge fee to a consumer #
POST /consumers Register a consumer #
POST /consumers/{consumer_id}/verify Simulate verification of a consumer identity #

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-consumers-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-consumers-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Weavr Consumers API
  x-logo:
    url: https://storage.googleapis.com/weavr-cdn/weavr_logo-new.png
    backgroundColor: '#FFFFFF'
    altText: Weavr
  version: '1.0'
  description: 'Operations tagged Consumers across 4 of this provider''s published API definitions: weavr-multi-backoffice-openapi-original.yml, weavr-multi-openapi-original.yml, weavr-simulator-openapi-original.yml, weavr-webhooks-openapi-original.yml. Each path carries the servers of the definition it was published in.'
servers:
- description: Weavr Sandbox Environment
  url: https://sandbox.weavr.io/multi/backoffice
- description: Weavr Sandbox Environment
  url: https://sandbox.weavr.io/multi
- url: https://sandbox.weavr.io/simulate/api"
- url: '""'
tags:
- name: Consumers
paths:
  /consumers/fees/charge:
    post:
      deprecated: true
      tags:
      - Consumers
      description: 'Charge a fee to the logged-in consumer based on a pre-defined custom fee. Custom fees can be configured in the Multi Portal.


        The fees collected will be deposited into your Revenue Account. The balance and transaction history of your revenue account can be viewed in the Multi Portal.

        '
      summary: Charge fee to a consumer
      operationId: consumerChargeFee
      parameters:
      - $ref: '#/components/parameters/idempotency-ref'
      requestBody:
        $ref: '#/components/requestBodies/ChargeFeeRequest'
      responses:
        '200':
          $ref: '#/components/responses/ChargeFeeResponse'
        '400':
          $ref: '#/components/responses/BackofficeBadRequestError'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '409':
          $ref: '#/components/responses/ChargeFeeConflict'
        '500':
          $ref: '#/components/responses/InternalServerError'
        '503':
          $ref: '#/components/responses/ServiceUnavailable'
        default:
          $ref: '#/components/responses/Error'
      security:
      - auth_token: []
        api_key: []
    servers:
    - description: Weavr Sandbox Environment
      url: https://sandbox.weavr.io/multi/backoffice
  /consumers:
    post:
      tags:
      - Consumers
      description: 'Create a Consumer Identity to represent an Individual.


        The information provided must be accurate as it will be passed on for KYC verification with our partner.


        *Incorrect information may incur a re-processing fee.*

        '
      summary: Register a consumer
      operationId: consumerCreate
      parameters:
      - $ref: '#/components/parameters/idempotency-ref'
      requestBody:
        $ref: '#/components/requestBodies/ConsumerCreateRequest'
      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/ConsumerCreateConflict'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '500':
          $ref: '#/components/responses/InternalServerError'
        '503':
          $ref: '#/components/responses/ServiceUnavailable'
        default:
          $ref: '#/components/responses/Error'
      security:
      - api-key: []
    servers:
    - description: Weavr Sandbox Environment
      url: https://sandbox.weavr.io/multi
  /consumers/{consumer_id}/verify:
    post:
      tags:
      - Consumers
      summary: Simulate verification of a consumer identity
      description: Fully verify a consumer identity. Will set emailVerified, mobileVerified, isPep (as false), isSanctioned (as false) and fullDueDiligence (as APPROVED).
      operationId: consumers_consumer_id_verify
      parameters:
      - name: consumer_id
        in: path
        required: true
        style: simple
        explode: false
        schema:
          type: integer
          format: int64
      - $ref: '#/components/parameters/call-ref'
      responses:
        '204':
          description: Success - No Content
        '400':
          description: Invalid Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ClientInvalidRequest'
        default:
          description: Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DefaultError'
      security:
      - API_Secret_Key: []
    servers:
    - url: https://sandbox.weavr.io/simulate/api"
webhooks:
  /consumers/kyc/watch:
    post:
      tags:
      - Consumers
      summary: Consumer KYC status update
      description: Notification that the KYC status of a consumer identity has been updated.
      operationId: consumers_kyc_watch
      parameters:
      - $ref: '#/components/parameters/call-ref_2'
      - $ref: '#/components/parameters/published-timestamp'
      - $ref: '#/components/parameters/signature'
      - $ref: '#/components/parameters/signature-v2'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/KycEvent'
        required: true
      responses:
        '204':
          description: Success - No Content
    servers:
    - url: '""'
  /consumers/consumer_activated/watch:
    post:
      tags:
      - Consumers
      summary: Consumer activation
      description: Notification that a consumer identity has been activated.
      operationId: consumers_consumer_activated_watch
      parameters:
      - $ref: '#/components/parameters/call-ref_2'
      - $ref: '#/components/parameters/published-timestamp'
      - $ref: '#/components/parameters/signature'
      - $ref: '#/components/parameters/signature-v2'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/IdentityActivatedEvent'
        required: true
      responses:
        '204':
          description: Success - No Content
    servers:
    - url: '""'
  /consumers/consumer_deactivated/watch:
    post:
      tags:
      - Consumers
      summary: Consumer deactivation
      description: Notification that a consumer identity has been deactivated.
      operationId: consumers_consumer_deactivated_watch
      parameters:
      - $ref: '#/components/parameters/call-ref_2'
      - $ref: '#/components/parameters/published-timestamp'
      - $ref: '#/components/parameters/signature'
      - $ref: '#/components/parameters/signature-v2'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/IdentityDeactivatedEvent'
        required: true
      responses:
        '204':
          description: Success - No Content
    servers:
    - url: '""'
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'
    Unauthorized:
      description: Unauthorized - Your credentials or access token are invalid.
      headers:
        request-ref:
          $ref: '#/components/headers/request-ref'
    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
    BackofficeBadRequestError:
      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.
              validationErrors:
                $ref: '#/components/schemas/ValidationError'
    ChargeFeeResponse:
      description: Success
      headers:
        request-ref:
          $ref: '#/components/headers/request-ref'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ChargeFee'
    Error:
      description: Error
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    ChargeFeeConflict:
      description: Conflict
      content:
        application/json:
          schema:
            type: object
            properties:
              errorCode:
                type: string
                enum:
                - UNRESOLVED_FEE_TYPE
                - UNRESOLVED_CURRENCY
                - UNRESOLVED_INSTRUMENT
                - FUNDS_INSUFFICIENT
                - IDENTITY_NOT_OWNER_OF_INSTRUMENT
                - FEE_AMOUNT_NOT_SET
    ServiceUnavailable:
      description: Service Unavailable - The requested service is temporarily unavailable. 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'
    ConsumerCreateConflict:
      description: Conflict
      content:
        application/json:
          schema:
            type: object
            properties:
              errorCode:
                type: string
                enum:
                - PAYMENT_MODEL_CONSTRAINTS_VIOLATED
                - PROFILE_NOT_FOUND
                - PROFILE_INACTIVE
                - ROOT_EMAIL_NOT_UNIQUE
                - CURRENCY_UNSUPPORTED
                - FEE_GROUP_INVALID
                - COUNTRY_INVALID
                - MOBILE_OR_COUNTRY_CODE_INVALID
                - COUNTRY_UNSUPPORTED
                - EMAIL_DOMAIN_NOT_ALLOWED
                - CONSUMER_ALREADY_EXISTS
    ConsumerResponse:
      description: Success
      headers:
        request-ref:
          $ref: '#/components/headers/request-ref'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Consumer'
    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'
  schemas:
    Id:
      type: string
      pattern: ^[0-9]+$
    Fee:
      required:
      - feeType
      - source
      type: object
      properties:
        feeType:
          type: string
          description: The fee type as defined in the Multi Portal.
        source:
          description: The instrument from where the fee should be deducted.
          $ref: '#/components/schemas/InstrumentId'
    CurrencyAmount:
      required:
      - currency
      - amount
      type: object
      properties:
        currency:
          $ref: '#/components/schemas/Currency'
        amount:
          type: integer
          format: int64
          description: 'The monetary amount, scaled to the lowest denomination of the currency.


            Example, an amount of 1000 for a EUR currency is actually 1000 Euro cents or EUR 10.00.

            '
      description: The object representing a monetary amount in a particular currency.
    TransactionId:
      required:
      - type
      - id
      type: object
      properties:
        type:
          enum:
          - AUTHORISATION
          - SETTLEMENT
          - MANUAL_TRANSACTION
          - TRANSFER
          - SEND
          - DEPOSIT
          - AUTHORISATION_REVERSAL
          - AUTHORISATION_EXPIRY
          - AUTHORISATION_DECLINE
          - AUTHORISATION_MANUAL_CLOSE
          - MERCHANT_REFUND
          - MERCHANT_REFUND_REVERSAL
          - ORIGINAL_CREDIT_TRANSACTION
          - SETTLEMENT_REVERSAL
          - ADJUSTMENT
          - CHARGE_FEE
          - WITHDRAWAL_RESERVE
          - WITHDRAWAL_RELEASE
          - FEE_REVERSAL
          - OUTGOING_WIRE_TRANSFER
          - AUTHORISATION_CANCELLATION
          - SYSTEM_TRANSACTION
          - OUTGOING_DIRECT_DEBIT_COLLECTION
          - OUTGOING_DIRECT_DEBIT_REFUND
          - LINKED_ACCOUNT_VERIFICATION_TRANSFER
          - INCOMING_WIRE_TRANSFER
          - FUNDING
          - TEST_FUNDING
          - CORRESPONDENT_BANK_TRANSFER
          type: string
          x-enumDescriptions:
            AUTHORISATION: ''
            SETTLEMENT: ''
            MANUAL_TRANSACTION: 'For a manual transaction, the `additionalFields`: `note` will contain a description with the reason for the transaction. This will start with one of the following prefixes:


              - Account Closure

              - Chargebacks - Represented

              - Chargebacks - Won

              - Deleted Card - Transfer from

              - Deleted Card - Transfer to

              - Duplicate Authorisation Issue

              - Duplicate Settlement Issue

              - Expired Card - Transfer from

              - Expired Card - Transfer to

              - Forex Padding Release Issue

              - Funds Redemption & Account Closure

              - Manual Auth Expiry

              - Missing Settlement Issue

              - Negative Card Balance

              - Reversal - Duplicate Transaction

              - Reversal - Manual Auth Expiry

              - Reversal - Manual Transaction

              - Amend Balance - Auth Expiry

              - Balance Adjustment

              - Completing Deposit

              - Duplicate Deposit

              '
            TRANSFER: ''
            SEND: ''
            DEPOSIT: ''
            AUTHORISATION_REVERSAL: ''
            AUTHORISATION_EXPIRY: ''
            AUTHORISATION_DECLINE: ''
            AUTHORISATION_MANUAL_CLOSE: ''
            MERCHANT_REFUND: ''
            MERCHANT_REFUND_REVERSAL: ''
            ORIGINAL_CREDIT_TRANSACTION: ''
            SETTLEMENT_REVERSAL: ''
            ADJUSTMENT: ''
            CHARGE_FEE: ''
            WITHDRAWAL_RESERVE: ''
            WITHDRAWAL_RELEASE: ''
            FEE_REVERSAL: ''
            OUTGOING_WIRE_TRANSFER: ''
            AUTHORISATION_CANCELLATION: ''
            SYSTEM_TRANSACTION: ''
            OUTGOING_DIRECT_DEBIT_COLLECTION: ''
            OUTGOING_DIRECT_DEBIT_REFUND: ''
        id:
          type: string
          pattern: ^[0-9]+$
    Error:
      type: object
      properties:
        code:
          type: string
        message:
          type: string
    ChargeFee:
      required:
      - transactionId
      - profileId
      - feeType
      - source
      - destination
      - availableBalanceAdjustment
      - state
      - creationTimestamp
      type: object
      properties:
        transactionId:
          $ref: '#/components/schemas/TransactionId'
          description: The unique identifier of the transaction.
        profileId:
          type: string
          description: The profile Id which a specific identity, instrument or transaction type is linked to.
        feeType:
          type: string
          description: The fee type as defined in the Multi Portal, and as sent in the request.
        source:
          $ref: '#/components/schemas/InstrumentId'
        availableBalanceAdjustment:
          $ref: '#/components/schemas/CurrencyAmount'
          description: The object representing a monetary amount in a particular currency.
        state:
          $ref: '#/components/schemas/TransactionState'
          description: The transaction entry state.
        creationTimestamp:
          type: integer
          format: int64
    InstrumentType:
      type: string
      enum:
      - managed_cards
      - managed_accounts
    ValidationError:
      type: array
      description: Is returned as part of an HTTP error response whenever a validation error is detected. A list of the fields together with their syntax error will be provided.
      items:
        type: object
        properties:
          fieldName:
            type: string
          message:
            maxLength: 255
            type: string
            description: When present helps to identify and fix the problem.
          error:
            type: string
            enum:
            - MUST_BE_FALSE
            - MUST_BE_TRUE
            - AT_MOST
            - AT_LEAST
            - FUTURE
            - FUTURE_OR_PRESENT
            - PAST
            - PAST_OR_PRESENT
            - LESS_THAN_ZERO
            - LESS_THAN_OR_EQUAL_TO_ZERO
            - GREATER_THAN_ZERO
            - GREATER_THAN_OR_EQUAL_TO_ZERO
            - HAS_TEXT
            - REQUIRED
            - REGEX
            - RANGE
            - IN
            - NOT_IN
            - NOT_EMPTY
            - ALL_OR_NONE
            - MUST_BE_EMPTY
            - DEPENDS_ON
            - INVALID_TYPE_OR_VALUE
            - INVALID_REQUEST
          params:
            type: array
            items:
              type: string
          invalidValue:
            type: array
            items:
              type: string
    TransactionState:
      type: string
      description: Status of the transaction.
      enum:
      - INITIALISED
      - COMPLETED
      - REJECTED
      - FAILED
      - PENDING
      - SCHEDULED
      - CANCELLED
    Currency:
      type: string
      description: 'The currency expressed in ISO-4217 code. Example: GBP, EUR, USD.'
      maxLength: 3
      minLength: 3
      pattern: ^[A-Z]*$
    InstrumentId:
      required:
      - id
      - type
      type: object
      properties:
        id:
          $ref: '#/components/schemas/Id'
        type:
          $ref: '#/components/schemas/InstrumentType'
    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
    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.
    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
    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
    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
    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
    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.
    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_-]+$
    ProfileId:
      type: string
      description: 'The profile Id which a specific identity, instrument or transaction type is linked to.


        Profiles contain configuration and determine behavioral aspects of the newly created transaction, for example, fees that may apply.


        You can have one or more profiles linked to your application, and these can be used to drive different behaviors according to your product''s needs.


        Profile Ids can be found in the Multi Portal, in the API Credentials page.

        '
      pattern: ^[0-9]+$
    Email:
      type: string
      description: E-mail Address of the user
      format: email
    Occupation:
      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
      - STUDENT
      - UNEMPLOYED
      - RETIRED
      - OTHER
    ConsumerSourceOfFunds:
      deprecated: true
      type: string
      description: The consumer's source of funds.
      enum:
      - PERSONAL_SAVINGS
      - FAMILY_SAVINGS
      - 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
      - INHERITANCE
      - SALE_OF_COMPANY_SHARES_BUSINESS
      - OTHER
    Nationality:
      maxLength: 2
      minLength: 2
      pattern: ^[A-Z]+$
      type: string
      description: Nationality of the user - using ISO 3166 alpha-2.
    ConsumerRootUser:
      required:
      - id
      - email
      - name
      - surname
      - active
      - mobile
      - emailVerified
      - mobileNumberVerified
      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'
        occupation:
          $ref: '#/components/schemas/Occupation'
        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 consumer root user.
          $ref: '#/components/schemas/Date'
        address:
          description: Address of the consumer root user.
          $ref: '#/components/schemas/AddressWithNoRequiredFields'
        nationality:
          description: Nationality of the consumer root user, in ISO 3166 alpha-2 format.
          $ref: '#/components/schemas/Nationality'
        placeOfBirth:
          type: string
          description: The place of birth of the consumer root user.
        tag:
          $ref: '#/components/schemas/Tag'
        locale:
          $ref: '#/components/schemas/UserLocale'
        brand:
          $ref: '#/components/schemas/Brand'
    FieldValidationType:
      type: string
      enum:
      - REQUIRED
      - HAS_TEXT
      - REQUIRES
      - SIZE
      - RANGE
      - IN
      - NOT_IN
      - REGEX
      - EXACTLY
      - AT_LEAST
      - AT_MOST
      - ALL_OR_NONE
    FieldValidation:
      type: object
      properties:
        type:
          $ref: '#/components/schemas/FieldValidationType'
        params:
          type: array
          items:
            type: string
    FieldValidationErrors:
      type: object
      properties:
        name:
          type: string
        errors:
          type: array
          items:
            $ref: '#/components/schemas/FieldValidation'
    MessageValidation:
      type: object
      properties:
        invalid:
          type: boolean
        fields:
          type: array
          items:
            $ref: '#/components/schemas/FieldValidationErrors'
    DefaultError:
      type: object
      properties:
        message:
          maxLength: 255
          type: string
          description: When present helps to identify and fix the problem.
          x-fieldValidation: size(_,255)
      description: A default error model in case of errors other than 400, 409 or 504.
    ClientInvalidRequest:
      type: object
      properties:
        message:
          maxLength: 255
          type: string
          description: When present helps to identify and fix the problem.
          x-fieldValidation: size(_,255)
        validation:
          allOf:
          - $ref: '#/components/schemas/MessageValidation'
          - description: Description of fields which were invalid.
    KycRejectionReason:
      type: string
      enum:
      - UNDEFINED_KYC_FAILURE_REASON
      - DOCUMENTS_UNSATISFACTORY
      - SUPPLIED_DATA_AND_DOCUMENTS_MISMATCH
      - LANGUAGE_IN_DOCUMENTS_UNSUPPORTED
      - SELFIE_UNSATISFACTORY
      - SELFIE_AND_DOCUMENTS_MISMATCH
      - OTHER
      - UNSUPPORTED_COUNTRY
      - PEP_STATUS
      - REJECTED_DUPLICATE
      - EXPIRED_KYC_DOCUMENTS
    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
    IdentityDeactivatedEvent:
      required:
      - actionDoneBy
      - emailAddress
      - reasonCode
      type: object
      properties:
        actionDoneBy:
          $ref: '#/components/schemas/ActionDoneBy'
        emailAddress:
          type: string
        reasonCode:
          $ref: '#/components/schemas/IdentityDeactivatedReasonCode'
    KyiStatus:
      type: string
      enum:
      - UNDEFINED
      - NOT_STARTED
      - INITIATED
      - PENDING_REVIEW
      - APPROVED
      - REJECTED
    IdentityActivatedEvent:
      required:
      - actionDoneBy
      - emailAddress
      type: object
      properties:
        actionDoneBy:
          $ref: '#/components/schemas/ActionDoneBy'
        emailAddress:
          type: string
    IdentityDeactivatedReasonCode:
      type: string
      enum:
      - UNDEFINED_REASON
      - ACCOUNT_REVIEW
      - ACCOUNT_SECURITY
      - TEMPORARY
      - ACCOUNT_CLOSURE
      - ACCOUNT_ABANDONED
    ActionDoneBy:
      type: string
      enum:
      - UNDEFINED
      - ADMIN
      - INNOVATOR
    KycEvent:
      type: object
      properties:
        consumerId:
          type: string
          pattern: ^[0-9]+$
        consumerEmail:
          type: string
        status:
          $ref: '#/components/schemas/KyiStatus'
        details:
          type: array
          description: Action which my be required to re-process kyc in case of temporary rejections.
          items:
            $ref: '#/components/schemas/KycRejectionReason'
        rejectionComment:
          type: string
          description: Reason shown to the user in case of temporary rejection.
        kycLevel:
          $ref: '#/components/schemas/KycLevel'
        ongoingStatus:
          $ref: '#/compon

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