openapi: 3.1.0
info:
  version: 3.63.5
  title: Weavr Multi Product 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: Access
    description: Manage authentication for your users.
  - name: Passwords
    description: Manage your users' passwords.
  - name: Additional Factors
    description: |
      Manage additional strong customer authentication factors for your users.  
  - name: Authorised Users
    description: >
      Corporate and Consumer identities can invite authorised users to access
      their account. Once on-boarded, authorised users can create and manage
      instruments and transactions on behalf of the identity they are on-boarded
      with.


      In case of **Corporate Identities**, authorised users are typically
      employees who have access to company's banking products such as cards and
      bank accounts.


      In case of **Consumer Identities**, authorised users are typically
      children/teens whose parents want them to have access to banking products
      such as cards and bank accounts.


      Note that the `/users` GET endpoints return all users including root
      users. However, modification operations (create, update, activate,
      deactivate) on `/users` endpoints only apply to authorised users. To
      modify _root_ user details, use the respective `/consumers` or
      `/corporates` endpoints.
  - name: Corporates
    description: >-
      Corporates are identities representing companies. Once on-boarded,
      Corporates can create and manage their own instruments via your
      application.
  - name: Consumers
    description: >-
      Consumers are identities representing individuals. Once on-boarded,
      Consumers can create and manage their own instruments via your
      application.
  - name: Managed Accounts
    description: >
      Managed Accounts are a type of financial instrument offered by Weavr.


      They hold funds for their owner, and can be upgraded to IBANs so as to
      receive and send funds to instruments outside of the Weavr Platform, via
      Wire Transfers.


      Managed accounts can also be used as source and destination instruments in
      the `transfer` and `send` transactions.
  - name: Managed Cards
    description: >
      Managed Cards are a type of financial instrument offered by Weavr.


      You can create virtual or physical cards that are issued to the consumer
      or corporate identity.


      A card created in prepaid mode has its own balance, whereas a card created
      in debit mode does not have its own balance but taps into the balance of
      its parent managed account.
  - name: Linked Accounts
    description: >
      Linked Accounts are external bank accounts that users connect to their
      profiles within the Weavr Platform.


      These accounts allow users to link their existing bank accounts, held at
      external financial institutions, to the Weavr Platform, enabling secure
      and efficient transfer of funds between their own accounts.


      Linked Accounts are designed to streamline the process of moving money
      between a user’s various bank accounts, providing a convenient and
      integrated way to manage personal finances across different financial
      institutions.
  - name: Sends
    description: >
      The Send transaction is used to send funds between managed accounts and
      managed cards belonging to different identities. 
  - name: Transfers
    description: >
      The Transfer transaction is used to transfer funds between managed
      accounts and managed cards belonging to same identity.
  - name: Outgoing Wire Transfers
    description: >
      The Outgoing Wire Transfer transaction is used to transfer funds from
      managed accounts to an external bank account.
  - name: Beneficiary Management
    description: >
      Manage a list of beneficiaries for Outgoing wire transfers and Sends. 


      Aside from convenience and a reduced chance of making errors when making
      transactions, 

      this allows for the introduction an SCA exemption, where the account
      holder can request 

      that transactions to `TRUSTED` beneficiaries to be exempted from the
      requirement to pass 

      an SCA challenge every time.
x-tagGroups:
  - name: User Authentication
    tags:
      - Access
      - Passwords
  - name: Strong Customer Authentication
    tags:
      - Authentication Factors
      - Step-up Challenges
      - Confirmation Challenges
      - SCA Exemptions
  - name: Identities
    tags:
      - Corporates
      - Consumers
  - name: User Management
    tags:
      - Authorised Users
  - name: Beneficiary Management
    tags:
      - Beneficiaries
  - name: Instruments
    tags:
      - Managed Accounts
      - Managed Cards
  - name: External Instruments
    tags:
      - Linked Accounts
  - name: Transactions
    tags:
      - Sends
      - Transfers
      - Outgoing Wire Transfers
      - Incoming Wire Transfers
  - name: Bulk Operations [Beta]
    tags:
      - Operations
      - Manage
components:
  securitySchemes:
    api-key:
      type: apiKey
      description: >-
        An API key defined in your User API Client  (or Delegate API Client -
        this feature is available only to customers enabled with delegation
        functionality).  API Clients are as managed in the Embedder Portal
      name: api-key
      in: header
    auth_token:
      type: http
      description: >-
        The authentication token representing the user. This will be included in
        the login response object.
      scheme: bearer
      bearerFormat: JWT
    webhooks_key:
      type: apiKey
      description: >-
        The Webhooks key can be found in the API Credentials tab in your Portal
        Page.
      name: webhooks-key
      in: header
  parameters:
    idempotency-ref:
      name: idempotency-ref
      in: header
      description: >-
        A unique call reference generated by the caller that, taking into
        consideration the payload as well as the operation itself, helps avoid
        duplicate operations. Idempotency reference uniqueness is maintained for
        at least 24 hours.
      required: false
      schema:
        type: string
    channel:
      name: channel
      in: path
      required: true
      description: The unique identifier for the channel.
      schema:
        $ref: '#/components/schemas/SCAOtpChannel'
    scaPushChannel:
      name: channel
      in: path
      required: true
      schema:
        $ref: '#/components/schemas/SCAPushChannel'
    userId:
      name: user_id
      in: path
      required: true
      description: The unique identifier for the user.
      schema:
        $ref: '#/components/schemas/UserId'
    authFactorsPushChannel:
      name: channel
      in: path
      required: true
      schema:
        $ref: '#/components/schemas/AuthSCAPushChannel'
    offset:
      name: offset
      in: query
      required: false
      description: >-
        The offset value for paging, indicating the initial item number to be
        returned from the data set satisfying the given criteria. Leave out to
        fetch the first page of results.
      schema:
        minimum: 0
        type: integer
        format: int32
    limit:
      name: limit
      in: query
      required: false
      description: >-
        The limit of the results for paging, starting at the offset. Limit is
        always capped at 100.
      schema:
        maximum: 100
        minimum: 1
        type: integer
        format: int32
    active:
      name: active
      in: query
      required: false
      description: Filter for active or deactivated users. Leave out to fetch all users.
      schema:
        type: boolean
    email:
      name: email
      in: query
      required: false
      description: Filter by the email address of the user.
      schema:
        $ref: '#/components/schemas/Email'
    tag:
      name: tag
      in: query
      required: false
      description: >-
        Filter by the managed account/card tag. The exact tag must be provided,
        as wildcards are not supported. Leave out to fetch all managed
        accounts/card.
      schema:
        type: string
    bulkProcessStatus:
      name: status
      in: query
      required: false
      schema:
        $ref: '#/components/schemas/BulkProcessStatus'
    bulkId:
      name: bulk_id
      in: path
      required: true
      description: The bulk id of the bulk process.
      schema:
        $ref: '#/components/schemas/BulkId'
    sequence:
      name: sequence
      in: query
      required: false
      schema:
        type: integer
        format: int64
    bulkProcessOperationStatus:
      name: status
      in: query
      required: false
      schema:
        $ref: '#/components/schemas/BulkProcessOperationStatus'
    userIdExplode:
      name: user_id
      in: path
      required: true
      description: The unique identifier for the user.
      style: simple
      explode: false
      schema:
        $ref: '#/components/schemas/UserId'
    profileId:
      name: profileId
      in: query
      required: false
      description: >-
        Filter by the managed account/card profile. Leave out to fetch all
        managed accounts/card.
      schema:
        $ref: '#/components/schemas/ProfileId'
    friendlyName:
      name: friendlyName
      in: query
      required: false
      description: >
        Filter by the managed account/card friendly name. Leave out to fetch all
        managed accounts/card.


        The exact name must be provided, as wildcards are not supported.
      schema:
        minLength: 1
        maxLength: 50
        type: string
    state:
      name: state
      in: query
      required: false
      schema:
        type: array
        uniqueItems: true
        items:
          $ref: '#/components/schemas/InstrumentState'
    currency:
      name: currency
      in: query
      required: false
      description: >
        Filter by the managed account/card currency.


        Currencies are expressed as an ISO 4217 code. Leave out to fetch all
        managed accounts/card.
      schema:
        $ref: '#/components/schemas/Currency'
    createdFrom:
      name: createdFrom
      in: query
      required: false
      description: >-
        Filter for managed accounts/cards created after `createdFrom` timestamp.
        Timestamp is expressed in Epoch timestamp using millisecond precision.
        Leave out to fetch all managed accounts/cards.
      schema:
        type: integer
        format: int64
    createdTo:
      name: createdTo
      in: query
      required: false
      description: >-
        Filter for managed accounts/cards created before `createdTo` timestamp.
        Timestamp is expressed in Epoch timestamp using millisecond precision.
        Leave out to fetch all managed accounts/cards.
      schema:
        type: integer
        format: int64
    verificationRunState:
      name: state
      in: query
      required: false
      schema:
        type: array
        uniqueItems: true
        items:
          $ref: '#/components/schemas/LinkedAccountVerificationRunState'
    state_blockedReason:
      name: state.blockedReason
      in: query
      required: false
      schema:
        type: array
        uniqueItems: true
        items:
          $ref: '#/components/schemas/BlockedReason'
    state_destroyedReason:
      name: state.destroyedReason
      in: query
      required: false
      schema:
        type: array
        uniqueItems: true
        items:
          $ref: '#/components/schemas/DestroyedReason'
    accept:
      name: accept
      in: header
      description: >
        A request parameter specifying the type of response the client would
        like. Must be one of `application/json`, `application/pdf` or
        `text/csv`.


        The default response type (`application/json`) will be returned if
        specified incorrectly or not specified.
      required: false
      schema:
        type: string
    statementLimit:
      name: statementLimit
      in: query
      required: false
      description: >-
        The limit of the results for statements paging, starting at the offset.
        Limit is capped at 500.
      schema:
        maximum: 500
        minimum: 1
        type: integer
        format: int32
    orderByTimestamp:
      name: orderByTimestamp
      in: query
      required: false
      description: |
        Orders the result in ascending or descending order.
          - ASC: Ascending order, oldest transactions first.
          - DESC: Descending order, most recent transactions first.

        If not specified, the transactions will be returned in descending order.
      schema:
        type: string
        enum:
          - ASC
          - DESC
    fromTimestamp:
      name: fromTimestamp
      in: query
      required: false
      description: >-
        Filter for transactions having transaction timestamp after
        `fromTimestamp`. Timestamp is expressed in Epoch timestamp using
        millisecond precision. If omitted, all matching transactions up to the
        present will be included.
      schema:
        type: integer
        format: int64
    toTimestamp:
      name: toTimestamp
      in: query
      required: false
      description: >-
        Filter for transactions having transaction timestamp before
        `toTimestamp`. Timestamp is expressed in Epoch timestamp using
        millisecond precision. If omitted, all matching transactions up to the
        present will be included. If both `fromTimestamp` and `toTimestamp` are
        provided, `toTimestamp` must be greater than `fromTimestamp`.
      schema:
        type: integer
        format: int64
    showFundMovementsOnly:
      name: showFundMovementsOnly
      in: query
      required: false
      description: |
        Deprecated. Use singleEntryPerTransaction instead.

        Returns only the entries which contain fund movements.
      schema:
        type: boolean
    singleEntryPerTransaction:
      name: singleEntryPerTransaction
      in: query
      required: false
      description: >
        Returns transactions that span multiple movements as a single entry.

        Only includes transactions that have been completed.

        Defaults to true for PDF statements, false otherwise.

        Note: due to the fact that only completed transactions are included,
        some

        transactions that are in progress and have modified the balance of the
        instrument

        will not be shown, which could lead to seemingly inconsistent balance
        being displayed.
      schema:
        type: boolean
    transactionType:
      name: transactionType
      in: query
      required: false
      description: Filter by the transaction type. Leave out to fetch all entries.
      schema:
        type: array
        uniqueItems: true
        items:
          $ref: '#/components/schemas/TransactionType'
    card_type:
      name: type
      in: query
      required: false
      description: Filter by the type of the card.
      schema:
        type: string
        enum:
          - VIRTUAL
          - PHYSICAL
    card_renewal_type:
      name: renewalType
      in: query
      required: false
      description: Filter by the renewal type of the card.
      schema:
        type: string
        enum:
          - RENEW
          - NO_RENEW
    userIdQuery:
      name: userId
      in: query
      required: false
      description: The unique identifier for the user.
      schema:
        $ref: '#/components/schemas/UserId'
    transferProfileId:
      name: profileId
      in: query
      required: false
      description: >-
        Filter by the transfer profile. Leave out to fetch all transfer
        transactions.
      schema:
        $ref: '#/components/schemas/ProfileId'
    instrumentId:
      name: instrumentId
      in: query
      required: false
      description: Filter by the source instrument id.
      schema:
        $ref: '#/components/schemas/InstrumentId'
    transactionState:
      name: state
      in: query
      required: false
      description: Filter by the transfer transaction state. Leave out to fetch all states.
      schema:
        type: array
        uniqueItems: true
        items:
          $ref: '#/components/schemas/TransactionState'
    transferCreatedFrom:
      name: createdFrom
      in: query
      required: false
      description: >-
        Filter for transfer transactions created after `createdFrom` timestamp.
        Timestamp is expressed in Epoch timestamp using millisecond precision.
        Leave out to fetch all transfers.
      schema:
        type: integer
        format: int64
    transferCreatedTo:
      name: createdTo
      in: query
      required: false
      description: >-
        Filter for transfer transactions created before `createdTo` timestamp.
        Timestamp is expressed in Epoch timestamp using millisecond precision.
        Leave out to fetch all transfers.
      schema:
        type: integer
        format: int64
    transferExecutedFrom:
      name: executedFrom
      in: query
      required: false
      description: >-
        Filter for transfer transactions executed after `executedFrom`
        timestamp. Timestamp is expressed in Epoch timestamp using millisecond
        precision. Leave out to fetch all transfers.
      schema:
        type: integer
        format: int64
    transferExecutedTo:
      name: executedTo
      in: query
      required: false
      description: >-
        Filter for transfer transactions executed before `executedTo` timestamp.
        Timestamp is expressed in Epoch timestamp using millisecond precision.
        Leave out to fetch all transfers.
      schema:
        type: integer
        format: int64
    transferTag:
      name: tag
      in: query
      required: false
      description: >-
        Filter by the transfer tag. The exact tag must be provided, as wildcards
        are not supported. Leave out to fetch all entries.
      schema:
        type: string
    sendProfileId:
      name: profileId
      in: query
      required: false
      description: Filter by the Send profile. Leave out to fetch all entries.
      schema:
        $ref: '#/components/schemas/ProfileId'
    sourceId:
      name: source.id
      in: query
      required: false
      description: >-
        Filter by the source instrument id. Must be specified when `source.type`
        is provided.
      schema:
        $ref: '#/components/schemas/Id'
    sourceType:
      name: source.type
      in: query
      required: false
      description: >-
        Filter by the source instrument type. Must be specified when `source.id`
        is provided.
      schema:
        $ref: '#/components/schemas/InstrumentType'
    sendState:
      name: state
      in: query
      required: false
      description: Filter by the Send transaction state. Leave out to fetch all states.
      schema:
        type: array
        uniqueItems: true
        items:
          $ref: '#/components/schemas/SendState'
    sendCreatedFrom:
      name: createdFrom
      in: query
      required: false
      description: >-
        Filter for send transactions created after `createdFrom` timestamp.
        Timestamp is expressed in Epoch timestamp using millisecond precision.
        Leave out to fetch all Send transactions.
      schema:
        type: integer
        format: int64
    sendCreatedTo:
      name: createdTo
      in: query
      required: false
      description: >-
        Filter for send transactions created before `createdTo` timestamp.
        Timestamp is expressed in Epoch timestamp using millisecond precision.
        Leave out to fetch all Send transactions.
      schema:
        type: integer
        format: int64
    sendExecutedFrom:
      name: executedFrom
      in: query
      required: false
      description: >-
        Filter for send transactions executed after `executedFrom` timestamp.
        Timestamp is expressed in Epoch timestamp using millisecond precision.
        Leave out to fetch all Send transactions.
      schema:
        type: integer
        format: int64
    sendExecutedTo:
      name: executedTo
      in: query
      required: false
      description: >-
        Filter for send transactions executed before `executedTo` timestamp.
        Timestamp is expressed in Epoch timestamp using millisecond precision.
        Leave out to fetch all Send transactions.
      schema:
        type: integer
        format: int64
    sendTag:
      name: tag
      in: query
      required: false
      description: >-
        Filter by the send tag. The exact tag must be provided, as wildcards are
        not supported. Leave out to fetch all entries.
      schema:
        type: string
    owtInstrument:
      name: instrument
      in: query
      required: false
      description: Filter by the source instrument id (which must be a managed account).
      schema:
        type: object
        properties:
          type:
            $ref: '#/components/schemas/SourceInstrumentType'
          id:
            $ref: '#/components/schemas/Id'
    sourceInstrument_id:
      name: sourceInstrument.id
      in: query
      required: false
      description: >-
        Filter by the source instrument id. Must be specified when `source.type`
        is provided.
      schema:
        $ref: '#/components/schemas/Id'
    sourceInstrument_type:
      name: sourceInstrument.type
      in: query
      required: false
      description: >-
        Filter by the source instrument type. Must be specified when `source.id`
        is provided.
      schema:
        $ref: '#/components/schemas/SourceInstrumentType'
    owtState:
      name: state
      in: query
      required: false
      description: >-
        Filter by the outgoing wire transfer state. Leave out to fetch all
        states.
      schema:
        type: array
        uniqueItems: true
        items:
          $ref: '#/components/schemas/OutgoingWireTransferState'
    request-ref:
      name: request-ref
      in: header
      description: >-
        A unique call reference included in every call, that enables the
        receiver to avoid duplicate handling of a webhook request (e.g. webhook
        was resent).
      required: false
      schema:
        type: string
    published-timestamp:
      name: published-timestamp
      in: header
      description: >-
        The timestamp, expressed in Epoch timestamp using millisecond precision,
        when this event was published.
      required: true
      style: simple
      explode: false
      schema:
        type: integer
        format: int64
    signature:
      name: signature
      in: header
      description: >-
        The signature to verify the authenticity of this request.  This is the
        base64 hash (HmacSHA256) of the `published-timestamp` using your API
        key.
      required: true
      style: simple
      explode: false
      deprecated: true
      schema:
        type: string
    signature-v2:
      name: signature-v2
      in: header
      description: >-
        The signature to verify the authenticity of this request.  This is the
        base64 hash (HmacSHA256) of the `call-ref + payload +
        published-timestamp` using your API key.
      required: true
      style: simple
      explode: false
      schema:
        type: string
    call-ref:
      description: >-
        A call reference generated by the caller and unique to the caller to
        provide correlation between the caller and system with a maximum length
        of 255
      in: header
      name: call-ref
      required: false
      schema:
        type: string
  schemas:
    BulkProcessesPaged:
      properties:
        count:
          description: Total number of records (excluding limit)
          format: int32
          type: integer
        bulkProcesses:
          items:
            $ref: '#/components/schemas/BulkProcess'
          type: array
        responseCount:
          description: Total number of records returned in this response
          format: int32
          type: integer
      type: object
    Email:
      type: string
      description: E-mail Address of the user
      format: email
    VerificationCode:
      type: string
      description: >-
        A randomly generated one-time use code used to verify the user's email
        address or mobile number.
      pattern: ^[0-9]{6}$
    Error:
      type: object
      properties:
        code:
          type: string
        message:
          type: string
    ManufacturingState:
      type: string
      description: |
        Information on the manufacturing of the physical card, as follows:
          - REQUESTED: The upgrade of the card to physical has been requested.
          - SENT_FOR_FULFILLMENT - The card has been sent for printing.
          - DISPATCHED: The card has been manufactured and dispatched. You may receive a second DISPATCHED event when the manufacturer provides a tracking code.
          - DELIVERED: The card has been received and activated by the recipient.
      enum:
        - REQUESTED
        - SENT_FOR_FULFILLMENT
        - DISPATCHED
        - DELIVERED
    BeneficiaryBatchState:
      type: string
      enum:
        - INITIALISED
        - FAILED
        - PENDING_CHALLENGE
        - CHALLENGE_FAILED
        - CHALLENGE_COMPLETED
        - COMPLETED
    BeneficiaryBatchOperation:
      type: string
      enum:
        - CREATE
        - REMOVE
    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.
    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
    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_-]+$
    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
    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
    UserId:
      type: string
      pattern: ^[0-9]+$
    UpdateCardLevelSpendRules:
      allOf:
        - $ref: '#/components/schemas/CardLevelSpendRules'
        - type: object
          properties:
            updateSpendLimitMethod:
              $ref: '#/components/schemas/SpendLimitUpdateMethod'
    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]+$
    InstrumentId:
      required:
        - id
        - type
      type: object
      properties:
        id:
          $ref: '#/components/schemas/Id'
        type:
          $ref: '#/components/schemas/InstrumentType'
    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.
    ScheduledTimestamp:
      pattern: ^[0-9]+$
      type: string
      description: >-
        The epoch timestamp at which the transaction is scheduled to be
        executed.
    SendCreateRequest:
      required:
        - profileId
        - source
        - destination
        - destinationAmount
      type: object
      properties:
        profileId:
          $ref: '#/components/schemas/ProfileId'
        tag:
          $ref: '#/components/schemas/Tag'
        source:
          $ref: '#/components/schemas/InstrumentId'
        destination:
          oneOf:
            - $ref: '#/components/schemas/InstrumentId'
            - $ref: '#/components/schemas/BeneficiaryId'
        destinationAmount:
          $ref: '#/components/schemas/CurrencyAmount'
        description:
          type: string
          maxLength: 255
          pattern: ^[a-zA-Z0-9\/\-?:().$_,'+\s#=!"%&*<>;\{@\r\n]*$
          description: The description details that are passed to the beneficiary.
        scheduledTimestamp:
          $ref: '#/components/schemas/ScheduledTimestamp'
    OutgoingWireTransferCreateRequest:
      required:
        - destinationBeneficiary
        - profileId
        - sourceInstrument
        - transferAmount
      type: object
      properties:
        profileId:
          $ref: '#/components/schemas/ProfileId'
        tag:
          $ref: '#/components/schemas/Tag'
        sourceInstrument:
          description: The managed account from which funds will be collected.
          required:
            - type
            - id
          type: object
          properties:
            type:
              type: string
              enum:
                - managed_accounts
            id:
              type: string
              pattern: ^[0-9]+$
        transferAmount:
          description: >-
            The amount, in same currency as source and destination, that was
            transferred from the source.
          $ref: '#/components/schemas/CurrencyAmount'
        description:
          type: string
          description: >
            These details are passed to the beneficiary as the `reference` .
            This field is mandatory for wire transfers executed over `SEPA`. The
            allowed length is dependent on the payment type:


            `SEPA` <= `35` characters. An extended character set is accepted to
            cater for all European languages. If `SEPA` does not support a
            particular character, it is automatically converted to an acceptable
            alternative, in line with `SEPA` scheme guidance.


            `Faster Payments` <= `18` characters
        destinationBeneficiary:
          oneOf:
            - $ref: '#/components/schemas/OutgoingWireTransferBeneficiary'
            - $ref: '#/components/schemas/BeneficiaryId'
            - $ref: '#/components/schemas/ExternalAccountId'
        scheduledTimestamp:
          $ref: '#/components/schemas/ScheduledTimestamp'
    LinkedAccount:
      required:
        - id
        - profileId
        - name
        - country
        - state
      type: object
      properties:
        id:
          type: string
          description: The unique identifier of the linked account.
          pattern: ^[0-9]+$
        profileId:
          $ref: '#/components/schemas/ProfileId'
        tag:
          $ref: '#/components/schemas/Tag'
        friendlyName:
          minLength: 1
          maxLength: 50
          type: string
          description: >-
            A user-friendly label assigned to the Linked Account to help
            end-users easily identify it within the application. This name can
            be updated at any time using the `PATCH` endpoint
        name:
          minLength: 1
          maxLength: 100
          type: string
          description: >
            The full name or corporate name of the account holder as registered
            with the external bank or payment service provider. This is the name
            under which the account is officially held.
        type:
          $ref: '#/components/schemas/AccountType'
        currency:
          $ref: '#/components/schemas/Currency'
        country:
          description: The country of the bank or institution at which the account is held.
          type: string
          maxLength: 2
          minLength: 2
          pattern: ^[A-Z]+$
        accountReference:
          description: >-
            The IBAN or Account Number and Sort Code of the account held at the
            external bank or payment service provider.
          oneOf:
            - $ref: '#/components/schemas/AccountNumberAndSortCode'
            - $ref: '#/components/schemas/Iban'
            - $ref: '#/components/schemas/AccountDescriptor'
        state:
          $ref: '#/components/schemas/LinkedAccountState'
        creationTimestamp:
          description: >-
            The timestamp when the linked account was created, expressed in
            Epoch timestamp using millisecond precision.
          type: integer
          format: int64
        owner:
          $ref: '#/components/schemas/StringWrappedTypeId'
    UnknownSenderAccount:
      type: object
      properties:
        name:
          type: string
        accountReference:
          oneOf:
            - $ref: '#/components/schemas/Iban'
            - $ref: '#/components/schemas/AccountNumberAndSortCode'
            - $ref: '#/components/schemas/AccountDescriptor'
    ManagedAccount:
      required:
        - id
        - profileId
        - friendlyName
        - currency
        - balances
        - creationTimestamp
        - state
      type: object
      properties:
        id:
          type: string
          pattern: ^[0-9]+$
          description: The unique identifier of a Managed Account.
        profileId:
          $ref: '#/components/schemas/ProfileId'
        tag:
          $ref: '#/components/schemas/Tag'
        friendlyName:
          minLength: 1
          maxLength: 50
          type: string
          description: The friendly name given to the managed account.
        currency:
          $ref: '#/components/schemas/Currency'
        balances:
          $ref: '#/components/schemas/ManagedInstrumentBalance'
        state:
          $ref: '#/components/schemas/ManagedInstrumentState'
        creationTimestamp:
          type: integer
          format: int64
          description: >-
            The time when the managed account was created, expressed in Epoch
            timestamp using millisecond precision.
    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
    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
    CardAuthorisationEvent:
      required:
        - cardId
        - authorisationType
        - merchantData
        - owner
        - sourceAmount
        - transactionAmount
        - totalTransactionCost
        - transactionId
        - transactionTimestamp
      type: object
      properties:
        cardId:
          type: string
          pattern: ^[0-9]+$
          description: >-
            The unique identifier of the card on which an authorisation is being
            performed
        transactionId:
          type: string
          pattern: ^[0-9]+$
          description: The id of this transaction, for reference.
        authorisationType:
          $ref: '#/components/schemas/CardAuthorisationDetailsAuthorisationType'
          description: The type of authorisation (Debit or Credit)
        sourceAmount:
          description: The amount in the currency of the merchant.
          $ref: '#/components/schemas/CurrencyAmount'
        transactionAmount:
          $ref: '#/components/schemas/CurrencyAmount'
          description: The amount in the currency of the card.
        totalTransactionCost:
          $ref: '#/components/schemas/CurrencyAmount'
          description: >-
            The total amount to be deducted in the currency of the card. This is
            the summation of the transaction amount, forex padding and forex
            fees.
        transactionTimestamp:
          type: integer
          description: >-
            The timestamp of the transaction, using epoch timestamp with
            millisecond precision.
          format: int64
        merchantData:
          $ref: '#/components/schemas/MerchantData'
          description: Merchant related information
        owner:
          $ref: '#/components/schemas/IdentityId'
          description: The owner of the card
        cardholderPresent:
          $ref: '#/components/schemas/CardHolderPresent'
          description: >-
            Optional detail indicating if the card holder was present when the
            authorisation occurred.
        cardPresent:
          type: boolean
          description: >-
            Optional detail indicating if the card was present when the
            authorisation occurred.
        authCode:
          maxLength: 6
          minLength: 1
          type: string
          description: The authorisation code associated with this authorisation.
        forexPadding:
          description: >-
            The forex padding amount, if any, that has been included in the
            transactionAmount.  Forex padding is extra amount blocked to cater
            for currency fluctuation.
          $ref: '#/components/schemas/CurrencyAmount'
        forexFee:
          description: The forex fee, if set, that is included in the transactionAmount.
          $ref: '#/components/schemas/CurrencyAmount'
        mode:
          type: string
          description: >
            The card can be created in prepaid mode or debit mode.


            - A prepaid mode card has its own balance and can have funds
            transferred to or from it.

            - A debit mode card does not have its own balance but will be able
            to spend funds belonging to its parent managed account, subject to a
            configurable spend limit.
      discriminator:
        propertyName: mode
        mapping:
          PREPAID_MODE: '#/components/schemas/PrepaidModeCardAuthorisationEvent'
          DEBIT_MODE: '#/components/schemas/DebitModeCardAuthorisationEvent'
    SensitivePassword:
      type: object
      description: >
        The user's password or passcode used to log in a user.

        Passwords must be:
          - minimum 8 characters for end-users (Consumers and Corporates); 12 characters for others
          - maximum 30 characters
          - include a lowercase character
          - include an uppercase character
          - include a digit and a special character
          - different from any of the 5 last such passwords used.

        For non-PCI compliant integrations, the password submitted must be
        **tokenised**.
      required:
        - value
      properties:
        value:
          maxLength: 100
          type: string
          format: password
    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.
    Nonce:
      type: string
      description: A randomly generated one-time use code.
      pattern: ^[0-9]{6}$
    MultipleSCAResourceType:
      type: string
      description: |
        The operation type upon which an SCA Challenge is being contested.
      enum:
        - outgoing_wire_transfers
        - sends
        - linked_account_declaration
    BulkProcessExecute:
      type: object
      properties:
        mode:
          $ref: '#/components/schemas/BulkProcessMode'
        webhookInterval:
          description: >-
            The count of operations after which a Bulk Process Progress will be
            sent. For example, if set to 10, a webhook will be sent after every
            10th operation is attempted. The minimum value fo count is 25% of
            all operations. If a value below this is entered, a webhook will
            only be sent for each 25% of operations attempted (i.e. 4 webhooks
            per Bulk Process).
          format: int32
          type: integer
    CompanyPosition:
      type: string
      description: The company position of the Corporate Root User.
      enum:
        - DIRECTOR
        - AUTHORISED_REPRESENTATIVE
    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
    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.
    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
    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
    Currency:
      type: string
      description: 'The currency expressed in ISO-4217 code. Example: GBP, EUR, USD.'
      maxLength: 3
      minLength: 3
      pattern: ^[A-Z]*$
    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'
    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
    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.
    Nationality:
      maxLength: 2
      minLength: 2
      pattern: ^[A-Z]+$
      type: string
      description: Nationality of the user - using ISO 3166 alpha-2.
    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
    KycLevel:
      deprecated: true
      type: string
      description: >
        The KYC level, which determines what KYC information will be requested
        from the consumer:
          - KYC_LEVEL_1: The most basic level of KYC required. 
          - KYC_LEVEL_2: Full due diligence level 2
      enum:
        - KYC_LEVEL_1
        - KYC_LEVEL_2
    CreateLinkedAccountRequest:
      required:
        - name
        - accountReference
        - country
        - type
      type: object
      properties:
        profileId:
          $ref: '#/components/schemas/LinkedAccountProfileId'
        tag:
          $ref: '#/components/schemas/Tag'
        name:
          description: >
            The full name or corporate name of the account holder as registered
            with the external bank or payment service provider. This is the name
            under which the account is officially held.
          type: string
          minLength: 1
          maxLength: 100
        type:
          $ref: '#/components/schemas/AccountType'
        accountReference:
          description: >-
            The IBAN, or Account Number and Sort Code, or Account Descriptor of
            the account held at the external bank or payment service provider.
          oneOf:
            - $ref: '#/components/schemas/Iban'
            - $ref: '#/components/schemas/AccountNumberAndSortCode'
            - $ref: '#/components/schemas/AccountDescriptor'
        country:
          description: The country of the bank or institution at which the account is held.
          type: string
          maxLength: 2
          minLength: 2
          pattern: ^[A-Z]+$
        friendlyName:
          description: >-
            A user-friendly label assigned to the Linked Account to help
            end-users easily identify it within the application. This name can
            be updated at any time using the `PATCH` endpoint.
          type: string
          maxLength: 50
        currency:
          oneOf:
            - $ref: '#/components/schemas/Currency'
    ManagedCardRequest:
      required:
        - profileId
        - friendlyName
        - nameOnCard
        - billingAddress
        - mode
      type: object
      properties:
        profileId:
          $ref: '#/components/schemas/ProfileId'
        tag:
          $ref: '#/components/schemas/Tag'
        friendlyName:
          maxLength: 50
          minLength: 1
          type: string
          description: The friendly name for the card.
        nameOnCard:
          maxLength: 27
          minLength: 1
          pattern: >-
            ^[a-zA-Z0-9ßÀÁÂÃÄÅǍÆÇÈÉÊËÌÍÎÏÒÓÔÕÖØŠÙÚÛÜŸÝĄĆČĎĘĹĽŁŃŇÑŐŔŚȘȚŤŰŹŻŽàáâãäåǎæçèéêëìíîïòóôõöøšùúûüÿýąćčďęĺľłńňñőŕśșțťűźżž\-^.
            '-]*$
          type: string
          description: >
            The card holder's name for the card.


            This may be verified by merchants when the card is used online. For
            Physical cards, this field will be printed on the card.

            The maximum characters allowed will depend on the design chosen and
            will be provided to you by Weavr when setting up your plastic cards.
        nameOnCardLine2:
          maxLength: 27
          pattern: >-
            ^[a-zA-Z0-9ßÀÁÂÃÄÅǍÆÇÈÉÊËÌÍÎÏÒÓÔÕÖØŠÙÚÛÜŸÝĄĆČĎĘĹĽŁŃŇÑŐŔŚȘȚŤŰŹŻŽàáâãäåǎæçèéêëìíîïòóôõöøšùúûüÿýąćčďęĺľłńňñőŕśșțťűźżž\-^.
            '-]*$
          type: string
          description: >-
            Line 2 of the 'name on card' field. For Physical cards, this field
            will be printed on the card. The maximum characters allowed will
            depend on the design chosen and will be provided to you by Weavr
            when setting up your plastic cards.
        cardholderMobileNumber:
          description: >
            The mobile number including country code of the card holder.


            For transactions that require a 3DS challenge, an SMS with a code
            will be sent on this number, to be entered during an online
            purchase.
          maxLength: 15
          minLength: 5
          pattern: ^\+[0-9]+$
          type: string
          deprecated: true
        billingAddress:
          description: >-
            The billing address set for the card holder. This may be verified by
            merchants when the card is used online.
          $ref: '#/components/schemas/BillingAddress'
        digitalWallets:
          description: The Card Tokenisation details
          $ref: '#/components/schemas/DigitalWallets'
        authForwardingDefaultTimeoutDecision:
          type: string
          description: Default decision for auth forwarding on timeout
          enum:
            - APPROVE
            - DECLINE
        threeDSecureAuthConfig:
          description: 3DS details for card creation
          $ref: '#/components/schemas/ThreeDSecureAuthConfig'
        mode:
          type: string
          description: >
            The card can be created in prepaid mode or debit mode.


            - A prepaid mode card has its own balance and can have funds
            transferred to or from it.

            - A debit mode card does not have its own balance but will be able
            to spend funds belonging to its parent managed account, subject to a
            configurable spend limit.
        externalData:
          $ref: '#/components/schemas/ExternalData'
        renewalType:
          $ref: '#/components/schemas/CardRenewalType'
        userId:
          $ref: '#/components/schemas/UserId'
          description: >-
            The Authorised User to be linked to the card, whose authentication
            details will be used for actions such as 3DS authentication, or
            manual provisioning to a digital wallet. This field can be used
            instead of threeDSecureAuthConfig as it better describes the wider
            scope of possible uses.
      discriminator:
        propertyName: mode
        mapping:
          PREPAID_MODE: '#/components/schemas/PrepaidModeCardRequest'
          DEBIT_MODE: '#/components/schemas/DebitModeCardRequest'
    BillingAddress:
      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.
    DeliveryAddress:
      required:
        - name
        - surname
        - addressLine1
        - city
        - postCode
        - country
      type: object
      description: The delivery address where the physical card is delivered.
      properties:
        name:
          maxLength: 100
          type: string
        surname:
          maxLength: 100
          type: string
        addressLine1:
          maxLength: 50
          minLength: 1
          type: string
        addressLine2:
          maxLength: 50
          minLength: 1
          type: string
        city:
          maxLength: 50
          type: string
        postCode:
          maxLength: 10
          pattern: ^[A-Za-z0-9 -]*$
          type: string
        state:
          maxLength: 50
          type: string
        country:
          maxLength: 2
          minLength: 2
          pattern: ^[A-Z]+$
          type: string
          description: Country of the identity in ISO 3166 alpha-2 format.
        contactNumber:
          $ref: '#/components/schemas/PhoneNumber'
          description: >-
            Mandatory when bulk delivery is selected. Will be printed on the
            box/packet to assist delivery.
    DeliveryMethod:
      type: string
      description: >
        The delivery methods supported for delivering printed physical cards. If
        not specified, the STANDARD_DELIVERY method will be used.
      enum:
        - STANDARD_DELIVERY
        - REGISTERED_MAIL
        - COURIER
        - FIRST_CLASS_MAIL
    DigitalWallets:
      type: object
      properties:
        pushProvisioningEnabled:
          type: boolean
          description: >-
            Indicates whether the card is enabled for push provisioning in a
            digital wallet.
        walletsEnabled:
          type: boolean
          description: >-
            Indicates whether the card is enabled for tokenisation in a digital
            wallet.
        artworkReference:
          type: string
          description: >-
            The artwork reference that will be used if the card is enabled for
            tokenisation in a digital wallet.
    ThreeDSecureAuthConfig:
      deprecated: true
      type: object
      required:
        - linkedUserId
        - primaryChannel
      properties:
        linkedUserId:
          type: string
          description: >-
            The Authorised user whose authentication / billing details will be
            reflected on the card for verification purposes such as 3ds.
          pattern: ^[0-9]+$
          deprecated: true
        primaryChannel:
          type: string
          description: Primary Authentication Method
          enum:
            - OTP_SMS
            - BIOMETRICS
            - TWILIO_AUTHY
        fallbackChannel:
          type: string
          description: Fallback Authentication Method
          enum:
            - OTP_SMS
    ExternalData:
      description: >-
        External data fields, as provided and managed by the caller that are to
        be stored and associated with a Managed Card instance. This information
        is not processed or used by Weavr but some of the values could be shown
        in specific reports and used as filters
      type: array
      items:
        type: object
        properties:
          name:
            type: string
            minLength: 1
            maxLength: 100
          value:
            type: string
            minLength: 1
            maxLength: 100
      uniqueItems: true
      maxItems: 10
    BulkCardDelivery:
      type: boolean
      description: >
        Bulk delivery is available for deliveryMethods REGISTERED_MAIL or
        COURIER.

        All cards marked as bulk and ordered within the fulfilment centre’s
        dispatch window will be sent in bulk. Delivery address must be identical
        for all orders. contactNumber in the deliveryAddress object is mandatory
        when bulk is selected. Maximum number of cards delivered in a single
        box/packet is REGISTERED_MAIL = 90, COURIER = 200.
    PhysicalCardActivationCode:
      pattern: ^[0-9]{1,6}$
      type: string
    CardRenewalType:
      description: |
        Indicates how the card will be handled once it is close to expiring.
          - RENEW: The card will be automatically renewed, keeping the same card number but with a new expiry date and CVV.
          - NO_RENEW: Once the expiry date is reached, the card is destroyed.
      enum:
        - RENEW
        - NO_RENEW
      type: string
    CardLevelSpendRules:
      allOf:
        - $ref: '#/components/schemas/BaseCardLevelSpendRules'
        - type: object
          properties:
            minTransactionAmount:
              type: integer
              minimum: 0
              format: int64
              description: >-
                The minimum transaction amount, in card currency, that is
                allowed. If the transaction amount is less than this value, then
                the transaction will be declined.
            maxTransactionAmount:
              type: integer
              minimum: 0
              format: int64
              description: >-
                The maximum transaction amount, in card currency, that is
                allowed. If the transaction amount is greater than this value,
                then the transaction will be declined.
    SensitivePin:
      type: object
      description: >
        The PIN used for in-person transactions done with physical cards.


        Unless you are PCI-DSS compliant and have opted to switch off Weavr's
        security model, the card's PIN will be tokenised.


        To show the PIN to your user, you need to embed the Display Card PIN UI
        Component in your application. This accepts the tokenised PIN and shows
        the plain text PIN to the user on screen.
      required:
        - value
      properties:
        value:
          minLength: 4
          maxLength: 24
          type: string
    TransactionBulkCancelRequest:
      required:
        - cancellations
      type: object
      properties:
        cancellations:
          type: array
          description: Contains the details of the transactions to be cancelled.
          items:
            $ref: '#/components/schemas/TransactionCancelRequest'
    SendBulkCreateRequest:
      required:
        - sends
      type: object
      properties:
        sends:
          type: array
          description: The object representing the sends' details.
          items:
            $ref: '#/components/schemas/SendCreateRequest'
    OutgoingWireTransferBulkCreateRequest:
      required:
        - outgoingWireTransfers
      type: object
      properties:
        outgoingWireTransfers:
          type: array
          description: The object representing the outgoing wire transfers' details.
          items:
            $ref: '#/components/schemas/OutgoingWireTransferCreateRequest'
    TransactionSingleCancelRequest:
      type: object
      properties:
        cancellationReason:
          $ref: '#/components/schemas/TransactionCancellationReason'
    BasicBeneficiary:
      required:
        - trustLevel
        - beneficiaryInformation
        - beneficiaryDetails
      type: object
      properties:
        trustLevel:
          description: The value that determines whether a Beneficiary is trusted or not.
          $ref: '#/components/schemas/BeneficiaryTrustLevel'
        externalRefs:
          description: The id of the entity as it is represented on the caller system.
          type: array
          items:
            type: string
        group:
          description: >-
            A custom field that can be used to categorise a beneficiary for
            easier searching and filtering.
          type: string
          maxLength: 150
        beneficiaryInformation:
          description: The object representing the beneficiary details.
          oneOf:
            - $ref: '#/components/schemas/BusinessBeneficiaryType'
            - $ref: '#/components/schemas/ConsumerBeneficiaryType'
        beneficiaryDetails:
          description: The object representing the beneficiary instrument details.
          oneOf:
            - $ref: '#/components/schemas/InstrumentDetailsBeneficiary'
            - $ref: '#/components/schemas/BankAccountDetailsBeneficiary'
    TokenType:
      type: string
      description: >
        The auth token received can only be used to access the following
        endpoints:
          - `/identities`
          - `/access_token`
      enum:
        - NO_TYPE
        - AUTH
        - ACCESS
    CredentialId:
      required:
        - type
        - id
      type: object
      properties:
        type:
          maxLength: 50
          pattern: ^[a-zA-Z0-9_-]+$
          type: string
          enum:
            - ROOT
            - USER
            - API_CLIENT
          description: The type of user.
        id:
          type: string
          pattern: ^[0-9]+$
          description: The identifier of the user.
    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
    TokenError:
      description: The used token is expired or not found
      type: object
      properties:
        errorCode:
          type: string
          enum:
            - TOKEN_EXPIRED
            - TOKEN_NOT_FOUND
    UserIdentitiesGetResponseSchema:
      required:
        - identities
        - count
        - responseCount
      type: object
      properties:
        identities:
          type: array
          description: The list of identities available to user.
          items:
            $ref: '#/components/schemas/UserIdentity'
        count:
          type: integer
          description: The total number of records (excluding the paging limit).
          format: int32
        responseCount:
          type: integer
          description: >-
            The total number of records returned in this response (always capped
            at 100).
          format: int32
    PasswordInfo:
      required:
        - identityId
      type: object
      description: Additional information related to the user's password.
      properties:
        identityId:
          description: The identity to which the user's password information belongs to.
          $ref: '#/components/schemas/IdentityId'
        expiryDate:
          minimum: 0
          type: integer
          format: int64
          description: >-
            The millisecond timestamp indicating when the password will expire.
            If 0, then this password will not expire.
    TokenResponse:
      type: object
      properties:
        token:
          type: string
          description: >-
            An authorisation token to be used in the Authorization header for
            secured operations.
    SCAFactor:
      type: object
      properties:
        type:
          $ref: '#/components/schemas/SCAChallengeType'
        status:
          $ref: '#/components/schemas/SCAFactorStatus'
        channel:
          $ref: '#/components/schemas/SCAChannel'
    Id:
      type: string
      pattern: ^[0-9]+$
    User:
      required:
        - id
        - email
        - name
        - surname
        - identity
        - active
      type: object
      properties:
        id:
          type: string
          pattern: ^[0-9]+$
          description: The unique identifier of the user.
        identity:
          description: The identity that the user belongs to.
          $ref: '#/components/schemas/IdentityId'
        name:
          maxLength: 100
          type: string
          description: The first name of the user.
        surname:
          maxLength: 100
          type: string
          description: The last name of the user.
        email:
          $ref: '#/components/schemas/Email'
        mobile:
          $ref: '#/components/schemas/Mobile'
        active:
          type: boolean
          description: >-
            The state of the user. If the `active` attribute is false, then the
            user will not be able to log in.
        dateOfBirth:
          description: Date of birth of the authorised user.
          $ref: '#/components/schemas/Date'
        tag:
          $ref: '#/components/schemas/Tag'
        countryOfResidence:
          type: string
          maxLength: 2
          minLength: 2
          pattern: ^[A-Z]+$
        locale:
          $ref: '#/components/schemas/UserLocale'
        brand:
          $ref: '#/components/schemas/Brand'
    BulkProcessConflict:
      properties:
        errorCode:
          $ref: '#/components/schemas/BulkProcessConflictErrorCode'
      type: object
    BulkProcessDetails:
      allOf:
        - $ref: '#/components/schemas/BulkProcess'
        - type: object
          properties:
            operationStatusCounts:
              type: array
              items:
                $ref: '#/components/schemas/BulkProcessOperationStatusCounts'
    BulkProcessOperationsPaged:
      properties:
        count:
          description: Total number of records (excluding limit)
          format: int32
          type: integer
        operations:
          items:
            $ref: '#/components/schemas/BulkProcessOperation'
          type: array
        responseCount:
          description: Total number of records returned in this response
          format: int32
          type: integer
      type: object
    CreatedCorporate:
      allOf:
        - $ref: '#/components/schemas/Corporate'
        - type: object
          required:
            - rootUser
          properties:
            rootUser:
              description: The root user of the Corporate Identity.
              $ref: '#/components/schemas/CreatedCorporateRootUser'
    KyiStatus:
      type: string
      enum:
        - NOT_STARTED
        - INITIATED
        - PENDING_REVIEW
        - APPROVED
        - REJECTED
    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
    LinkedAccountVerificationRun:
      type: object
      required:
        - state
      properties:
        id:
          type: string
          description: The unique identifier of the linked account verification
        state:
          description: The state of the linked account verification
          $ref: '#/components/schemas/LinkedAccountVerificationRunState'
        completedTimestamp:
          type: integer
          format: int64
          description: >-
            The timestamp when the verification was completed, expressed in
            Epoch timestamp using millisecond precision.
        verificationSteps:
          type: array
          items:
            type: object
            properties:
              step:
                $ref: '#/components/schemas/LinkedAccountVerificationStep'
              details:
                oneOf:
                  - $ref: >-
                      #/components/schemas/LinkedAccountVerificationTransferInstruction
                  - $ref: '#/components/schemas/LinkedAccountMicroDepositVerification'
              status:
                $ref: '#/components/schemas/LinkedAccountVerificationStepStatus'
              completedTimestamp:
                type: integer
                format: int64
                description: >-
                  The timestamp when the card will be renewed, expressed in
                  Epoch timestamp using millisecond precision.
        overriddenReason:
          type: string
          description: >-
            Optional field for users to provide a reason for overriding the
            verification steps
    ManagedAccountIBAN:
      required:
        - state
        - bankAccountDetails
      type: object
      properties:
        state:
          type: string
          description: |
            The state of the Managed Account's IBAN as follows:
              - UNALLOCATED: The Managed Account has never been assigned an IBAN. Use the _managedAccountsIBANUpgrade_ operation to assign an IBAN to a Managed Account.
              - PENDING_ALLOCATION: The IBAN is being allocated to the Managed Account.
              - ALLOCATED: An IBAN is allocated to the Managed Account.
          enum:
            - UNALLOCATED
            - PENDING_ALLOCATION
            - ALLOCATED
        bankAccountDetails:
          description: >-
            A list of bank account details associated with the IBAN.

            Multiple details can be provided if multiple IBAN providers are
            supported by your payment model.
          type: array
          items:
            required:
              - beneficiaryNameAndSurname
              - beneficiaryBank
              - beneficiaryBankAddress
              - type
              - details
            type: object
            properties:
              beneficiaryNameAndSurname:
                type: string
                description: >-
                  The beneficiary name and surname details to be used when
                  initiating a deposit onto the IBAN.
              beneficiaryBank:
                type: string
                description: >-
                  The beneficiary bank name to be used when initiating a deposit
                  onto the IBAN.
              beneficiaryBankAddress:
                type: string
                description: >-
                  The beneficiary bank address to be used when initiating a
                  deposit onto the IBAN.
              paymentReference:
                type: string
                description: >
                  A reference required by the partner bank to execute a deposit
                  on the managed account.



                  If provided, make sure that this is included as part of the
                  wire transfer details when initiating a deposit.
              details:
                description: >
                  The bank details required to initiate a deposit on the managed
                  account.


                  The details required to deposit on the IBAN vary depending on
                  the wire transfer channel that will be used.
                anyOf:
                  - $ref: '#/components/schemas/IBANDetails'
                  - $ref: >-
                      #/components/schemas/FasterPaymentsBankDetailsOrBACSBankDetails
                  - $ref: '#/components/schemas/SwiftBankDetails'
    Statement:
      type: object
      description: The list of statement entries.
      properties:
        entry:
          type: array
          items:
            $ref: '#/components/schemas/StatementEntry'
        count:
          type: integer
          description: The total number of records (excluding the paging limit).
          format: int32
        responseCount:
          type: integer
          description: The total number of records returned in this response.
          format: int32
        startBalance:
          description: >-
            The start balance amount in the instrument's currency. Empty for
            debit cards.
          $ref: '#/components/schemas/CurrencyAmount'
        endBalance:
          description: >-
            The end balance amount in the instrument's currency. Empty for debit
            cards.
          $ref: '#/components/schemas/CurrencyAmount'
        footer:
          description: The footer description for the current statement
          type: string
    StatementEntry:
      required:
        - transactionAmount
        - entryState
        - transactionId
        - processedTimestamp
      type: object
      properties:
        transactionId:
          description: The unique identifier of the transaction.
          $ref: '#/components/schemas/TransactionId'
        entryState:
          $ref: '#/components/schemas/StatementEntryState'
        originalAmount:
          description: >
            The transaction amount as originally requested. The original amount
            currency may be different from the currency of the instrument.


            In case of purchases, this will indicate the original currency and
            amount that the merchant requested.
          $ref: '#/components/schemas/CurrencyAmount'
        forexRate:
          description: >-
            If the `originalAmount` is in a different currency from the
            instrument's currency, the forex rate used will be provided.
          $ref: '#/components/schemas/ScaledAmount'
        transactionAmount:
          description: The transaction amount in the instrument's currency.
          $ref: '#/components/schemas/CurrencyAmount'
        availableBalanceAdjustment:
          description: >-
            The amount of funds credited or debited on the available balance of
            the instrument.
          $ref: '#/components/schemas/CurrencyAmount'
        actualBalanceAdjustment:
          description: >-
            The amount of funds credited or debited on the actual balance of the
            instrument.
          $ref: '#/components/schemas/CurrencyAmount'
        balanceAfter:
          description: The balance of the instrument after the transaction was executed.
          $ref: '#/components/schemas/CurrencyAmount'
        availableBalanceAfter:
          description: >-
            The available balance of the instrument after the transaction was
            executed.
          $ref: '#/components/schemas/CurrencyAmount'
        actualBalanceAfter:
          description: >-
            The actual balance of the instrument after the transaction was
            executed.
          $ref: '#/components/schemas/CurrencyAmount'
        transactionFee:
          description: >-
            The fee amount that was captured for you (Multi account owner). You
            can set fees to be taken during transactions in the Multi Portal.
          $ref: '#/components/schemas/CurrencyAmount'
        cardholderFee:
          description: >-
            The fee amount that was captured for you (Multi account owner). You
            can set fees to be taken during transactions in the Multi Portal.
            This field is deprecated - use `transactionFee` instead.
          $ref: '#/components/schemas/CurrencyAmount'
        processedTimestamp:
          type: integer
          format: int64
          description: >-
            The timestamp when the transaction was processed by the system,
            expressed in Epoch timestamp using millisecond precision.
        sourceAmount:
          description: >-
            The source amount of the transaction, if the transaction involves
            forex.
          $ref: '#/components/schemas/CurrencyAmount'
        userCurrencyTransactionDetails:
          description: The object representing the user transaction's details
          $ref: '#/components/schemas/UserCurrencyTransactionDetails'
        additionalFields:
          type: object
          additionalProperties:
            type: string
          description: >-
            A Map of additional fields. Possible values include fee information.
            The possible entries are `merchantName`, `merchantCategoryCode`,
            `merchantTerminalCountry`, `sourceInstrumentType`,
            `sourceInstrumentId`, `destinationInstrumentType`,
            `destinationInstrumentId`, `forexPaddingCurrency`,
            `forexPaddingAmount`, `note`, `sourceInstrumentFriendlyName`,
            `destinationInstrumentFriendlyName`, `sourceIdentityType`,
            `sourceIdentityId`, `sourceIdentityName`, `destinationIdentityType`,
            `destinationIdentityId`, `destinationIdentityName`, `exchangeRate`,
            `authorisationState`, `authorisationRelatedId`,
            `settlementRelatedId`, `chargeFeeType`, `relatedTransactionId`,
            `relatedTransactionIdType`, `beneficiaryName`, `beneficiaryAccount`,
            `beneficiaryBankCode`, `merchantId`, `merchantTransactionType`,
            `systemTransactionType`, `authorisationCode`, `relatedCardId`,
            `sender`, `forexFeeCurrency`, `forexFeeAmount`, `senderIban`,
            `senderReference`, `mandateId`, `merchantReference`, `description`,
            `declineReason`, `spendRuleFailedReason` and
            `authorisationCategory`.
    ManagedCard:
      required:
        - externalHandle
        - cardBrand
        - cardLevelClassification
        - creationTimestamp
        - currency
        - expiryPeriodMonths
        - friendlyName
        - id
        - nameOnCard
        - profileId
        - renewalType
        - type
        - mode
        - state
        - cardNumber
        - cvv
        - cardNumberFirstSix
        - cardNumberLastFour
        - startMmyy
        - expiryMmyy
        - billingAddress
        - digitalWallets
      type: object
      properties:
        id:
          type: string
          pattern: ^[0-9]+$
          description: The unique identifier of the card.
        profileId:
          $ref: '#/components/schemas/ProfileId'
        externalHandle:
          type: string
          description: >
            A uniquely generated code used to identify a card.


            This code is to be used instead of the sensitive card number in
            order to refer to a card when opening a support ticket.
        tag:
          $ref: '#/components/schemas/Tag'
        friendlyName:
          maxLength: 50
          minLength: 1
          type: string
          description: The friendly name given to the card.
        currency:
          $ref: '#/components/schemas/Currency'
        state:
          $ref: '#/components/schemas/ManagedInstrumentState'
        type:
          type: string
          description: |
            The type of card:
              - VIRTUAL: Not a printed or embedded card. The card can be used online or added to digital wallets.
              - PHYSICAL: A physical card that can be printed and shipped to your customers or embedded in a Wearable device. It can be used at physical terminals.
          enum:
            - VIRTUAL
            - PHYSICAL
        cardBrand:
          type: string
          description: The card scheme, or brand of the card.
          enum:
            - MASTERCARD
            - VISA
        cardNumber:
          $ref: '#/components/schemas/SensitiveCardNumber'
        cvv:
          $ref: '#/components/schemas/SensitiveCvv'
        cardNumberFirstSix:
          pattern: ^[0-9]{6}$
          type: string
          description: The first six digits of the card number.
        cardNumberLastFour:
          pattern: ^[0-9]{4}$
          type: string
          description: The last four digits of the card number.
        nameOnCard:
          maxLength: 27
          pattern: >-
            ^[a-zA-Z0-9ßÀÁÂÃÄÅǍÆÇÈÉÊËÌÍÎÏÒÓÔÕÖØŠÙÚÛÜŸÝĄĆČĎĘĹĽŁŃŇÑŐŔŚȘȚŤŰŹŻŽàáâãäåǎæçèéêëìíîïòóôõöøšùúûüÿýąćčďęĺľłńňñőŕśșțťűźżž\-^.
            '-]*$
          type: string
          description: >-
            The card holder’s name for the card. This may be verified by
            merchants when the card is used online. For Physical cards, this
            field will be printed on the card. The maximum characters allowed
            will depend on the design chosen and will be provided to you by
            Weavr when setting up your plastic cards.
        nameOnCardLine2:
          maxLength: 27
          pattern: >-
            ^[a-zA-Z0-9ßÀÁÂÃÄÅǍÆÇÈÉÊËÌÍÎÏÒÓÔÕÖØŠÙÚÛÜŸÝĄĆČĎĘĹĽŁŃŇÑŐŔŚȘȚŤŰŹŻŽàáâãäåǎæçèéêëìíîïòóôõöøšùúûüÿýąćčďęĺľłńňñőŕśșțťűźżž\-^.
            '-]*$
          type: string
          description: >-
            Line 2 of the 'name on card' field. For Physical cards, this field
            will be printed on the card. The maximum characters allowed will
            depend on the design chosen and will be provided to you by Weavr
            when setting up your plastic cards.
        startMmyy:
          maxLength: 4
          minLength: 4
          pattern: ^[0-9]*$
          type: string
          description: The start date of this card, in MMYY format.
        expiryMmyy:
          maxLength: 4
          minLength: 4
          type: string
          description: The end date of this card, in MMYY format.
        cardLevelClassification:
          type: string
          enum:
            - CONSUMER
            - CORPORATE
          description: >-
            The card classification determines whether the card is from Consumer
            or Corporate BINs.
        expiryPeriodMonths:
          maximum: 120
          minimum: 1
          type: integer
          format: int32
          description: The validity timeframe of the card, in months.
        renewalType:
          $ref: '#/components/schemas/CardRenewalType'
        renewalTimestamp:
          type: integer
          format: int64
          description: >-
            The timestamp when the card will be renewed, expressed in Epoch
            timestamp using millisecond precision.
        creationTimestamp:
          type: integer
          format: int64
          description: >-
            The timestamp when the card was created, expressed in Epoch
            timestamp using millisecond precision.
        cardholderMobileNumber:
          description: >-
            The mobile number including country code of the card holder, needed
            for 3DS challenge.
          maxLength: 15
          minLength: 5
          pattern: ^\+[0-9]+$
          type: string
          deprecated: true
        billingAddress:
          description: >-
            The billing address set for the cardholder. This can be checked by
            the merchant during online purchases.
          $ref: '#/components/schemas/BillingAddress'
        physicalCardDetails:
          $ref: '#/components/schemas/PhysicalCardDetails'
        digitalWallets:
          $ref: '#/components/schemas/DigitalWallets'
        authForwardingDefaultTimeoutDecision:
          type: string
          description: Default decision for auth forwarding on timeout
          enum:
            - APPROVE
            - DECLINE
        threeDSecureAuthConfig:
          $ref: '#/components/schemas/ThreeDSecureAuthConfig'
        mode:
          type: string
          description: >
            The mode with which this card was created:


            - A prepaid mode card has its own balance and can have funds
            transferred to or from it.

            - A debit mode card does not have its own balance but will be able
            to spend funds belonging to its parent managed account, subject to a
            configurable spend limit.
        externalData:
          $ref: '#/components/schemas/ExternalData'
        userId:
          $ref: '#/components/schemas/UserId'
          description: >-
            The Authorised User to be linked to the card, whose authentication
            details will be used for actions such as 3DS authentication, or
            manual provisioning to a digital wallet. This field can be used
            instead of threeDSecureAuthConfig as it better describes the wider
            scope of possible uses.
        replacement:
          $ref: '#/components/schemas/ManagedCardReplacement'
      discriminator:
        propertyName: mode
        mapping:
          PREPAID_MODE: '#/components/schemas/PrepaidModeCard'
          DEBIT_MODE: '#/components/schemas/DebitModeCard'
    AllLevelSpendRules:
      type: object
      properties:
        allowedMerchantCategories:
          deprecated: true
          type: array
          maxItems: 200
          items:
            type: string
          description: >-
            Whitelist MCC: A list of allowed merchant category codes (MCCs). If
            the MCC does not match, then the transaction will be declined. If an
            MCC is also in the blocked list, the blocked list will take
            precedence. This field is deprecated - use
            "cardLevelSpendRules"."allowedMerchantCategories" instead.
        blockedMerchantCategories:
          deprecated: true
          type: array
          maxItems: 200
          items:
            type: string
          description: >-
            Blacklist MCC: A list of disallowed merchant category codes (MCCs).
            If the MCC matches, then the transaction will be declined. If an MCC
            is also in the allowed list, the blocked list will take precedence.
            This field is deprecated - use
            "cardLevelSpendRules"."blockedMerchantCategories" instead.
        allowedMerchantIds:
          deprecated: true
          type: array
          maxItems: 200
          items:
            type: string
          description: >-
            Whitelist Merchant Id: A list of allowed merchant IDs. If the
            Merchant Id does not match, then the transaction will be declined.
            If a Merchant Id is also provided in the blocked list, the blocked
            list will take precedence. This field is deprecated - use
            "cardLevelSpendRules"."allowedMerchantIds" instead.
        blockedMerchantIds:
          deprecated: true
          type: array
          maxItems: 200
          items:
            type: string
          description: >-
            Blacklist Merchant Id: A list of disallowed merchant IDs. If the
            Merchant Id matches, then the transaction will be declined. If a
            Merchant Id is also in the allowed list, the blocked list will take
            precedence. This field is deprecated - use
            "cardLevelSpendRules"."blockedMerchantIds" instead.
        allowedMerchantCountries:
          deprecated: true
          type: array
          maxItems: 50
          items:
            maxLength: 2
            minLength: 2
            pattern: ^[A-Z]{2}$
            type: string
          description: >-
            Whitelist Merchant Country: A list of allowed merchant countries, in
            ISO 3166-1 alpha-2 format. If the Merchant country does not match,
            then the transaction will be declined. If a Merchant Country is also
            provided in the blocked list, the blocked list will take precedence.
            This field is deprecated - use
            "cardLevelSpendRules"."allowedMerchantCountries" instead.
        blockedMerchantCountries:
          deprecated: true
          type: array
          maxItems: 50
          items:
            maxLength: 2
            minLength: 2
            pattern: ^[A-Z]{2}$
            type: string
          description: >-
            Blacklist Merchant Country: A list of disallowed merchant countries,
            in ISO 3166-1 alpha-2 format. If the Merchant country matches, then
            the transaction will be declined. If a Merchant Country is also in
            the allowed list, the blocked list will take precedence. This field
            is deprecated - use "cardLevelSpendRules"."blockedMerchantCountries"
            instead.
        allowContactless:
          deprecated: true
          type: boolean
          description: >-
            Indicates if a contactless transaction is allowed on the card. This
            field is deprecated - use "cardLevelSpendRules"."allowContactless"
            instead.
        allowAtm:
          deprecated: true
          type: boolean
          description: >-
            Indicates if an ATM Withdrawal transaction is allowed on the card.
            This field is deprecated - use "cardLevelSpendRules"."allowAtm"
            instead.
        allowECommerce:
          deprecated: true
          type: boolean
          description: >-
            Indicates if an online transaction is allowed on the card. This
            field is deprecated - use "cardLevelSpendRules"."allowECommerce"
            instead.
        allowCashback:
          deprecated: true
          type: boolean
          description: >-
            Indicates if a cashback transaction at a physical terminal is
            allowed on the card. This field is deprecated - use
            "cardLevelSpendRules"."allowCashback" instead.
        allowCreditAuthorisations:
          deprecated: true
          type: boolean
          description: >-
            Indicates if a the card can receive a credit transaction. This field
            is deprecated - use "cardLevelSpendRules"."allowCashback" instead.
        minTransactionAmount:
          deprecated: true
          type: integer
          minimum: 0
          format: int64
          description: >-
            The minimum transaction amount, in card currency, that is allowed.
            If the transaction amount is less than this value, then the
            transaction will be declined. Omit this, or set to 0 if no maximum
            transaction amount is to be set. This field is deprecated - use
            "cardLevelSpendRules"."minTransactionAmount" instead.
        maxTransactionAmount:
          deprecated: true
          type: integer
          minimum: 0
          format: int64
          description: >-
            The maximum transaction amount, in card currency, that is allowed.
            If the transaction amount is greater than this value, then the
            transaction will be declined. Omit this, or set to 0 if no maximum
            transaction amount is to be set. This field is deprecated - use
            "cardLevelSpendRules"."maxTransactionAmount" instead.
        spendLimit:
          deprecated: true
          description: >-
            The total amount of funds that can be spent using this card, in a
            given time interval. This field is deprecated - use
            "cardLevelSpendRules"."spendLimit" instead.
          type: array
          items:
            $ref: '#/components/schemas/SpendLimit'
        cardLevelSpendRules:
          $ref: '#/components/schemas/CardLevelSpendRules'
        profileLevelSpendRules:
          $ref: '#/components/schemas/ProfileLevelSpendRules'
        identityLevelSpendRules:
          $ref: '#/components/schemas/IdentityLevelSpendRules'
    Transfer:
      required:
        - id
        - profileId
        - creationTimestamp
        - destination
        - destinationAmount
        - source
        - state
      type: object
      properties:
        id:
          type: string
          pattern: ^[0-9]+$
          description: The unique identifier of a Transfer transaction.
        profileId:
          $ref: '#/components/schemas/ProfileId'
        tag:
          $ref: '#/components/schemas/Tag'
        source:
          description: >-
            The source managed account or card from where the funds were
            transferred.
          $ref: '#/components/schemas/InstrumentId'
        destination:
          description: >-
            The destination managed account or card to where the funds were
            transferred.
          $ref: '#/components/schemas/InstrumentId'
        destinationAmount:
          description: >-
            The amount, in same currency as source and destination, that was
            transferred from the source to the destination instrument.
          $ref: '#/components/schemas/CurrencyAmount'
        description:
          type: string
          maxLength: 255
          pattern: ^[a-zA-Z0-9\/\-?:().$_,'+\s#=!"%&*<>;\{@\r\n]*$
          description: >-
            The description details that are included in the transaction as
            reference.
        state:
          $ref: '#/components/schemas/TransactionState'
        creationTimestamp:
          type: integer
          format: int64
          description: >-
            The time when the transaction was created, expressed in Epoch
            timestamp using millisecond precision.
        scheduledTimestamp:
          $ref: '#/components/schemas/ScheduledTimestamp'
        executionTimestamp:
          $ref: '#/components/schemas/ExecutionTimestamp'
        cancellationReason:
          $ref: '#/components/schemas/TransactionCancellationReason'
    TransactionBulkCancelResponse:
      required:
        - cancellations
      type: object
      properties:
        cancellations:
          type: array
          description: Contains the cancellation details for each of the transactions.
          items:
            $ref: '#/components/schemas/TransactionCancelResponse'
    Send:
      required:
        - id
        - profileId
        - creationTimestamp
        - source
        - destinationAmount
        - state
        - transactionAmount
      type: object
      properties:
        id:
          type: string
          pattern: ^[0-9]+$
          description: The unique identifier of a send transaction.
        profileId:
          $ref: '#/components/schemas/ProfileId'
        tag:
          $ref: '#/components/schemas/Tag'
        source:
          description: The source managed account or card from where the funds were sent.
          $ref: '#/components/schemas/InstrumentId'
        sourceFee:
          allOf:
            - $ref: '#/components/schemas/CurrencyAmount'
            - type: object
              description: The fee applied to the source.
        destination:
          description: >-
            The destination managed account or card to where the funds were
            sent.
          oneOf:
            - $ref: '#/components/schemas/InstrumentId'
            - $ref: '#/components/schemas/BeneficiaryId'
        destinationAmount:
          description: >-
            The amount, in same currency as source and destination, that was
            sent from the source to the destination instrument.
          $ref: '#/components/schemas/CurrencyAmount'
        destinationFee:
          allOf:
            - $ref: '#/components/schemas/CurrencyAmount'
            - type: object
              description: The fee applied to the destination.
        transactionAmount:
          allOf:
            - $ref: '#/components/schemas/CurrencyAmount'
            - type: object
              description: The original transaction amount before any fees were deducted.
        description:
          type: string
          description: The description details that are passed to the beneficiary.
          maxLength: 255
          pattern: ^[a-zA-Z0-9\/\-?:().$_,'+\s#=!"%&*<>;\{@\r\n]*$
        state:
          $ref: '#/components/schemas/SendState'
        challengeExemptionReason:
          $ref: '#/components/schemas/ChallengeExemptionReason'
        creationTimestamp:
          type: integer
          format: int64
          description: >-
            The time when the transaction was created, expressed in Epoch
            timestamp using millisecond precision.
        scheduledTimestamp:
          $ref: '#/components/schemas/ScheduledTimestamp'
        executionTimestamp:
          $ref: '#/components/schemas/ExecutionTimestamp'
        cancellationReason:
          $ref: '#/components/schemas/TransactionCancellationReason'
    SendBulkCreateResponse:
      type: object
      required:
        - response
      properties:
        response:
          type: array
          items:
            allOf:
              - type: object
                properties:
                  id:
                    type: string
                    pattern: ^[0-9]+$
                    description: The unique identifier of a send transaction.
              - $ref: '#/components/schemas/SendCreateRequest'
    OutgoingWireTransfer:
      required:
        - id
        - profileId
        - creationTimestamp
        - sourceInstrument
        - transferAmount
        - state
      type: object
      properties:
        id:
          type: string
          pattern: ^[0-9]+$
          description: The unique identifier of an Outgoing Wire Transfer transaction.
        profileId:
          $ref: '#/components/schemas/ProfileId'
        tag:
          $ref: '#/components/schemas/Tag'
        sourceInstrument:
          required:
            - type
            - id
          type: object
          description: The source managed account from where the funds were taken.
          properties:
            type:
              type: string
              enum:
                - managed_accounts
            id:
              type: string
              pattern: ^[0-9]+$
        transferAmount:
          description: >-
            The amount, in same currency as source and destination, that was
            transferred from the source.
          $ref: '#/components/schemas/CurrencyAmount'
        description:
          maxLength: 50
          type: string
          description: ' Transaction description.'
        type:
          $ref: '#/components/schemas/OutgoingWireTransferType'
        destination:
          oneOf:
            - $ref: '#/components/schemas/OutgoingWireTransferBeneficiary'
            - $ref: '#/components/schemas/BeneficiaryId'
            - $ref: '#/components/schemas/ExternalAccountId'
        state:
          $ref: '#/components/schemas/OutgoingWireTransferState'
        rejectedInfo:
          $ref: '#/components/schemas/OutgoingWireTransferRejectedInfo'
        challengeExemptionReason:
          $ref: '#/components/schemas/ChallengeExemptionReason'
        creationTimestamp:
          type: integer
          format: int64
          description: >-
            The time when the transaction was created, expressed in Epoch
            timestamp using millisecond precision.
        scheduledTimestamp:
          $ref: '#/components/schemas/ScheduledTimestamp'
        executionTimestamp:
          $ref: '#/components/schemas/ExecutionTimestamp'
        cancellationReason:
          $ref: '#/components/schemas/TransactionCancellationReason'
        validationOutcomes:
          type: array
          items:
            $ref: '#/components/schemas/OutgoingWireTransferValidationOutcome'
    OutgoingWireTransferBulkCreateResponse:
      type: object
      required:
        - response
      properties:
        response:
          type: array
          items:
            allOf:
              - type: object
                properties:
                  id:
                    type: string
                    pattern: ^[0-9]+$
                    description: >-
                      The unique identifier of an outgoing wire transfer
                      transaction.
              - $ref: '#/components/schemas/OutgoingWireTransferCreateRequest'
    BeneficiaryBatch:
      type: object
      required:
        - operationBatchId
        - state
      properties:
        operationBatchId:
          $ref: '#/components/schemas/BeneficiaryOperationBatchId'
        tag:
          $ref: '#/components/schemas/Tag'
        state:
          $ref: '#/components/schemas/BeneficiaryBatchState'
    Beneficiary:
      allOf:
        - $ref: '#/components/schemas/BasicBeneficiary'
        - type: object
          required:
            - id
            - relatedOperationBatches
            - state
          properties:
            id:
              type: string
              pattern: ^[0-9]+$
              description: The unique identifier of a Beneficiary.
            relatedOperationBatches:
              description: >-
                The object representing the list of batch IDs and the operations
                that occurred for each batch.
              type: array
              items:
                $ref: '#/components/schemas/BeneficiaryOperationBatchId'
            state:
              $ref: '#/components/schemas/BeneficiaryState'
            validationFailure:
              $ref: '#/components/schemas/BeneficiaryValidationFailure'
    SCAOtpChannel:
      type: string
      enum:
        - SMS
      description: |
        - "SMS": The one-time-password is sent as a text message
    SCAPushChannel:
      type: string
      enum:
        - AUTHY
        - BIOMETRIC
      description: >
        - "AUTHY": The push notification is sent on the user's device using
        [Twilio Authy](https://www.twilio.com/authy)

        - "BIOMETRIC": The push notification is sent to the user's device
    AuthSCAPushChannel:
      type: string
      enum:
        - AUTHY
      description: >
        - "AUTHY": The push notification is sent on the user's device using
        [Twilio Authy](https://www.twilio.com/authy)
    BulkProcessStatus:
      type: string
      enum:
        - SUBMITTED
        - RUNNING
        - PARTIALLY_COMPLETED
        - COMPLETED
        - FAILED
        - PAUSED
        - CANCELLED
    BulkId:
      type: string
      pattern: ^[0-9]+$
    BulkProcessOperationStatus:
      type: string
      enum:
        - SUBMITTED
        - RUNNING
        - COMPLETED
        - FAILED
        - CANCELLED
    InstrumentState:
      type: string
      description: >
        The state of the instrument indicating what it can and cannot do as
        follows:
          - ACTIVE: The instrument is in an active state and can be used in transactions.
          - BLOCKED: The instrument is temporarily blocked and cannot be used. Any funds on the instrument are also frozen. The `blockedReason` provides more information as to why it was blocked.
          - DESTROYED: The instrument has been permanently destroyed. The `destroyReason` provides more information as to why it was destroyed.
      enum:
        - ACTIVE
        - BLOCKED
        - DESTROYED
    LinkedAccountVerificationRunState:
      type: string
      enum:
        - PENDING
        - VERIFIED
        - REJECTED
    BlockedReason:
      type: string
      description: |
        The reason why the instrument has been blocked:
          - USER: The root, or an authorised user, of the identity owning the instrument has temporarily blocked the instrument.
          - SYSTEM: The platform or an administrator of the platform has temporarily blocked the instrument.
          - LOST: The instrument has been blocked because it was marked as lost.
      enum:
        - USER
        - SYSTEM
        - LOST
    DestroyedReason:
      type: string
      description: |
        The reason why the instrument has been destroyed:
          - SYSTEM: The platform or an administrator of the platform has destroyed the instrument.
          - USER: The root, or an authorised user, of the identity owning the instrument has destroyed the instrument.
          - LOST: The instrument was automatically destroyed as it was marked as lost.
          - STOLEN: The instrument was automatically destroyed as it was marked as stolen.
          - EXPIRED: The instrument was automatically destroyed as it expired.
          - COMPROMISED: The instrument was automatically destroyed as it was marked as compromised.
      enum:
        - SYSTEM
        - USER
        - LOST
        - STOLEN
        - EXPIRED
        - COMPROMISED
    TransactionType:
      type: string
      enum:
        - INSTRUMENT_CREATE
        - INSTRUMENT_BLOCK
        - INSTRUMENT_UNBLOCK
        - INSTRUMENT_DELETE
        - 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
        - CARD_UPGRADE_TO_PHYSICAL
        - ACTIVATE_PHYSICAL_CARD
        - INSTRUMENT_REPLACE
        - OUTGOING_WIRE_TRANSFER
        - AUTHORISATION_CANCELLATION
        - SYSTEM_TRANSACTION
        - OUTGOING_DIRECT_DEBIT_COLLECTION
        - OUTGOING_DIRECT_DEBIT_REFUND
    TransactionState:
      type: string
      description: Status of the transaction.
      enum:
        - INITIALISED
        - COMPLETED
        - REJECTED
        - FAILED
        - PENDING
        - SCHEDULED
        - CANCELLED
    InstrumentType:
      type: string
      enum:
        - managed_cards
        - managed_accounts
    SendState:
      type: string
      description: |
        The state of the send transaction, as follows:
         - INVALID: The send transaction has failed initial validation checks. 
         - INITIALISED: The initial state of a send transaction when SCA is not required.
         - PENDING_CHALLENGE: The send transaction requires the completion of a transaction confirmation challenge before it can be submitted.
         - PENDING: The send transaction has exceeded the destination limit and is pending treasury approval.
         - APPROVED: The send transaction that was submitted has been approved.
         - COMPLETED: The requested funds have been sent from the source instrument.
         - REJECTED: The send transaction that was submitted was rejected.
         - FAILED: There was an issue with the send transaction, and the transaction has failed.
         - RETURNED: The send transaction has been returned to the sender.
         - SCHEDULED: The send transaction will be executed at the scheduled time.
         - CANCELLED: The scheduled send transaction has been cancelled.
      enum:
        - INVALID
        - INITIALISED
        - COMPLETED
        - REJECTED
        - FAILED
        - PENDING
        - PENDING_CHALLENGE
        - APPROVED
        - RETURNED
        - SCHEDULED
        - CANCELLED
    SourceInstrumentType:
      type: string
      enum:
        - managed_accounts
    OutgoingWireTransferState:
      description: |
        The state of the Outgoing wire transfer transaction, as follows:
          - INVALID: The wire transfer has failed initial validation checks.
          - PENDING_CHALLENGE: The wire transfer requires the completion of a transaction confirmation challenge before it can be submitted.
          - SUBMITTED: The wire transfer has been submitted to the sending financial institution for processing.
          - REJECTED: The wire transfer that was submitted was rejected.
          - APPROVED: The wire transfer that was submitted has been approved and is being processed by the sending financial institution.
          - FAILED: There was an issue with the wire transfer, and the transaction has failed.
          - COMPLETED: The requested funds have been sent from the source instrument.
          - RETURNED: The wire transfer has been returned to the sender.
          - SCHEDULED: The wire transfer will be executed at the scheduled time.
          - CANCELLED: The scheduled wire transfer has been cancelled.
          - PENDING_CONFIRMATION: The wire transfer requires a manual confirmation by the user before proceeding.
      type: string
      enum:
        - INVALID
        - PENDING_CHALLENGE
        - SUBMITTED
        - REJECTED
        - APPROVED
        - FAILED
        - COMPLETED
        - RETURNED
        - SCHEDULED
        - CANCELLED
        - PENDING_CONFIRMATION
    BulkProcess:
      type: object
      properties:
        bulkId:
          description: The bulk id of the bulk process
          type: string
        status:
          description: >
            "SUBMITTED": the data for the bulk process operations has been
            persisted and bulk process is ready for execution. A bulk process in
            this status can be executed or submitted. This is the initial state
            for a bulk process


            "RUNNING" :  the bulk process is currently being executed by the
            system


            "COMPLETED"  : the execution of the bulk process is complete and all
            bulk operations of the bulk process were executed successfully. This
            is a final state for the bulk process 


            "PARTIALLY_COMPLETED"  the execution of the bulk process is complete
            and some of the bulk operations of the bulk process failed. This is
            a final state for the bulk process


            "FAILED" : none of the operations of the bulk process have executed.
            This is a final state for the bulk process


            "PAUSED"  : the execution of bulk process has been paused through
            the Pause bulk process operation  Execution can be resumed through
            Resume bulk operation


            "CANCELLED" : the execution of bulk process has been cancelled
            through Cancel bulk operation. This is a final state for the bulk
            process
          type: string
        submittedItemsCount:
          description: The number of bulk operations in the bulk process
          type: integer
        executionStart:
          description: Timestamp of when the execution of the Bulk Process started
          type: integer
          format: int64
        executionFinish:
          description: Timestamp of when the execution of the Bulk Process finished.
          type: integer
          format: int64
        operation:
          description: >-
            The underlying operations contained within the Bulk; shown as the
            endpoint for the equivalent single operation.
          type: string
        mode:
          description: The mode that was instructed when execution was started
          $ref: '#/components/schemas/BulkProcessMode'
    SpendLimitUpdateMethod:
      type: string
      description: |
        The spend limit update method to apply. Currently supported:
          - OVERWRITE: (default option if nothing selected). Overwrites the previous values for the spendLimit object i.e. sets new limits
          - INCREMENT : This will increase the existing value of the spend limit by the amount input the value field. If used in conjunction with an ALWAYS interval, this can be used to increment a spend limit on a periodic basis (controlled by you, e.g. monthly), and means that any 'unused' balance from the previous period will still available to spend. See examples in our documentation
      enum:
        - OVERWRITE
        - INCREMENT
    BeneficiaryId:
      required:
        - beneficiaryId
      type: object
      properties:
        beneficiaryId:
          $ref: '#/components/schemas/Id'
    OutgoingWireTransferBeneficiary:
      required:
        - name
        - bankAccountDetails
      type: object
      description: Details of the beneficiary of the outgoing wire transfer.
      properties:
        name:
          type: string
          description: >
            The beneficiary's full name. The allowed length and pattern is
            dependent on the bank account details type:


            `IBANDetails`: >= `1` character and <= `150` characters. An extended
            character set is accepted to cater for all European languages. If
            `SEPA` does not support a particular character, it is automatically
            converted to an acceptable alternative, in line with `SEPA` scheme
            guidance.


            `FasterPaymentsBankDetailsOrBACSBankDetails`: >= `1` character and
            <= `140` characters with a pattern of
            `^[a-zA-Z0-9\/\-?:().,’+\s#=!"%&*<>;\{@\r\n]*$`

            (please note that the `’` symbol is the unicode value U+2019 (right
            single quotation mark) and not the unicode value U+0027
            (apostrophe))
        type:
          type: string
          description: >-
            The type of beneficiary account. Required only when
            `FasterPaymentsBankDetailsOrBACSBankDetails` are specified
          enum:
            - PERSONAL
            - BUSINESS
        address:
          maxLength: 150
          minLength: 1
          type: string
          description: >
            The beneficiary’s address. For `SEPA`, an extended character set is
            accepted to cater for all European languages. If `SEPA` does not
            support a particular character, it is automatically converted to an
            acceptable alternative, in line with `SEPA` scheme guidance.
        bankName:
          type: string
          description: The beneficiary's bank name.
        bankAddress:
          maxLength: 150
          minLength: 1
          type: string
          description: The beneficiary's bank address.
        bankCountry:
          type: string
          description: The beneficiary's bank country in ISO 3166 alpha-2 format.
          maxLength: 2
          minLength: 2
          pattern: ^[A-Z]{2}$
        bankAccountDetails:
          description: >-
            Details of the beneficiary bank account, depending on the type of
            transfer chosen.
          oneOf:
            - $ref: '#/components/schemas/IBANDetails'
            - $ref: '#/components/schemas/FasterPaymentsBankDetailsOrBACSBankDetails'
        nationality:
          $ref: '#/components/schemas/Nationality'
        dateOfBirth:
          $ref: '#/components/schemas/DateOfBirth'
    ExternalAccountId:
      type: object
      description: >-
        The id of an external account, such as a Linked Account, registered with
        the Weavr Platform.
      required:
        - type
        - id
      properties:
        type:
          $ref: '#/components/schemas/ExternalAccountType'
        id:
          type: string
          pattern: ^[0-9]+$
    AccountType:
      type: string
      description: |
        An account can be of two types, Personal or Business:
          - PERSONAL means that the account held at the external bank or PSP is registered under the ownership of a natural person or consumer identity;
          - BUSINESS means that the account held at the external bank or PSP is registered under the ownership of a corporate entity.
      enum:
        - BUSINESS
        - PERSONAL
    AccountNumberAndSortCode:
      required:
        - accountNumber
        - sortCode
      type: object
      description: Bank details
      properties:
        accountNumber:
          type: string
          pattern: ^[0-9]{8}$
          description: Account number
        sortCode:
          type: string
          pattern: ^[0-9]{6}$
          description: Sort code
        secondaryReference:
          type: string
          description: Optional secondary reference for accounts without unique sort codes.
    Iban:
      required:
        - iban
      type: object
      description: Bank details
      properties:
        iban:
          type: string
          minLength: 15
          maxLength: 34
          pattern: ^[A-Z]{2}[0-9]{2}[A-Z0-9]{11,30}$
          description: International Bank Account Number, required for wire transfer.
        bankIdentifierCode:
          type: string
          minLength: 8
          maxLength: 11
          pattern: ^[a-zA-Z0-9]{4}[a-zA-Z]{2}[a-zA-Z0-9]{2}[a-zA-Z0-9]{0,3}$
          description: BIC, for wire transfer over SEPA or RIX.
    AccountDescriptor:
      required:
        - accountDescriptor
      type: object
      description: >-
        Identifier or account number which does not follow either the IBAN or
        Faster Payment (sort code and account number) format, such as a US bank
        account identifier.
      properties:
        accountDescriptor:
          type: string
    LinkedAccountState:
      type: string
      description: >
        The state of the linked account:
          - **PENDING_VERIFICATION**: The Linked Account is pending the completion of the required verification steps.
          - **ACTIVE**: The Linked Account is verified and active, ready to be used for self-to-self wire transfers.
          - **BLOCKED**: The Linked Account is temporarily blocked, preventing any use of this external account in self-to-self wire transfers. A Linked Account can be unblocked by calling the Multi API endpoint `POST /linked_accounts/{id}/unblock`.
          - **REMOVED**: The Linked Account has been removed from the platform and can no longer be used for self-to-self wire transfers unless a new verification is completed in future.
          - **REJECTED**: The Linked Account failed the verification process and cannot be used for self-to-self wire transfers unless a new verification is completed in future.
        A Linked Account can transition through these different overall states,
        starting at the `PENDING_VERIFICATION` state until all verification
        steps are followed through.
      enum:
        - PENDING_VERIFICATION
        - BLOCKED
        - ACTIVE
        - REJECTED
        - REMOVED
    StringWrappedTypeId:
      required:
        - type
        - id
      type: object
      properties:
        type:
          maxLength: 50
          pattern: ^[a-zA-Z0-9_-]+$
          type: string
        id:
          type: string
          pattern: ^[0-9]+$
    ManagedInstrumentBalance:
      type: object
      description: >-
        Instruments with funds have 2 balances, the `availableBalance`
        indicating the funds that are available for transactions such as
        purchases, and the `actualBalance` indicating the funds that are
        actually on the instrument.
      properties:
        availableBalance:
          type: integer
          format: int64
          description: >-
            The funds available for transactions on the instrument. Funds that
            are blocked or pending are not included in the available balance.
        actualBalance:
          type: integer
          format: int64
          description: >-
            The funds that are actually on the instrument. Funds that are
            blocked or pending, due to for example, a purchase authorisation or
            a pending deposit, are included in the actual balance.
    ManagedInstrumentState:
      required:
        - state
      type: object
      properties:
        state:
          $ref: '#/components/schemas/InstrumentState'
        blockedReason:
          $ref: '#/components/schemas/BlockedReason'
        destroyedReason:
          $ref: '#/components/schemas/DestroyedReason'
    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'
    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:
          maxLength: 50
          type: string
        country:
          maxLength: 2
          minLength: 2
          pattern: ^[A-Z]+$
          type: string
          description: Country of the identity in ISO 3166 alpha-2 format.
    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'
    CardAuthorisationDetailsAuthorisationType:
      type: string
      enum:
        - AUTHORISED
        - AUTHORISED_CREDIT
    MerchantData:
      required:
        - merchantName
        - merchantCategoryCode
        - merchantId
      type: object
      properties:
        merchantName:
          type: string
          description: The name of the merchant where the authorisation has been made.
        merchantCategoryCode:
          type: string
          description: The merchant category code.
        merchantId:
          type: string
          description: The merchant ID.
        merchantDescription:
          type: string
          description: The merchant description
        merchantStreet:
          type: string
          description: The merchant street address (if available)
        merchantCity:
          type: string
          description: The merchant city (if available)
        merchantState:
          type: string
          description: The merchant state address (if available)
        merchantPostalCode:
          type: string
          description: The merchant postal code (if available)
        merchantCountry:
          type: string
          description: The merchant country address
        merchantTelephone:
          type: string
          description: The merchant telephone number
        merchantURL:
          type: string
          description: The merchant URL
        merchantNameOther:
          type: string
          description: The alternative merchant name
        merchantNetworkId:
          type: string
          description: The merchant's network id
        merchantContact:
          type: string
          description: The merchant's contact (if available)
    CardHolderPresent:
      type: string
      enum:
        - PRESENT
        - NOT_PRESENT
        - PRESENCE_UNKNOWN
    PrepaidModeCardAuthorisationEvent:
      allOf:
        - $ref: '#/components/schemas/CardAuthorisationEvent'
        - type: object
          required:
            - currency
          properties:
            availableBalance:
              description: >-
                The card available balance before this authorisation is
                processed.
              $ref: '#/components/schemas/CurrencyAmount'
    DebitModeCardAuthorisationEvent:
      allOf:
        - $ref: '#/components/schemas/CardAuthorisationEvent'
        - type: object
          required:
            - parentManagedAccountId
          properties:
            parentManagedAccountId:
              type: string
              description: >-
                Id of the managed account holding funds which the managed card
                can access, up to a configurable spend limit.
            availableToSpend:
              type: array
              description: >-
                The amount of funds from the parent managed account that are
                available to be spent through the card, in a given time
                interval, _before_ this transaction is performed.
              items:
                $ref: '#/components/schemas/AvailableToSpend'
    BulkProcessMode:
      description: >
        ON_FAILURE_STOP : the execution of the bulk process stops after the
        first bulk operation that fails (operation returns a 4xx or 5xx response
        code).

        ON_FAILURE_CONTINUE: the execution of the bulk process resumes as normal
        even when any of the bulk operations fail.
      type: string
      enum:
        - ON_FAILURE_STOP
        - ON_FAILURE_CONTINUE
    LinkedAccountProfileId:
      type: string
      description: >
        The id of the Linked Account Profile which this instrument is linked to.


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


        This field is necessary only if you have been provided with multiple
        Linked Account Profiles.


        Profile Ids can be found in the Multi Portal, in the API Credentials
        page.
      pattern: ^[0-9]+$
    PrepaidModeCardRequest:
      allOf:
        - $ref: '#/components/schemas/ManagedCardRequest'
        - type: object
          required:
            - currency
          properties:
            currency:
              $ref: '#/components/schemas/Currency'
    DebitModeCardRequest:
      allOf:
        - $ref: '#/components/schemas/ManagedCardRequest'
        - type: object
          required:
            - parentManagedAccountId
          properties:
            parentManagedAccountId:
              type: string
              pattern: ^[0-9]+$
              description: >-
                Id of the managed account holding funds which the managed card
                will access, up to a configurable spend limit.
            userCurrency:
              $ref: '#/components/schemas/SupportedUserCurrency'
    PhoneNumber:
      maxLength: 20
      minLength: 5
      pattern: ^\+[0-9]+$
      type: string
    BaseCardLevelSpendRules:
      allOf:
        - $ref: '#/components/schemas/CommonLevelSpendRules'
        - type: object
          properties:
            spendLimit:
              description: >-
                The total amount of funds that can be spent using this card, in
                a given time interval.
              type: array
              items:
                $ref: '#/components/schemas/SpendLimit'
    TransactionCancelRequest:
      required:
        - id
      type: object
      properties:
        id:
          type: string
          pattern: ^[0-9]+$
          description: The id of the transaction.
        cancellationReason:
          $ref: '#/components/schemas/TransactionCancellationReason'
    TransactionCancellationReason:
      type: string
      pattern: ^[ a-zA-Z0-9_-]+$
      maxLength: 50
      description: The reason the scheduled transaction was cancelled.
    BeneficiaryTrustLevel:
      type: string
      description: The value that determines whether a Beneficiary is trusted or not.
      enum:
        - TRUSTED
    BusinessBeneficiaryType:
      required:
        - businessName
      type: object
      properties:
        businessName:
          type: string
          description: >
            The business beneficiary name. The allowed length and pattern is
            dependent on the beneficiary details type:


            `InstrumentDetailsBeneficiary` or `BankAccountDetailsBeneficiary`
            with `IBANDetails`: >= `1` character and <= `150` characters


            `BankAccountDetailsBeneficiary` with
            `FasterPaymentsBankDetailsOrBACSBankDetails`: >= `1` character and
            <= `140` characters with a pattern of
            `^[a-zA-Z0-9\/\-?:().,’+\s#=!"%&*<>;\{@\r\n]*$`

            (please note that the `’` symbol is the unicode value U+2019 (right
            single quotation mark) and not the unicode value U+0027
            (apostrophe))
    ConsumerBeneficiaryType:
      required:
        - fullName
      type: object
      properties:
        nationality:
          type: string
          description: >-
            The nationality of the consumer. Must be a valid ISO 3166-1 alpha-2
            country code (e.g., 'GB', 'FR').
          pattern: ^[A-Z]{2}$
        dateOfBirth:
          type: string
          description: >-
            The date of birth of the consumer. Must be a valid date in ISO 8601
            format (YYYY-MM-DD) and should not be a future date.
          format: date
        fullName:
          type: string
          description: >
            The person beneficiary name. The allowed length and pattern is
            dependent on the beneficiary details type:


            `InstrumentDetailsBeneficiary` or `BankAccountDetailsBeneficiary`
            with `IBANDetails`: >= `1` character and <= `150` characters


            `BankAccountDetailsBeneficiary` with
            `FasterPaymentsBankDetailsOrBACSBankDetails`: >= `1` character and
            <= `140` characters with a pattern of
            `^[a-zA-Z0-9\/\-?:().,’+\s#=!"%&*<>;\{@\r\n]*$`

            (please note that the `’` symbol is the unicode value U+2019 (right
            single quotation mark) and not the unicode value U+0027
            (apostrophe))
    InstrumentDetailsBeneficiary:
      required:
        - instrument
      type: object
      description: >-
        Represents a Weavr beneficiary instrument typically used in Send
        transactions.
      properties:
        instrument:
          $ref: '#/components/schemas/InstrumentId'
    BankAccountDetailsBeneficiary:
      required:
        - bankAccountDetails
      type: object
      description: >-
        Represent the beneficiary bank account typically used in Outgoing Wire
        Transfer transactions.
      properties:
        address:
          maxLength: 150
          minLength: 1
          type: string
          description: The beneficiary's address.
        bankName:
          type: string
          description: The beneficiary's bank name.
        bankAddress:
          maxLength: 150
          minLength: 1
          type: string
          description: The beneficiary's bank address.
        bankCountry:
          type: string
          description: The beneficiary's bank country in ISO 3166 alpha-2 format.
          maxLength: 2
          minLength: 2
          pattern: ^[A-Z]{2}$
        bankAccountDetails:
          description: >-
            Details of the beneficiary bank account, depending on the type of
            transfer chosen.
          oneOf:
            - $ref: '#/components/schemas/IBANDetails'
            - $ref: '#/components/schemas/FasterPaymentsBankDetailsOrBACSBankDetails'
    UserIdentity:
      required:
        - id
        - name
      type: object
      properties:
        id:
          description: The unique identifier of the Corporate Identity.
          $ref: '#/components/schemas/IdentityId'
        name:
          type: string
          description: The name of the company.
    SCAChallengeType:
      type: string
      enum:
        - OTP
        - PUSH
        - BIOMETRIC
      description: >
        - "OTP": The OTP is sent as a text message

        - "PUSH": The authorisation request is sent as a push notification

        - "BIOMETRIC": The push notification is sent via Firebase to a mobile
        application
    SCAFactorStatus:
      type: string
      description: >
        The state of the factor type.

        - `PENDING_VERIFICATION` : The user has started the enrolment process
        but still hasn't completed enrolment. Challenges cannot be used before
        they are verified.

        - `ACTIVE` : The user has successfully completed enrolment and the
        challenge can be used to verify transactions.

        - `INACTIVE` : The user has rejected the enrolment.
      enum:
        - PENDING_VERIFICATION
        - ACTIVE
        - INACTIVE
    SCAChannel:
      type: string
      enum:
        - SMS
        - AUTHY
        - BIOMETRIC
      description: |
        - "SMS": The one-time-password is sent as a text message
        - "AUTHY": The push notification is sent to an Authy application
        - "BIOMETRIC": The push notification is sent to an innovator application
    BulkProcessConflictErrorCode:
      enum:
        - VALIDATION_FAILED
        - USER_VALIDATION_FAILED
        - ALREADY_SUBMITTED
        - DUPLICATE_OPERATION_TYPE
        - NO_CONFIG_FOUND
        - INVALID_STATE
        - TOO_MANY_REQUESTS
      type: string
    BulkProcessOperationStatusCounts:
      type: object
      properties:
        status:
          $ref: '#/components/schemas/BulkProcessOperationStatus'
        count:
          type: integer
    BulkProcessOperation:
      type: object
      properties:
        operationId:
          description: >-
            Id of a specific bulk operation. Useful only if you need to refer to
            a specific operation when reporting an issue
          type: string
        sequence:
          description: >-
            The operations submitted in a Bulk Processes are executed in
            sequence. This field indicates the position of this specific
            operation in the context of such sequence
          format: int32
          type: integer
        method:
          description: >-
            HTTP request method used for the executed operation within the Bulk
            process
          type: string
        path:
          description: The endpoint path for the Operation
          type: string
        status:
          description: >
            The execution status of the operation within the Bulk Process. This
            can be one of: "SUBMITTED" "RUNNING" "COMPLETED" "FAILED"
            "CANCELLED"
          $ref: '#/components/schemas/BulkProcessOperationStatus'
        requestPayload:
          description: >-
            This is the payload for the execution of an operation within the
            context of a Bulk Process
          type: string
        responsePayload:
          description: The response for the execution of the operation
          type: string
    CreatedCorporateRootUser:
      allOf:
        - $ref: '#/components/schemas/CorporateRootUser'
        - type: object
          required:
            - passwordAlreadySet
          properties:
            passwordAlreadySet:
              type: boolean
              description: >-
                When the corporate root user is a single email multiple
                identities user, this field returns true, indicating that there
                is no need to call the `passwordCreate` operation for this user.
    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
          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]+$
    LinkedAccountVerificationStep:
      type: string
      enum:
        - TRANSFER_INSTRUCTION
        - USER_DECLARATION_SCA_CHALLENGE
        - INTERNAL_CHECKS
        - MICRO_DEPOSIT
    LinkedAccountVerificationTransferInstruction:
      type: object
      required:
        - amount
        - reference
      properties:
        amount:
          $ref: '#/components/schemas/CurrencyAmount'
        reference:
          type: string
        destination:
          type: object
          properties:
            accountOwnerName:
              type: string
            accountType:
              $ref: '#/components/schemas/AccountType'
            accountReference:
              oneOf:
                - $ref: '#/components/schemas/Iban'
                - $ref: '#/components/schemas/AccountNumberAndSortCode'
                - $ref: '#/components/schemas/AccountDescriptor'
    LinkedAccountMicroDepositVerification:
      type: object
      required:
        - amount
      properties:
        amount:
          $ref: '#/components/schemas/CurrencyAmount'
        senderName:
          type: string
    LinkedAccountVerificationStepStatus:
      type: string
      enum:
        - PENDING_USER
        - PENDING_REVIEW
        - PENDING_EXECUTION
        - REJECTED
        - COMPLETED
    IBANDetails:
      required:
        - iban
      type: object
      description: Bank details used in case the wire transfer is executed over SEPA or RIX
      properties:
        iban:
          type: string
          minLength: 15
          maxLength: 34
          pattern: ^[A-Z]{2}[0-9]{2}[A-Z0-9]{11,30}$
          description: >-
            International Bank Account Number, required for wire transfer over
            SEPA or RIX
        bankIdentifierCode:
          type: string
          minLength: 8
          maxLength: 11
          pattern: ^[a-zA-Z0-9]{4}[a-zA-Z]{2}[a-zA-Z0-9]{2}[a-zA-Z0-9]{0,3}$
          description: BIC, for wire transfer over SEPA or RIX
    FasterPaymentsBankDetailsOrBACSBankDetails:
      required:
        - accountNumber
        - sortCode
      type: object
      description: >-
        Bank details used in case the wire transfer is executed over Faster
        Payments.
      properties:
        accountNumber:
          type: string
          pattern: ^[0-9]{8}$
          description: Account number, required for wire transfer over Faster Payments.
        sortCode:
          type: string
          pattern: ^[0-9]{6}$
          description: Sort code, required for wire transfer over Faster Payments.
        secondaryReference:
          type: string
    SwiftBankDetails:
      required:
        - iban
        - code
      type: object
      description: Bank details used in case the wire transfer is executed over SWIFT.
      properties:
        iban:
          type: string
          minLength: 15
          maxLength: 34
          pattern: ^[A-Z]{2}[0-9]{2}[A-Z0-9]{11,30}$
          description: >-
            International Bank Account Number, required for wire transfer over
            SWIFT.
        code:
          type: string
          minLength: 8
          maxLength: 11
          pattern: ^[a-zA-Z0-9]{4}[a-zA-Z]{2}[a-zA-Z0-9]{2}[a-zA-Z0-9]{0,3}$
          description: >-
            SWIFT code, identifying a particular bank or branch, required for
            wire transfer over SWIFT.
    StatementEntryState:
      type: string
      description: |
        The transaction entry state, as follows:
          - PENDING: The transaction has started and some of the fund movements have completed, however additional fund movements are still pending to finalise the transaction.
          - COMPLETED: All fund movements for a transaction have completed.
      enum:
        - PENDING
        - COMPLETED
    ScaledAmount:
      type: object
      properties:
        value:
          type: integer
          format: int64
        scale:
          maximum: 127
          minimum: -128
          type: integer
          format: int32
      description: >-
        A floating point number, represented as a value and its scale. Its
        actual value can be obtained using the equation: value * pow(10,
        -scale).
    UserCurrencyTransactionDetails:
      required:
        - userTransactionAmount
        - userExchangeRate
      type: object
      properties:
        userTransactionAmount:
          $ref: '#/components/schemas/CurrencyAmount'
        userExchangeRate:
          type: string
      description: >-
        The object representing the user transaction's currency, amount and
        rate.
    SensitiveCardNumber:
      type: object
      description: >
        The full card number of the card.


        Unless you are PCI-DSS compliant and have opted to switch off Weavr's
        security model, the card number will be tokenised.


        To show the full unredacted card number to your user, you need to embed
        the Card number UI Component in your application. This accepts the
        tokenised card number and shows the unredacted card number to the user
        on screen.
      properties:
        value:
          maxLength: 16
          type: string
    SensitiveCvv:
      type: object
      description: >
        The CVV of the card.


        Unless you are PCI-DSS compliant and have opted to switch off Weavr's
        security model, the card's CVV will be tokenised.


        To show the card's CVV to your user, you need to embed the CVV UI
        Component in your application. This accepts the tokenised CVV and shows
        the plain text CVV number to the user on screen.
      properties:
        value:
          maxLength: 3
          type: string
    PhysicalCardDetails:
      required:
        - pendingActivation
      type: object
      properties:
        bulkDelivery:
          $ref: '#/components/schemas/BulkCardDelivery'
        productReference:
          type: string
          description: >-
            The unique reference indicating the configuration of the physical
            card. Example the card design.
        carrierType:
          type: string
        pendingActivation:
          type: boolean
          description: >-
            Indicates if the physical card is activated for physical usage such
            as with physical terminals.
        pinBlocked:
          type: boolean
          description: >-
            Indicates if the physical card is blocked due to providing incorrect
            PINs.
        manufacturingState:
          $ref: '#/components/schemas/ManufacturingState'
        replacement:
          deprecated: true
          type: object
          description: Indicates if the physical card is replaced by another card.
          properties:
            replacementReason:
              type: string
              description: |
                The reason why the physical card was replaced.
                  - DAMAGED: The physical card was damaged and cannot be used at a physical terminal.
                  - LOST_STOLEN: The physical card was either lost or stolen and cannot be used.
                  - EXPIRED: The physical card expired.
              enum:
                - DAMAGED
                - LOST_STOLEN
                - EXPIRED
            replacementId:
              type: string
              pattern: ^[0-9]+$
              description: The unique identifier of the new card that replaces this card.
        deliveryAddress:
          $ref: '#/components/schemas/DeliveryAddress'
        deliveryMethod:
          $ref: '#/components/schemas/DeliveryMethod'
        deliveryTrackingCode:
          $ref: '#/components/schemas/DeliveryTrackingCode'
        deliveryTrackingMethod:
          $ref: '#/components/schemas/DeliveryTrackingMethod'
        deliveryTrackingUrl:
          $ref: '#/components/schemas/DeliveryTrackingUrl'
        nameOnCardLine2:
          deprecated: true
          maxLength: 27
          pattern: >-
            ^[a-zA-Z0-9ßÀÁÂÃÄÅǍÆÇÈÉÊËÌÍÎÏÒÓÔÕÖØŠÙÚÛÜŸÝĄĆČĎĘĹĽŁŃŇÑŐŔŚȘȚŤŰŹŻŽàáâãäåǎæçèéêëìíîïòóôõöøšùúûüÿýąćčďęĺľłńňñőŕśșțťűźżž\-^.
            '-]*$
          type: string
          description: >-
            Line 2 of the 'name on card' field. For Physical cards, this field
            will be printed on the card. The maximum characters allowed will
            depend on the design chosen and will be provided to you by Weavr
            when setting up your plastic cards. This field is deprecated
    ManagedCardReplacement:
      description: Indicates if the card is replaced by another card.
      type: object
      required:
        - id
        - reason
      properties:
        id:
          description: The id of the replacement card
          pattern: ^[0-9]+$
          type: string
        reason:
          description: |
            The reason why the card was replaced.
              - DAMAGED: The physical card was damaged and cannot be used at a physical terminal.
              - LOST_STOLEN: The physical card was either lost or stolen and cannot be used.
              - EXPIRED: The card expired.
              - COMPROMISED: The virtual card was compromised; the virtual card details have been exposed or accessed without authorization.
          type: string
          enum:
            - DAMAGED
            - LOST_STOLEN
            - EXPIRED
            - COMPROMISED
    PrepaidModeCard:
      allOf:
        - $ref: '#/components/schemas/ManagedCard'
        - type: object
          properties:
            balances:
              $ref: '#/components/schemas/ManagedInstrumentBalance'
    DebitModeCard:
      allOf:
        - $ref: '#/components/schemas/ManagedCard'
        - type: object
          required:
            - parentManagedAccountId
          properties:
            parentManagedAccountId:
              type: string
              pattern: ^[0-9]+$
              description: >-
                Id of the managed account holding funds which the managed card
                will access, up to a configurable spend limit.
            userCurrency:
              $ref: '#/components/schemas/SupportedUserCurrency'
            availableToSpend:
              description: >-
                The amount of funds from the parent managed account that are
                available to be spent through the card, in a given time
                interval.
              type: array
              items:
                $ref: '#/components/schemas/AvailableToSpend'
    SpendLimit:
      type: object
      required:
        - value
        - interval
      properties:
        startTimestamp:
          description: >-
            The start timestamp of the spend limit, expressed in Epoch timestamp
            using millisecond precision.
          type: integer
          format: int64
        value:
          description: The spend limit, as amount and currency, (for the given interval).
          $ref: '#/components/schemas/CurrencyAmount'
        interval:
          $ref: '#/components/schemas/SpendLimitInterval'
    ProfileLevelSpendRules:
      allOf:
        - $ref: '#/components/schemas/CommonLevelSpendRules'
        - type: object
          properties:
            authForwardingEnabled:
              type: boolean
              description: Indicates if auth forwarding is enabled on profile level
    IdentityLevelSpendRules:
      allOf:
        - $ref: '#/components/schemas/CommonLevelSpendRules'
        - type: object
          properties:
            minTransactionAmount:
              type: integer
              minimum: 0
              format: int64
              description: >-
                The minimum transaction amount, in card currency, that is
                allowed. If the transaction amount is less than this value, then
                the transaction will be declined. Omit this, or set to 0 if no
                maximum transaction amount is to be set.
            maxTransactionAmount:
              type: integer
              minimum: 0
              format: int64
              description: >-
                The maximum transaction amount, in card currency, that is
                allowed. If the transaction amount is greater than this value,
                then the transaction will be declined.
    ExecutionTimestamp:
      pattern: ^[0-9]+$
      type: string
      description: >-
        The epoch timestamp at which the transaction was executed, transitioning
        to a final state such as COMPLETED, REJECTED, or FAILED.
    TransactionCancelResponse:
      required:
        - id
        - state
      type: object
      properties:
        id:
          type: string
          pattern: ^[0-9]+$
          description: The id of the transaction.
        state:
          type: string
          enum:
            - SUCCESS
            - ERROR
        errorCode:
          type: string
          description: >
            Indicates the reason why the cancel operation could not be executed.

            May be included in the response if the state is "ERROR".


            - "GENERIC": A generic error has occurred.

            - "TRANSACTION_NOT_SCHEDULED": The transaction is not in state
            SCHEDULED.

            - "FORBIDDEN": The current user is not allowed to access this
            transaction.

            - "NOT_FOUND": The transaction does not exist.
          enum:
            - GENERIC
            - TRANSACTION_NOT_SCHEDULED
            - FORBIDDEN
            - NOT_FOUND
    ChallengeExemptionReason:
      type: string
      enum:
        - LOW_VALUE
        - TRUSTED_BENEFICIARY
      description: The Reason the transaction was exempted from SCA verification
    OutgoingWireTransferType:
      type: string
      description: The wire transfer rails used, from SEPA, Faster Payments or SWIFT.
      enum:
        - SEPA
        - FASTER_PAYMENTS
        - SWIFT
    OutgoingWireTransferRejectedInfo:
      description: >
        Additional info when the outgoing wire transfer has been rejected, as
        follows:
          - SYSTEM: The wire transfer was rejected by the system.
          - USER: The wire transfer was rejected by the user.
      type: string
      enum:
        - SYSTEM
        - USER
    OutgoingWireTransferValidationOutcome:
      type: object
      required:
        - category
        - categoryResult
      properties:
        category:
          type: string
          enum:
            - UK_CONFIRMATION_OF_PAYEE
        categoryResult:
          oneOf:
            - $ref: '#/components/schemas/UKConfirmationOfPayeeResult'
    BeneficiaryOperationBatchId:
      required:
        - batchId
        - operation
      type: object
      properties:
        batchId:
          description: The unique identifier of a Beneficiary.
          type: string
          pattern: ^[0-9]+$
        operation:
          description: Describes the operation that has occurred on a beneficiary batch.
          $ref: '#/components/schemas/BeneficiaryBatchOperation'
    BeneficiaryState:
      type: string
      enum:
        - INITIALISED
        - INVALID
        - PENDING_CHALLENGE
        - CHALLENGE_FAILED
        - ACTIVE
        - REMOVED
    BeneficiaryValidationFailure:
      type: string
      enum:
        - INSTRUMENT_DETAILS_NOT_FOUND
        - BENEFICIARY_DETAILS_ALREADY_EXIST
        - BENEFICIARY_BELONGS_TO_SAME_IDENTITY
    DateOfBirth:
      type: string
      format: date
      description: The date of birth in ISO 8601 format (YYYY-MM-DD).
    ExternalAccountType:
      type: string
      enum:
        - linked_accounts
    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.
    AvailableToSpend:
      type: object
      properties:
        value:
          description: >-
            The amount and currency that is available to spend, (for the given
            interval).
          $ref: '#/components/schemas/CurrencyAmount'
        interval:
          $ref: '#/components/schemas/SpendLimitInterval'
    SupportedUserCurrency:
      enum:
        - JPY
        - BGN
        - CZK
        - DKK
        - HUF
        - PLN
        - RON
        - SEK
        - CHF
        - ISK
        - NOK
        - TRY
        - AUD
        - BRL
        - CAD
        - CNY
        - HKD
        - IDR
        - ILS
        - INR
        - KRW
        - MXN
        - MYR
        - NZD
        - PHP
        - SGD
        - THB
        - ZAR
        - EUR
        - USD
        - GBP
      type: string
    CommonLevelSpendRules:
      type: object
      properties:
        allowedMerchantCategories:
          type: array
          maxItems: 200
          items:
            type: string
          description: >-
            Whitelist MCC: A list of allowed merchant category codes (MCCs). If
            the MCC does not match, then the transaction will be declined. If an
            MCC is also in the blocked list, the blocked list will take
            precedence.
        blockedMerchantCategories:
          type: array
          maxItems: 200
          items:
            type: string
          description: >-
            Blacklist MCC: A list of disallowed merchant category codes (MCCs).
            If the MCC matches, then the transaction will be declined. If an MCC
            is also in the allowed list, the blocked list will take precedence.
        allowedMerchantIds:
          type: array
          maxItems: 200
          items:
            type: string
          description: >-
            Whitelist Merchant Id: A list of allowed merchant IDs. If the
            Merchant Id does not match, then the transaction will be declined.
            If a Merchant Id is also provided in the blocked list, the blocked
            list will take precedence.
        blockedMerchantIds:
          type: array
          maxItems: 200
          items:
            type: string
          description: >-
            Blacklist Merchant Id: A list of disallowed merchant IDs. If the
            Merchant Id matches, then the transaction will be declined. If a
            Merchant Id is also in the allowed list, the blocked list will take
            precedence.
        allowedMerchantCountries:
          type: array
          maxItems: 50
          items:
            maxLength: 2
            minLength: 2
            pattern: ^[A-Z]{2}$
            type: string
          description: >-
            Whitelist Merchant Country: A list of allowed merchant countries, in
            ISO 3166-1 alpha-2 format. If the Merchant country does not match,
            then the transaction will be declined. If a Merchant Country is also
            provided in the blocked list, the blocked list will take precedence.
        blockedMerchantCountries:
          type: array
          maxItems: 50
          items:
            maxLength: 2
            minLength: 2
            pattern: ^[A-Z]{2}$
            type: string
          description: >-
            Blacklist Merchant Country: A list of disallowed merchant countries,
            in ISO 3166-1 alpha-2 format. If the Merchant country matches, then
            the transaction will be declined. If a Merchant Country is also in
            the allowed list, the blocked list will take precedence.
        allowContactless:
          type: boolean
          description: Indicates if a contactless transaction is allowed on the card.
        allowAtm:
          type: boolean
          description: Indicates if an ATM Withdrawal transaction is allowed on the card.
        allowECommerce:
          type: boolean
          description: Indicates if an online transaction is allowed on the card.
        allowCashback:
          type: boolean
          description: >-
            Indicates if a cashback transaction at a physical terminal is
            allowed on the card.
        allowCreditAuthorisations:
          type: boolean
          description: Indicates if a the card can receive a credit transaction.
        rolloverPolicy:
          $ref: '#/components/schemas/RolloverPolicy'
    DeliveryTrackingCode:
      type: string
      description: >-
        The delivery tracking code for tracking the physical card's delivery
        status. This may not always be available on the first dispatched event,
        and so you will receive an additional dispatched notification with the
        delivery tracking code populated as soon as it is available.
    DeliveryTrackingMethod:
      type: string
      description: >-
        The delivery tracking method for tracking the physical card's delivery
        status.
    DeliveryTrackingUrl:
      type: string
      description: >-
        The delivery tracking URL for tracking the physical card's delivery
        status.
    SpendLimitInterval:
      description: >
        The time period for which the `spendLimit` is valid.
         - DAILY: starting from 00:00:00 UTC of current day to 23:59:59 UTC of current day
         - WEEKLY: 00:00:00 UTC Monday of current week to following Sunday 23:59:59 UTC
         - MONTHLY: 1st of current calendar month to end of current calendar month
         - QUARTERLY: starting from beginning of current quarter where quarters are defined as follows:
          - 1 January 00:00:00 UTC to 31 March 23:59:59 UTC
          - 1 April 00:00:00 UTC to 30 Jun 23:59:59 UTC
          - 1 July 00:00:00 UTC to 30 September 23:59:59 UTC
          - 1 October 00:00:00 UTC to 31 December 23:59:59 UTC

        - YEARLY: 1 January 00:00:00 UTC of current calendar year to 31 December
        23:59:59 UTC of current calendar year.

        - ALWAYS: This indicates that the `spendLimit` is the total amount that
        can be spent through the card throughout the whole lifetime of the card.
      type: string
      enum:
        - DAILY
        - WEEKLY
        - MONTHLY
        - QUARTERLY
        - YEARLY
        - ALWAYS
    UKConfirmationOfPayeeResult:
      type: object
      required:
        - match
      properties:
        match:
          type: string
          description: >-
            The result of matching performed by the UK Confirmation of Payee
            responder
          enum:
            - EXACT_MATCH
            - CLOSE_MATCH
            - NO_MATCH
        reasonCode:
          type: string
          description: >
            The reason why the matching failed at the UK Confirmation of Payee
            responder:

              - ANNM: The CoP responder confirms that the account `name` provided does not match;
              - MBAM: The CoP responder indicates that the account `name` provided closely matches the actual account in its records, the actual account name is returned in the `accountName` field;
              - BANM: The account `type` that the user specified is 'PERSONAL', but the CoP responder indicates that the actual account matching the `name` provided is actually BUSINESS;
              - PANM: The account `type` that the user specified is 'BUSINESS', but the CoP responder indicates that the actual account matching the `name` provided is actually PERSONAL;
              - BAMM: The account `type` that the user specified is 'PERSONAL', but the CoP responder indicates that an account closely matching the `name` provided is BUSINESS;
              - PAMM: The account `type` that the user specified is 'BUSINESS', but the CoP responder indicates that an account closely matching the `name` provided is PERSONAL;
              - AC01: The account does not exist in the CoP responders books, the `accountNumber` specified is likely incorrect; 
              - IVCR: The CoP responder was unable to locate an account based on the `secondaryReference` field;
              - ACNS: The account is not supported for CoP by the CoP responder;
              - OPTO: The owner of the account has opted out of CoP service by the CoP responder;
              - CASS: The account has been switched using the Current Account Switch Service;
              - SCNS: The `sortCode` provided is not supported at endpoint;
          enum:
            - ANNM
            - MBAM
            - BANM
            - PANM
            - BAMM
            - PAMM
            - AC01
            - IVCR
            - ACNS
            - OPTO
            - CASS
            - SCNS
        accountName:
          type: string
          description: >-
            Returned when the `match` is a `CLOSE_MATCH` and the `reasonCode` is
            MBAM, BAMM or PAMM
    RolloverPolicy:
      type: object
      description: >-
        The rollover policy will dictate how Weavr handles any eventual
        overspending. This is possible if a merchant clears more funds than
        authorised, or when a merchant clears funds without authorising,
        resulting in the `availableToSpend` value to go into negative. Rollover
        is relative to a `spendLimit.interval`
      required:
        - rolloverNegative
      properties:
        rolloverNegative:
          type: boolean
          description: >-
            If set to true any overspend will keep rolling over and get deducted
            in the upcoming intervals until the `availableToSpend` is back to a
            positive value. Any overspend will be deducted from the
            `availableToSpend` at the beginning of the next interval.
  headers:
    request-ref:
      description: >-
        A request identifier. Providing this reference when contacting our
        support team will help us investigate your query.
      required: true
      schema:
        type: string
    x-ratelimit-limit:
      description: >
        Example: `20, 10;w=60, 20;w=3600, 200;w=86400`

        The first number (20) is the limit that has been exceeded.

        The remaining numbers are the limits that are in force, with 'w' meaning
        'window in seconds'. In this example `20;w=3600` was exceeded. 20 calls
        in 3600secs (1hr)
      required: true
      schema:
        type: string
    x-ratelimit-reset:
      description: The number of seconds until the window is reset.
      required: true
      schema:
        minimum: 0
        type: integer
        format: int32
  requestBodies:
    LoginWithPasswordRequest:
      required: true
      content:
        application/json:
          schema:
            required:
              - email
              - password
            type: object
            properties:
              email:
                $ref: '#/components/schemas/Email'
              password:
                $ref: '#/components/schemas/SensitivePassword'
    LoginViaBiometricsRequest:
      required: true
      content:
        application/json:
          schema:
            required:
              - email
            type: object
            properties:
              email:
                $ref: '#/components/schemas/Email'
              identity:
                $ref: '#/components/schemas/IdentityId'
    SCAVerifyRequest:
      required: true
      content:
        application/json:
          schema:
            required:
              - verificationCode
            type: object
            properties:
              verificationCode:
                description: The code received by the user on the device.
                $ref: '#/components/schemas/Nonce'
    PasswordCreateRequest:
      required: true
      content:
        application/json:
          schema:
            required:
              - password
            type: object
            properties:
              password:
                $ref: '#/components/schemas/SensitivePassword'
    PasswordUpdateRequest:
      required: true
      content:
        application/json:
          schema:
            required:
              - oldPassword
              - newPassword
            type: object
            properties:
              oldPassword:
                $ref: '#/components/schemas/SensitivePassword'
              newPassword:
                $ref: '#/components/schemas/SensitivePassword'
    PasswordValidateRequest:
      required: true
      content:
        application/json:
          schema:
            required:
              - password
            type: object
            properties:
              password:
                $ref: '#/components/schemas/SensitivePassword'
    EmailRequest:
      required: true
      content:
        application/json:
          schema:
            required:
              - email
            type: object
            properties:
              email:
                $ref: '#/components/schemas/Email'
    LostPasswordResumeRequest:
      required: true
      content:
        application/json:
          schema:
            required:
              - email
              - nonce
              - newPassword
            type: object
            properties:
              nonce:
                $ref: '#/components/schemas/Nonce'
              email:
                $ref: '#/components/schemas/Email'
              newPassword:
                $ref: '#/components/schemas/SensitivePassword'
    MultipleSCAChallengeRequest:
      required: true
      content:
        application/json:
          schema:
            required:
              - resourceType
              - resourceIds
            type: object
            properties:
              resourceType:
                description: >-
                  The resource type that the subsequent Ids pertain to. Note
                  that the `linked_account_declaration` can only be performed by
                  a logged in Root User.
                $ref: '#/components/schemas/MultipleSCAResourceType'
              resourceIds:
                type: array
                description: >-
                  Can be used with a single or a list of resource Ids. A
                  resource Id is the unique identifier of the resource type that
                  was provided in the response when the resource (such as a
                  transaction) was created.
                items:
                  type: string
                  pattern: ^[0-9]{1,}$
    MultipleSCAVerifyRequest:
      required: true
      content:
        application/json:
          schema:
            required:
              - verificationCode
              - resourceType
            type: object
            properties:
              verificationCode:
                description: The code received by the user on the device.
                $ref: '#/components/schemas/Nonce'
              resourceType:
                description: >-
                  The resource type that the subsequent Ids pertain to. Note
                  that the `linked_account_declaration` can only be performed by
                  a logged in Root User.
                $ref: '#/components/schemas/MultipleSCAResourceType'
    AccessTokenRequest:
      required: true
      content:
        application/json:
          schema:
            required:
              - identity
            type: object
            properties:
              identity:
                $ref: '#/components/schemas/IdentityId'
              clientAssertion:
                description: >-
                  Generated using the certificate linked to the Delegated API
                  Client. This feature is available only to customers that have
                  been enabled with delegation functionality.
                type: string
              token:
                description: >-
                  A short-lived one-time token to be exchanged for an access
                  token. This token is used for identity verification and
                  authorisation purposes.
                type: string
    UserCreateRequest:
      required: true
      content:
        application/json:
          schema:
            required:
              - email
              - name
              - surname
            type: object
            properties:
              name:
                minLength: 1
                maxLength: 50
                type: string
                description: The first name of the user.
              surname:
                minLength: 1
                maxLength: 50
                type: string
                description: The last name of the user.
              email:
                $ref: '#/components/schemas/Email'
              mobile:
                $ref: '#/components/schemas/Mobile'
              dateOfBirth:
                description: Date of birth of the authorised user.
                $ref: '#/components/schemas/Date'
              tag:
                $ref: '#/components/schemas/Tag'
              countryOfResidence:
                type: string
                maxLength: 2
                minLength: 2
                pattern: ^[A-Z]+$
              locale:
                $ref: '#/components/schemas/UserLocale'
              brand:
                $ref: '#/components/schemas/Brand'
    BulkProcessExecute:
      required: true
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/BulkProcessExecute'
    UserPatchRequest:
      required: true
      content:
        application/json:
          schema:
            type: object
            properties:
              name:
                minLength: 1
                maxLength: 50
                type: string
                description: The first name of the user.
              surname:
                minLength: 1
                maxLength: 50
                type: string
                description: The last name of the user.
              email:
                $ref: '#/components/schemas/Email'
              mobile:
                $ref: '#/components/schemas/Mobile'
              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'
    UserInviteValidateRequest:
      required: true
      content:
        application/json:
          schema:
            required:
              - inviteCode
            type: object
            properties:
              inviteCode:
                $ref: '#/components/schemas/Nonce'
    UserInviteConsumeRequest:
      required: true
      content:
        application/json:
          schema:
            required:
              - inviteCode
              - password
            type: object
            properties:
              inviteCode:
                $ref: '#/components/schemas/Nonce'
              password:
                $ref: '#/components/schemas/SensitivePassword'
    CorporateCreateRequest:
      required: true
      content:
        application/json:
          schema:
            required:
              - profileId
              - rootUser
              - company
              - ipAddress
              - baseCurrency
            type: object
            properties:
              profileId:
                $ref: '#/components/schemas/ProfileId'
              tag:
                $ref: '#/components/schemas/Tag'
              rootUser:
                required:
                  - name
                  - surname
                  - email
                  - mobile
                  - companyPosition
                type: object
                description: >
                  The root user needs to be a director or a legal representative
                  of the corporate that is being onboarded - this user cannot be
                  deactivated.


                  Root users need to verify their email address and mobile
                  number, as well as complete KYC as part of the Corporate's due
                  diligence process.
                properties:
                  name:
                    maxLength: 50
                    type: string
                    description: The first name of the root user.
                  surname:
                    maxLength: 50
                    type: string
                    description: The last name of the root user.
                  email:
                    $ref: '#/components/schemas/Email'
                  mobile:
                    $ref: '#/components/schemas/Mobile'
                  companyPosition:
                    $ref: '#/components/schemas/CompanyPosition'
                  dateOfBirth:
                    description: Date of birth of the root user.
                    $ref: '#/components/schemas/Date'
                  tag:
                    $ref: '#/components/schemas/Tag'
                  locale:
                    $ref: '#/components/schemas/UserLocale'
                  brand:
                    $ref: '#/components/schemas/Brand'
              company:
                required:
                  - name
                  - type
                  - registrationCountry
                type: object
                description: >-
                  The details associated with the company being on-boarded. The
                  details provided need to match exactly with the details
                  provided during KYB. 
                properties:
                  type:
                    $ref: '#/components/schemas/CompanyType'
                  businessAddress:
                    $ref: '#/components/schemas/Address'
                  name:
                    maxLength: 100
                    type: string
                    description: The registered name of the company.
                  registrationNumber:
                    maxLength: 20
                    minLength: 1
                    type: string
                    description: The registration number of the company.
                  registrationCountry:
                    maxLength: 2
                    minLength: 2
                    pattern: ^[A-Z]+$
                    type: string
                    description: >-
                      The country of company registration, in ISO 3166 alpha-2
                      format.
              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 corporate root user
                  has accepted the terms and conditions.
                deprecated: true
              ipAddress:
                maxLength: 45
                minLength: 5
                type: string
                description: The IP address of the corporate 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.
    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'
    EmailVerifyRequest:
      required: true
      content:
        application/json:
          schema:
            required:
              - email
              - verificationCode
            type: object
            properties:
              email:
                $ref: '#/components/schemas/Email'
              verificationCode:
                $ref: '#/components/schemas/VerificationCode'
    ChargeFeeRequest:
      required: true
      content:
        application/json:
          schema:
            description: The custom fee to be charged to the consumer/corporate.
            $ref: '#/components/schemas/Fee'
    ConsumerCreateRequest:
      required: true
      content:
        application/json:
          schema:
            required:
              - profileId
              - rootUser
              - ipAddress
            type: object
            properties:
              profileId:
                $ref: '#/components/schemas/ProfileId'
              tag:
                $ref: '#/components/schemas/Tag'
              rootUser:
                required:
                  - name
                  - surname
                  - email
                  - mobile
                  - dateOfBirth
                  - address
                type: object
                description: >
                  The root user represents the identity.


                  Root users need to verify their email address and mobile
                  number, as well as complete KYC, as part of the Consumer's due
                  diligence process.
                properties:
                  name:
                    maxLength: 50
                    type: string
                    description: The first name of the root user.
                  surname:
                    maxLength: 50
                    type: string
                    description: The last name of the 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'
                  occupation:
                    $ref: '#/components/schemas/Occupation'
                  address:
                    description: Address of the consumer root user.
                    $ref: '#/components/schemas/AddressWithCountryRequired'
                  placeOfBirth:
                    type: string
                    description: Place of birth of the consumer root user.
                  nationality:
                    description: Nationality of the root user, in ISO 3166 alpha-2 format."
                    $ref: '#/components/schemas/Nationality'
                  tag:
                    description: Tag to be assigned to the consumer root user.
                    $ref: '#/components/schemas/Tag'
                  locale:
                    $ref: '#/components/schemas/UserLocale'
                  brand:
                    $ref: '#/components/schemas/Brand'
              ipAddress:
                maxLength: 45
                minLength: 5
                type: string
                description: The IP address of the user doing the registration.
              acceptedTerms:
                type: boolean
                description: >-
                  Must be set to *true* to indicate that the consumer has
                  accepted the terms and conditions.
                deprecated: true
              baseCurrency:
                $ref: '#/components/schemas/Currency'
              feeGroup:
                type: string
                description: >-
                  The fee group which the consumer is bound to. Fee groups
                  provide the possibility of different fees to users under the
                  same profile. If fee groups are not required, ignore this
                  field.
              sourceOfFunds:
                $ref: '#/components/schemas/ConsumerSourceOfFunds'
              sourceOfFundsOther:
                deprecated: true
                type: string
                description: Description of source of funds in case `OTHER` was chosen.
    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'
    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
    LinkedAccountCreationRequest:
      required: true
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/CreateLinkedAccountRequest'
    LinkedAccountMetadataUpdateRequest:
      required: true
      content:
        application/json:
          schema:
            type: object
            properties:
              tag:
                $ref: '#/components/schemas/Tag'
              friendlyName:
                maxLength: 50
                minLength: 1
                type: string
                description: >-
                  Updates the friendly name of the linked account. Leave blank
                  if no change is needed.
    ManagedAccountCreateRequest:
      content:
        application/json:
          schema:
            required:
              - profileId
              - friendlyName
              - currency
            type: object
            properties:
              profileId:
                $ref: '#/components/schemas/ProfileId'
              friendlyName:
                type: string
                minLength: 1
                maxLength: 50
                description: The friendly name to be given to the managed account.
              currency:
                $ref: '#/components/schemas/Currency'
              tag:
                $ref: '#/components/schemas/Tag'
      required: true
    ManagedAccountUpdateRequest:
      required: true
      content:
        application/json:
          schema:
            type: object
            properties:
              tag:
                $ref: '#/components/schemas/Tag'
              friendlyName:
                maxLength: 50
                minLength: 1
                type: string
                description: >-
                  Updates the friendly name of the managed account. Leave blank
                  if no change is needed.
    ManagedCardRequest:
      required: true
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ManagedCardRequest'
    ManagedCardUpdateRequest:
      required: true
      content:
        application/json:
          schema:
            type: object
            properties:
              tag:
                $ref: '#/components/schemas/Tag'
              friendlyName:
                maxLength: 50
                minLength: 1
                type: string
                description: >-
                  Updates the friendly name of the card. Leave blank if no
                  change is needed.
              nameOnCard:
                maxLength: 27
                pattern: >-
                  ^[a-zA-Z0-9ßÀÁÂÃÄÅǍÆÇÈÉÊËÌÍÎÏÒÓÔÕÖØŠÙÚÛÜŸÝĄĆČĎĘĹĽŁŃŇÑŐŔŚȘȚŤŰŹŻŽàáâãäåǎæçèéêëìíîïòóôõöøšùúûüÿýąćčďęĺľłńňñőŕśșțťűźżž\-^.
                  '-]*$
                type: string
                description: >
                  The card holder's name for the card.


                  This may be verified by merchants when the card is used
                  online. For Physical cards, this field will be printed on the
                  card.

                  The maximum characters allowed will depend on the design
                  chosen and will be provided to you by Weavr when setting up
                  your plastic cards.
              nameOnCardLine2:
                maxLength: 27
                pattern: >-
                  ^[a-zA-Z0-9ßÀÁÂÃÄÅǍÆÇÈÉÊËÌÍÎÏÒÓÔÕÖØŠÙÚÛÜŸÝĄĆČĎĘĹĽŁŃŇÑŐŔŚȘȚŤŰŹŻŽàáâãäåǎæçèéêëìíîïòóôõöøšùúûüÿýąćčďęĺľłńňñőŕśșțťűźżž\-^.
                  '-]*$
                type: string
                description: >-
                  Line 2 of the 'name on card' field. For Physical cards, this
                  field will be printed on the card. The maximum characters
                  allowed will depend on the design chosen and will be provided
                  to you by Weavr when setting up your plastic cards.
              cardholderMobileNumber:
                maxLength: 15
                minLength: 5
                pattern: ^\+[0-9]+$
                type: string
                description: >-
                  The mobile number including country code of the card holder,
                  needed in case a 3DS challenge is required.
                deprecated: true
              billingAddress:
                description: >-
                  The billing address of the card holder. Merchants may request
                  the billing address to be checked for online purchases.
                $ref: '#/components/schemas/BillingAddress'
              deliveryAddress:
                description: >-
                  The delivery address set for the card holder. This is only
                  applicable for physical cards.
                $ref: '#/components/schemas/DeliveryAddress'
              deliveryMethod:
                $ref: '#/components/schemas/DeliveryMethod'
              digitalWallets:
                $ref: '#/components/schemas/DigitalWallets'
              authForwardingDefaultTimeoutDecision:
                type: string
                description: Default decision for auth forwarding on timeout
                enum:
                  - APPROVE
                  - DECLINE
              threeDSecureAuthConfig:
                $ref: '#/components/schemas/ThreeDSecureAuthConfig'
              externalData:
                $ref: '#/components/schemas/ExternalData'
              bulkDelivery:
                $ref: '#/components/schemas/BulkCardDelivery'
              activationCode:
                $ref: '#/components/schemas/PhysicalCardActivationCode'
                description: The unique code to be used to activate the physical card.
              productReference:
                type: string
                description: >
                  The product design reference to be used for this physical
                  card.


                  This reference will be given to you once your physical card
                  programme has been set up. If only one card programme is
                  configured, this field can be left empty.
              carrierType:
                type: string
                description: >
                  The carrier type to be used for this physical card.


                  This reference will be given to you once your physical card
                  carrier has been set up. If only one carrier is configured,
                  this field can be left empty.
              renewalType:
                $ref: '#/components/schemas/CardRenewalType'
              userId:
                $ref: '#/components/schemas/UserId'
                description: >-
                  The Authorised User to be linked to the card, whose
                  authentication details will be used for actions such as 3DS
                  authentication, or manual provisioning to a digital wallet.
                  This field can be used instead of threeDSecureAuthConfig as it
                  better describes the wider scope of possible uses.
    CardLevelSpendRulesRequest:
      required: true
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/CardLevelSpendRules'
    UpdateCardLevelSpendRulesRequest:
      required: true
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/UpdateCardLevelSpendRules'
    ManagedCardPhysicalUpgradeRequest:
      required: true
      content:
        application/json:
          schema:
            required:
              - deliveryAddress
            type: object
            properties:
              productReference:
                type: string
                description: >
                  The product design reference to be used for this physical
                  card.


                  This reference will be given to you once your physical card
                  programme has been set up. If only one card programme is
                  configured, this field can be left empty.
              carrierType:
                type: string
                description: >
                  The carrier type to be used for this physical card.


                  This reference will be given to you once your physical card
                  carrier has been set up. If only one carrier is configured,
                  this field can be left empty.
              deliveryMethod:
                $ref: '#/components/schemas/DeliveryMethod'
              deliveryAddress:
                $ref: '#/components/schemas/DeliveryAddress'
              activationCode:
                $ref: '#/components/schemas/PhysicalCardActivationCode'
                description: >-
                  A unique code that can be used when activating the physical
                  card. This is an optional feature. An end-user will always
                  need to be logged in to activate a card, but providing an
                  activation code can give an additional layer of comfort to a
                  user regarding security.
              pin:
                $ref: '#/components/schemas/SensitivePin'
              nameOnCardLine2:
                maxLength: 27
                pattern: >-
                  ^[a-zA-Z0-9ßÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÒÓÔÕÖØŠÙÚÛÜŸÝĄĆČĎĘĹĽŁŃŇÑŐŔŚȘȚŤŰŹŻŽàáâãäåæçèéêëìíîïòóôõöøšùúûüÿýąćčďęĺľłńňñőŕśșțťűźżž\-^.
                  '-]*$
                type: string
                description: >-
                  Line 2 of the 'name on card' field. For Physical cards, this
                  field will be printed on the card. The maximum characters
                  allowed will depend on the design chosen and will be provided
                  to you by Weavr when setting up your plastic cards. This field
                  is deprecated.
                deprecated: true
              bulkDelivery:
                $ref: '#/components/schemas/BulkCardDelivery'
    ManagedCardPhysicalActivateRequest:
      required: true
      content:
        application/json:
          schema:
            type: object
            properties:
              activationCode:
                $ref: '#/components/schemas/PhysicalCardActivationCode'
                description: >-
                  The code that was set up when upgrading the card, that can be
                  used to activate a physical card. If provided in the request,
                  this will be validated against the code that was originally
                  provided. If left blank, no validation will be carried out.
    ManagedCardPhysicalReplaceDamagedRequest:
      required: true
      content:
        application/json:
          schema:
            required:
              - activationCode
            type: object
            properties:
              activationCode:
                $ref: '#/components/schemas/PhysicalCardActivationCode'
                description: >-
                  The code that will be used to activate the physical card
                  replacement.
    ManagedCardPhysicalReplaceLostOrStolenRequest:
      required: true
      content:
        application/json:
          schema:
            required:
              - activationCode
            type: object
            properties:
              activationCode:
                $ref: '#/components/schemas/PhysicalCardActivationCode'
                description: >-
                  A unique code to be used to activate the replacement physical
                  card.
    CreateTransferRequest:
      required: true
      content:
        application/json:
          schema:
            required:
              - profileId
              - source
              - destination
              - destinationAmount
            type: object
            properties:
              profileId:
                $ref: '#/components/schemas/ProfileId'
              tag:
                $ref: '#/components/schemas/Tag'
              source:
                description: >-
                  The managed account or managed card from where the funds will
                  be transferred.
                $ref: '#/components/schemas/InstrumentId'
              description:
                type: string
                maxLength: 255
                pattern: ^[a-zA-Z0-9\/\-?:().$_,'+\s#=!"%&*<>;\{@\r\n]*$
                description: >-
                  The description details that are included in the transaction
                  as reference.
              destination:
                description: >-
                  The managed account or managed card to where the funds will be
                  transferred.
                $ref: '#/components/schemas/InstrumentId'
              destinationAmount:
                description: >-
                  The amount, in same currency as the source and destination
                  instruments, to be transferred to the destination (exclusive
                  of any fee amount that may be specified in the profile).
                $ref: '#/components/schemas/CurrencyAmount'
              scheduledTimestamp:
                $ref: '#/components/schemas/ScheduledTimestamp'
    TransactionBulkCancelRequest:
      required: true
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/TransactionBulkCancelRequest'
    SendCreateRequest:
      required: true
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/SendCreateRequest'
    SendBulkCreateRequest:
      required: true
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/SendBulkCreateRequest'
    OutgoingWireTransferCreateRequest:
      required: true
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/OutgoingWireTransferCreateRequest'
    OutgoingWireTransferBulkCreateRequest:
      required: true
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/OutgoingWireTransferBulkCreateRequest'
    TransactionSingleCancelRequest:
      required: false
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/TransactionSingleCancelRequest'
    BeneficiaryBatchCreateRequest:
      required: true
      content:
        application/json:
          schema:
            required:
              - beneficiaries
            type: object
            properties:
              tag:
                $ref: '#/components/schemas/Tag'
              beneficiaries:
                type: array
                description: The object representing the beneficiaries' details.
                items:
                  $ref: '#/components/schemas/BasicBeneficiary'
    BeneficiaryBatchRemoveRequest:
      required: true
      content:
        application/json:
          schema:
            required:
              - beneficiaryIds
            type: object
            properties:
              beneficiaryIds:
                type: array
                description: A list of Beneficiary Ids.
                minItems: 1
                items:
                  type: string
                  pattern: ^[0-9]+$
  responses:
    LoginWithPasswordResponse:
      description: Success
      headers:
        request-ref:
          $ref: '#/components/headers/request-ref'
      content:
        application/json:
          schema:
            type: object
            properties:
              token:
                type: string
                description: >-
                  An authorisation token (valid for 5 minutes from last
                  activity) identifying the user to be used in the `auth_token`
                  authorization header for secured operations.
              tokenType:
                $ref: '#/components/schemas/TokenType'
              identity:
                description: The identity to which the logged-in user belongs to.
                $ref: '#/components/schemas/IdentityId'
              credentials:
                description: The unique identifier for the logged-in user.
                $ref: '#/components/schemas/CredentialId'
    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'
    Unauthorized:
      description: Unauthorized - Your credentials or access token are invalid.
      headers:
        request-ref:
          $ref: '#/components/headers/request-ref'
    NotFoundToken:
      description: Not found - The requested token couldn't be found.
      headers:
        request-ref:
          $ref: '#/components/headers/request-ref'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/TokenError'
    LoginWithPasswordConflict:
      description: >-
        The user's password has expired. Use the returned temporary token to
        update their password via the  '_/passwords/update_' endpoint.
      content:
        application/json:
          schema:
            type: object
            properties:
              token:
                type: string
                description: >-
                  Temporary authorisation token required to initiate the
                  _passwordUpdate_ operation.
    TokenExpired:
      description: Gone - The requested token is expired.
      headers:
        request-ref:
          $ref: '#/components/headers/request-ref'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/TokenError'
    Locked:
      description: >-
        Locked - Account is temporarily locked due to failed consecutive login
        attempts. Try again in 30 minutes.
      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'
    InternalServerError:
      description: >-
        Internal Server Error - There is a problem with the server. Please try
        again later.
      headers:
        request-ref:
          $ref: '#/components/headers/request-ref'
    ServiceUnavailable:
      description: >-
        Service Unavailable - The requested service is temporarily unavailable.
        Please try again later.
      headers:
        request-ref:
          $ref: '#/components/headers/request-ref'
    Error:
      description: Error
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    LoginViaBiometricsResponse:
      description: Success
      headers:
        request-ref:
          $ref: '#/components/headers/request-ref'
      content:
        application/json:
          schema:
            type: object
            properties:
              challengeId:
                type: string
                description: The unique identifier of a Biometric challenge.
    LoginViaBiometricsConflict:
      description: Conflict
      content:
        application/json:
          schema:
            type: object
            properties:
              errorCode:
                type: string
                enum:
                  - CHANNEL_NOT_REGISTERED
                  - CHANNEL_NOT_SUPPORTED
    UserIdentitiesGetResponse:
      description: Success
      headers:
        request-ref:
          $ref: '#/components/headers/request-ref'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/UserIdentitiesGetResponseSchema'
    Forbidden:
      description: Forbidden - Access to the requested resource or action is forbidden.
      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'
    UserIdentitiesConflict:
      description: Conflict
      content:
        application/json:
          schema:
            type: object
            properties:
              errorCode:
                type: string
                enum:
                  - IDENTITY_TYPE_NOT_SUPPORTED
    LoginWithIamResponse:
      description: Success
      headers:
        request-ref:
          $ref: '#/components/headers/request-ref'
      content:
        application/json:
          schema:
            type: object
            properties:
              url:
                type: string
    NoContent:
      description: Success - No Content.
      headers:
        request-ref:
          $ref: '#/components/headers/request-ref'
    MethodNotAllowed:
      description: >-
        Method Not Allowed - The request was received but has been rejected for
        the requested resource.
      headers:
        request-ref:
          $ref: '#/components/headers/request-ref'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    StepUpSCAChallengeConflict:
      description: Conflict
      content:
        application/json:
          schema:
            type: object
            properties:
              errorCode:
                type: string
                enum:
                  - CHANNEL_NOT_SUPPORTED
                  - CHANNEL_NOT_REGISTERED
                  - MOBILE_NUMBER_INVALID
                  - MOBILE_COUNTRY_NOT_SUPPORTED
                  - RETRY_IN_15SEC
                  - CHALLENGE_LIMIT_EXCEEDED
    StepUpSCAVerifyConflict:
      description: Conflict
      content:
        application/json:
          schema:
            type: object
            properties:
              errorCode:
                type: string
                enum:
                  - STATE_INVALID
                  - VERIFICATION_CODE_EXPIRED
                  - VERIFICATION_CODE_INVALID
                  - CHANNEL_NOT_SUPPORTED
                  - CHANNEL_NOT_REGISTERED
                  - ONE_CHALLENGE_LIMIT_REMAINING
                  - CHALLENGE_LIMIT_EXCEEDED
                  - ALREADY_VERIFIED
    StepUpSCAChallengePushResponse:
      description: Success
      headers:
        request-ref:
          $ref: '#/components/headers/request-ref'
      content:
        application/json:
          schema:
            type: object
            properties:
              id:
                type: string
                pattern: ^[0-9]+$
                description: The challenge id.
    StepUpSCAChallengePushConflict:
      description: Conflict
      content:
        application/json:
          schema:
            type: object
            properties:
              errorCode:
                type: string
                enum:
                  - STATE_INVALID
                  - CHANNEL_NOT_SUPPORTED
                  - CHANNEL_NOT_REGISTERED
                  - CHALLENGE_LIMIT_EXCEEDED
    LogoutResponse:
      description: Success
      headers:
        request-ref:
          $ref: '#/components/headers/request-ref'
      content:
        application/json:
          schema:
            type: object
            properties:
              url:
                type: string
                description: The logout url for third party auth providers.
    PasswordResponse:
      description: Success
      headers:
        request-ref:
          $ref: '#/components/headers/request-ref'
      content:
        application/json:
          schema:
            type: object
            properties:
              passwordInfo:
                $ref: '#/components/schemas/PasswordInfo'
              token:
                type: string
                description: >-
                  The authorisation token to be used in the Authorization header
                  for secured operations.
    CreatePasswordConflict:
      description: Conflict
      content:
        application/json:
          schema:
            type: object
            properties:
              errorCode:
                type: string
                enum:
                  - UNRESOLVED_IDENTITY
                  - PASSWORD_PROFILE_NOT_CONFIGURED_FOR_CREDENTIAL_TYPE
                  - PASSWORD_TOO_SHORT
                  - PASSWORD_TOO_LONG
                  - PASSWORD_TOO_SIMPLE
                  - PASSWORD_KEY_ALREADY_IN_USE
                  - PASSWORD_ALREADY_CREATED
    PasswordUpdateConflict:
      description: Conflict
      content:
        application/json:
          schema:
            type: object
            properties:
              errorCode:
                type: string
                enum:
                  - PASSWORD_ALREADY_USED
                  - PASSWORD_TOO_SHORT
                  - PASSWORD_TOO_LONG
                  - PASSWORD_TOO_SIMPLE
                  - PASSWORD_INCORRECT
    PasswordValidateConflict:
      description: Conflict
      content:
        application/json:
          schema:
            type: object
            properties:
              errorCode:
                type: string
                enum:
                  - UNRESOLVED_IDENTITY
                  - PASSWORD_PROFILE_NOT_CONFIGURED_FOR_CREDENTIAL_TYPE
                  - PASSWORD_TOO_SHORT
                  - PASSWORD_TOO_LONG
                  - PASSWORD_TOO_SIMPLE
    LostPasswordInitiateConflict:
      description: Conflict
      content:
        application/json:
          schema:
            type: object
            properties:
              errorCode:
                type: string
                enum:
                  - MULTIPLE_ACCOUNTS_FOUND
                  - ACCOUNT_NOT_FOUND
    TokenResponse:
      description: Success
      headers:
        request-ref:
          $ref: '#/components/headers/request-ref'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/TokenResponse'
    LostPasswordResumeConflict:
      description: Conflict
      content:
        application/json:
          schema:
            type: object
            properties:
              errorCode:
                type: string
                enum:
                  - INVALID_NONCE_OR_EMAIL
                  - PASSWORD_ALREADY_USED
                  - PASSWORD_TOO_SHORT
                  - PASSWORD_TOO_LONG
                  - PASSWORD_TOO_SIMPLE
                  - PASSWORD_INCORRECT
                  - PASSWORD_NOT_SET
    AuthFactorsGetResponse:
      description: Success
      headers:
        request-ref:
          $ref: '#/components/headers/request-ref'
      content:
        application/json:
          schema:
            type: object
            properties:
              factors:
                type: array
                description: The list of challenge types the logged-in user is enrolled on.
                items:
                  $ref: '#/components/schemas/SCAFactor'
    EnrolDeviceUsingOtpStepOneConflict:
      description: Conflict
      content:
        application/json:
          schema:
            type: object
            properties:
              errorCode:
                type: string
                enum:
                  - CHANNEL_NOT_SUPPORTED
                  - CHANNEL_ALREADY_REGISTERED
                  - MOBILE_NUMBER_NOT_AVAILABLE
                  - MOBILE_NUMBER_INVALID
                  - MOBILE_COUNTRY_NOT_SUPPORTED
                  - CREDENTIALS_INACTIVE
                  - TYPE_DOES_NOT_SUPPORT_ENROLMENT
    EnrolDeviceUsingOtpStepTwoConflict:
      description: Conflict
      content:
        application/json:
          schema:
            type: object
            properties:
              errorCode:
                type: string
                enum:
                  - CHANNEL_NOT_SUPPORTED
                  - CHANNEL_ALREADY_REGISTERED
                  - VERIFICATION_CODE_EXPIRED
                  - VERIFICATION_CODE_INVALID
                  - CREDENTIALS_INACTIVE
                  - CHALLENGE_LIMIT_EXCEEDED
                  - ONE_CHALLENGE_LIMIT_REMAINING
                  - STATE_INVALID
                  - TYPE_DOES_NOT_SUPPORT_ENROLMENT
    InstrumentForbidden:
      description: Forbidden - Access to the requested resource or action is forbidden.
      content:
        application/json:
          schema:
            type: object
            properties:
              errorCode:
                type: string
                enum:
                  - STEP_UP_REQUIRED
                  - ACCESS_TOKEN_REQUIRED
    EnrolDeviceUsingPushConflict:
      description: Conflict
      content:
        application/json:
          schema:
            type: object
            properties:
              errorCode:
                type: string
                enum:
                  - CHANNEL_NOT_SUPPORTED
                  - CHANNEL_NOT_READY
                  - CHANNEL_ALREADY_REGISTERED
                  - MOBILE_NUMBER_NOT_AVAILABLE
                  - CHALLENGE_LIMIT_EXCEEDED
                  - PASSCODE_NOT_SET
                  - ENROLMENT_LIMIT_EXCEEDED
                  - MOBILE_COUNTRY_NOT_SUPPORTED
                  - TYPE_DOES_NOT_SUPPORT_ENROLMENT
    UnlinkDeviceUsingPushConflict:
      description: Conflict
      content:
        application/json:
          schema:
            type: object
            properties:
              errorCode:
                type: string
                enum:
                  - CHANNEL_NOT_REGISTERED
                  - CREDENTIALS_INACTIVE
    SCAChallengeResponse:
      description: Success
      headers:
        request-ref:
          $ref: '#/components/headers/request-ref'
      content:
        application/json:
          schema:
            type: object
            properties:
              scaChallengeId:
                $ref: '#/components/schemas/Id'
    MultipleSCAChallengeConflict:
      description: Conflict
      content:
        application/json:
          schema:
            type: object
            properties:
              errorCode:
                description: |
                  Error codes:
                    * `STATE_INVALID` - The operation no longer requires additional verification, it was either cancelled or completed.
                    * `CHANNEL_NOT_SUPPORTED` - The channel selected cannot be used to verify this type of operation.
                    * `CHANNEL_NOT_REGISTERED` - The channel selected must be enrolled to receive one-time passwords before it can be used to verify this type of operation.
                    * `RETRY_IN_15_SECS` - The endpoint can be called again in 15 seconds. Once called successfully, a new SMS will be sent (with a different OTP to the original SMS).
                    * `CHALLENGE_LIMIT_EXCEEDED` - No more SMS OTPs can be requested. If verification was not completed, the original action must be started again from the beginning.
                type: string
                enum:
                  - STATE_INVALID
                  - CHANNEL_NOT_SUPPORTED
                  - CHANNEL_NOT_REGISTERED
                  - RETRY_IN_15SEC
                  - CHALLENGE_LIMIT_EXCEEDED
    MultipleSCAVerifyConflict:
      description: Conflict
      content:
        application/json:
          schema:
            type: object
            properties:
              errorCode:
                type: string
                enum:
                  - STATE_INVALID
                  - CHANNEL_NOT_SUPPORTED
                  - CHANNEL_NOT_REGISTERED
                  - VERIFICATION_CODE_EXPIRED
                  - VERIFICATION_CODE_INVALID
                  - CHALLENGE_LIMIT_EXCEEDED
                  - ONE_CHALLENGE_LIMIT_REMAINING
    MultipleSCAChallengePushConflict:
      description: Conflict
      content:
        application/json:
          schema:
            type: object
            properties:
              errorCode:
                type: string
                enum:
                  - STATE_INVALID
                  - CHANNEL_NOT_SUPPORTED
                  - CHANNEL_NOT_REGISTERED
                  - CHALLENGE_LIMIT_EXCEEDED
    AccessTokenResponse:
      description: Success
      headers:
        request-ref:
          $ref: '#/components/headers/request-ref'
      content:
        application/json:
          schema:
            type: object
            properties:
              token:
                type: string
              identity:
                description: The identity to which the logged-in user belongs to.
                $ref: '#/components/schemas/IdentityId'
              credentials:
                description: The unique identifier for the logged-in user.
                $ref: '#/components/schemas/CredentialId'
              status:
                type: string
                description: |
                  The token status, as follows:
                    - STANDARD: it is a standard token. 
                    - STEPPED_UP: it is a stepped up token.
                enum:
                  - STANDARD
                  - STEPPED_UP
    UserResponse:
      description: Success
      headers:
        request-ref:
          $ref: '#/components/headers/request-ref'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/User'
    UserForbidden:
      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:
                  - STEP_UP_REQUIRED
    UserCreateConflict:
      description: Conflict
      content:
        application/json:
          schema:
            type: object
            properties:
              errorCode:
                type: string
                enum:
                  - EMAIL_NOT_UNIQUE
                  - MOBILE_OR_COUNTRY_CODE_INVALID
                  - EMAIL_DOMAIN_NOT_ALLOWED
                  - COUNTRY_OF_RESIDENCE_INVALID
    UsersGetResponse:
      description: Success
      headers:
        request-ref:
          $ref: '#/components/headers/request-ref'
      content:
        application/json:
          schema:
            type: object
            properties:
              users:
                type: array
                description: The list of users matching the criteria specified.
                items:
                  $ref: '#/components/schemas/User'
              count:
                type: integer
                description: The total number of records (excluding the paging limit).
                format: int32
              responseCount:
                type: integer
                description: >-
                  The total number of records returned in this response (always
                  capped at 100).
                format: int32
    BulkProcessorConflictResponse:
      description: BulkProcessorConflict - bulk processor conflict.
      headers:
        request-ref:
          $ref: '#/components/headers/request-ref'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/BulkProcessConflict'
    BulkProcessDetails:
      description: Success
      headers:
        request-ref:
          $ref: '#/components/headers/request-ref'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/BulkProcessDetails'
    BulkProcessOperations:
      description: Success
      headers:
        request-ref:
          $ref: '#/components/headers/request-ref'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/BulkProcessOperationsPaged'
    UserPatchConflict:
      description: Conflict
      content:
        application/json:
          schema:
            type: object
            properties:
              errorCode:
                type: string
                enum:
                  - EMAIL_NOT_UNIQUE
                  - MOBILE_OR_COUNTRY_CODE_INVALID
                  - MOBILE_NO_CHANGE_LIMIT_EXCEEDED
                  - TOO_FREQUENT_EMAIL_CHANGES
                  - EMAIL_DOMAIN_NOT_ALLOWED
                  - MOBILE_CHANGE_NOT_ALLOWED
                  - UNSUPPORTED_CURRENCY
    UserInviteSendConflict:
      description: Conflict
      content:
        application/json:
          schema:
            type: object
            properties:
              errorCode:
                type: string
                enum:
                  - INVITE_ALREADY_CONSUMED
    UserInviteValidateConflict:
      description: Conflict
      content:
        application/json:
          schema:
            type: object
            properties:
              errorCode:
                type: string
                enum:
                  - INVITE_OR_INVITE_CODE_INVALID
    UserInviteConsumeConflict:
      description: Conflict
      content:
        application/json:
          schema:
            type: object
            properties:
              errorCode:
                type: string
                enum:
                  - INVITE_OR_INVITE_CODE_INVALID
                  - UNRESOLVED_IDENTITY
                  - PASSWORD_ALREADY_USED
                  - PASSWORD_PROFILE_NOT_CONFIGURED_FOR_CREDENTIAL_TYPE
                  - PASSWORD_TOO_SHORT
                  - PASSWORD_TOO_LONG
                  - PASSWORD_TOO_SIMPLE
                  - PASSWORD_KEY_ALREADY_IN_USE
                  - PASSWORD_ALREADY_CREATED
    CreateCorporateResponse:
      description: Success
      headers:
        request-ref:
          $ref: '#/components/headers/request-ref'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/CreatedCorporate'
    CorporateCreateConflict:
      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
                  - ROOT_USER_INACTIVE
                  - ROOT_EMAIL_NOT_VERIFIED
                  - KYC_APPROVAL_MISSING
                  - PROFILE_MISMATCH
                  - COMPANY_TYPE_UNSUPPORTED
                  - EMAIL_DOMAIN_NOT_ALLOWED
    CorporateResponse:
      description: Success
      headers:
        request-ref:
          $ref: '#/components/headers/request-ref'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Corporate'
    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
    EmailVerificationConflict:
      description: Conflict
      content:
        application/json:
          schema:
            type: object
            properties:
              errorCode:
                type: string
                enum:
                  - EMAIL_NOT_FOUND
                  - ALREADY_VERIFIED
                  - EMAIL_NOT_UNIQUE
    VerifyConflict:
      description: Conflict
      content:
        application/json:
          schema:
            type: object
            properties:
              errorCode:
                type: string
                enum:
                  - VERIFICATION_CODE_INVALID
                  - EMAIL_NOT_UNIQUE
    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'
    ChargeFeeResponse:
      description: Success
      headers:
        request-ref:
          $ref: '#/components/headers/request-ref'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ChargeFee'
    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
    ConsumerResponse:
      description: Success
      headers:
        request-ref:
          $ref: '#/components/headers/request-ref'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Consumer'
    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
    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
    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.
    ConsumerKycStartConflict:
      description: Conflict
      content:
        application/json:
          schema:
            type: object
            properties:
              errorCode:
                type: string
                enum:
                  - KYC_ALREADY_APPROVED
                  - KYC_PENDING_REVIEW
                  - KYC_REJECTED
                  - EMAIL_UNVERIFIED
    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'
    LinkedAccountResponse:
      description: Success
      headers:
        request-ref:
          $ref: '#/components/headers/request-ref'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/LinkedAccount'
    LinkedAccountRegisterConflict:
      description: Conflict
      content:
        application/json:
          schema:
            type: object
            properties:
              errorCode:
                type: string
                enum:
                  - PROFILE_NOT_FOUND
                  - PROFILE_INACTIVE
                  - MODEL_CONSTRAINTS_VIOLATED
                  - CURRENCY_NOT_SUPPORTED_BY_PROFILE
                  - COUNTRY_NOT_SUPPORTED_BY_PROFILE
                  - ACCOUNT_NUMBER_MISSING
                  - SORT_CODE_MISSING
                  - ACCOUNT_NUMBER_AND_IBAN_PROVIDED
                  - SORT_CODE_AND_IBAN_PROVIDED
                  - NO_ACCOUNT_DETAILS_PROVIDED
                  - INVALID_IDENTITY_TYPE
                  - IBAN_MISSING
                  - LINKED_ACCOUNT_ALREADY_ADDED
                  - MANAGED_ACCOUNT_MISSING
                  - THIS_IS_A_MANAGED_ACCOUNT
                  - ACCOUNT_DESCRIPTOR_MISSING
    LinkedAccountsGetResponse:
      description: Success
      headers:
        request-ref:
          $ref: '#/components/headers/request-ref'
      content:
        application/json:
          schema:
            type: object
            properties:
              accounts:
                description: The filtered managed accounts list.
                type: array
                items:
                  $ref: '#/components/schemas/LinkedAccount'
              count:
                type: integer
                description: The total number of records (excluding the paging limit).
                format: int32
              responseCount:
                type: integer
                description: >-
                  The total number of records returned in this response (always
                  capped at 100).
                format: int32
    LinkedAccountRemoveConflict:
      description: Conflict
      content:
        application/json:
          schema:
            type: object
            properties:
              errorCode:
                type: string
                enum:
                  - LINKED_ACCOUNT_ALREADY_REMOVED
                  - LINKED_ACCOUNT_HAS_PENDING_ACTIONS
                  - LINKED_ACCOUNT_REJECTED
    LinkedAccountBlockConflict:
      description: Conflict
      content:
        application/json:
          schema:
            type: object
            properties:
              errorCode:
                type: string
                enum:
                  - LINKED_ACCOUNT_INACTIVE
                  - LINKED_ACCOUNT_ALREADY_BLOCKED
                  - LINKED_ACCOUNT_REMOVED
    LinkedAccountUnblockConflict:
      description: Conflict
      content:
        application/json:
          schema:
            type: object
            properties:
              errorCode:
                type: string
                enum:
                  - LINKED_ACCOUNT_INACTIVE
                  - LINKED_ACCOUNT_NOT_BLOCKED
                  - LINKED_ACCOUNT_REMOVED
    LinkedAccountVerificationRunsGetResponse:
      description: Success
      headers:
        request-ref:
          $ref: '#/components/headers/request-ref'
      content:
        application/json:
          schema:
            type: object
            properties:
              verificationRuns:
                type: array
                items:
                  $ref: '#/components/schemas/LinkedAccountVerificationRun'
              count:
                type: integer
                description: The total number of records (excluding the paging limit).
                format: int32
              responseCount:
                type: integer
                description: >-
                  The total number of records returned in this response (always
                  capped at 100).
                format: int32
    ManagedAccountsGetResponse:
      description: Success
      headers:
        request-ref:
          $ref: '#/components/headers/request-ref'
      content:
        application/json:
          schema:
            type: object
            properties:
              accounts:
                description: The filtered managed accounts list.
                type: array
                items:
                  $ref: '#/components/schemas/ManagedAccount'
              count:
                type: integer
                description: The total number of records (excluding the paging limit).
                format: int32
              responseCount:
                type: integer
                description: >-
                  The total number of records returned in this response (always
                  capped at 100).
                format: int32
    ManagedAccountResponse:
      description: Success
      headers:
        request-ref:
          $ref: '#/components/headers/request-ref'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ManagedAccount'
    ManagedAccountCreateConflict:
      description: Conflict
      content:
        application/json:
          schema:
            type: object
            properties:
              errorCode:
                type: string
                enum:
                  - PROFILE_NOT_FOUND
                  - PROFILE_INACTIVE
                  - MODEL_CONSTRAINTS_VIOLATED
                  - CURRENCY_NOT_SUPPORTED_BY_PROFILE
                  - PROVIDER_NOT_SUPPORTED_BY_PROFILE
                  - INSTRUMENT_NOT_FOUND
                  - OWNER_IDENTITY_NOT_VERIFIED
                  - IDENTITY_LIMITS_EXCEEDED
                  - PROGRAMME_LIMITS_EXCEEDED
                  - INNOVATOR_LIMITS_EXCEEDED
                  - SYSTEM_LIMITS_EXCEEDED
    ManagedAccountIBANResponse:
      description: Success
      headers:
        request-ref:
          $ref: '#/components/headers/request-ref'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ManagedAccountIBAN'
    ManagedAccountsIBANUpgradeConflict:
      description: Conflict
      content:
        application/json:
          schema:
            type: object
            properties:
              errorCode:
                type: string
                enum:
                  - INSTRUMENT_ALREADY_UPGRADED_TO_IBAN
                  - INSTRUMENT_IS_NOT_ACTIVE
                  - IBAN_ALLOCATION_EXCEEDED
                  - IBAN_NOT_SUPPORTED
                  - IBAN_ALREADY_REQUESTED
                  - OWNER_NOT_VERIFIED
    ManagedAccountBlockConflict:
      description: Conflict
      content:
        application/json:
          schema:
            type: object
            properties:
              errorCode:
                type: string
                enum:
                  - INSTRUMENT_INACTIVE
                  - INSTRUMENT_ALREADY_BLOCKED
                  - INSTRUMENT_DESTROYED
    ManagedAccountUnblockConflict:
      description: Conflict
      content:
        application/json:
          schema:
            type: object
            properties:
              errorCode:
                type: string
                enum:
                  - INSTRUMENT_INACTIVE
                  - INSTRUMENT_NOT_BLOCKED
                  - INSTRUMENT_DESTROYED
    ManagedAccountStatementResponse:
      description: Success
      headers:
        request-ref:
          $ref: '#/components/headers/request-ref'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Statement'
        application/pdf:
          schema:
            type: string
            format: binary
        text/csv:
          schema:
            type: array
            items:
              $ref: '#/components/schemas/StatementEntry'
    ManagedAccountRemoveConflict:
      description: Conflict
      content:
        application/json:
          schema:
            type: object
            properties:
              errorCode:
                type: string
                enum:
                  - BALANCE_NOT_ZERO
                  - INSTRUMENT_ALREADY_REMOVED
                  - INSTRUMENT_HAS_PENDING_ACTIONS
                  - INSTRUMENT_HAS_LINKED_CARDS
    ManagedCardResponse:
      description: Success
      headers:
        request-ref:
          $ref: '#/components/headers/request-ref'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ManagedCard'
    ManagedCardConflict:
      description: Conflict
      content:
        application/json:
          schema:
            type: object
            properties:
              errorCode:
                type: string
                enum:
                  - PAYMENT_MODEL_CONSTRAINTS_VIOLATED
                  - PROFILE_NOT_FOUND
                  - PROFILE_INACTIVE
                  - CURRENCY_NOT_SUPPORTED_BY_PROFILE
                  - PROVIDER_NOT_SUPPORTED_BY_PROFILE
                  - INSTRUMENT_NOT_FOUND
                  - COUNTRY_INVALID
                  - OWNER_IDENTITY_NOT_VERIFIED
                  - IDENTITY_LIMITS_EXCEEDED
                  - PROGRAMME_LIMITS_EXCEEDED
                  - INNOVATOR_LIMITS_EXCEEDED
                  - SYSTEM_LIMITS_EXCEEDED
                  - PARENT_MANAGED_ACCOUNT_NOT_ACTIVE
                  - PARENT_MANAGED_ACCOUNT_NOT_FOUND
                  - WALLETS_NOT_ENABLED
                  - WALLET_ARTWORK_NOT_SPECIFIED
                  - WALLET_ARTWORK_INVALID
                  - IDENTITY_KYC_LEVEL_STEPUP_REQUIRED
                  - PUSHPROVISIONING_NOT_ENABLED
                  - AUTH_FORWARDING_NOT_ENABLED
                  - USER_NOT_ENROLLED_FOR_BIOMETRICS
                  - BIOMETRIC_AUTHENTICATION_NOT_SUPPORTED
                  - LINKED_USER_NOT_FOUND
                  - USER_INACTIVE
                  - INVALID_CHANNELS_SELECTED
                  - INVALID_PRIMARY_CHANNEL_SELECTED
                  - USER_MOBILE_NUMBER_DOES_NOT_EXIST
                  - MORE_THAN_ONE_MOBILE_NUMBER_PROVIDED
                  - MOBILE_NUMBER_ALREADY_EXISTS
                  - TWILIO_AUTHY_AUTHENTICATION_NOT_SUPPORTED
                  - USER_NOT_ENROLLED_FOR_TWILIO_AUTHY
                  - RENEWAL_TYPE_NOT_SUPPORTED_BY_PROFILE
                  - USER_CURRENCY_NOT_ENABLED
                  - USER_CURRENCY_NOT_SUPPORTED_BY_PROFILE
                  - USER_CURRENCY_SAME_AS_BASE_CURRENCY
    ManagedCardPageResponse:
      description: Success
      headers:
        request-ref:
          $ref: '#/components/headers/request-ref'
      content:
        application/json:
          schema:
            type: object
            properties:
              cards:
                type: array
                items:
                  $ref: '#/components/schemas/ManagedCard'
              count:
                type: integer
                description: The total number of records (excluding the paging limit).
                format: int32
              responseCount:
                type: integer
                description: >-
                  The total number of records returned in this response (always
                  capped at 100).
                format: int32
    ManagedCardUpdateConflict:
      description: Conflict
      content:
        application/json:
          schema:
            type: object
            properties:
              errorCode:
                type: string
                enum:
                  - INSTRUMENT_DESTROYED
                  - INSTRUMENT_NOT_PHYSICAL
                  - COUNTRY_INVALID
                  - WALLETS_NOT_ENABLED
                  - WALLET_ARTWORK_NOT_SPECIFIED
                  - WALLET_ARTWORK_INVALID
                  - PUSHPROVISIONING_NOT_ENABLED
                  - AUTH_FORWARDING_NOT_ENABLED
                  - THREEDS_DETAILS_NOT_PROVIDED
                  - USER_NOT_ENROLLED_FOR_BIOMETRICS
                  - BIOMETRIC_AUTHENTICATION_NOT_SUPPORTED
                  - LINKED_USER_NOT_FOUND
                  - USER_INACTIVE
                  - INVALID_CHANNELS_SELECTED
                  - INVALID_PRIMARY_CHANNEL_SELECTED
                  - USER_MOBILE_NUMBER_DOES_NOT_EXIST
                  - MORE_THAN_ONE_MOBILE_NUMBER_PROVIDED
                  - MOBILE_NUMBER_ALREADY_EXISTS
                  - TWILIO_AUTHY_AUTHENTICATION_NOT_SUPPORTED
                  - USER_NOT_ENROLLED_FOR_TWILIO_AUTHY
                  - DELIVERY_METHOD_INVALID
                  - CONTACT_NUMBER_NEEDED_FOR_BULK_DELIVERY
                  - PRODUCT_REFERENCE_INVALID
                  - CARRIER_TYPE_INVALID
                  - CONFIG_ERROR_CARD_BUREAU
                  - RENEWAL_TYPE_NOT_SUPPORTED_BY_PROFILE
    ManagedCardBlockConflict:
      description: Conflict
      content:
        application/json:
          schema:
            type: object
            properties:
              errorCode:
                type: string
                enum:
                  - INSTRUMENT_ALREADY_BLOCKED
                  - INSTRUMENT_DESTROYED
                  - INSTRUMENT_MARKED_LOST_STOLEN
    ManagedCardUnblockConflict:
      description: Conflict
      content:
        application/json:
          schema:
            type: object
            properties:
              errorCode:
                type: string
                enum:
                  - INSTRUMENT_NOT_BLOCKED
                  - INSTRUMENT_DESTROYED
                  - INSTRUMENT_MARKED_LOST_STOLEN
    ManagedCardRemoveConflict:
      description: Conflict
      content:
        application/json:
          schema:
            type: object
            properties:
              errorCode:
                type: string
                enum:
                  - BALANCE_NOT_ZERO
                  - INSTRUMENT_ALREADY_REMOVED
    ManagedCardStatementResponse:
      description: Success
      headers:
        request-ref:
          $ref: '#/components/headers/request-ref'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Statement'
        application/pdf:
          schema:
            type: string
            format: binary
        text/csv:
          schema:
            type: array
            items:
              $ref: '#/components/schemas/StatementEntry'
    ManagedCardSpendRulesGetResponse:
      description: Success
      headers:
        request-ref:
          $ref: '#/components/headers/request-ref'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/AllLevelSpendRules'
    ManagedCardSpendRulesCreateConflict:
      description: Conflict
      content:
        application/json:
          schema:
            type: object
            properties:
              errorCode:
                type: string
                enum:
                  - SPEND_LIMIT_CURRENCY_DIFFERENT_FROM_CARD_CURRENCY
                  - SPEND_LIMIT_NOT_SUPPORTED_FOR_PREPAID_MODE_CARD
                  - SPEND_LIMIT_DUPLICATE_INTERVAL
                  - SPEND_LIMIT_AMOUNT_INVALID
                  - SPEND_RULE_ALREADY_SET
                  - SPEND_LIMIT_CURRENCY_DIFFERENT_FROM_USER_CURRENCY
    ManagedCardSpendRulesUpdateConflict:
      description: Conflict
      content:
        application/json:
          schema:
            type: object
            properties:
              errorCode:
                type: string
                enum:
                  - SPEND_LIMIT_CURRENCY_DIFFERENT_FROM_CARD_CURRENCY
                  - SPEND_LIMIT_NOT_SUPPORTED_FOR_PREPAID_MODE_CARD
                  - SPEND_LIMIT_DUPLICATE_INTERVAL
                  - SPEND_LIMIT_AMOUNT_INVALID
                  - SPEND_LIMIT_CURRENCY_DIFFERENT_FROM_USER_CURRENCY
    ManagedCardGetResponse:
      description: Success
      headers:
        request-ref:
          $ref: '#/components/headers/request-ref'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ManagedCard'
    ManagedCardPhysicalUpgradeConflict:
      description: Conflict
      content:
        application/json:
          schema:
            type: object
            properties:
              errorCode:
                type: string
                enum:
                  - INSTRUMENT_ALREADY_UPGRADED_TO_PHYSICAL
                  - CONFIG_ERROR_PRODUCT_REFERENCE
                  - PRODUCT_REFERENCE_NOT_SPECIFIED
                  - PRODUCT_REFERENCE_INVALID
                  - CONFIG_ERROR_CARRIER_TYPE
                  - CARRIER_TYPE_NOT_SPECIFIED
                  - CARRIER_TYPE_INVALID
                  - CONFIG_ERROR_CARD_BUREAU
                  - INSTRUMENT_BLOCKED
                  - INSTRUMENT_DESTROYED
                  - PIN_INVALID_FORMAT
                  - PARENT_MANAGED_ACCOUNT_BLOCKED
                  - MAX_PRINT_CHARACTERS_EXCEEDED
                  - DELIVERY_METHOD_INVALID
                  - CONTACT_NUMBER_NEEDED_FOR_BULK_DELIVERY
    ManagedCardPhysicalActivateConflict:
      description: Conflict
      content:
        application/json:
          schema:
            type: object
            properties:
              errorCode:
                type: string
                enum:
                  - INSTRUMENT_NOT_PHYSICAL
                  - INSTRUMENT_ALREADY_ACTIVATED
                  - ACTIVATION_CODE_INVALID
                  - INSTRUMENT_BLOCKED
                  - INSTRUMENT_DESTROYED
    ManagedCardPhysicalPinGetResponse:
      description: Success
      headers:
        request-ref:
          $ref: '#/components/headers/request-ref'
      content:
        application/json:
          schema:
            required:
              - pin
            type: object
            properties:
              pin:
                $ref: '#/components/schemas/SensitivePin'
    ManagedCardPhysicalPinGetConflict:
      description: Conflict
      content:
        application/json:
          schema:
            type: object
            properties:
              errorCode:
                type: string
                enum:
                  - INSTRUMENT_NOT_PHYSICAL
                  - PHYSICAL_CARD_NOT_ACTIVATED
                  - PIN_NOT_SET
                  - PIN_TRIES_EXCEEDED
                  - INSTRUMENT_BLOCKED
                  - INSTRUMENT_DESTROYED
    ManagedCardPhysicalPinUnBlockConflict:
      description: Conflict
      content:
        application/json:
          schema:
            type: object
            properties:
              errorCode:
                type: string
                enum:
                  - INSTRUMENT_NOT_PHYSICAL
                  - PHYSICAL_CARD_NOT_ACTIVATED
                  - INSTRUMENT_BLOCKED
                  - INSTRUMENT_DESTROYED
    ManagedCardPhysicalReplaceDamagedConflict:
      description: Conflict
      content:
        application/json:
          schema:
            type: object
            properties:
              errorCode:
                type: string
                enum:
                  - INSTRUMENT_NOT_PHYSICAL
                  - PHYSICAL_CARD_NOT_ACTIVATED
                  - INSTRUMENT_ALREADY_DESTROYED
                  - INSTRUMENT_ALREADY_PENDING_REPLACEMENT
                  - INSTRUMENT_MARKED_AS_LOST
                  - MAX_PRINT_CHARACTERS_EXCEEDED
    ManagedCardPhysicalReportLostConflict:
      description: Conflict
      content:
        application/json:
          schema:
            type: object
            properties:
              errorCode:
                type: string
                enum:
                  - INSTRUMENT_NOT_PHYSICAL
                  - INSTRUMENT_ALREADY_MARKED_LOST
                  - INSTRUMENT_ALREADY_MARKED_STOLEN
                  - INSTRUMENT_DESTROYED
    ManagedCardPhysicalReportStolenConflict:
      description: Conflict
      content:
        application/json:
          schema:
            type: object
            properties:
              errorCode:
                type: string
                enum:
                  - INSTRUMENT_NOT_PHYSICAL
                  - PHYSICAL_CARD_NOT_ACTIVATED
                  - INSTRUMENT_ALREADY_MARKED_STOLEN
                  - INSTRUMENT_ALREADY_MARKED_LOST
                  - INSTRUMENT_DESTROYED
    ManagedCardPhysicalReplaceLostOrStolenConflict:
      description: Conflict
      content:
        application/json:
          schema:
            type: object
            properties:
              errorCode:
                type: string
                enum:
                  - INSTRUMENT_NOT_PHYSICAL
                  - INSTRUMENT_NOT_MARKED_LOST_OR_STOLEN
                  - INSTRUMENT_DESTROYED
                  - INSTRUMENT_ALREADY_REPLACED
                  - PARENT_MANAGED_ACCOUNT_NOT_ACTIVE
                  - MAX_PRINT_CHARACTERS_EXCEEDED
    ManagedCardPhysicalContactlessLimitResetConflict:
      description: Conflict
      content:
        application/json:
          schema:
            type: object
            properties:
              errorCode:
                type: string
                enum:
                  - INSTRUMENT_NOT_PHYSICAL
                  - PHYSICAL_CARD_NOT_ACTIVATED
                  - INSTRUMENT_BLOCKED
                  - INSTRUMENT_DESTROYED
                  - PHYSICAL_CARD_TYPE_NOT_SUPPORTED
    TransferResponse:
      description: Success
      headers:
        request-ref:
          $ref: '#/components/headers/request-ref'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Transfer'
    TransferConflict:
      description: Conflict
      content:
        application/json:
          schema:
            type: object
            properties:
              errorCode:
                type: string
                enum:
                  - PROFILE_INACTIVE
                  - MODEL_CONSTRAINTS_VIOLATED
                  - INTERCEPTOR_DENIED_TRANSACTION
                  - INSTRUMENT_DENIED_TRANSACTION
                  - SOURCE_INSTRUMENT_DESTROYED
                  - DESTINATION_INSTRUMENT_DESTROYED
                  - FOREX_TRADE_DENIED_TRANSACTION
                  - CURRENCY_MISMATCH
                  - SOURCE_INSTRUMENT_BLOCKED
                  - DESTINATION_INSTRUMENT_BLOCKED
                  - FUNDS_INSUFFICIENT
                  - AMOUNT_INVALID
                  - SOURCE_NOT_FOUND
                  - DESTINATION_NOT_FOUND
                  - FEE_NOT_CONFIGURED_FOR_CURRENCY
                  - DESTINATION_LIMIT_EXCEEDED
                  - SOURCE_CANNOT_BE_DEBIT_MODE_CARD
                  - DESTINATION_CANNOT_BE_DEBIT_MODE_CARD
                  - TRANSFER_BETWEEN_INSTRUMENTS_UNSUPPORTED
                  - SOURCE_AND_DESTINATION_MUST_BE_DIFFERENT
                  - SCHEDULED_TIMESTAMP_INVALID
    TransfersGetResponse:
      description: Success
      headers:
        request-ref:
          $ref: '#/components/headers/request-ref'
      content:
        application/json:
          schema:
            type: object
            properties:
              transfer:
                type: array
                items:
                  $ref: '#/components/schemas/Transfer'
              count:
                type: integer
                description: Total number of records (excluding the paging limit).
                format: int32
              responseCount:
                type: integer
                description: Total number of records returned in this response.
                format: int32
    TransactionBulkCancelResponse:
      description: Success
      headers:
        request-ref:
          $ref: '#/components/headers/request-ref'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/TransactionBulkCancelResponse'
    SendResponse:
      description: Success
      headers:
        request-ref:
          $ref: '#/components/headers/request-ref'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Send'
    SendCreateConflict:
      description: Conflict
      content:
        application/json:
          schema:
            required:
              - errorCode
            type: object
            properties:
              errorCode:
                type: string
                enum:
                  - PROFILE_INACTIVE
                  - MODEL_CONSTRAINTS_VIOLATED
                  - INTERCEPTOR_DENIED_TRANSACTION
                  - INSTRUMENT_DENIED_TRANSACTION
                  - FOREX_TRADE_DENIED_TRANSACTION
                  - CURRENCY_MISMATCH
                  - SOURCE_INSTRUMENT_BLOCKED
                  - DESTINATION_INSTRUMENT_BLOCKED
                  - SOURCE_NOT_FOUND
                  - DESTINATION_NOT_FOUND
                  - FEE_NOT_CONFIGURED_FOR_CURRENCY
                  - DESTINATION_LIMIT_EXCEEDED
                  - FUNDS_INSUFFICIENT
                  - AMOUNT_INVALID
                  - SOURCE_CANNOT_BE_DEBIT_MODE_CARD
                  - DESTINATION_CANNOT_BE_DEBIT_MODE_CARD
                  - SEND_TO_INSTRUMENT_UNSUPPORTED
                  - SOURCE_INSTRUMENT_DESTROYED
                  - DESTINATION_INSTRUMENT_DESTROYED
                  - SOURCE_AND_DESTINATION_MUST_BE_DIFFERENT
                  - IDENTITY_KYC_LEVEL_STEPUP_REQUIRED
                  - DESTINATION_BELONGS_TO_SAME_IDENTITY
                  - SOURCE_AND_DESTINATION_MUST_BE_IN_SAME_PROGRAMME
                  - BENEFICIARY_NOT_FOUND
                  - BENEFICIARY_TYPE_INVALID
                  - PROFILE_NOT_FOUND
                  - SCHEDULED_TIMESTAMP_INVALID
                  - DESTINATION_FEE_EXCEEDS_TRANSACTION_AMOUNT
    SendsGetPageResponse:
      description: Success
      headers:
        request-ref:
          $ref: '#/components/headers/request-ref'
      content:
        application/json:
          schema:
            type: object
            properties:
              send:
                type: array
                items:
                  $ref: '#/components/schemas/Send'
              count:
                type: integer
                description: Total number of records (excluding the paging limit).
                format: int32
              responseCount:
                type: integer
                description: Total number of records returned in this response.
                format: int32
    SendBulkCreateResponse:
      description: Success
      headers:
        request-ref:
          $ref: '#/components/headers/request-ref'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/SendBulkCreateResponse'
    SendBulkCreateConflict:
      description: Conflict
      content:
        application/json:
          schema:
            required:
              - errorCode
            type: object
            properties:
              errorCode:
                description: |
                  Error codes:
                    * `TRANSACTION_LIMIT_EXCEEDED` - The number of transactions exceeds the limit of 1000.
                type: string
                enum:
                  - TRANSACTION_LIMIT_EXCEEDED
    SendSCAChallengeConflict:
      description: Conflict
      content:
        application/json:
          schema:
            type: object
            properties:
              errorCode:
                type: string
                enum:
                  - STATE_INVALID
                  - CHANNEL_NOT_SUPPORTED
                  - CHANNEL_NOT_REGISTERED
                  - SCA_EXEMPTION_APPLIED
    SendSCAVerifyConflict:
      description: Conflict
      content:
        application/json:
          schema:
            type: object
            properties:
              errorCode:
                type: string
                enum:
                  - STATE_INVALID
                  - CHANNEL_NOT_SUPPORTED
                  - CHANNEL_NOT_REGISTERED
                  - VERIFICATION_CODE_EXPIRED
                  - VERIFICATION_CODE_INVALID
                  - SCA_EXEMPTION_APPLIED
                  - CHALLENGE_NOT_PENDING
                  - CHALLENGE_LIMIT_EXCEEDED
                  - ONE_CHALLENGE_LIMIT_REMAINING
    SendSCAChallengePushConflict:
      description: Conflict
      content:
        application/json:
          schema:
            type: object
            properties:
              errorCode:
                type: string
                enum:
                  - STATE_INVALID
                  - CHANNEL_NOT_SUPPORTED
                  - CHANNEL_NOT_REGISTERED
                  - CHALLENGE_LIMIT_EXCEEDED
                  - SCA_EXEMPTION_APPLIED
    OutgoingWireTransferResponse:
      description: Success
      headers:
        request-ref:
          $ref: '#/components/headers/request-ref'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/OutgoingWireTransfer'
    OutgoingWireTransferCreateConflict:
      description: Conflict
      content:
        application/json:
          schema:
            type: object
            properties:
              errorCode:
                type: string
                enum:
                  - PROFILE_INACTIVE
                  - MODEL_CONSTRAINTS_VIOLATED
                  - INTERCEPTOR_DENIED_TRANSACTION
                  - INSTRUMENT_DENIED_TRANSACTION
                  - CURRENCY_MISMATCH
                  - SOURCE_INSTRUMENT_BLOCKED
                  - SOURCE_INSTRUMENT_DESTROYED
                  - AMOUNT_INVALID
                  - FUNDS_INSUFFICIENT
                  - SOURCE_NOT_FOUND
                  - FEE_NOT_CONFIGURED_FOR_CURRENCY
                  - TYPE_NOT_SUPPORTED_BY_PROFILE
                  - IDENTITY_KYC_LEVEL_STEPUP_REQUIRED
                  - BENEFICIARY_NOT_FOUND
                  - BENEFICIARY_TYPE_INVALID
                  - PROFILE_NOT_FOUND
                  - SCHEDULED_TIMESTAMP_INVALID
                  - BENEFICIARY_BANK_DETAILS_INVALID
                  - PLUGIN_FILTER_DATA_INVALID
                  - IBAN_UPGRADE_REQUIRED
                  - DESTINATION_ACCOUNT_TYPE_INVALID
                  - EXTERNAL_DESTINATION_ACCOUNT_NOT_FOUND
    OutgoingWireTransfersGetPageResponse:
      description: Success
      headers:
        request-ref:
          $ref: '#/components/headers/request-ref'
      content:
        application/json:
          schema:
            type: object
            properties:
              transfer:
                type: array
                items:
                  $ref: '#/components/schemas/OutgoingWireTransfer'
              count:
                type: integer
                description: Total number of records (excluding the paging limit)
                format: int32
              responseCount:
                type: integer
                description: >-
                  Total number of records returned in this response (always
                  capped at 100).
                format: int32
    OutgoingWireTransferBulkCreateResponse:
      description: Success
      headers:
        request-ref:
          $ref: '#/components/headers/request-ref'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/OutgoingWireTransferBulkCreateResponse'
    OutgoingWireTransferBulkCreateConflict:
      description: Conflict
      content:
        application/json:
          schema:
            required:
              - errorCode
            type: object
            properties:
              errorCode:
                description: |
                  Error codes:
                    * `TRANSACTION_LIMIT_EXCEEDED` - The number of transactions exceeds the limit of 1000.
                type: string
                enum:
                  - TRANSACTION_LIMIT_EXCEEDED
    OutgoingWireTransferCancelConflict:
      description: Conflict
      content:
        application/json:
          schema:
            type: object
            properties:
              errorCode:
                type: string
                enum:
                  - INVALID_STATE
    OutgoingWireTransferConfirmConflict:
      description: Conflict
      content:
        application/json:
          schema:
            type: object
            properties:
              errorCode:
                type: string
                enum:
                  - INVALID_STATE
    OutgoingWireTransferSCAChallengeConflict:
      description: Conflict
      content:
        application/json:
          schema:
            type: object
            properties:
              errorCode:
                description: |
                  Error codes:
                    * `STATE_INVALID` - The transaction no longer requires additional verification, it was either cancelled or completed.
                    * `CHANNEL_NOT_SUPPORTED` - The channel selected cannot be used to verify this type of transaction.
                    * `CHANNEL_NOT_REGISTERED` - The channel selected must be enrolled to receive one-time passwords before it can be used to verify this type of transaction.
                    * `SCA_EXEMPTION_APPLIED` - The transaction no longer requires additional verification, it was proceeded via PSD2 Regulation low value SCA exemption, it is either cancelled or completed.
                type: string
                enum:
                  - STATE_INVALID
                  - CHANNEL_NOT_SUPPORTED
                  - CHANNEL_NOT_REGISTERED
                  - SCA_EXEMPTION_APPLIED
    OutgoingWireTransferSCAVerifyConflict:
      description: Conflict
      content:
        application/json:
          schema:
            type: object
            properties:
              errorCode:
                type: string
                enum:
                  - STATE_INVALID
                  - CHANNEL_NOT_SUPPORTED
                  - CHANNEL_NOT_REGISTERED
                  - VERIFICATION_CODE_EXPIRED
                  - VERIFICATION_CODE_INVALID
                  - SCA_EXEMPTION_APPLIED
                  - CHALLENGE_LIMIT_EXCEEDED
                  - ONE_CHALLENGE_LIMIT_REMAINING
    OutgoingWireTransferSCAChallengePushConflict:
      description: Conflict
      content:
        application/json:
          schema:
            type: object
            properties:
              errorCode:
                type: string
                enum:
                  - STATE_INVALID
                  - CHANNEL_NOT_SUPPORTED
                  - CHANNEL_NOT_REGISTERED
                  - CHALLENGE_LIMIT_EXCEEDED
                  - SCA_EXEMPTION_APPLIED
    BeneficiaryBatchResponse:
      description: Success
      headers:
        request-ref:
          $ref: '#/components/headers/request-ref'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/BeneficiaryBatch'
    BeneficiaryPageResponse:
      description: Success
      headers:
        request-ref:
          $ref: '#/components/headers/request-ref'
      content:
        application/json:
          schema:
            type: object
            properties:
              beneficiaries:
                type: array
                items:
                  $ref: '#/components/schemas/Beneficiary'
              count:
                type: integer
                description: The total number of records (excluding the paging limit).
                format: int32
              responseCount:
                type: integer
                description: >-
                  The total number of records returned in this response (always
                  capped at 100).
                format: int32
    BeneficiaryResponse:
      description: Success
      headers:
        request-ref:
          $ref: '#/components/headers/request-ref'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Beneficiary'
    BeneficiaryBatchPageResponse:
      description: Success
      headers:
        request-ref:
          $ref: '#/components/headers/request-ref'
      content:
        application/json:
          schema:
            type: object
            properties:
              batches:
                type: array
                items:
                  $ref: '#/components/schemas/BeneficiaryBatch'
              count:
                type: integer
                description: The total number of records (excluding the paging limit).
                format: int32
              responseCount:
                type: integer
                description: >-
                  The total number of records returned in this response (always
                  capped at 100).
                format: int32
    BeneficiaryBatchSCAChallengeConflict:
      description: Conflict
      content:
        application/json:
          schema:
            type: object
            properties:
              errorCode:
                description: |
                  Error codes:
                    * `STATE_INVALID` - The operation no longer requires additional verification, it was either cancelled or completed.
                    * `CHANNEL_NOT_SUPPORTED` - The channel selected cannot be used to verify this type of operation.
                    * `CHANNEL_NOT_REGISTERED` - The channel selected must be enrolled to receive one-time passwords before it can be used to verify this type of operation.
                type: string
                enum:
                  - STATE_INVALID
                  - CHANNEL_NOT_SUPPORTED
                  - CHANNEL_NOT_REGISTERED
    BeneficiaryBatchSCAVerifyConflict:
      description: Conflict
      content:
        application/json:
          schema:
            type: object
            properties:
              errorCode:
                type: string
                enum:
                  - STATE_INVALID
                  - CHANNEL_NOT_SUPPORTED
                  - CHANNEL_NOT_REGISTERED
                  - VERIFICATION_CODE_EXPIRED
                  - VERIFICATION_CODE_INVALID
                  - ONE_CHALLENGE_LIMIT_REMAINING
                  - CHALLENGE_LIMIT_EXCEEDED
    BeneficiaryBatchSCAChallengePushConflict:
      description: Conflict
      content:
        application/json:
          schema:
            type: object
            properties:
              errorCode:
                type: string
                enum:
                  - STATE_INVALID
                  - CHANNEL_NOT_SUPPORTED
                  - CHANNEL_NOT_REGISTERED
                  - CHALLENGE_LIMIT_EXCEEDED
paths:
  /login_with_password:
    post:
      tags:
        - Access
      description: >
        Authenticate a user with the `email` and `password` that they provided
        when registering.


        Given that the user credentials are correct, this returns a `token` that
        can then be used to authorise

        other secured operations. In case the password is expired, a temporary
        `token` is returned, which can be used

        solely for updating the password.


        The token returned is valid for 5 minutes from last activity.
      summary: Login with password
      operationId: loginWithPassword
      requestBody:
        $ref: '#/components/requestBodies/LoginWithPasswordRequest'
      responses:
        '200':
          $ref: '#/components/responses/LoginWithPasswordResponse'
        '400':
          $ref: '#/components/responses/BadRequestError'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          description: The authentication credentials are not found or are incorrect.
        '404':
          $ref: '#/components/responses/NotFoundToken'
        '409':
          $ref: '#/components/responses/LoginWithPasswordConflict'
        '410':
          $ref: '#/components/responses/TokenExpired'
        '423':
          $ref: '#/components/responses/Locked'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '500':
          $ref: '#/components/responses/InternalServerError'
        '503':
          $ref: '#/components/responses/ServiceUnavailable'
        default:
          $ref: '#/components/responses/Error'
      security:
        - api-key: []
  /login_via_biometrics:
    post:
      tags:
        - Access
      description: >
        Trigger a push notification and subsequent biometric authentication of a
        user, by providing the email that was 

        used in the enrolment process of biometrics.


        This endpoint can be used in conjunction with your application to
        authenticate a user and receive a stepped-up 

        token in a single action, for use in-session for any endpoints or UI
        components that require step-up 

        authentication.


        Given that the user credentials are correct, a push notification is sent
        to the user requesting them to complete

        biometric authentication. On successful completion of authentication, a
        token will be shared that can be used 

        for endpoints or UI components that require a stepped-up token.
      summary: Login via biometrics
      operationId: loginViaBiometrics
      requestBody:
        $ref: '#/components/requestBodies/LoginViaBiometricsRequest'
      responses:
        '200':
          $ref: '#/components/responses/LoginViaBiometricsResponse'
        '400':
          $ref: '#/components/responses/BadRequestError'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          description: The authentication credentials are not found or are incorrect.
        '409':
          $ref: '#/components/responses/LoginViaBiometricsConflict'
        '423':
          $ref: '#/components/responses/Locked'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '500':
          $ref: '#/components/responses/InternalServerError'
        '503':
          $ref: '#/components/responses/ServiceUnavailable'
        default:
          $ref: '#/components/responses/Error'
      security:
        - api-key: []
  /identities:
    get:
      tags:
        - Access
      description: Retrieves a list of identities available to the holder of the token.
      summary: Get user identities
      operationId: userIdentities
      parameters:
        - name: offset
          in: query
          required: false
          description: The number of results to skip from the beginning of the dataset.
          schema:
            type: integer
            minimum: 0
        - name: limit
          in: query
          required: false
          description: The maximum number of identities to return.
          schema:
            type: integer
            minimum: 1
            maximum: 100
      responses:
        '200':
          $ref: '#/components/responses/UserIdentitiesGetResponse'
        '400':
          $ref: '#/components/responses/BadRequestError'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '409':
          $ref: '#/components/responses/UserIdentitiesConflict'
        '500':
          $ref: '#/components/responses/InternalServerError'
        '503':
          $ref: '#/components/responses/ServiceUnavailable'
        default:
          $ref: '#/components/responses/Error'
      security:
        - auth_token: []
          api-key: []
        - api-key: []
  /stepup/challenges/otp/{channel}:
    post:
      tags:
        - Step-up Challenges
      description: >
        Initiates the step-up token process by sending an SMS with an
        one-time-password to a device belonging to the logged-in user that was
        previously enrolled through `/authentication_factors/otp/{channel}`
        endpoint.


        This process is required for endpoints that require a step-up token to
        complete the call.


        _Note that on the Sandbox Environment, text messages are not sent and
        the one-time-password is always \"123456\"._
      summary: Issue a one-time password that can be used to step-up a token
      operationId: stepupSCAChallenge
      parameters:
        - $ref: '#/components/parameters/idempotency-ref'
        - $ref: '#/components/parameters/channel'
      responses:
        '204':
          $ref: '#/components/responses/NoContent'
        '400':
          $ref: '#/components/responses/BadRequestError'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '405':
          $ref: '#/components/responses/MethodNotAllowed'
        '409':
          $ref: '#/components/responses/StepUpSCAChallengeConflict'
        '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: []
  /stepup/challenges/otp/{channel}/verify:
    post:
      tags:
        - Step-up Challenges
      description: >
        Completes the verification process for a step up token.

        The challenge expires after 5 minutes and the number of incorrect OTP
        attempts is limited to reduce the risk of fraud, in that case challenge
        has to be issued again.


        _Note that on the Sandbox Environment, text messages are not sent and
        the `verificationCode` is always \"123456\"._
      summary: Verify a step-up token using a one-time password
      operationId: stepupSCAVerify
      parameters:
        - $ref: '#/components/parameters/idempotency-ref'
        - $ref: '#/components/parameters/channel'
      requestBody:
        $ref: '#/components/requestBodies/SCAVerifyRequest'
      responses:
        '204':
          $ref: '#/components/responses/NoContent'
        '400':
          $ref: '#/components/responses/BadRequestError'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '409':
          $ref: '#/components/responses/StepUpSCAVerifyConflict'
        '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: []
  /stepup/challenges/push/{channel}:
    post:
      tags:
        - Step-up Challenges
      description: >
        Initiates the step-up token process by submitting a push notification to
        a device belonging to the logged-in user that was previously enrolled
        through the `/authentication_factors/push/{channel}` endpoint.


        You should only start this process if the token step-up isn't already in
        flight.
      summary: Issue a push notification that can be used to step-up a token
      operationId: stepupSCAChallengePush
      parameters:
        - $ref: '#/components/parameters/idempotency-ref'
        - $ref: '#/components/parameters/scaPushChannel'
      responses:
        '200':
          $ref: '#/components/responses/StepUpSCAChallengePushResponse'
        '400':
          $ref: '#/components/responses/BadRequestError'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '405':
          $ref: '#/components/responses/MethodNotAllowed'
        '409':
          $ref: '#/components/responses/StepUpSCAChallengePushConflict'
        '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: []
  /logout:
    post:
      tags:
        - Access
      description: >-
        Logs out the user and terminates the session identified by the
        `auth_token` in the Authorization Header.
      summary: Logout
      operationId: logout
      responses:
        '200':
          $ref: '#/components/responses/LogoutResponse'
        '204':
          $ref: '#/components/responses/NoContent'
        '400':
          $ref: '#/components/responses/BadRequestError'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '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: []
  /passwords/{user_id}/create:
    post:
      tags:
        - Passwords
      description: >-
        Create a new password for the user identified by the `user_id` path
        parameter.
      summary: Create a password
      operationId: passwordCreate
      parameters:
        - $ref: '#/components/parameters/userId'
      requestBody:
        $ref: '#/components/requestBodies/PasswordCreateRequest'
      responses:
        '200':
          $ref: '#/components/responses/PasswordResponse'
        '400':
          $ref: '#/components/responses/BadRequestError'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFoundToken'
        '409':
          $ref: '#/components/responses/CreatePasswordConflict'
        '410':
          $ref: '#/components/responses/TokenExpired'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '500':
          $ref: '#/components/responses/InternalServerError'
        '503':
          $ref: '#/components/responses/ServiceUnavailable'
        default:
          $ref: '#/components/responses/Error'
      security:
        - api-key: []
  /passwords/update:
    post:
      tags:
        - Passwords
      description: Update the password for the logged-in user.
      summary: Update a password
      operationId: passwordUpdate
      requestBody:
        $ref: '#/components/requestBodies/PasswordUpdateRequest'
      responses:
        '200':
          $ref: '#/components/responses/PasswordResponse'
        '400':
          $ref: '#/components/responses/BadRequestError'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFoundToken'
        '409':
          $ref: '#/components/responses/PasswordUpdateConflict'
        '410':
          $ref: '#/components/responses/TokenExpired'
        '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: []
  /passwords/validate:
    post:
      tags:
        - Passwords
      description: Check that a password adheres to all complexity checks.
      summary: Validate a password
      operationId: passwordValidate
      requestBody:
        $ref: '#/components/requestBodies/PasswordValidateRequest'
      responses:
        '204':
          $ref: '#/components/responses/NoContent'
        '400':
          $ref: '#/components/responses/BadRequestError'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFoundToken'
        '409':
          $ref: '#/components/responses/PasswordValidateConflict'
        '410':
          $ref: '#/components/responses/TokenExpired'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '500':
          $ref: '#/components/responses/InternalServerError'
        '503':
          $ref: '#/components/responses/ServiceUnavailable'
        default:
          $ref: '#/components/responses/Error'
      security:
        - api-key: []
  /passwords/lost_password/start:
    post:
      tags:
        - Passwords
      description: >
        Initiate the lost password process.


        If the email address provided is associated with an active user, an
        email will be sent, containing a URL that redirects the user to change
        their password.

        The URL contains request parameters for all of the parameters required
        to change the password for the user via the
        `/passwords/lost_password/resume` POST endpoint.
      summary: Initiate lost password process
      operationId: lostPasswordInitiate
      requestBody:
        $ref: '#/components/requestBodies/EmailRequest'
      responses:
        '204':
          $ref: '#/components/responses/NoContent'
        '400':
          $ref: '#/components/responses/BadRequestError'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '409':
          $ref: '#/components/responses/LostPasswordInitiateConflict'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '500':
          $ref: '#/components/responses/InternalServerError'
        '503':
          $ref: '#/components/responses/ServiceUnavailable'
        default:
          $ref: '#/components/responses/Error'
      security:
        - api-key: []
  /passwords/lost_password/resume:
    post:
      tags:
        - Passwords
      description: >-
        This is the second and final step in updating the password of a user who
        forgot their password.
      summary: Resume lost password process
      operationId: lostPasswordResume
      requestBody:
        $ref: '#/components/requestBodies/LostPasswordResumeRequest'
      responses:
        '200':
          $ref: '#/components/responses/TokenResponse'
        '400':
          $ref: '#/components/responses/BadRequestError'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFoundToken'
        '409':
          $ref: '#/components/responses/LostPasswordResumeConflict'
        '410':
          $ref: '#/components/responses/TokenExpired'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '500':
          $ref: '#/components/responses/InternalServerError'
        '503':
          $ref: '#/components/responses/ServiceUnavailable'
        default:
          $ref: '#/components/responses/Error'
      security:
        - api-key: []
  /authentication_factors:
    get:
      tags:
        - Authentication Factors
      description: >-
        Retrieves the list of authentication factors that can be used to verify
        the logged-in user.
      summary: Get user authentication factors
      operationId: authFactorsGet
      responses:
        '200':
          $ref: '#/components/responses/AuthFactorsGetResponse'
        '400':
          $ref: '#/components/responses/BadRequestError'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '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: []
  /authentication_factors/otp/{channel}:
    post:
      tags:
        - Authentication Factors
      description: >
        This is the first step in enrolling the logged-in user's mobile device,
        where a one-time password is sent to the device.


        _Note that on the Sandbox Environment, text messages are not sent and
        the one-time-password is always \"123456\"._
      summary: Enrol a user device for authentication using one-time passwords
      operationId: enrolDeviceUsingOtpStepOne
      parameters:
        - $ref: '#/components/parameters/idempotency-ref'
        - $ref: '#/components/parameters/channel'
      responses:
        '204':
          $ref: '#/components/responses/NoContent'
        '400':
          $ref: '#/components/responses/BadRequestError'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '409':
          $ref: '#/components/responses/EnrolDeviceUsingOtpStepOneConflict'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '500':
          $ref: '#/components/responses/InternalServerError'
        '503':
          $ref: '#/components/responses/ServiceUnavailable'
        default:
          $ref: '#/components/responses/Error'
      security:
        - api-key: []
          auth_token: []
  /authentication_factors/otp/{channel}/verify:
    post:
      tags:
        - Authentication Factors
      description: >
        The second step in enrolling the logged-in user (root or authorised
        user) to use one-time-passwords to enable verification of transactions.

        The challenge expires after 5 minutes and the number of incorrect OTP
        attempts is limited to reduce the risk of fraud, in that case challenge
        has to be issued again.


        _Note that on the Sandbox Environment, text messages are not sent and
        the `verificationCode` is always set to \"123456\"._
      summary: >-
        Verify enrolment of a user device for authentication using one-time
        passwords
      operationId: enrolDeviceUsingOtpStepTwo
      parameters:
        - $ref: '#/components/parameters/idempotency-ref'
        - $ref: '#/components/parameters/channel'
      requestBody:
        $ref: '#/components/requestBodies/SCAVerifyRequest'
      responses:
        '204':
          $ref: '#/components/responses/NoContent'
        '400':
          $ref: '#/components/responses/BadRequestError'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '409':
          $ref: '#/components/responses/EnrolDeviceUsingOtpStepTwoConflict'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '500':
          $ref: '#/components/responses/InternalServerError'
        '503':
          $ref: '#/components/responses/ServiceUnavailable'
        default:
          $ref: '#/components/responses/Error'
      security:
        - api-key: []
          auth_token: []
  /authentication_factors/push/{channel}:
    post:
      tags:
        - Authentication Factors
      description: >
        This is the first step in enrolling the logged-in user's mobile device,
        where a push notification is sent to the device.
      summary: Enrol a user device for authentication using push notifications
      operationId: enrolDeviceUsingPush
      parameters:
        - $ref: '#/components/parameters/idempotency-ref'
        - $ref: '#/components/parameters/authFactorsPushChannel'
      responses:
        '204':
          $ref: '#/components/responses/NoContent'
        '400':
          $ref: '#/components/responses/BadRequestError'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/InstrumentForbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '409':
          $ref: '#/components/responses/EnrolDeviceUsingPushConflict'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '500':
          $ref: '#/components/responses/InternalServerError'
        '503':
          $ref: '#/components/responses/ServiceUnavailable'
        default:
          $ref: '#/components/responses/Error'
      security:
        - api-key: []
          auth_token: []
    delete:
      tags:
        - Authentication Factors
      description: Unlink a user device for authentication using push notifications
      summary: Unlink a user device for authentication using push notifications
      operationId: unlinkDeviceUsingPush
      parameters:
        - $ref: '#/components/parameters/idempotency-ref'
        - $ref: '#/components/parameters/scaPushChannel'
      responses:
        '204':
          $ref: '#/components/responses/NoContent'
        '400':
          $ref: '#/components/responses/BadRequestError'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/InstrumentForbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '409':
          $ref: '#/components/responses/UnlinkDeviceUsingPushConflict'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '500':
          $ref: '#/components/responses/InternalServerError'
        '503':
          $ref: '#/components/responses/ServiceUnavailable'
        default:
          $ref: '#/components/responses/Error'
      security:
        - api-key: []
          auth_token: []
  /challenges/otp/{channel}:
    post:
      tags:
        - Confirmation Challenges
      description: >
        Starts the verification process for a list of resources in which a
        one-time password is sent to a device belonging to the logged-in user
        that was previously enrolled through the
        `/authentication_factors/otp/{channel}` endpoint. 


        This endpoint can be used to challenge _Outgoing Wire Transfers_,
        _Sends_, and _Linked Account Declarations_.


        You should only start this process if the operation `state` is
        `PENDING_CHALLENGE`.


        _Note that on the Sandbox Environment, text messages are not sent and
        the one-time-password is always \"123456\"._
      summary: Issue a one-time password that can be used to verify a list of resources
      operationId: multipleSCAChallenge
      parameters:
        - $ref: '#/components/parameters/idempotency-ref'
        - $ref: '#/components/parameters/channel'
      requestBody:
        $ref: '#/components/requestBodies/MultipleSCAChallengeRequest'
      responses:
        '200':
          $ref: '#/components/responses/SCAChallengeResponse'
        '400':
          $ref: '#/components/responses/BadRequestError'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '405':
          $ref: '#/components/responses/MethodNotAllowed'
        '409':
          $ref: '#/components/responses/MultipleSCAChallengeConflict'
        '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: []
  /challenges/{scaChallengeId}/otp/{channel}/verify:
    post:
      tags:
        - Confirmation Challenges
      description: >
        Completes the verification process for a list of resources.


        This endpoint can be used to challenge _Outgoing Wire Transfers_ &
        _Sends_.


        If the outcome of the verification is successful, the resource is
        executed.


        If not verified challenge expires after 5 minutes and the number of
        incorrect OTP attempts is limited to reduce the risk of fraud.


        _Note that on the Sandbox Environment, text messages are not sent and
        the `verificationCode` is always \"123456\"._
      summary: Verify a list of resources using a one-time password
      operationId: multipleSCAVerify
      parameters:
        - $ref: '#/components/parameters/idempotency-ref'
        - name: scaChallengeId
          in: path
          required: true
          description: The unique identifier of the SCA challenge.
          schema:
            type: string
            pattern: ^[0-9]+$
        - $ref: '#/components/parameters/channel'
      requestBody:
        $ref: '#/components/requestBodies/MultipleSCAVerifyRequest'
      responses:
        '204':
          $ref: '#/components/responses/NoContent'
        '400':
          $ref: '#/components/responses/BadRequestError'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '409':
          $ref: '#/components/responses/MultipleSCAVerifyConflict'
        '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: []
  /challenges/push/{channel}:
    post:
      tags:
        - Confirmation Challenges
      description: >
        Starts the verification process for a list of resources in which a push
        notification is sent to a device belonging to the logged-in user that
        was previously enrolled through the
        `/authentication_factors/push/{channel}` endpoint.


        This endpoint can be used to challenge _Outgoing Wire Transfers_ &
        _Sends_.


        You should only start this process if the resource `state` is
        `PENDING_CHALLENGE`.
      summary: Issue a push notification that can be used to verify a list of resources
      operationId: multipleSCAChallengePush
      parameters:
        - $ref: '#/components/parameters/idempotency-ref'
        - $ref: '#/components/parameters/scaPushChannel'
      requestBody:
        $ref: '#/components/requestBodies/MultipleSCAChallengeRequest'
      responses:
        '200':
          $ref: '#/components/responses/SCAChallengeResponse'
        '400':
          $ref: '#/components/responses/BadRequestError'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '405':
          $ref: '#/components/responses/MethodNotAllowed'
        '409':
          $ref: '#/components/responses/MultipleSCAChallengePushConflict'
        '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: []
  /access_token:
    post:
      tags:
        - Access
      description: >
        This API endpoint accepts a POST request with an auth_token parameter
        and returns an access_token that grants authorized access to additional
        resources within the API, with a different expiration time and unique
        signature.
      summary: Acquire a new access token
      operationId: requestAccessToken
      requestBody:
        $ref: '#/components/requestBodies/AccessTokenRequest'
      responses:
        '200':
          $ref: '#/components/responses/AccessTokenResponse'
        '400':
          $ref: '#/components/responses/BadRequestError'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          description: The auth token is not specified or is incorrect.
        '423':
          $ref: '#/components/responses/Locked'
        '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: []
        - api-key: []
  /users:
    post:
      x-permissions:
        - i:users:create
      tags:
        - Authorised Users
      description: >
        Creates a user linked to the logged-in corporate or consumer identity.


        Once on-boarded, users have access to all instruments (cards and
        accounts) of the identity.


        Application-specific permissions to limit what each user can view and do
        need to be implemented in your application.


        In order to Create an Authorised User you would need a stepped-up token.
        Before calling `/multi/users` you need to step-up ( issue a challenge
        `multi/stepup/challenges/otp/{channel}` )


        More details on how to step-up a token can be found here
        [Step-Up](/tag/Step-up#operation/stepupSCAChallenge ) 
      summary: Create a user
      operationId: userCreate
      parameters:
        - $ref: '#/components/parameters/idempotency-ref'
      requestBody:
        $ref: '#/components/requestBodies/UserCreateRequest'
      responses:
        '200':
          $ref: '#/components/responses/UserResponse'
        '400':
          $ref: '#/components/responses/BadRequestError'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/UserForbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '409':
          $ref: '#/components/responses/UserCreateConflict'
        '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:
        - Authorised Users
      description: >-
        Fetches all users associated with the corporate or consumer identity the
        logged-in user belongs to.
      summary: Get all users
      operationId: usersGet
      x-permissions:
        - i:users:list
      parameters:
        - $ref: '#/components/parameters/offset'
        - $ref: '#/components/parameters/limit'
        - $ref: '#/components/parameters/active'
        - $ref: '#/components/parameters/email'
        - $ref: '#/components/parameters/tag'
      responses:
        '200':
          $ref: '#/components/responses/UsersGetResponse'
        '400':
          $ref: '#/components/responses/BadRequestError'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '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: []
  /bulks:
    get:
      description: Filter bulk processes.
      summary: Get all bulk processes
      operationId: bulks
      x-permissions:
        - i:bulks:list
      tags:
        - Manage
      parameters:
        - $ref: '#/components/parameters/offset'
        - $ref: '#/components/parameters/limit'
        - $ref: '#/components/parameters/bulkProcessStatus'
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BulkProcessesPaged'
        '400':
          $ref: '#/components/responses/BadRequestError'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '409':
          $ref: '#/components/responses/BulkProcessorConflictResponse'
        '500':
          $ref: '#/components/responses/InternalServerError'
        '503':
          $ref: '#/components/responses/ServiceUnavailable'
        default:
          $ref: '#/components/responses/Error'
      security:
        - auth_token: []
          api-key: []
  /bulks/{bulk_id}:
    get:
      tags:
        - Manage
      description: >-
        Retrieves details on the bulk process identified by the bulk_id
        parameter.
      summary: Get bulk process
      operationId: bulkId
      x-permissions:
        - i:bulks:get
      parameters:
        - $ref: '#/components/parameters/bulkId'
      responses:
        '200':
          $ref: '#/components/responses/BulkProcessDetails'
        '400':
          $ref: '#/components/responses/BadRequestError'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/InternalServerError'
        '503':
          $ref: '#/components/responses/ServiceUnavailable'
        default:
          $ref: '#/components/responses/Error'
      security:
        - auth_token: []
          api-key: []
  /bulks/{bulk_id}/operations:
    get:
      tags:
        - Manage
      description: Retrieves the bulk process operations that match the query parameters.
      summary: Get all operations in a bulk
      operationId: bulkIdOperations
      x-permissions:
        - i:bulks:get_operations
      parameters:
        - $ref: '#/components/parameters/bulkId'
        - $ref: '#/components/parameters/offset'
        - $ref: '#/components/parameters/limit'
        - $ref: '#/components/parameters/sequence'
        - $ref: '#/components/parameters/bulkProcessOperationStatus'
      responses:
        '200':
          $ref: '#/components/responses/BulkProcessOperations'
        '400':
          $ref: '#/components/responses/BadRequestError'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/InternalServerError'
        '503':
          $ref: '#/components/responses/ServiceUnavailable'
        default:
          $ref: '#/components/responses/Error'
      security:
        - auth_token: []
          api-key: []
  /bulks/{bulk_id}/execute:
    post:
      tags:
        - Manage
      description: >
        Launches execution of operations of any bulk process identified by the
        bulk_id  parameter.


        The status of the bulk process has to be in a ‘SUBMITTED’ state and
        after execution initiates, the bulk process state is set to ‘RUNNING’.


        The final state of execution can be any of


        COMPLETED: the execution of the bulk process is complete and all bulk
        operations of the bulk process were executed successfully


        FAILED:  none of the operations of the bulk process have executed.


        PARTIALLY_COMPLETED: the execution of the bulk process is complete and
        some of the bulk operations of the bulk process failed.


        This operation is asynchronous and will return immediately. You can
        track the status of the execution of the bulk process through Get bulk
        process. You can also pause execution through _bulkIdPause_
      summary: Execute bulk process
      operationId: bulkIdExecute
      x-permissions:
        - i:bulks:execute
      parameters:
        - $ref: '#/components/parameters/bulkId'
      requestBody:
        $ref: '#/components/requestBodies/BulkProcessExecute'
      responses:
        '204':
          $ref: '#/components/responses/NoContent'
        '400':
          $ref: '#/components/responses/BadRequestError'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '409':
          $ref: '#/components/responses/BulkProcessorConflictResponse'
        '500':
          $ref: '#/components/responses/InternalServerError'
        '503':
          $ref: '#/components/responses/ServiceUnavailable'
        default:
          $ref: '#/components/responses/Error'
      security:
        - auth_token: []
          api-key: []
  /bulks/{bulk_id}/pause:
    post:
      tags:
        - Manage
      description: >
        Pauses the execution of operations of the bulk process that is in state
        ‘RUNNING’ as identified by the bulk_id  parameter.


        The status of the bulk process after execution of this operation is set
        to ‘PAUSED’


        The execution can be resumed through _bulkIdResume_
      summary: Pause bulk process
      operationId: bulkIdPause
      x-permissions:
        - i:bulks:pause_and_resume
      parameters:
        - $ref: '#/components/parameters/bulkId'
      responses:
        '204':
          $ref: '#/components/responses/NoContent'
        '400':
          $ref: '#/components/responses/BadRequestError'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '409':
          $ref: '#/components/responses/BulkProcessorConflictResponse'
        '500':
          $ref: '#/components/responses/InternalServerError'
        '503':
          $ref: '#/components/responses/ServiceUnavailable'
        default:
          $ref: '#/components/responses/Error'
      security:
        - auth_token: []
          api-key: []
  /bulks/{bulk_id}/resume:
    post:
      tags:
        - Manage
      description: >
        Resumes the execution of operations of the bulk process that is in state
        ' PAUSED' as identified by the bulk_id parameter.


        The status of the bulk process after execution of this operation is set
        back to ‘RUNNING’
      summary: Resume bulk process
      operationId: bulkIdResume
      x-permissions:
        - i:bulks:pause_and_resume
      parameters:
        - $ref: '#/components/parameters/bulkId'
      responses:
        '204':
          $ref: '#/components/responses/NoContent'
        '400':
          $ref: '#/components/responses/BadRequestError'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '409':
          $ref: '#/components/responses/BulkProcessorConflictResponse'
        '500':
          $ref: '#/components/responses/InternalServerError'
        '503':
          $ref: '#/components/responses/ServiceUnavailable'
        default:
          $ref: '#/components/responses/Error'
      security:
        - auth_token: []
          api-key: []
  /bulks/{bulk_id}/cancel:
    post:
      tags:
        - Manage
      description: >
        Cancels the execution of operations of a bulk process that is in state
        ‘PAUSED’ or ‘RUNNING’ as identified by the bulk_id parameter.


        The status of the bulk process after execution of this operation is set 
        to ‘CANCELLED’. This is a final state and a cancelled bulk process
        cannot be resumed.
      summary: Cancel bulk process
      operationId: bulkIdCancel
      x-permissions:
        - i:bulks:cancel
      parameters:
        - $ref: '#/components/parameters/bulkId'
      responses:
        '204':
          $ref: '#/components/responses/NoContent'
        '400':
          $ref: '#/components/responses/BadRequestError'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '409':
          $ref: '#/components/responses/BulkProcessorConflictResponse'
        '500':
          $ref: '#/components/responses/InternalServerError'
        '503':
          $ref: '#/components/responses/ServiceUnavailable'
        default:
          $ref: '#/components/responses/Error'
      security:
        - auth_token: []
          api-key: []
  /users/{user_id}:
    get:
      tags:
        - Authorised Users
      description: Retrieves the user identified by the `user_id` path parameter.
      summary: Get a user
      operationId: userGetById
      x-permissions:
        - i:users:get
      parameters:
        - $ref: '#/components/parameters/userId'
      responses:
        '200':
          $ref: '#/components/responses/UserResponse'
        '400':
          $ref: '#/components/responses/BadRequestError'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '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:
        - Authorised Users
      description: >
        Update the details of a user identified by the `user_id` in the the path
        parameter.


        Only the fields that are specified in the request body will be updated.
        All other fields will remain unchanged.


        When patching a mobile number, the new mobile number should be enrolled
        for Additional Factors.
      summary: Update a user
      operationId: userUpdate
      x-permissions:
        - i:users:update
      parameters:
        - $ref: '#/components/parameters/userId'
        - $ref: '#/components/parameters/idempotency-ref'
      requestBody:
        $ref: '#/components/requestBodies/UserPatchRequest'
      responses:
        '200':
          $ref: '#/components/responses/UserResponse'
        '400':
          $ref: '#/components/responses/BadRequestError'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '409':
          $ref: '#/components/responses/UserPatchConflict'
        '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: []
  /users/{user_id}/activate:
    post:
      tags:
        - Authorised Users
      description: >
        Activate the user identified by the `user_id` path parameter.


        By default, any new users created will be automatically activated. This
        operation needs to be used only if the user was previously de-activated
        using the _userDeactivate_ operation, or if the user was de-activated
        automatically after multiple incorrect login attempts.
      summary: Activate a user
      operationId: userActivate
      x-permissions:
        - i:users:activate
      parameters:
        - $ref: '#/components/parameters/userId'
      responses:
        '204':
          $ref: '#/components/responses/NoContent'
        '400':
          $ref: '#/components/responses/BadRequestError'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '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: []
  /users/{user_id}/deactivate:
    post:
      tags:
        - Authorised Users
      description: >
        De-activate the user identified by the `user_id` path parameter.


        Deactivated users cannot log in or execute any operations with their
        credentials.


        This operations is not final and a user can be re-activated using the
        userActivate operation. Note that another active user would need to log
        in so as to re-activate the de-activated user.
      summary: Deactivate a user
      operationId: userDeactivate
      x-permissions:
        - i:users:deactivate
      parameters:
        - $ref: '#/components/parameters/userId'
      responses:
        '204':
          $ref: '#/components/responses/NoContent'
        '400':
          $ref: '#/components/responses/BadRequestError'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '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: []
  /users/{user_id}/invite:
    post:
      x-permissions:
        - i:users:send_invite
      tags:
        - Authorised Users
      summary: Send a user invite
      operationId: userInviteSend
      description: >
        Once a user is created using the _userCreate_ operation, the user needs
        to setup his/her password.


        An invitation needs to be sent to the user in order to be able to set up
        the password for the first time. The invitation email, which remains
        valid for 1 month, will contain a URL having all information required to
        setup the password via the _userInviteConsume_.
      parameters:
        - $ref: '#/components/parameters/idempotency-ref'
        - $ref: '#/components/parameters/userIdExplode'
      responses:
        '204':
          $ref: '#/components/responses/NoContent'
        '400':
          $ref: '#/components/responses/BadRequestError'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '409':
          $ref: '#/components/responses/UserInviteSendConflict'
        '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: []
  /users/{user_id}/invite/validate:
    post:
      tags:
        - Authorised Users
      description: >-
        Check if a user's invite is still valid. This operation is useful to
        avoid having the user fill in a form only to be held by a validation
        issue (eg. expired invite).
      summary: Validate a user invite
      operationId: userInviteValidate
      parameters:
        - $ref: '#/components/parameters/userIdExplode'
      requestBody:
        $ref: '#/components/requestBodies/UserInviteValidateRequest'
      responses:
        '204':
          $ref: '#/components/responses/NoContent'
        '400':
          $ref: '#/components/responses/BadRequestError'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '409':
          $ref: '#/components/responses/UserInviteValidateConflict'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '500':
          $ref: '#/components/responses/InternalServerError'
        '503':
          $ref: '#/components/responses/ServiceUnavailable'
        default:
          $ref: '#/components/responses/Error'
      security:
        - api-key: []
  /users/{user_id}/invite/consume:
    post:
      tags:
        - Authorised Users
      description: >
        Consumes an invitation perviously sent to the user via _userInviteSend_.
        This is needed so that the invited user sets up the password.


        _Note that on the Sandbox Environment, the `inviteCode` is always set to
        \"123456\"._
      summary: Consume a user invite
      operationId: userInviteConsume
      parameters:
        - $ref: '#/components/parameters/idempotency-ref'
        - $ref: '#/components/parameters/userIdExplode'
      requestBody:
        $ref: '#/components/requestBodies/UserInviteConsumeRequest'
      responses:
        '200':
          $ref: '#/components/responses/TokenResponse'
        '400':
          $ref: '#/components/responses/BadRequestError'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFoundToken'
        '409':
          $ref: '#/components/responses/UserInviteConsumeConflict'
        '410':
          $ref: '#/components/responses/TokenExpired'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '500':
          $ref: '#/components/responses/InternalServerError'
        '503':
          $ref: '#/components/responses/ServiceUnavailable'
        default:
          $ref: '#/components/responses/Error'
      security:
        - api-key: []
  /users/verification/email/send:
    post:
      tags:
        - Authorised Users
      description: >
        The first step in verifying an authorised user's email. The authorised
        user whose email address is to be verified is sent an email containing a
        randomly generated code.


        This code must then be provided in the _authorisedUserEmailVerify_
        operation to verify the authorised user's email address.


        _Note that on the Sandbox Environment, the `verificationCode` is always
        set to \"123456\"._
      summary: Send an email verification code to the authorised user
      operationId: authorisedUserEmailVerificationCodeSend
      parameters:
        - $ref: '#/components/parameters/idempotency-ref'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              required:
                - email
              type: object
              properties:
                email:
                  $ref: '#/components/schemas/Email'
      responses:
        '204':
          $ref: '#/components/responses/NoContent'
        '400':
          $ref: '#/components/responses/BadRequestError'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                type: object
                properties:
                  errorCode:
                    type: string
                    enum:
                      - EMAIL_NOT_FOUND
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '500':
          $ref: '#/components/responses/InternalServerError'
        '503':
          $ref: '#/components/responses/ServiceUnavailable'
        default:
          $ref: '#/components/responses/Error'
      security:
        - api-key: []
  /users/verification/email/verify:
    post:
      tags:
        - Authorised Users
      description: >
        The second step in verifying the authorised user's email. The randomly
        generated code sent to the authorised user via

        email, using the _authorisedUserEmailVerificationCodeSend_ operation, is
        submitted here to verify the authorised user's email.


        This is needed as part of the verification process for basic due
        diligence.


        _Note that on the Sandbox Environment, the `verificationCode` is always
        set to \"123456\"._
      summary: Verify email of the authorised user
      operationId: authorisedUserEmailVerify
      requestBody:
        required: true
        content:
          application/json:
            schema:
              required:
                - email
                - verificationCode
              type: object
              properties:
                email:
                  $ref: '#/components/schemas/Email'
                verificationCode:
                  $ref: '#/components/schemas/VerificationCode'
      responses:
        '204':
          $ref: '#/components/responses/NoContent'
        '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:
                      - VERIFICATION_CODE_INVALID
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '500':
          $ref: '#/components/responses/InternalServerError'
        '503':
          $ref: '#/components/responses/ServiceUnavailable'
        default:
          description: Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - api-key: []
  /users/kyc:
    post:
      tags:
        - Authorised Users
      description: |
        Perform the kyc for a corporate user.
      summary: Start KYC for the user
      operationId: userKyc
      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'
        '404':
          $ref: '#/components/responses/NotFound'
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                type: object
                properties:
                  errorCode:
                    type: string
                    enum:
                      - EMAIL_NOT_VERIFIED
                      - MOBILE_NOT_VERIFIED
                      - KYC_ALREADY_APPROVED
                      - KYC_PENDING_REVIEW
                      - KYC_REJECTED
                      - KYB_IDENTITY_NOT_APPROVED
        '500':
          $ref: '#/components/responses/InternalServerError'
        '503':
          $ref: '#/components/responses/ServiceUnavailable'
        default:
          description: Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - api-key: []
  /corporates:
    post:
      tags:
        - Corporates
      description: >-
        Create a corporate identity for a business customer.  The information
        provided must be accurate and will be passed on for KYB verification
        with our partner.
      summary: Create a corporate
      operationId: corporateCreate
      parameters:
        - $ref: '#/components/parameters/idempotency-ref'
      requestBody:
        $ref: '#/components/requestBodies/CorporateCreateRequest'
      responses:
        '200':
          $ref: '#/components/responses/CreateCorporateResponse'
        '400':
          $ref: '#/components/responses/BadRequestError'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '409':
          $ref: '#/components/responses/CorporateCreateConflict'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '500':
          $ref: '#/components/responses/InternalServerError'
        '503':
          $ref: '#/components/responses/ServiceUnavailable'
        default:
          $ref: '#/components/responses/Error'
      security:
        - api-key: []
    get:
      tags:
        - Corporates
      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:
        - Corporates
      description: >
        Update the details of the logged-in corporate identity.


        The following Corporate details are verified during due diligence (KYB)
        and cannot be updated via the API once the Corporate has been verified:
          - Root User Name
          - Root User Surname
          - Root User Email
          - Root User Mobile Country Code
          - Root User Mobile Number
          - Business Address
          - Date of birth

        *If these details need to be changed after due diligence is completed,
        please contact Customer Support to restart the Due Diligence process.*
      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/verification/email/send:
    post:
      tags:
        - Corporates
      description: >
        The first step in verifying a root user's email. The root user whose
        email address is to be verified is sent an email containing a randomly
        generated code.


        This code must then be provided in the _corporateRootUserEmailVerify_
        operation to verify the root user's email address.


        _Note that on the Sandbox Environment, the `verificationCode` is always
        set to \"123456\"._
      summary: Send an email verification code to the root user
      operationId: corporateRootUserEmailVerificationCodeSend
      parameters:
        - $ref: '#/components/parameters/idempotency-ref'
      requestBody:
        $ref: '#/components/requestBodies/EmailRequest'
      responses:
        '204':
          $ref: '#/components/responses/NoContent'
        '400':
          $ref: '#/components/responses/BadRequestError'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
        '409':
          $ref: '#/components/responses/EmailVerificationConflict'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '500':
          $ref: '#/components/responses/InternalServerError'
        '503':
          $ref: '#/components/responses/ServiceUnavailable'
        default:
          $ref: '#/components/responses/Error'
      security:
        - api-key: []
  /corporates/verification/email/verify:
    post:
      tags:
        - Corporates
      description: >
        The second step in verifying the root user's email. The randomly
        generated code sent to the root user via

        email, using the _corporateRootUserEmailVerificationCodeSend_ operation,
        is submitted here to verify the root user's email.


        This is needed as part of the verification process for basic due
        diligence.


        _Note that on the Sandbox Environment, the `verificationCode` is always
        set to \"123456\"._
      summary: Verify email of the root user
      operationId: corporateRootUserEmailVerify
      requestBody:
        $ref: '#/components/requestBodies/EmailVerifyRequest'
      responses:
        '204':
          $ref: '#/components/responses/NoContent'
        '400':
          $ref: '#/components/responses/BadRequestError'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '409':
          $ref: '#/components/responses/VerifyConflict'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '500':
          $ref: '#/components/responses/InternalServerError'
        '503':
          $ref: '#/components/responses/ServiceUnavailable'
        default:
          $ref: '#/components/responses/Error'
      security:
        - api-key: []
  /corporates/kyb:
    post:
      tags:
        - Corporates
      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
        '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:
        - Corporates
      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: []
  /corporates/fees/charge:
    post:
      tags:
        - Corporates
      description: >
        Charge a fee to the corporate identified by the auth token, 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 corporate
      operationId: corporateChargeFee
      x-permissions:
        - i:corporates:charge_fee
      parameters:
        - $ref: '#/components/parameters/idempotency-ref'
      requestBody:
        $ref: '#/components/requestBodies/ChargeFeeRequest'
      responses:
        '200':
          $ref: '#/components/responses/ChargeFeeResponse'
        '400':
          $ref: '#/components/responses/BadRequestError'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '409':
          $ref: '#/components/responses/ChargeFeeConflict'
        '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:
    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: Create 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: []
    get:
      tags:
        - Consumers
      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:
        - Consumers
      description: >
        Update the details of the logged-in consumer identity.


        If the Consumer root user has already completed KYC, the following
        details cannot be updated:
          - name
          - surname
          - email
          - mobile Country Code
          - mobile Number
          - date of Birth
          - address
      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/verification/email/send:
    post:
      tags:
        - Consumers
      description: >
        The first step in verifying a root user's email. The root user whose
        email address is to be verified is sent an email containing a randomly
        generated code.


        This code must then be provided in the _consumerRootUserEmailVerify_
        operation to verify the root user's email address.


        Note that on the Sandbox Environment, the `verificationCode` is always
        set to \"123456\".
      summary: Send an email verification code to the root user
      operationId: consumerRootUserEmailVerificationCodeSend
      requestBody:
        $ref: '#/components/requestBodies/EmailRequest'
      responses:
        '204':
          $ref: '#/components/responses/NoContent'
        '400':
          $ref: '#/components/responses/BadRequestError'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '409':
          $ref: '#/components/responses/EmailVerificationConflict'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '500':
          $ref: '#/components/responses/InternalServerError'
        '503':
          $ref: '#/components/responses/ServiceUnavailable'
        default:
          $ref: '#/components/responses/Error'
      security:
        - api-key: []
  /consumers/verification/email/verify:
    post:
      tags:
        - Consumers
      description: >
        The second step in verifying the root user's email. The randomly
        generated code sent to the root user via

        email, using the _consumerRootUserEmailVerificationCodeSend_ operation,
        is submitted here to verify the root user's email.


        This is needed as part of the verification process for basic due
        diligence.


        Note that on the Sandbox Environment, emails are not sent and the
        verification code is always set to \"123456\".
      summary: Verify email of the root user
      operationId: consumerRootUserEmailVerify
      requestBody:
        $ref: '#/components/requestBodies/EmailVerifyRequest'
      responses:
        '204':
          $ref: '#/components/responses/NoContent'
        '400':
          $ref: '#/components/responses/BadRequestError'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '409':
          $ref: '#/components/responses/VerifyConflict'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '500':
          $ref: '#/components/responses/InternalServerError'
        '503':
          $ref: '#/components/responses/ServiceUnavailable'
        default:
          $ref: '#/components/responses/Error'
      security:
        - api-key: []
  /consumers/kyc:
    post:
      tags:
        - Consumers
      description: >
        Consumers need to complete due diligence (KYC) before they can create
        instruments and fund transaction.


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


        Due 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.


        To initialise the KYC UI Component, you need a `reference` that is given
        to you in the response of this operation.
      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:
        - Consumers
      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: []
  /consumers/fees/charge:
    post:
      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
      x-permissions:
        - i:consumers:charge_fee
      parameters:
        - $ref: '#/components/parameters/idempotency-ref'
      requestBody:
        $ref: '#/components/requestBodies/ChargeFeeRequest'
      responses:
        '200':
          $ref: '#/components/responses/ChargeFeeResponse'
        '400':
          $ref: '#/components/responses/BadRequestError'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '409':
          $ref: '#/components/responses/ChargeFeeConflict'
        '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: []
  /linked_accounts:
    post:
      tags:
        - Linked Accounts
      description: >
        A Linked Account is an entity in the Weavr system that represents an
        external bank account or PSP account which the Identity has verified
        that they own and control. This feature enables users to perform
        transactions, such as outgoing and incoming wire transfers, between
        their Linked Accounts and their Managed Accounts in a way that can be
        recorded as a self-to-self transfer.
      summary: Add a linked account
      operationId: linkedAccountCreate
      x-permissions:
        - i:linked_accounts:create
      parameters:
        - $ref: '#/components/parameters/idempotency-ref'
      requestBody:
        $ref: '#/components/requestBodies/LinkedAccountCreationRequest'
      responses:
        '200':
          $ref: '#/components/responses/LinkedAccountResponse'
        '400':
          $ref: '#/components/responses/BadRequestError'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/InstrumentForbidden'
        '409':
          $ref: '#/components/responses/LinkedAccountRegisterConflict'
        '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:
        - Linked Accounts
      description: Retrieves all the Linked Accounts belonging to the logged-in Identity.
      summary: Get all linked accounts
      operationId: linkedAccountsGet
      x-permissions:
        - i:linked_accounts:list
      parameters:
        - $ref: '#/components/parameters/offset'
        - $ref: '#/components/parameters/limit'
        - $ref: '#/components/parameters/profileId'
        - $ref: '#/components/parameters/friendlyName'
        - $ref: '#/components/parameters/state'
        - $ref: '#/components/parameters/currency'
        - $ref: '#/components/parameters/createdFrom'
        - $ref: '#/components/parameters/createdTo'
        - $ref: '#/components/parameters/tag'
      responses:
        '200':
          $ref: '#/components/responses/LinkedAccountsGetResponse'
        '400':
          $ref: '#/components/responses/BadRequestError'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/InstrumentForbidden'
        '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: []
  /linked_accounts/{id}:
    get:
      tags:
        - Linked Accounts
      description: Fetch the Linked Account identified by the `id` in path.
      summary: Get a linked account
      operationId: linkedAccountGet
      x-permissions:
        - i:linked_accounts:get
      parameters:
        - name: id
          in: path
          required: true
          description: The unique identifier of the Linked Account.
          schema:
            type: string
            pattern: ^[0-9]+$
      responses:
        '200':
          $ref: '#/components/responses/LinkedAccountResponse'
        '400':
          $ref: '#/components/responses/BadRequestError'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/InstrumentForbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '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:
        - Linked Accounts
      description: >-
        Update the details for the linked account identified by the `id` in the
        path.
      summary: Update a linked account
      operationId: linkedAccountUpdate
      x-permissions:
        - i:linked_accounts:update
      parameters:
        - name: id
          in: path
          required: true
          description: The unique identifier of the linked account.
          schema:
            type: string
            pattern: ^[0-9]+$
      requestBody:
        $ref: '#/components/requestBodies/LinkedAccountMetadataUpdateRequest'
      responses:
        '200':
          $ref: '#/components/responses/LinkedAccountResponse'
        '400':
          $ref: '#/components/responses/BadRequestError'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/InstrumentForbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '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: []
  /linked_accounts/{id}/remove:
    post:
      tags:
        - Linked Accounts
      description: >
        Removes the linked account identified by the `id` path parameter. Unlike
        block, this action is not reversible.
      summary: Remove a linked account
      operationId: linkedAccountRemove
      x-permissions:
        - i:linked_accounts:remove
      parameters:
        - name: id
          in: path
          required: true
          description: The unique identifier of the linked account.
          schema:
            type: string
            pattern: ^[0-9]+$
      responses:
        '204':
          $ref: '#/components/responses/NoContent'
        '400':
          $ref: '#/components/responses/BadRequestError'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '409':
          $ref: '#/components/responses/LinkedAccountRemoveConflict'
        '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: []
  /linked_accounts/{id}/block:
    post:
      tags:
        - Linked Accounts
      description: Temporarily blocks a linked account.
      summary: Block a linked account
      operationId: linkedAccountBlock
      x-permissions:
        - i:linked_accounts:block
      parameters:
        - name: id
          in: path
          description: The unique identifier of the linked account.
          required: true
          style: simple
          schema:
            type: string
            pattern: ^[0-9]+$
        - $ref: '#/components/parameters/idempotency-ref'
      responses:
        '204':
          $ref: '#/components/responses/NoContent'
        '400':
          $ref: '#/components/responses/BadRequestError'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '409':
          $ref: '#/components/responses/LinkedAccountBlockConflict'
        '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: []
  /linked_accounts/{id}/unblock:
    post:
      tags:
        - Linked Accounts
      description: |
        Unblocks the linked account identified by the `id` path parameter.
      summary: Unblock a linked account
      operationId: linkedAccountUnblock
      x-permissions:
        - i:linked_accounts:unblock
      parameters:
        - name: id
          in: path
          description: The unique identifier of the linked account.
          required: true
          style: simple
          schema:
            type: string
            pattern: ^[0-9]+$
        - $ref: '#/components/parameters/idempotency-ref'
      responses:
        '204':
          $ref: '#/components/responses/NoContent'
        '400':
          $ref: '#/components/responses/BadRequestError'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '409':
          $ref: '#/components/responses/LinkedAccountUnblockConflict'
        '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: []
  /linked_accounts/{id}/verifications:
    get:
      tags:
        - Linked Accounts
      description: ''
      summary: Get linked account verifications
      operationId: linkedAccountVerificationsGet
      x-permissions:
        - i:linked_accounts:get_verifications
      parameters:
        - name: id
          in: path
          required: true
          description: The unique identifier of the linked account.
          schema:
            type: string
            pattern: ^[0-9]+$
        - $ref: '#/components/parameters/offset'
        - $ref: '#/components/parameters/limit'
        - $ref: '#/components/parameters/verificationRunState'
      responses:
        '200':
          $ref: '#/components/responses/LinkedAccountVerificationRunsGetResponse'
        '400':
          $ref: '#/components/responses/BadRequestError'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/InstrumentForbidden'
        '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: []
  /managed_accounts:
    get:
      tags:
        - Managed Accounts
      description: Retrieves all managed accounts belonging to the logged-in identity.
      summary: Get all managed accounts
      operationId: managedAccountsGet
      x-permissions:
        - i:managed_accounts:list
      parameters:
        - $ref: '#/components/parameters/offset'
        - $ref: '#/components/parameters/limit'
        - $ref: '#/components/parameters/profileId'
        - $ref: '#/components/parameters/friendlyName'
        - $ref: '#/components/parameters/state'
        - $ref: '#/components/parameters/state_blockedReason'
        - $ref: '#/components/parameters/state_destroyedReason'
        - $ref: '#/components/parameters/currency'
        - $ref: '#/components/parameters/createdFrom'
        - $ref: '#/components/parameters/createdTo'
        - $ref: '#/components/parameters/tag'
      responses:
        '200':
          $ref: '#/components/responses/ManagedAccountsGetResponse'
        '400':
          $ref: '#/components/responses/BadRequestError'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/InstrumentForbidden'
        '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: []
    post:
      tags:
        - Managed Accounts
      description: >
        Creates a managed account for the consumer or corporate identity.

        The Managed Account Profile (configured in the Multi Portal) specified
        determines the behavior and restrictions that the managed account will
        have."
      summary: Create a managed account
      operationId: managedAccountCreate
      x-permissions:
        - i:managed_accounts:create
      parameters:
        - $ref: '#/components/parameters/idempotency-ref'
      requestBody:
        $ref: '#/components/requestBodies/ManagedAccountCreateRequest'
      responses:
        '200':
          $ref: '#/components/responses/ManagedAccountResponse'
        '400':
          $ref: '#/components/responses/BadRequestError'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/InstrumentForbidden'
        '409':
          $ref: '#/components/responses/ManagedAccountCreateConflict'
        '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: []
  /managed_accounts/{id}:
    get:
      tags:
        - Managed Accounts
      description: Fetch the managed account identified by the `id` in path.
      summary: Get a managed account
      operationId: managedAccountGet
      x-permissions:
        - i:managed_accounts:get
      parameters:
        - name: id
          in: path
          required: true
          description: The unique identifier of the Managed Account.
          schema:
            type: string
            pattern: ^[0-9]+$
      responses:
        '200':
          $ref: '#/components/responses/ManagedAccountResponse'
        '400':
          $ref: '#/components/responses/BadRequestError'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/InstrumentForbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '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:
        - Managed Accounts
      description: >-
        Update the details for the managed account identified by the `id` in the
        path.
      summary: Update a managed account
      operationId: managedAccountUpdate
      x-permissions:
        - i:managed_accounts:update
      parameters:
        - name: id
          in: path
          required: true
          description: The unique identifier of the managed account.
          schema:
            type: string
            pattern: ^[0-9]+$
      requestBody:
        $ref: '#/components/requestBodies/ManagedAccountUpdateRequest'
      responses:
        '200':
          $ref: '#/components/responses/ManagedAccountResponse'
        '400':
          $ref: '#/components/responses/BadRequestError'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/InstrumentForbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '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: []
  /managed_accounts/{id}/iban:
    post:
      tags:
        - Managed Accounts
      description: >
        Assign an IBAN to a Managed Account.


        IBANs enable managed accounts to receive and send funds via wire
        transfers.


        Assigning an IBAN to a Managed Account may be done asynchronously, in
        which case the `ManagedAccountIBAN.state` will be set to
        `PENDING_ALLOCATION` until bank details are ready to use.
      summary: Upgrade a managed account with IBAN
      operationId: managedAccountsIBANUpgrade
      x-permissions:
        - i:managed_accounts:add_iban
      parameters:
        - name: id
          in: path
          required: true
          style: simple
          explode: false
          description: The unique identifier of the Managed Account.
          schema:
            type: string
            pattern: ^[0-9]+$
        - $ref: '#/components/parameters/idempotency-ref'
      responses:
        '200':
          $ref: '#/components/responses/ManagedAccountIBANResponse'
        '400':
          $ref: '#/components/responses/BadRequestError'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '409':
          $ref: '#/components/responses/ManagedAccountsIBANUpgradeConflict'
        '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:
        - Managed Accounts
      description: >-
        Fetch the IBAN details associated with the Managed Account identified by
        the `id` in the path.
      summary: Get a managed account IBAN
      operationId: managedAccountIBANGet
      x-permissions:
        - i:managed_accounts:get_iban
      parameters:
        - name: id
          in: path
          required: true
          style: simple
          schema:
            type: string
            pattern: ^[0-9]+$
      responses:
        '200':
          $ref: '#/components/responses/ManagedAccountIBANResponse'
        '400':
          $ref: '#/components/responses/BadRequestError'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '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: []
  /managed_accounts/{id}/block:
    post:
      tags:
        - Managed Accounts
      description: Temporarily blocks a managed account.
      summary: Block a managed account
      operationId: managedAccountBlock
      x-permissions:
        - i:managed_accounts:block
      parameters:
        - name: id
          in: path
          description: The unique identifier of the managed account.
          required: true
          style: simple
          schema:
            type: string
            pattern: ^[0-9]+$
        - $ref: '#/components/parameters/idempotency-ref'
      responses:
        '204':
          $ref: '#/components/responses/NoContent'
        '400':
          $ref: '#/components/responses/BadRequestError'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '409':
          $ref: '#/components/responses/ManagedAccountBlockConflict'
        '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: []
  /managed_accounts/{id}/unblock:
    post:
      tags:
        - Managed Accounts
      description: >
        Unblocks the managed account identified by the `id` path parameter.

        The managed account must have `state.blockedReason` as `USER` so that it
        can be unblocked.

        If the managed account was blocked by `SYSTEM`, users cannot unblock it.
      summary: Unblock a managed account
      operationId: managedAccountUnblock
      x-permissions:
        - i:managed_accounts:unblock
      parameters:
        - name: id
          in: path
          description: The unique identifier of the managed account.
          required: true
          style: simple
          schema:
            type: string
            pattern: ^[0-9]+$
        - $ref: '#/components/parameters/idempotency-ref'
      responses:
        '204':
          $ref: '#/components/responses/NoContent'
        '400':
          $ref: '#/components/responses/BadRequestError'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '409':
          $ref: '#/components/responses/ManagedAccountUnblockConflict'
        '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: []
  /managed_accounts/{id}/statement:
    get:
      tags:
        - Managed Accounts
      description: >-
        Returns a list of transactions against the managed account identified by
        the `id` path parameter, matching the criteria provided in the request.
      summary: Get a managed account statement
      operationId: managedAccountStatement
      x-permissions:
        - i:managed_accounts:statement
      parameters:
        - name: id
          in: path
          description: The unique identifier of the managed account.
          required: true
          style: simple
          schema:
            type: string
            pattern: ^[0-9]+$
        - $ref: '#/components/parameters/accept'
        - $ref: '#/components/parameters/offset'
        - $ref: '#/components/parameters/statementLimit'
        - $ref: '#/components/parameters/orderByTimestamp'
        - $ref: '#/components/parameters/fromTimestamp'
        - $ref: '#/components/parameters/toTimestamp'
        - $ref: '#/components/parameters/showFundMovementsOnly'
        - $ref: '#/components/parameters/singleEntryPerTransaction'
        - $ref: '#/components/parameters/transactionType'
      responses:
        '200':
          $ref: '#/components/responses/ManagedAccountStatementResponse'
        '400':
          $ref: '#/components/responses/BadRequestError'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/InstrumentForbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '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: []
  /managed_accounts/{id}/remove:
    post:
      tags:
        - Managed Accounts
      description: >
        Destroys the managed account identified by the `id` path parameter.
        Unlike block, this action is not reversible.


        A managed account must be emptied from any remaining funds before it can
        be destroyed.
      summary: Remove a managed account
      operationId: managedAccountRemove
      x-permissions:
        - i:managed_accounts:remove
      parameters:
        - name: id
          in: path
          required: true
          description: The unique identifier of the managed account.
          schema:
            type: string
            pattern: ^[0-9]+$
      responses:
        '204':
          $ref: '#/components/responses/NoContent'
        '400':
          $ref: '#/components/responses/BadRequestError'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '409':
          $ref: '#/components/responses/ManagedAccountRemoveConflict'
        '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: []
  /managed_cards:
    post:
      tags:
        - Managed Cards
      description: >
        Creates a managed card for the consumer or corporate identity.

        The Managed Card Profile (configured in the Multi Portal) specified
        determines the behaviour and restrictions that the managed card will
        have.
      summary: Create a managed card
      operationId: managedCardCreate
      x-permissions:
        - i:managed_cards:create
      parameters:
        - $ref: '#/components/parameters/idempotency-ref'
      requestBody:
        $ref: '#/components/requestBodies/ManagedCardRequest'
      responses:
        '200':
          $ref: '#/components/responses/ManagedCardResponse'
        '400':
          $ref: '#/components/responses/BadRequestError'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/InstrumentForbidden'
        '409':
          $ref: '#/components/responses/ManagedCardConflict'
        '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:
        - Managed Cards
      description: Fetch cards matching the search criteria provided.
      summary: Get all managed cards
      operationId: managedCardsGet
      x-permissions:
        - i:managed_cards:list
        - i:managed_cards:list:all
        - i:managed_cards:list:own
      parameters:
        - $ref: '#/components/parameters/offset'
        - $ref: '#/components/parameters/limit'
        - $ref: '#/components/parameters/profileId'
        - $ref: '#/components/parameters/friendlyName'
        - $ref: '#/components/parameters/state'
        - $ref: '#/components/parameters/state_blockedReason'
        - $ref: '#/components/parameters/state_destroyedReason'
        - $ref: '#/components/parameters/currency'
        - $ref: '#/components/parameters/card_type'
        - $ref: '#/components/parameters/card_renewal_type'
        - name: externalHandle
          in: query
          required: false
          description: Search by the card's `externalHandle`.
          schema:
            type: string
        - name: cardNumberFirstSix
          in: query
          required: false
          description: Filter by first six digits of the card.
          schema:
            pattern: ^[0-9]{6}$
            type: string
        - name: cardNumberLastFour
          in: query
          required: false
          description: Filter by last four digits of the card.
          schema:
            pattern: ^[0-9]{4}$
            type: string
        - $ref: '#/components/parameters/createdFrom'
        - $ref: '#/components/parameters/createdTo'
        - name: mode
          in: query
          required: false
          description: Filter by card mode (prepaid mode or debit mode).
          schema:
            type: string
            enum:
              - DEBIT_MODE
              - PREPAID_MODE
        - $ref: '#/components/parameters/tag'
        - name: parentManagedAccountId
          in: query
          required: false
          description: >-
            Filter by the Id of the parent managed account associated with the
            card. This is applicable only for debit mode cards.
          schema:
            type: string
            pattern: ^[0-9]+$
        - name: manufacturingState
          in: query
          required: false
          schema:
            type: array
            uniqueItems: true
            items:
              $ref: '#/components/schemas/ManufacturingState'
        - $ref: '#/components/parameters/userIdQuery'
      responses:
        '200':
          $ref: '#/components/responses/ManagedCardPageResponse'
        '400':
          $ref: '#/components/responses/BadRequestError'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/InstrumentForbidden'
        '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: []
  /managed_cards/{id}:
    get:
      tags:
        - Managed Cards
      description: >-
        Returns all details of the managed card identified by the `id` path
        parameter.
      summary: Get a managed card
      operationId: managedCardGet
      x-permissions:
        - i:managed_cards:list
        - i:managed_cards:list:all
        - i:managed_cards:list:own
      parameters:
        - name: id
          in: path
          description: The unique identifier of a card.
          required: true
          schema:
            type: string
            pattern: ^[0-9]+$
      responses:
        '200':
          $ref: '#/components/responses/ManagedCardResponse'
        '400':
          $ref: '#/components/responses/BadRequestError'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/InstrumentForbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '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:
        - Managed Cards
      description: >-
        Update the details of the managed card identified by the `id` path
        parameter.
      summary: Update a managed card
      operationId: managedCardUpdate
      x-permissions:
        - i:managed_cards:update
        - i:managed_cards:update:all
        - i:managed_cards:update:own
      parameters:
        - name: id
          in: path
          required: true
          description: The unique identifier of a card.
          schema:
            type: string
            pattern: ^[0-9]+$
        - $ref: '#/components/parameters/idempotency-ref'
      requestBody:
        $ref: '#/components/requestBodies/ManagedCardUpdateRequest'
      responses:
        '200':
          $ref: '#/components/responses/ManagedCardResponse'
        '400':
          $ref: '#/components/responses/BadRequestError'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/InstrumentForbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '409':
          $ref: '#/components/responses/ManagedCardUpdateConflict'
        '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: []
  /managed_cards/{id}/block:
    post:
      tags:
        - Managed Cards
      description: >-
        Blocks the managed card identified by the `id` path parameter. This is a
        reversible action and the card can be unblocked using the
        _managedCardUnblock_ operation.
      summary: Block a managed card
      operationId: managedCardBlock
      x-permissions:
        - i:managed_cards:block
      parameters:
        - name: id
          in: path
          required: true
          description: The unique identifier of a managed card.
          schema:
            type: string
            pattern: ^[0-9]+$
        - $ref: '#/components/parameters/idempotency-ref'
      responses:
        '204':
          $ref: '#/components/responses/NoContent'
        '400':
          $ref: '#/components/responses/BadRequestError'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '409':
          $ref: '#/components/responses/ManagedCardBlockConflict'
        '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: []
  /managed_cards/{id}/unblock:
    post:
      tags:
        - Managed Cards
      description: >
        Unblocks the managed card identified by the `id` path parameter.

        The managed card must have `state.blockedReason` as `USER` so that it
        can be unblocked.

        If the managed card was blocked by `SYSTEM`, users cannot unblock it.
      summary: Unblock a managed card
      operationId: managedCardUnblock
      x-permissions:
        - i:managed_cards:unblock
      parameters:
        - name: id
          in: path
          required: true
          description: The unique identifier of the managed card.
          schema:
            type: string
            pattern: ^[0-9]+$
        - $ref: '#/components/parameters/idempotency-ref'
      responses:
        '204':
          $ref: '#/components/responses/NoContent'
        '400':
          $ref: '#/components/responses/BadRequestError'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '409':
          $ref: '#/components/responses/ManagedCardUnblockConflict'
        '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: []
  /managed_cards/{id}/remove:
    post:
      tags:
        - Managed Cards
      description: >
        Destroys the managed card identified by the `id` path parameter. Unlike
        block, this action is not reversible.


        A managed card must be empty before it can be destroyed using this
        operation.
      summary: Remove a managed card
      operationId: managedCardRemove
      x-permissions:
        - i:managed_cards:remove
      parameters:
        - name: id
          in: path
          required: true
          description: The unique identifier of a managed card.
          schema:
            type: string
            pattern: ^[0-9]+$
      responses:
        '204':
          $ref: '#/components/responses/NoContent'
        '400':
          $ref: '#/components/responses/BadRequestError'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '409':
          $ref: '#/components/responses/ManagedCardRemoveConflict'
        '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: []
  /managed_cards/{id}/statement:
    get:
      tags:
        - Managed Cards
      description: >-
        Returns a list of transactions against the managed card identified by
        the `id` path parameter, matching the criteria provided in the request.
      summary: Get a managed card statement
      operationId: managedCardStatement
      x-permissions:
        - i:managed_cards:statement
      parameters:
        - name: id
          in: path
          required: true
          description: The unique identifier of a managed card.
          schema:
            type: string
            pattern: ^[0-9]+$
        - $ref: '#/components/parameters/accept'
        - $ref: '#/components/parameters/offset'
        - $ref: '#/components/parameters/statementLimit'
        - $ref: '#/components/parameters/orderByTimestamp'
        - $ref: '#/components/parameters/fromTimestamp'
        - $ref: '#/components/parameters/toTimestamp'
        - $ref: '#/components/parameters/singleEntryPerTransaction'
        - $ref: '#/components/parameters/transactionType'
      responses:
        '200':
          $ref: '#/components/responses/ManagedCardStatementResponse'
        '400':
          $ref: '#/components/responses/BadRequestError'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/InstrumentForbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '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: []
  /managed_cards/{id}/spend_rules:
    get:
      tags:
        - Managed Cards
      summary: Get all spend rules for a managed card
      operationId: managedCardSpendRulesGet
      x-permissions:
        - i:managed_cards:get_spendrules
      description: >-
        Fetch the list of spend rules associated with the managed card
        identified by the `id` path parameter.
      parameters:
        - name: id
          in: path
          required: true
          style: simple
          schema:
            type: string
            pattern: ^[0-9]+$
      responses:
        '200':
          $ref: '#/components/responses/ManagedCardSpendRulesGetResponse'
        '400':
          $ref: '#/components/responses/BadRequestError'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '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: []
    post:
      tags:
        - Managed Cards
      summary: Create spend rules for a managed card
      operationId: managedCardSpendRulesCreate
      x-permissions:
        - i:managed_cards:create_spendrules
      description: >-
        Create the spend rules associated with the managed card identified by
        the `id` path parameter.
      parameters:
        - name: id
          in: path
          required: true
          style: simple
          schema:
            type: string
            pattern: ^[0-9]+$
        - $ref: '#/components/parameters/idempotency-ref'
      requestBody:
        $ref: '#/components/requestBodies/CardLevelSpendRulesRequest'
      responses:
        '204':
          $ref: '#/components/responses/NoContent'
        '400':
          $ref: '#/components/responses/BadRequestError'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '409':
          $ref: '#/components/responses/ManagedCardSpendRulesCreateConflict'
        '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:
        - Managed Cards
      summary: Update spend rules for a managed card
      operationId: managedCardSpendRulesUpdate
      x-permissions:
        - i:managed_cards:update_spendrules
      description: >-
        Must be user after a POST, to update individual spend rules associated
        with the managed card identified by the `id` path parameter.
      parameters:
        - name: id
          in: path
          required: true
          style: simple
          schema:
            type: string
            pattern: ^[0-9]+$
        - $ref: '#/components/parameters/idempotency-ref'
      requestBody:
        $ref: '#/components/requestBodies/UpdateCardLevelSpendRulesRequest'
      responses:
        '204':
          $ref: '#/components/responses/NoContent'
        '400':
          $ref: '#/components/responses/BadRequestError'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '409':
          $ref: '#/components/responses/ManagedCardSpendRulesUpdateConflict'
        '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: []
    delete:
      tags:
        - Managed Cards
      summary: Delete all spend rules for a managed card
      operationId: managedCardSpendRulesDelete
      description: >-
        Remove all spend rules associated with the managed card identified by
        the `id` path parameter.
      x-permissions:
        - i:managed_cards:delete_spendrules
      parameters:
        - name: id
          in: path
          required: true
          style: simple
          schema:
            type: string
            pattern: ^[0-9]+$
      responses:
        '204':
          $ref: '#/components/responses/NoContent'
        '400':
          $ref: '#/components/responses/BadRequestError'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '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: []
  /managed_cards/{id}/physical:
    post:
      tags:
        - Managed Cards
      description: >
        Upgrades the virtual card identified by the `id` path parameter to
        physical.


        Before cards can be upgraded, a physical card programme must be set up
        and the card profile configuration updated accordingly.
      summary: Upgrade a card to physical
      operationId: managedCardPhysicalUpgrade
      x-permissions:
        - i:managed_cards:create_physical
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
            pattern: ^[0-9]+$
        - $ref: '#/components/parameters/idempotency-ref'
      requestBody:
        $ref: '#/components/requestBodies/ManagedCardPhysicalUpgradeRequest'
      responses:
        '200':
          $ref: '#/components/responses/ManagedCardGetResponse'
        '400':
          $ref: '#/components/responses/BadRequestError'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/InstrumentForbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '409':
          $ref: '#/components/responses/ManagedCardPhysicalUpgradeConflict'
        '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: []
  /managed_cards/{id}/physical/activate:
    post:
      tags:
        - Managed Cards
      description: Activates the physical card identified by the `id` path paramter.
      summary: Activate a physical card
      operationId: managedCardPhysicalActivate
      x-permissions:
        - i:managed_cards:activate_physical
      parameters:
        - name: id
          in: path
          required: true
          style: simple
          schema:
            type: string
            pattern: ^[0-9]+$
        - $ref: '#/components/parameters/idempotency-ref'
      requestBody:
        $ref: '#/components/requestBodies/ManagedCardPhysicalActivateRequest'
      responses:
        '200':
          $ref: '#/components/responses/ManagedCardGetResponse'
        '400':
          $ref: '#/components/responses/BadRequestError'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/InstrumentForbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '409':
          $ref: '#/components/responses/ManagedCardPhysicalActivateConflict'
        '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: []
  /managed_cards/{id}/physical/pin:
    get:
      tags:
        - Managed Cards
      description: >-
        Retrieves the PIN of the physical card identified by the `id` path
        parameter.
      summary: Get PIN for a physical card
      operationId: managedCardPhysicalPinGet
      x-permissions:
        - i:managed_cards:get_physical_pin
      parameters:
        - name: id
          in: path
          required: true
          style: simple
          schema:
            type: string
            pattern: ^[0-9]+$
      responses:
        '200':
          $ref: '#/components/responses/ManagedCardPhysicalPinGetResponse'
        '400':
          $ref: '#/components/responses/BadRequestError'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/InstrumentForbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '409':
          $ref: '#/components/responses/ManagedCardPhysicalPinGetConflict'
        '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: []
  /managed_cards/{id}/physical/pin/unblock:
    patch:
      tags:
        - Managed Cards
      description: >
        Physical cards can be marked as `pinBlocked` if there are too many
        failed PIN attempts.


        Use this operation to unblock a PIN so that the card can be used again.
      summary: Unblock PIN for a physical card
      operationId: managedCardPhysicalPinUnBlock
      x-permissions:
        - i:managed_cards:unblock_physical_pin
      parameters:
        - name: id
          in: path
          required: true
          style: simple
          schema:
            type: string
            pattern: ^[0-9]+$
      responses:
        '204':
          $ref: '#/components/responses/NoContent'
        '400':
          $ref: '#/components/responses/BadRequestError'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '409':
          $ref: '#/components/responses/ManagedCardPhysicalPinUnBlockConflict'
        '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: []
  /managed_cards/{id}/physical/replace_damaged:
    post:
      tags:
        - Managed Cards
      description: >-
        Report as damaged, and replace the physical card identified by the `id`
        path parameter.
      summary: Replace a damaged physical card
      operationId: managedCardPhysicalReplaceDamaged
      x-permissions:
        - i:managed_cards:replace_damaged
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
            pattern: ^[0-9]+$
        - $ref: '#/components/parameters/idempotency-ref'
      requestBody:
        $ref: '#/components/requestBodies/ManagedCardPhysicalReplaceDamagedRequest'
      responses:
        '204':
          $ref: '#/components/responses/NoContent'
        '400':
          $ref: '#/components/responses/BadRequestError'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/InstrumentForbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '409':
          $ref: '#/components/responses/ManagedCardPhysicalReplaceDamagedConflict'
        '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: []
  /managed_cards/{id}/physical/report_lost:
    post:
      tags:
        - Managed Cards
      description: >-
        Report the physical card identified by the `id` path parameter as lost.
        This will deactivate the instrument and a new card will need to be
        requested.
      summary: Report a physical card as lost
      operationId: managedCardPhysicalReportLost
      x-permissions:
        - i:managed_cards:report_lost
      parameters:
        - name: id
          in: path
          required: true
          style: simple
          schema:
            type: string
            pattern: ^[0-9]+$
        - $ref: '#/components/parameters/idempotency-ref'
      responses:
        '204':
          $ref: '#/components/responses/NoContent'
        '400':
          $ref: '#/components/responses/BadRequestError'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '409':
          $ref: '#/components/responses/ManagedCardPhysicalReportLostConflict'
        '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: []
  /managed_cards/{id}/physical/report_stolen:
    post:
      tags:
        - Managed Cards
      description: >
        Report the physical card identified by the `id` path parameter as
        stolen. This will destroy the instrument and a new replacement card will
        need to be requested.


        Once a replacement is requested, any funds remaining on this destroyed
        card will be transferred to the replacement card."
      summary: Report a physical card as stolen
      operationId: managedCardPhysicalReportStolen
      x-permissions:
        - i:managed_cards:report_stolen
      parameters:
        - name: id
          in: path
          required: true
          style: simple
          schema:
            type: string
            pattern: ^[0-9]+$
        - $ref: '#/components/parameters/idempotency-ref'
      responses:
        '204':
          $ref: '#/components/responses/NoContent'
        '400':
          $ref: '#/components/responses/BadRequestError'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '409':
          $ref: '#/components/responses/ManagedCardPhysicalReportStolenConflict'
        '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: []
  /managed_cards/{id}/physical/replace_lost_stolen:
    post:
      tags:
        - Managed Cards
      description: >
        Issue a replacement for the physical card, identified by the `id` path
        parameter, that has already been reported as lost or stolen.


        Any funds (that are not blocked pending a purchase for a previous
        authorisation) remaining on the card will be automatically transferred
        to the new replacement card.
      summary: Replace a lost or stolen physical card
      operationId: managedCardPhysicalReplaceLostOrStolen
      parameters:
        - name: id
          in: path
          required: true
          style: simple
          schema:
            type: string
            pattern: ^[0-9]+$
        - $ref: '#/components/parameters/idempotency-ref'
      requestBody:
        $ref: >-
          #/components/requestBodies/ManagedCardPhysicalReplaceLostOrStolenRequest
      responses:
        '200':
          $ref: '#/components/responses/ManagedCardGetResponse'
        '400':
          $ref: '#/components/responses/BadRequestError'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/InstrumentForbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '409':
          $ref: >-
            #/components/responses/ManagedCardPhysicalReplaceLostOrStolenConflict
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '500':
          $ref: '#/components/responses/InternalServerError'
        '503':
          $ref: '#/components/responses/ServiceUnavailable'
        default:
          $ref: '#/components/responses/Error'
      security:
        - api-key: []
  /managed_cards/{id}/physical/contactless_limit/reset:
    post:
      tags:
        - Managed Cards
      description: >
        For security purposes, the cardholder needs to provide the PIN after a
        number of contactless purchases. Use this operation to reset the
        physical card's contactless limit.

        The contactless limit can only be reset for physical cards having the
        wearable form factor.
      summary: Reset contactless limit for a physical card
      operationId: managedCardPhysicalContactlessLimitReset
      x-permissions:
        - i:managed_cards:reset_contactless_limit
      parameters:
        - name: id
          in: path
          required: true
          style: simple
          schema:
            type: string
            pattern: ^[0-9]+$
        - $ref: '#/components/parameters/idempotency-ref'
      responses:
        '204':
          $ref: '#/components/responses/NoContent'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '409':
          $ref: >-
            #/components/responses/ManagedCardPhysicalContactlessLimitResetConflict
        '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: []
  /transfers:
    post:
      tags:
        - Transfers
      description: >
        Transfers funds between managed accounts and managed cards belonging to
        the same corporate or consumer identity.


        The Transfer Profile (configured in the Multi Portal) specified
        determines the behaviour and restrictions of the transaction (for
        example, fees).
      summary: Create a transfer transaction
      operationId: transferCreate
      x-permissions:
        - i:transfers:create
      parameters:
        - $ref: '#/components/parameters/idempotency-ref'
      requestBody:
        $ref: '#/components/requestBodies/CreateTransferRequest'
      responses:
        '200':
          $ref: '#/components/responses/TransferResponse'
        '400':
          $ref: '#/components/responses/BadRequestError'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '409':
          $ref: '#/components/responses/TransferConflict'
        '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:
        - Transfers
      description: >-
        Retrieves all the transfer transactions performed by the logged-in
        identity.
      summary: Get all transfer transactions
      operationId: transfersGet
      x-permissions:
        - i:transfers:list
      parameters:
        - $ref: '#/components/parameters/offset'
        - $ref: '#/components/parameters/limit'
        - $ref: '#/components/parameters/transferProfileId'
        - $ref: '#/components/parameters/instrumentId'
        - $ref: '#/components/parameters/transactionState'
        - $ref: '#/components/parameters/transferCreatedFrom'
        - $ref: '#/components/parameters/transferCreatedTo'
        - $ref: '#/components/parameters/transferExecutedFrom'
        - $ref: '#/components/parameters/transferExecutedTo'
        - $ref: '#/components/parameters/transferTag'
      responses:
        '200':
          $ref: '#/components/responses/TransfersGetResponse'
        '400':
          $ref: '#/components/responses/BadRequestError'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/InstrumentForbidden'
        '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: []
  /transfers/bulk/cancel:
    post:
      tags:
        - Transfers
      description: Cancels transfers that are scheduled to be executed in the future.
      summary: Cancel transfer transactions
      operationId: transferCancel
      x-permissions:
        - i:transfers:cancel_bulk
      requestBody:
        $ref: '#/components/requestBodies/TransactionBulkCancelRequest'
      responses:
        '200':
          $ref: '#/components/responses/TransactionBulkCancelResponse'
        '400':
          $ref: '#/components/responses/BadRequestError'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '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: []
  /transfers/{id}:
    get:
      tags:
        - Transfers
      description: Retrieve the transfer transaction identified by the `id` path parameter.
      summary: Get a transfer transaction
      operationId: transferGet
      x-permissions:
        - i:transfers:get
      parameters:
        - name: id
          in: path
          required: true
          description: The unique identifier of the Transfer transaction.
          schema:
            type: string
            pattern: ^[0-9]+$
      responses:
        '200':
          $ref: '#/components/responses/TransferResponse'
        '400':
          $ref: '#/components/responses/BadRequestError'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/InstrumentForbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '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: []
  /sends:
    post:
      tags:
        - Sends
      description: >
        Sends funds between managed accounts and managed cards belonging to
        *different* corporate or consumer identities.


        The Send Profile (configured in the Multi Portal) specified determines
        the behaviour and restrictions of the transaction (for example, fees).
      summary: Create a send transaction
      operationId: sendCreate
      x-permissions:
        - i:sends:create
      parameters:
        - $ref: '#/components/parameters/idempotency-ref'
      requestBody:
        $ref: '#/components/requestBodies/SendCreateRequest'
      responses:
        '200':
          $ref: '#/components/responses/SendResponse'
        '400':
          $ref: '#/components/responses/BadRequestError'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '409':
          $ref: '#/components/responses/SendCreateConflict'
        '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:
        - Sends
      description: Retrieves all the send transactions performed by the logged-in identity.
      summary: Get all send transactions
      operationId: sendsGet
      x-permissions:
        - i:sends:list
      parameters:
        - $ref: '#/components/parameters/offset'
        - $ref: '#/components/parameters/limit'
        - $ref: '#/components/parameters/sendProfileId'
        - $ref: '#/components/parameters/instrumentId'
        - $ref: '#/components/parameters/sourceId'
        - $ref: '#/components/parameters/sourceType'
        - $ref: '#/components/parameters/sendState'
        - $ref: '#/components/parameters/sendCreatedFrom'
        - $ref: '#/components/parameters/sendCreatedTo'
        - $ref: '#/components/parameters/sendExecutedFrom'
        - $ref: '#/components/parameters/sendExecutedTo'
        - $ref: '#/components/parameters/sendTag'
      responses:
        '200':
          $ref: '#/components/responses/SendsGetPageResponse'
        '400':
          $ref: '#/components/responses/BadRequestError'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/InstrumentForbidden'
        '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: []
  /sends/bulk/create:
    post:
      deprecated: true
      tags:
        - Sends
      summary: Create a bulk of send transactions
      operationId: sendCreateBulk
      x-permissions:
        - i:sends:create_bulk
      description: >
        Deprecated in favour of the [Operations in
        Bulk](Operations/#operation/bulksSendCreate).


        Sends funds between multiple managed accounts and managed cards
        belonging to *different* corporate or consumer identities.


        The Send Profile (configured in the Multi Portal) specified determines
        the behaviour and restrictions of the transaction (for example, fees).
      parameters:
        - $ref: '#/components/parameters/idempotency-ref'
      requestBody:
        $ref: '#/components/requestBodies/SendBulkCreateRequest'
      responses:
        '200':
          $ref: '#/components/responses/SendBulkCreateResponse'
        '400':
          $ref: '#/components/responses/BadRequestError'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '409':
          $ref: '#/components/responses/SendBulkCreateConflict'
        '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: []
  /sends/bulk/cancel:
    post:
      tags:
        - Sends
      description: >-
        Cancels send transactions that are scheduled to be executed in the
        future.
      summary: Cancel send transactions
      operationId: sendCancel
      x-permissions:
        - i:sends:cancel_bulk
      requestBody:
        $ref: '#/components/requestBodies/TransactionBulkCancelRequest'
      responses:
        '200':
          $ref: '#/components/responses/TransactionBulkCancelResponse'
        '400':
          $ref: '#/components/responses/BadRequestError'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '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: []
  /sends/{id}:
    get:
      tags:
        - Sends
      description: Retrieve the send transaction identified by the `id` path parameter.
      summary: Get a send transaction
      operationId: sendGet
      x-permissions:
        - i:sends:get
      parameters:
        - name: id
          in: path
          required: true
          description: The unique identifier of the Send transaction.
          schema:
            type: string
            pattern: ^[0-9]+$
      responses:
        '200':
          $ref: '#/components/responses/SendResponse'
        '400':
          $ref: '#/components/responses/BadRequestError'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/InstrumentForbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '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: []
  /sends/{id}/challenges/otp/{channel}:
    post:
      deprecated: true
      tags:
        - Sends
      description: >
        Deprecated in favour of [Challenges
        endpoints](#tag/Confirmation-Challenges/operation/multipleSCAChallenge)


        Starts the verification process for a send in which a one-time password
        is sent to a device belonging to the logged-in user that was previously
        enrolled through the `/authentication_factors/otp/{channel}` endpoint.


        You should only start this process if the send `state` is
        `PENDING_CHALLENGE`.


        _Note that on the Sandbox Environment, text messages are not sent and
        the one-time-password is always \"123456\"._
      summary: Issue a one-time password that can be used to verify a send
      operationId: sendSCAChallenge
      x-permissions:
        - i:sends:send_sca_challenge
      parameters:
        - name: id
          in: path
          required: true
          description: The unique identifier of the send transaction.
          schema:
            type: string
            pattern: ^[0-9]+$
        - $ref: '#/components/parameters/channel'
      responses:
        '204':
          $ref: '#/components/responses/NoContent'
        '400':
          $ref: '#/components/responses/BadRequestError'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '405':
          $ref: '#/components/responses/MethodNotAllowed'
        '409':
          $ref: '#/components/responses/SendSCAChallengeConflict'
        '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: []
  /sends/{id}/challenges/otp/{channel}/verify:
    post:
      deprecated: true
      tags:
        - Sends
      description: >
        Deprecated in favour of [Challenges
        endpoints](#tag/Confirmation-Challenges/operation/multipleSCAVerify)


        Completes the verification process for a Send.


        If the outcome of the verification is successful, the send is executed.


        If not verified challenge expires after 5 minutes and the number of
        incorrect OTP attempts is limited to reduce the risk of fraud.


        _Note that on the Sandbox Environment, text messages are not sent and
        the `verificationCode` is always \"123456\"._
      summary: Verify a send using a one-time password
      operationId: sendSCAVerify
      x-permissions:
        - i:sends:send_sca_verify
      parameters:
        - name: id
          in: path
          required: true
          description: The unique identifier of the send transaction.
          schema:
            type: string
            pattern: ^[0-9]+$
        - $ref: '#/components/parameters/channel'
      requestBody:
        $ref: '#/components/requestBodies/SCAVerifyRequest'
      responses:
        '204':
          $ref: '#/components/responses/NoContent'
        '400':
          $ref: '#/components/responses/BadRequestError'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '409':
          $ref: '#/components/responses/SendSCAVerifyConflict'
        '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: []
  /sends/{id}/challenges/push/{channel}:
    post:
      deprecated: true
      tags:
        - Sends
      description: >
        Deprecated in favour of [Challenges
        endpoints](#tag/Confirmation-Challenges/operation/multipleSCAChallengePush)


        Starts the verification process for a Send in which a push notification
        is sent to a device belonging to the logged-in user that was previously
        enrolled through the `/authentication_factors/push/{channel}` endpoint.


        You should only start this process if the Send transaction `state` is
        `PENDING_CHALLENGE`.
      summary: Issue a push notification that can be used to verify Send transaction
      operationId: sendSCAChallengePush
      x-permissions:
        - i:sends:send_sca_challenge_push
      parameters:
        - name: id
          in: path
          required: true
          description: The unique identifier of the send transaction.
          schema:
            type: string
            pattern: ^[0-9]+$
        - $ref: '#/components/parameters/scaPushChannel'
      responses:
        '204':
          $ref: '#/components/responses/NoContent'
        '400':
          $ref: '#/components/responses/BadRequestError'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '405':
          $ref: '#/components/responses/MethodNotAllowed'
        '409':
          $ref: '#/components/responses/SendSCAChallengePushConflict'
        '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: []
  /outgoing_wire_transfers:
    post:
      tags:
        - Outgoing Wire Transfers
      summary: Create an outgoing wire transfer
      operationId: outgoingWireTransferCreate
      x-permissions:
        - i:owt:create
      description: >
        Transfers funds from managed accounts to an external bank account.


        The Outgoing Wire Transfer Profile (configured in the Multi Portal)
        specified determines the behaviour and restrictions of the transaction
        (for example, fees).


        Note that even if the transaction is created successfully, you still
        need to check its state in order to determine if it is pending
        completion of an authentication challenge by the user. 
      parameters:
        - $ref: '#/components/parameters/idempotency-ref'
      requestBody:
        $ref: '#/components/requestBodies/OutgoingWireTransferCreateRequest'
      responses:
        '200':
          $ref: '#/components/responses/OutgoingWireTransferResponse'
        '400':
          $ref: '#/components/responses/BadRequestError'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '409':
          $ref: '#/components/responses/OutgoingWireTransferCreateConflict'
        '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:
        - Outgoing Wire Transfers
      description: >-
        Retrieves all the outgoing wire transfer transactions performed by the
        logged-in identity.
      summary: Get all outgoing wire transfer transactions
      operationId: outgoingWireTransfersGet
      x-permissions:
        - i:owt:list
      parameters:
        - $ref: '#/components/parameters/offset'
        - $ref: '#/components/parameters/limit'
        - $ref: '#/components/parameters/profileId'
        - $ref: '#/components/parameters/owtInstrument'
        - $ref: '#/components/parameters/sourceInstrument_id'
        - $ref: '#/components/parameters/sourceInstrument_type'
        - $ref: '#/components/parameters/owtState'
        - name: createdFrom
          in: query
          required: false
          description: >-
            Filter for outgoing wire transfer transactions created after
            `createdFrom` timestamp, expressed in Epoch timestamp using
            millisecond precision. Leave out to fetch all outgoing wire transfer
            transactions.
          schema:
            type: integer
            format: int64
        - name: createdTo
          in: query
          required: false
          description: >-
            Filter for Outgoing Wire Transfer transactions created before
            `createdTo` timestamp, expressed in Epoch timestamp using
            millisecond precision. Leave out to fetch all outgoing wire transfer
            transactions.
          schema:
            type: integer
            format: int64
        - name: executedFrom
          in: query
          required: false
          description: >-
            Filter for outgoing wire transfer transactions executed after
            `executedFrom` timestamp, expressed in Epoch timestamp using
            millisecond precision. Leave out to fetch all outgoing wire transfer
            transactions.
          schema:
            type: integer
            format: int64
        - name: executedTo
          in: query
          required: false
          description: >-
            Filter for Outgoing Wire Transfer transactions executed before
            `executedTo` timestamp, expressed in Epoch timestamp using
            millisecond precision. Leave out to fetch all outgoing wire transfer
            transactions.
          schema:
            type: integer
            format: int64
        - name: tag
          in: query
          required: false
          description: >-
            Filter by the outgoing wire transfer tag. The exact tag must be
            provided, as wildcards are not supported. Leave out to fetch all
            entries.
          schema:
            type: string
      responses:
        '200':
          $ref: '#/components/responses/OutgoingWireTransfersGetPageResponse'
        '400':
          $ref: '#/components/responses/BadRequestError'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/InstrumentForbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '500':
          $ref: '#/components/responses/InternalServerError'
        '503':
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - auth_token: []
          api-key: []
  /outgoing_wire_transfers/bulk/create:
    post:
      deprecated: true
      tags:
        - Outgoing Wire Transfers
      summary: Create a bulk of outgoing wire transfer transactions
      operationId: outgoingWireTransferCreateBulk
      x-permissions:
        - i:owt:create_bulk
      description: >
        Deprecated in favour of the [Operations in
        Bulk](Operations/#operation/bulksOutgoingWireTransferCreate).


        Transfers funds from multiple managed accounts to multiple external bank
        accounts.


        The Outgoing Wire Transfer Profile (configured in the Multi Portal)
        specified determines the behaviour and restrictions of the transaction
        (for example, fees).


        Note that even if the transaction is created successfully, you still
        need to check its state in order to determine if it is pending
        completion of an authentication challenge by the user. 
      parameters:
        - $ref: '#/components/parameters/idempotency-ref'
      requestBody:
        $ref: '#/components/requestBodies/OutgoingWireTransferBulkCreateRequest'
      responses:
        '200':
          $ref: '#/components/responses/OutgoingWireTransferBulkCreateResponse'
        '400':
          $ref: '#/components/responses/BadRequestError'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '409':
          $ref: '#/components/responses/OutgoingWireTransferBulkCreateConflict'
        '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: []
  /outgoing_wire_transfers/bulk/cancel:
    post:
      deprecated: true
      tags:
        - Outgoing Wire Transfers
      description: >-
        Cancels outgoing wire transfers that are scheduled to be executed in the
        future.
      summary: Cancel outgoing wire transfer transactions
      operationId: outgoingWireTransferCancel
      x-permissions:
        - i:owt:cancel_bulk
      requestBody:
        $ref: '#/components/requestBodies/TransactionBulkCancelRequest'
      responses:
        '200':
          $ref: '#/components/responses/TransactionBulkCancelResponse'
        '400':
          $ref: '#/components/responses/BadRequestError'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '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: []
  /outgoing_wire_transfers/{id}:
    get:
      tags:
        - Outgoing Wire Transfers
      description: >-
        Retrieves the outgoing wire transfer identified by the `id` path
        parameter.
      summary: Get an outgoing wire transfer transaction
      operationId: outgoingWireTransferGet
      x-permissions:
        - i:owt:get
      parameters:
        - name: id
          in: path
          required: true
          description: The unique identifier of the Outgoing Wire Transfer transaction.
          schema:
            type: string
            pattern: ^[0-9]+$
      responses:
        '200':
          $ref: '#/components/responses/OutgoingWireTransferResponse'
        '400':
          $ref: '#/components/responses/BadRequestError'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/InstrumentForbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '500':
          $ref: '#/components/responses/InternalServerError'
        '503':
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - auth_token: []
          api-key: []
  /outgoing_wire_transfers/{id}/cancel:
    post:
      tags:
        - Outgoing Wire Transfers
      description: Cancel the outgoing wire transfer identified by the `id` path parameter.
      summary: Cancel an outgoing wire transfer transaction
      operationId: outgoingWireTransferSingleCancel
      x-permissions:
        - i:owt:cancel
      parameters:
        - name: id
          in: path
          required: true
          description: The unique identifier of the Outgoing Wire Transfer transaction.
          schema:
            type: string
            pattern: ^[0-9]+$
      requestBody:
        $ref: '#/components/requestBodies/TransactionSingleCancelRequest'
      responses:
        '200':
          $ref: '#/components/responses/OutgoingWireTransferResponse'
        '400':
          $ref: '#/components/responses/BadRequestError'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/InstrumentForbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '409':
          $ref: '#/components/responses/OutgoingWireTransferCancelConflict'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '500':
          $ref: '#/components/responses/InternalServerError'
        '503':
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - auth_token: []
          api-key: []
  /outgoing_wire_transfers/{id}/confirm:
    post:
      tags:
        - Outgoing Wire Transfers
      description: >-
        Confirm the outgoing wire transfer identified by the `id` path
        parameter.
      summary: Confirm an outgoing wire transfer transaction
      operationId: outgoingWireTransferConfirm
      x-permissions:
        - i:owt:confirm
      parameters:
        - name: id
          in: path
          required: true
          description: The unique identifier of the Outgoing Wire Transfer transaction.
          schema:
            type: string
            pattern: ^[0-9]+$
      responses:
        '200':
          $ref: '#/components/responses/OutgoingWireTransferResponse'
        '400':
          $ref: '#/components/responses/BadRequestError'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/InstrumentForbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '409':
          $ref: '#/components/responses/OutgoingWireTransferConfirmConflict'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '500':
          $ref: '#/components/responses/InternalServerError'
        '503':
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - auth_token: []
          api-key: []
  /outgoing_wire_transfers/{id}/challenges/otp/{channel}:
    post:
      deprecated: true
      tags:
        - Outgoing Wire Transfers
      description: >
        Deprecated in favour of [Challenges
        endpoints](#tag/Confirmation-Challenges/operation/multipleSCAChallenge)


        Starts the verification process for an outgoing wire transfer in which a
        one-time password is sent to a device belonging to the logged-in user
        that was previously enrolled through the
        `/authentication_factors/otp/{channel}` endpoint.


        You should only start this process if the outgoing wire transfer `state`
        is `PENDING_CHALLENGE`.


        _Note that on the Sandbox Environment, text messages are not sent and
        the one-time-password is always \"123456\"._
      summary: >-
        Issue a one-time password that can be used to verify an outgoing wire
        transfer
      operationId: outgoingWireTransferSCAChallenge
      x-permissions:
        - i:owt:create_challenge
      parameters:
        - name: id
          in: path
          required: true
          description: The unique identifier of the Outgoing Wire Transfer transaction.
          schema:
            type: string
            pattern: ^[0-9]+$
        - $ref: '#/components/parameters/channel'
      responses:
        '204':
          $ref: '#/components/responses/NoContent'
        '400':
          $ref: '#/components/responses/BadRequestError'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '405':
          $ref: '#/components/responses/MethodNotAllowed'
        '409':
          $ref: '#/components/responses/OutgoingWireTransferSCAChallengeConflict'
        '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: []
  /outgoing_wire_transfers/{id}/challenges/otp/{channel}/verify:
    post:
      deprecated: true
      tags:
        - Outgoing Wire Transfers
      description: >
        Deprecated in favour of [Challenges
        endpoints](#tag/Confirmation-Challenges/operation/multipleSCAVerify)


        Completes the verification process for an outgoing wire transfer.


        If the outcome of the verification is successful, the outgoing wire
        transfer transaction is executed.


        If not verified challenge expires after 5 minutes and the number of
        incorrect OTP attempts is limited to reduce the risk of fraud.


        _Note that on the Sandbox Environment, text messages are not sent and
        the `verificationCode` is always \"123456\"._
      summary: Verify an outgoing wire transfer using a one-time password
      operationId: outgoingWireTransferSCAVerify
      x-permissions:
        - i:owt:verify_challenge
      parameters:
        - name: id
          in: path
          required: true
          description: The unique identifier of the Outgoing Wire Transfer transaction.
          schema:
            type: string
            pattern: ^[0-9]+$
        - $ref: '#/components/parameters/channel'
      requestBody:
        $ref: '#/components/requestBodies/SCAVerifyRequest'
      responses:
        '204':
          $ref: '#/components/responses/NoContent'
        '400':
          $ref: '#/components/responses/BadRequestError'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '409':
          $ref: '#/components/responses/OutgoingWireTransferSCAVerifyConflict'
        '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: []
  /outgoing_wire_transfers/{id}/challenges/push/{channel}:
    post:
      deprecated: true
      tags:
        - Outgoing Wire Transfers
      description: >
        Deprecated in favour of [Challenges
        endpoints](#tag/Confirmation-Challenges/operation/multipleSCAChallengePush)


        Starts the verification process for an outgoing wire transfer in which a
        push notification is sent to a device belonging to the logged-in user
        that was previously enrolled through the
        `/authentication_factors/push/{channel}` endpoint.


        You should only start this process if the outgoing wire transfer `state`
        is `PENDING_CHALLENGE`.
      summary: >-
        Issue a push notification that can be used to verify an outgoing wire
        transfer
      operationId: outgoingWireTransferSCAChallengePush
      x-permissions:
        - i:owt:create_push_challenge
      parameters:
        - name: id
          in: path
          required: true
          description: The unique identifier of the Outgoing Wire Transfer transaction.
          schema:
            type: string
            pattern: ^[0-9]+$
        - $ref: '#/components/parameters/scaPushChannel'
      responses:
        '204':
          $ref: '#/components/responses/NoContent'
        '400':
          $ref: '#/components/responses/BadRequestError'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '405':
          $ref: '#/components/responses/MethodNotAllowed'
        '409':
          $ref: '#/components/responses/OutgoingWireTransferSCAChallengePushConflict'
        '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: []
  /beneficiaries:
    post:
      tags:
        - Beneficiaries
      description: >-
        Create one or more beneficiaries for the logged-in corporate or consumer
        identity.
      summary: Add beneficiaries
      operationId: beneficiaryBatchCreate
      x-permissions:
        - i:beneficiaries:create
      parameters:
        - $ref: '#/components/parameters/idempotency-ref'
      requestBody:
        $ref: '#/components/requestBodies/BeneficiaryBatchCreateRequest'
      responses:
        '200':
          $ref: '#/components/responses/BeneficiaryBatchResponse'
        '400':
          $ref: '#/components/responses/BadRequestError'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '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:
        - Beneficiaries
      description: Retrieves the beneficiaries that match the query parameters.
      summary: Get all beneficiaries
      operationId: beneficiariesGet
      x-permissions:
        - i:beneficiaries:list
      parameters:
        - $ref: '#/components/parameters/offset'
        - $ref: '#/components/parameters/limit'
        - name: batchId
          in: query
          required: false
          description: Search by the beneficiary batch id.
          schema:
            type: array
            uniqueItems: true
            items:
              type: string
              pattern: ^[0-9]+$
        - name: group
          in: query
          required: false
          description: Search by the beneficiary group.
          schema:
            type: array
            uniqueItems: true
            items:
              type: string
      responses:
        '200':
          $ref: '#/components/responses/BeneficiaryPageResponse'
        '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: []
  /beneficiaries/remove:
    post:
      tags:
        - Beneficiaries
      description: >-
        Removes one or more beneficiaries from the beneficiaries list identified
        by the id path parameter used in the array.
      summary: Remove beneficiaries
      operationId: beneficiaryBatchRemove
      x-permissions:
        - i:beneficiaries:remove
      parameters:
        - $ref: '#/components/parameters/idempotency-ref'
      requestBody:
        $ref: '#/components/requestBodies/BeneficiaryBatchRemoveRequest'
      responses:
        '200':
          $ref: '#/components/responses/BeneficiaryBatchResponse'
        '400':
          $ref: '#/components/responses/BadRequestError'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '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: []
  /beneficiaries/{id}:
    get:
      tags:
        - Beneficiaries
      description: Retrieves a beneficiary identified by the id path parameter
      summary: Get a beneficiary
      operationId: beneficiaryGet
      x-permissions:
        - i:beneficiaries:get
      parameters:
        - name: id
          in: path
          description: The unique identifier of a beneficiary.
          required: true
          schema:
            type: string
            pattern: ^[0-9]+$
      responses:
        '200':
          $ref: '#/components/responses/BeneficiaryResponse'
        '400':
          $ref: '#/components/responses/BadRequestError'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '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: []
  /beneficiaries/batch:
    get:
      tags:
        - Beneficiaries
      description: >-
        Retrieves all beneficiary batches matching the query parameters and that
        belong to the logged-in identity.
      summary: Get all beneficiary batches
      operationId: beneficiaryBatchesGet
      x-permissions:
        - i:beneficiaries:list_batches
      parameters:
        - $ref: '#/components/parameters/offset'
        - $ref: '#/components/parameters/limit'
        - name: state
          in: query
          required: false
          schema:
            type: array
            uniqueItems: true
            items:
              $ref: '#/components/schemas/BeneficiaryBatchState'
        - name: operation
          in: query
          required: false
          schema:
            type: array
            uniqueItems: true
            items:
              $ref: '#/components/schemas/BeneficiaryBatchOperation'
        - name: tag
          in: query
          required: false
          description: >-
            Filter by the beneficiary batch tag. The exact tag must be provided,
            as wildcards are not supported. Leave out to fetch all entries.
          schema:
            type: array
            uniqueItems: true
            items:
              type: string
      responses:
        '200':
          $ref: '#/components/responses/BeneficiaryBatchPageResponse'
        '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: []
  /beneficiaries/batch/{id}:
    get:
      tags:
        - Beneficiaries
      description: >-
        Retrieves the details of a beneficiary batch identified by the batchId
        path parameter
      summary: Get a beneficiary batch
      operationId: beneficiaryBatchGet
      x-permissions:
        - i:beneficiaries:get_batch
      parameters:
        - name: id
          in: path
          description: The unique identifier of a beneficiary batch.
          required: true
          schema:
            type: string
            pattern: ^[0-9]+$
      responses:
        '200':
          $ref: '#/components/responses/BeneficiaryBatchResponse'
        '400':
          $ref: '#/components/responses/BadRequestError'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '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: []
  /beneficiaries/batch/{id}/challenges/otp/{channel}:
    post:
      tags:
        - Beneficiaries
      description: >
        Starts the verification process for updating the beneficiaries batch in
        which a one-time password is sent to a device belonging to the logged-in
        user that was previously enrolled through the
        `/authentication_factors/otp/{channel}` endpoint.


        You should only start this process if the beneficiary update `state` is
        `PENDING_CHALLENGE`.


        _Note that on the Sandbox Environment, text messages are not sent and
        the one-time-password is always \"123456\"._
      summary: Issue a one-time password to verify a beneficiary batch
      operationId: beneficiaryBatchSCAChallenge
      parameters:
        - name: id
          in: path
          required: true
          description: The unique identifier of the Beneficiary Batch Operation.
          schema:
            type: string
            pattern: ^[0-9]+$
        - $ref: '#/components/parameters/channel'
      responses:
        '204':
          $ref: '#/components/responses/NoContent'
        '400':
          $ref: '#/components/responses/BadRequestError'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '405':
          $ref: '#/components/responses/MethodNotAllowed'
        '409':
          $ref: '#/components/responses/BeneficiaryBatchSCAChallengeConflict'
        '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: []
  /beneficiaries/batch/{id}/challenges/otp/{channel}/verify:
    post:
      tags:
        - Beneficiaries
      description: >
        Completes the verification process for updating the beneficiary batch.


        If the outcome of the verification is successful, the beneficiary update
        batch is executed.


        _Note that on the Sandbox Environment, text messages are not sent and
        the verificationCode is always \"123456\"._
      summary: Verify a beneficiary batch using a one-time password
      operationId: beneficiaryBatchSCAVerify
      parameters:
        - name: id
          in: path
          required: true
          description: The unique identifier of the Beneficiary Batch Operation.
          schema:
            type: string
            pattern: ^[0-9]+$
        - $ref: '#/components/parameters/channel'
      requestBody:
        $ref: '#/components/requestBodies/SCAVerifyRequest'
      responses:
        '204':
          $ref: '#/components/responses/NoContent'
        '400':
          $ref: '#/components/responses/BadRequestError'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '409':
          $ref: '#/components/responses/BeneficiaryBatchSCAVerifyConflict'
        '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: []
  /beneficiaries/batch/{id}/challenges/push/{channel}:
    post:
      tags:
        - Beneficiaries
      description: >
        Starts the verification process for updating a beneficiary batch in
        which a push notification is sent to a device belonging to the logged-in
        user that was previously enrolled through the
        `/authentication_factors/push/{channel}` endpoint.


        You should only start this process if the beneficiary update operation
        `state` is `PENDING_CHALLENGE`.
      summary: Issue a push notification that can be used to verify a beneficiary batch
      operationId: beneficiaryBatchSCAChallengePush
      parameters:
        - name: id
          in: path
          required: true
          description: The unique identifier of the Beneficiary Batch Operation.
          schema:
            type: string
            pattern: ^[0-9]+$
        - $ref: '#/components/parameters/scaPushChannel'
      responses:
        '204':
          $ref: '#/components/responses/NoContent'
        '400':
          $ref: '#/components/responses/BadRequestError'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '405':
          $ref: '#/components/responses/MethodNotAllowed'
        '409':
          $ref: '#/components/responses/BeneficiaryBatchSCAChallengePushConflict'
        '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: []
  /bulks/users:
    post:
      x-permissions:
        - i:users:create
      tags:
        - Operations
      description: >
        Submit the details for the creation of a batch of Authorised Users 


        The bulkId returned in the response can subsequently be used to launch
        the execution of the bulk process through [Execute Bulk
        Process](#tag/Manage/operation/bulkIdExecute). A submitted bulk process
        can be managed (executed, accessed, paused, resumed and cancelled) by
        any Authorised User of the same identity of the user that submits the
        details.


        The status of the bulk process after execution of this operation is set
        to ‘SUBMITTED’. The execution of the bulk process is launched through
        the Execute bulk process operation.


        The submission of data for a bulk process does not expire but it can be
        cancelled through [Cancel Bulk
        Process](#tag/Manage/operation/bulkIdCancel).


        The system is configured to accept bulk requests to process up to a
        maximum of 10,000 bulk operations


        Each individual operation in this bulk will be processed via [Create a
        User](#tag/Authorised-Users/operation/userCreate).
      summary: Create users in bulk
      operationId: bulksUserCreate
      parameters:
        - $ref: '#/components/parameters/idempotency-ref'
      responses:
        '201':
          description: Success - returning bulk process
          content:
            application/json:
              schema:
                type: object
                properties:
                  bulkId:
                    type: string
                  operationCount:
                    type: integer
                  path:
                    type: string
      security:
        - auth_token: []
          api-key: []
      requestBody:
        content:
          application/json:
            schema:
              type: array
              items:
                type: object
                properties:
                  pathParams:
                    type: object
                    properties: {}
                  requestBody:
                    required:
                      - email
                      - name
                      - surname
                    type: object
                    properties:
                      name:
                        minLength: 1
                        maxLength: 50
                        type: string
                        description: The first name of the user.
                      surname:
                        minLength: 1
                        maxLength: 50
                        type: string
                        description: The last name of the user.
                      email:
                        $ref: '#/components/schemas/Email'
                      mobile:
                        $ref: '#/components/schemas/Mobile'
                      dateOfBirth:
                        description: Date of birth of the authorised user.
                        $ref: '#/components/schemas/Date'
                      tag:
                        $ref: '#/components/schemas/Tag'
                      countryOfResidence:
                        type: string
                        maxLength: 2
                        minLength: 2
                        pattern: ^[A-Z]+$
                      locale:
                        $ref: '#/components/schemas/UserLocale'
                      brand:
                        $ref: '#/components/schemas/Brand'
              maxItems: 10000
              minItems: 1
  /bulks/users/_user_id_/invite:
    post:
      x-permissions:
        - i:users:send_invite
      tags:
        - Operations
      summary: Send user invites in bulk
      operationId: bulksUserInviteSend
      description: >
        Submit the details for the creation of a batch of Authorised User
        invites


        The bulkId returned in the response can subsequently be used to launch
        the execution of the bulk process through [Execute Bulk
        Process](#tag/Manage/operation/bulkIdExecute). A submitted bulk process
        can be managed (executed, accessed, paused, resumed and cancelled) by
        any Authorised User of the same identity of the user that submits the
        details.


        The status of the bulk process after execution of this operation is set
        to ‘SUBMITTED’. The execution of the bulk process is launched through
        the Execute bulk process operation.


        The submission of data for a bulk process does not expire but it can be
        cancelled through [Cancel Bulk
        Process](#tag/Manage/operation/bulkIdCancel).


        The system is configured to accept bulk requests to process up to a
        maximum of 10,000 bulk operations


        Each individual operation in this bulk will be processed via [Send a
        User Invite](#tag/Authorised-Users/operation/userInviteSend).
      parameters:
        - $ref: '#/components/parameters/idempotency-ref'
      responses:
        '201':
          description: Success - returning bulk process
          content:
            application/json:
              schema:
                type: object
                properties:
                  bulkId:
                    type: string
                  operationCount:
                    type: integer
                  path:
                    type: string
      security:
        - auth_token: []
          api-key: []
      requestBody:
        content:
          application/json:
            schema:
              type: array
              items:
                type: object
                properties:
                  pathParams:
                    type: object
                    properties:
                      _user_id_:
                        $ref: '#/components/schemas/UserId'
              maxItems: 10000
              minItems: 1
  /bulks/managed_cards/_id_/block:
    post:
      tags:
        - Operations
      description: >
        Submit the details to block Managed Cards.


        The bulkId returned in the response can subsequently be used to launch
        the execution of the bulk process through [Execute Bulk
        Process](#tag/Manage/operation/bulkIdExecute). A submitted bulk process
        can be managed (executed, accessed, paused, resumed and cancelled) by
        any Authorised User of the same identity of the user that submits the
        details.


        The status of the bulk process after execution of this operation is set
        to ‘SUBMITTED’. The execution of the bulk process is launched through
        the Execute bulk process operation.


        The submission of data for a bulk process does not expire but it can be
        cancelled through [Cancel Bulk
        Process](#tag/Manage/operation/bulkIdCancel).


        The system is configured to accept bulk requests to process up to a
        maximum of 10,000 bulk operations.


        Each individual operation in this bulk will be processed via [Block a
        Managed Card](#tag/Managed-Cards/operation/managedCardBlock).
      summary: Block cards in bulk
      operationId: bulksManagedCardBlock
      x-permissions:
        - i:managed_cards:block
      parameters:
        - $ref: '#/components/parameters/idempotency-ref'
      responses:
        '201':
          description: Success - returning bulk process
          content:
            application/json:
              schema:
                type: object
                properties:
                  bulkId:
                    type: string
                  operationCount:
                    type: integer
                  path:
                    type: string
      security:
        - auth_token: []
          api-key: []
      requestBody:
        content:
          application/json:
            schema:
              type: array
              items:
                type: object
                properties:
                  pathParams:
                    type: object
                    properties:
                      _id_:
                        type: string
                        pattern: ^[0-9]+$
              maxItems: 10000
              minItems: 1
  /bulks/managed_cards/_id_/unblock:
    post:
      tags:
        - Operations
      description: >
        Submit the details to unblock Managed Cards.


        The bulkId returned in the response can subsequently be used to launch
        the execution of the bulk process through [Execute Bulk
        Process](#tag/Manage/operation/bulkIdExecute). A submitted bulk process
        can be managed (executed, accessed, paused, resumed and cancelled) by
        any Authorised User of the same identity of the user that submits the
        details.


        The status of the bulk process after execution of this operation is set
        to ‘SUBMITTED’. The execution of the bulk process is launched through
        the Execute bulk process operation.


        The submission of data for a bulk process does not expire but it can be
        cancelled through [Cancel Bulk
        Process](#tag/Manage/operation/bulkIdCancel).


        The system is configured to accept bulk requests to process up to a
        maximum of 10,000 bulk operations.


        Each individual operation in this bulk will be processed via [Unblock a
        Managed Card](#tag/Managed-Cards/operation/managedCardUnblock).
      summary: Unblock cards in bulk
      operationId: bulksManagedCardUnblock
      x-permissions:
        - i:managed_cards:unblock
      parameters:
        - $ref: '#/components/parameters/idempotency-ref'
      responses:
        '201':
          description: Success - returning bulk process
          content:
            application/json:
              schema:
                type: object
                properties:
                  bulkId:
                    type: string
                  operationCount:
                    type: integer
                  path:
                    type: string
      security:
        - auth_token: []
          api-key: []
      requestBody:
        content:
          application/json:
            schema:
              type: array
              items:
                type: object
                properties:
                  pathParams:
                    type: object
                    properties:
                      _id_:
                        type: string
                        pattern: ^[0-9]+$
              maxItems: 10000
              minItems: 1
  /bulks/managed_cards/_id_/remove:
    post:
      tags:
        - Operations
      description: >
        Submit the details to remove Managed Cards.


        The bulkId returned in the response can subsequently be used to launch
        the execution of the bulk process through [Execute Bulk
        Process](#tag/Manage/operation/bulkIdExecute). A submitted bulk process
        can be managed (executed, accessed, paused, resumed and cancelled) by
        any Authorised User of the same identity of the user that submits the
        details.


        The status of the bulk process after execution of this operation is set
        to ‘SUBMITTED’. The execution of the bulk process is launched through
        the Execute bulk process operation.


        The submission of data for a bulk process does not expire but it can be
        cancelled through [Cancel Bulk
        Process](#tag/Manage/operation/bulkIdCancel).


        The system is configured to accept bulk requests to process up to a
        maximum of 10,000 bulk operations.


        Each individual operation in this bulk will be processed via [Remove a
        Managed Card](#tag/Managed-Cards/operation/managedCardRemove).
      summary: Remove cards in bulk
      operationId: bulksManagedCardRemove
      x-permissions:
        - i:managed_cards:remove
      parameters: []
      responses:
        '201':
          description: Success - returning bulk process
          content:
            application/json:
              schema:
                type: object
                properties:
                  bulkId:
                    type: string
                  operationCount:
                    type: integer
                  path:
                    type: string
      security:
        - auth_token: []
          api-key: []
      requestBody:
        content:
          application/json:
            schema:
              type: array
              items:
                type: object
                properties:
                  pathParams:
                    type: object
                    properties:
                      _id_:
                        type: string
                        pattern: ^[0-9]+$
              maxItems: 10000
              minItems: 1
  /bulks/managed_cards/_id_/spend_rules:
    patch:
      tags:
        - Operations
      summary: Update spend rules for a managed card in bulk
      operationId: bulksManagedCardSpendRulesUpdate
      x-permissions:
        - i:managed_cards:update_spendrules
      description: >
        Submit the details to update the spend rules of Managed Cards


        The bulkId returned in the response can subsequently be used to launch
        the execution of the bulk process through [Execute Bulk
        Process](#tag/Manage/operation/bulkIdExecute). A submitted bulk process
        can be managed (executed, accessed, paused, resumed and cancelled) by
        any Authorised User of the same identity of the user that submits the
        details.


        The status of the bulk process after execution of this operation is set
        to ‘SUBMITTED’. The execution of the bulk process is launched through
        the Execute bulk process operation.


        The submission of data for a bulk process does not expire but it can be
        cancelled through [Cancel Bulk
        Process](#tag/Manage/operation/bulkIdCancel).


        The system is configured to accept bulk requests to process up to a
        maximum of 10,000 bulk operations


        Each individual operation in this bulk will be processed via [Update
        Spend Rules for a Managed
        Card](#tag/Managed-Cards/operation/managedCardSpendRulesUpdate).
      parameters:
        - $ref: '#/components/parameters/idempotency-ref'
      responses:
        '201':
          description: Success - returning bulk process
          content:
            application/json:
              schema:
                type: object
                properties:
                  bulkId:
                    type: string
                  operationCount:
                    type: integer
                  path:
                    type: string
      security:
        - auth_token: []
          api-key: []
      requestBody:
        content:
          application/json:
            schema:
              type: array
              items:
                type: object
                properties:
                  pathParams:
                    type: object
                    properties:
                      _id_:
                        type: string
                        pattern: ^[0-9]+$
                  requestBody:
                    $ref: '#/components/schemas/UpdateCardLevelSpendRules'
              maxItems: 10000
              minItems: 1
  /bulks/transfers:
    post:
      tags:
        - Operations
      description: >
        Submit the details for the creation of a batch of Transfers.


        The bulkId returned in the response can subsequently be used to launch
        the execution of the bulk process through [Execute Bulk
        Process](#tag/Manage/operation/bulkIdExecute). A submitted bulk process
        can be managed (executed, accessed, paused, resumed and cancelled) by
        any Authorised User of the same identity of the user that submits the
        details.


        The status of the bulk process after execution of this operation is set
        to ‘SUBMITTED’. The execution of the bulk process is launched through
        the Execute bulk process operation.


        The submission of data for a bulk process does not expire but it can be
        cancelled through [Cancel Bulk
        Process](#tag/Manage/operation/bulkIdCancel).


        The system is configured to accept bulk requests to process up to a
        maximum of 10,000 bulk operations.


        Each individual operation in this bulk will be processed via [Create a
        Transfer Transaction](#tag/Transfers/operation/transferCreate).
      summary: Create transfer transactions in bulk
      operationId: bulksTransferCreate
      x-permissions:
        - i:transfers:create
      parameters:
        - $ref: '#/components/parameters/idempotency-ref'
      responses:
        '201':
          description: Success - returning bulk process
          content:
            application/json:
              schema:
                type: object
                properties:
                  bulkId:
                    type: string
                  operationCount:
                    type: integer
                  path:
                    type: string
      security:
        - auth_token: []
          api-key: []
      requestBody:
        content:
          application/json:
            schema:
              type: array
              items:
                type: object
                properties:
                  pathParams:
                    type: object
                    properties: {}
                  requestBody:
                    required:
                      - profileId
                      - source
                      - destination
                      - destinationAmount
                    type: object
                    properties:
                      profileId:
                        $ref: '#/components/schemas/ProfileId'
                      tag:
                        $ref: '#/components/schemas/Tag'
                      source:
                        description: >-
                          The managed account or managed card from where the
                          funds will be transferred.
                        $ref: '#/components/schemas/InstrumentId'
                      description:
                        type: string
                        maxLength: 255
                        pattern: ^[a-zA-Z0-9\/\-?:().$_,'+\s#=!"%&*<>;\{@\r\n]*$
                        description: >-
                          The description details that are included in the
                          transaction as reference.
                      destination:
                        description: >-
                          The managed account or managed card to where the funds
                          will be transferred.
                        $ref: '#/components/schemas/InstrumentId'
                      destinationAmount:
                        description: >-
                          The amount, in same currency as the source and
                          destination instruments, to be transferred to the
                          destination (exclusive of any fee amount that may be
                          specified in the profile).
                        $ref: '#/components/schemas/CurrencyAmount'
                      scheduledTimestamp:
                        $ref: '#/components/schemas/ScheduledTimestamp'
              maxItems: 10000
              minItems: 1
  /bulks/sends:
    post:
      tags:
        - Operations
      description: >
        Submit the details for the creation of a batch of Sends.


        The bulkId returned in the response can subsequently be used to launch
        the execution of the bulk process through [Execute Bulk
        Process](#tag/Manage/operation/bulkIdExecute). A submitted bulk process
        can be managed (executed, accessed, paused, resumed and cancelled) by
        any Authorised User of the same identity of the user that submits the
        details.


        The status of the bulk process after execution of this operation is set
        to ‘SUBMITTED’. The execution of the bulk process is launched through
        the Execute bulk process operation.


        The submission of data for a bulk process does not expire but it can be
        cancelled through [Cancel Bulk
        Process](#tag/Manage/operation/bulkIdCancel).


        The system is configured to accept bulk requests to process up to a
        maximum of 10,000 bulk operations.


        Each individual operation in this bulk will be processed via [Create a
        Send Transaction](#tag/Sends/operation/sendCreate).
      summary: Create send transactions in bulk
      operationId: bulksSendCreate
      x-permissions:
        - i:sends:create
      parameters:
        - $ref: '#/components/parameters/idempotency-ref'
      responses:
        '201':
          description: Success - returning bulk process
          content:
            application/json:
              schema:
                type: object
                properties:
                  bulkId:
                    type: string
                  operationCount:
                    type: integer
                  path:
                    type: string
      security:
        - auth_token: []
          api-key: []
      requestBody:
        content:
          application/json:
            schema:
              type: array
              items:
                type: object
                properties:
                  pathParams:
                    type: object
                    properties: {}
                  requestBody:
                    $ref: '#/components/schemas/SendCreateRequest'
              maxItems: 10000
              minItems: 1
  /bulks/outgoing_wire_transfers:
    post:
      tags:
        - Operations
      summary: Create an outgoing wire transfer in bulk
      operationId: bulksOutgoingWireTransferCreate
      x-permissions:
        - i:owt:create
      description: >
        Submit the details for the creation of a batch of Outgoing Wire
        Transfers.


        The bulkId returned in the response can subsequently be used to launch
        the execution of the bulk process through [Execute Bulk
        Process](#tag/Manage/operation/bulkIdExecute). A submitted bulk process
        can be managed (executed, accessed, paused, resumed and cancelled) by
        any Authorised User of the same identity of the user that submits the
        details.


        The status of the bulk process after execution of this operation is set
        to ‘SUBMITTED’. The execution of the bulk process is launched through
        the Execute bulk process operation.


        The submission of data for a bulk process does not expire but it can be
        cancelled through [Cancel Bulk
        Process](#tag/Manage/operation/bulkIdCancel).


        The system is configured to accept bulk requests to process up to a
        maximum of 10,000 bulk operations.


        Each individual operation in this bulk will be processed via [Create an
        Outgoing Wire
        Transaction](#tag/Outgoing-Wire-Transfers/operation/outgoingWireTransferCreate).
      parameters:
        - $ref: '#/components/parameters/idempotency-ref'
      responses:
        '201':
          description: Success - returning bulk process
          content:
            application/json:
              schema:
                type: object
                properties:
                  bulkId:
                    type: string
                  operationCount:
                    type: integer
                  path:
                    type: string
      security:
        - auth_token: []
          api-key: []
      requestBody:
        content:
          application/json:
            schema:
              type: array
              items:
                type: object
                properties:
                  pathParams:
                    type: object
                    properties: {}
                  requestBody:
                    $ref: '#/components/schemas/OutgoingWireTransferCreateRequest'
              maxItems: 10000
              minItems: 1
webhooks:
  /bank_transfers_in/authorisation_request:
    post:
      tags:
        - Incoming Wire Transfers
      summary: Approve or reject incoming wire transfers
      description: ''
      operationId: bankTransferInForwarding
      parameters:
        - $ref: '#/components/parameters/request-ref'
        - $ref: '#/components/parameters/published-timestamp'
        - $ref: '#/components/parameters/signature'
        - $ref: '#/components/parameters/signature-v2'
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - id
                - source
                - destination
                - amount
                - timestamp
              properties:
                id:
                  type: string
                  pattern: ^[0-9]+$
                  description: The unique identifier of the bank transfer
                source:
                  type: object
                  required:
                    - instrument
                  properties:
                    instrument:
                      type: object
                      required:
                        - type
                        - instrument
                      properties:
                        type:
                          type: string
                          enum:
                            - linked_accounts
                            - unknown_sender_accounts
                        instrument:
                          oneOf:
                            - $ref: '#/components/schemas/LinkedAccount'
                            - $ref: '#/components/schemas/UnknownSenderAccount'
                        reference:
                          type: string
                          description: >-
                            This is an external reference (if available), input
                            by the sender when creating the payment, and
                            intended for the recipient.
                destination:
                  type: object
                  required:
                    - instrument
                    - owner
                  properties:
                    instrument:
                      type: object
                      required:
                        - type
                        - instrument
                      properties:
                        type:
                          type: string
                          enum:
                            - managed_accounts
                        instrument:
                          oneOf:
                            - $ref: '#/components/schemas/ManagedAccount'
                    owner:
                      type: object
                      required:
                        - type
                        - owner
                      properties:
                        type:
                          type: string
                          enum:
                            - consumers
                            - corporates
                        owner:
                          oneOf:
                            - $ref: '#/components/schemas/Corporate'
                            - $ref: '#/components/schemas/Consumer'
                amount:
                  $ref: '#/components/schemas/CurrencyAmount'
                timestamp:
                  type: integer
                  description: >-
                    The timestamp of the transaction, using epoch timestamp with
                    millisecond precision.
                  format: int64
      responses:
        '200':
          description: Authorisation event received with `APPROVED` or `DECLINED` decision.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    type: string
                    enum:
                      - APPROVED
                      - DENIED
        '404':
          $ref: '#/components/responses/NotFound'
        default:
          $ref: '#/components/responses/Error'
      security:
        - webhooks_key: []
  /managed_cards/authorisation_request:
    post:
      tags:
        - Managed Cards
      summary: Authorisation Forwarding
      description: >
        Receive purchase authorisation events and choose if to approve or
        decline them by replying to the event.


        Switch on Authorisation Forwarding in your Sandbox Innovator Portal and
        configure the Authorisation Forwarding URL to start receiving these
        events. Weavr will send webhook events on the following URL
        {Authorisation Forwarding URL}/managed_cards_authorisation_forwarding.


        A response is expected in 1.5s, after which the Default Timeout Response
        configured in the card profile or the card
        `authForwardingDefaultTimeoutDecision` parameter will be used.
      operationId: managed_cards_authorisation_forwarding
      parameters:
        - $ref: '#/components/parameters/call-ref'
        - $ref: '#/components/parameters/published-timestamp'
        - $ref: '#/components/parameters/signature'
        - $ref: '#/components/parameters/signature-v2'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CardAuthorisationEvent'
        required: true
      responses:
        '200':
          description: Authorisation event received with `APPROVED` or `DECLINED` decision.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    type: string
                    enum:
                      - APPROVED
                      - DENIED
        '404':
          $ref: '#/components/responses/NotFound'
        default:
          $ref: '#/components/responses/Error'
      security:
        - webhooks_key: []
