{
  "openapi": "3.1.0",
  "info": {
    "version": "3.2.0",
    "title": "Weavr API",
    "x-icon": {
      "url": "https://docs.weavr.io/img/icon-weavr.svg",
      "alt": "Manage"
    },
    "x-logo": {
      "url": "https://storage.googleapis.com/weavr-cdn/weavr_logo-new.png",
      "backgroundColor": "#FFFFFF",
      "altText": "Weavr"
    },
    "description": "Use Weavr Multi API to embed accounts, cards, and payments directly in your product.\n\n# Authentication\n\nEach request to the Multi API must include an `api-key` that represents your account.\n\nAlmost all endpoints require a secondary authentication token `access_token` that represents the user for whom the request is being executed.\n",
    "contact": {
      "name": "Weavr",
      "url": "https://weavr.io"
    }
  },
  "servers": [
    {
      "description": "Sandbox",
      "url": "https://sandbox.weavr.io/multi"
    },
    {
      "description": "Production",
      "url": "https://secure.weavr.io/multi"
    }
  ],
  "tags": [
    {
      "name": "Corporates",
      "description": "Corporates are identities representing companies. Once on-boarded, Corporates can create and manage their own instruments via your application.",
      "x-longDescription": "A Corporate represents a business customer and owns the users, managed accounts,\nmanaged cards, and transactions created for it. Onboarding includes company\ndetails, an authorized representative, acceptance of terms, and KYB checks.\n\nUse these endpoints to create and retrieve Corporates, update their profile data,\nand follow their verification and activation status.\n\nRead the [Corporate overview](https://docs.weavr.io/identities/corporate/overview/)\nfor the full onboarding journey.\n"
    },
    {
      "name": "Consumers",
      "description": "Consumers are identities representing individuals. Once on-boarded, Consumers can create and manage their own instruments via your application.",
      "x-longDescription": "A Consumer represents an individual customer and owns the users, managed\naccounts, managed cards, and transactions created for them. Creating a Consumer\nstarts onboarding; the root user must then accept terms and complete identity\nverification before all capabilities become available.\n\nUse these endpoints to create and retrieve Consumers, update their profile data,\nand follow their verification and activation status.\n\nRead the [Consumer overview](https://docs.weavr.io/identities/consumer/overview/)\nfor the full onboarding journey.\n"
    },
    {
      "name": "Setup",
      "description": "Register and manage the lifecycle of users that can access an identity, including authorized users invited by a Corporate or Consumer root user.\n",
      "x-longDescription": "Each identity has a root user and can have additional authorized users. The root\nuser is created during onboarding; additional users are invited and assigned the\nroles that determine what they can see and do for the identity.\n\nUse these endpoints to register users, send and consume invitations, assign\nroles, and manage user state. A user must set up authentication before signing in.\n\nRead the [authorized users overview](https://docs.weavr.io/identities/authorised-users/overview/)\nfor user types, invitations, and roles.\n"
    },
    {
      "name": "Sign-in",
      "description": "Sign users in using passwords, biometrics, or third-party auth providers.",
      "x-longDescription": "Signing in establishes the user session used to call protected endpoints. Users\ncan authenticate with a password, an enrolled biometric factor, or an enabled\nthird-party identity provider.\n\nA successful login returns a token that may need to be exchanged for an access\ntoken. Use logout to end the session, and never expose authentication tokens in\nclient logs or persistent browser storage.\n\nRead the [authentication overview](https://docs.weavr.io/apis/authentication/overview/)\nfor account and end-user authentication.\n"
    },
    {
      "name": "Step-up challenges",
      "description": "Issue and verify step-up challenges that elevate an existing user token.",
      "x-longDescription": "A step-up challenge adds Strong Customer Authentication to an existing session\nbefore a sensitive action. Depending on the factors enrolled for the user, the\nchallenge can use a one-time password or a push notification.\n\nStart the challenge with the required channel, collect the user's response, and\nverify it to obtain an elevated authentication context. That context is valid for\na limited period and only for the permissions it grants.\n\nRead [Step-up authentication](https://docs.weavr.io/apis/authentication/stepup/)\nfor challenge channels and token handling.\n"
    },
    {
      "name": "Confirmation challenges",
      "description": "Issue and verify confirmation challenges used to authorize lists of resources.",
      "x-longDescription": "Confirmation challenges let a user approve one or more transactions after\nreviewing their details. They are used for actions such as outgoing wire\ntransfers where the result of payee verification must be shown before payment.\n\nCreate a challenge for the resources being confirmed, collect the one-time\npassword or push approval from the user, then verify the challenge to authorize\nthe action.\n\nRead [Confirm transactions](https://docs.weavr.io/apis/authentication/confirm-transactions/)\nfor the complete confirmation flow.\n"
    },
    {
      "name": "Authentication factors",
      "description": "Manage user authentication factors, including passwords and device-based factors (OTP and push).\n",
      "x-longDescription": "Authentication factors prove that a user is who they claim to be. A user can\nauthenticate with a password or enroll a device-based factor for one-time\npasswords and push notifications.\n\nUse these endpoints to create and update passwords, enroll or remove factors,\nand inspect the factors available to a user. Factor enrollment may require a\nverification challenge before the factor becomes active.\n\nRead [End-user authentication](https://docs.weavr.io/apis/authentication/end-user/)\nfor factor setup and login flows.\n"
    },
    {
      "name": "Access tokens",
      "description": "Acquire and revoke access tokens.",
      "x-longDescription": "Access tokens authorize API calls made on behalf of a signed-in user. Exchange\na valid login token for an access token with the permissions and authentication\ncontext needed by your application, then revoke it when the session ends or the\ntoken should no longer be used.\n\nKeep access tokens on your server, treat them as credentials, and request a new\ntoken when the current one expires.\n\nRead [Access tokens](https://docs.weavr.io/apis/authentication/access-token/)\nfor the full authentication flow.\n"
    },
    {
      "name": "Authorised signatories",
      "description": "Verify the email of root users who act as authorized signatories of a Corporate or Consumer identity.",
      "x-longDescription": "An authorised signatory is the root user who accepts the identity's terms and\nacts on its behalf. Their email address must be verified before onboarding can\ncontinue.\n\nUse these endpoints to start and complete email verification. For Corporates,\nthe authorised signatory is normally a director or another person authorized\nto represent the company.\n\nRead [Root users](https://docs.weavr.io/identities/authorised-users/root/)\nfor their role in customer onboarding.\n"
    },
    {
      "name": "Trusted payees",
      "description": "Manage a list of trusted payees for Outgoing wire transfers and Sends.\n\nAside from convenience and a reduced chance of making errors when making transactions,\nthis allows for the introduction an SCA exemption, where the account holder can request\nthat transactions to `TRUSTED` payees to be exempted from the requirement to pass\nan SCA challenge every time.\n",
      "x-longDescription": "A trusted payee is a saved recipient that belongs to one customer and can be\nreused for outgoing wire transfers or sends. API fields may still use the older\nterm `beneficiary`, but both terms refer to the same resource.\n\nUse these endpoints to create, retrieve, and remove trusted payees. Adding or\nremoving a payee requires a verification challenge. Payments to a payee with a\n`TRUSTED` trust level can qualify for an exemption from repeated Strong Customer\nAuthentication.\n\nRead [Trusted payees](https://docs.weavr.io/transactions/beneficiaries/overview/)\nfor creation, verification, and removal flows.\n"
    },
    {
      "name": "Managed accounts",
      "description": "Managed Accounts are a type of financial instrument offered by Weavr.\n\nThey 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.\n\nManaged accounts can also be used as source and destination instruments in the `transfer` and `send` transactions.\n",
      "x-longDescription": "A managed account holds funds for a Corporate or Consumer. It can receive and\nsend funds within Weavr through transfers and sends, and it can be assigned an\nIBAN for incoming and outgoing wire transfers.\n\nUse these endpoints to create and retrieve accounts, inspect balances, update\naccount details, manage their lifecycle, and assign or retrieve IBAN information.\nThe account profile selected at creation controls its currency and capabilities.\n\nRead the [managed accounts overview](https://docs.weavr.io/instruments/accounts/overview/)\nfor account types, funding, and IBANs.\n"
    },
    {
      "name": "Managed cards",
      "description": "Managed Cards are a type of financial instrument offered by Weavr.\n\nYou can create virtual or physical cards that are issued to the consumer or corporate identity.\n\nA 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.\n",
      "x-longDescription": "A managed card is issued to a Corporate or Consumer and can be virtual or\nphysical. A prepaid card holds its own balance; a debit card spends from its\nparent managed account.\n\nUse these endpoints to create and retrieve cards, update their details, inspect\nbalances, and control their state. Card profiles define properties such as the\ncard type, currency, funding mode, and available features.\n\nRead the [managed cards overview](https://docs.weavr.io/instruments/cards/overview/)\nfor card types, modes, and configuration.\n"
    },
    {
      "name": "Transfers",
      "description": "The Transfer transaction is used to transfer funds between managed accounts and managed cards belonging to same identity.\n",
      "x-longDescription": "A transfer moves funds between managed accounts and managed cards owned by the\nsame Corporate or Consumer. Both instruments must use the same currency, and the\nsource must have enough available funds.\n\nUse these endpoints to create and retrieve transfers. Transfers are internal to\nWeavr and are normally completed immediately; use sends when the instruments\nbelong to different identities.\n\nRead [Transfers](https://docs.weavr.io/transactions/transfers/)\nfor requirements and transaction states.\n"
    },
    {
      "name": "Transaction activity",
      "description": "Retrieve the consolidated transaction activity across instruments.",
      "x-longDescription": "Transaction activity is a chronological feed of balance-affecting events across\nmanaged accounts and managed cards. It includes pending activity, such as card\nauthorizations, as well as completed and reversed transactions.\n\nUse these endpoints to build recent-activity views and inspect a single event.\nFor formal records over a date range, use account or card statements instead.\n\nRead the [transaction activity overview](https://docs.weavr.io/transactions/transaction-activity/overview/)\nfor its relationship to statements and card payments.\n"
    },
    {
      "name": "Incoming wire transfers",
      "description": "Incoming wire transfers received from external bank accounts to managed accounts with IBANs.\n",
      "x-longDescription": "An incoming wire transfer moves funds from an external bank account into a\nmanaged account with an IBAN. Supported payment rails and currencies depend on\nthe managed account profile and its assigned IBAN.\n\nUse these endpoints to list incoming transfers or retrieve one transfer by ID.\nWebhooks can notify your application as a transfer is received, processed, or\nreturned.\n\nRead the [incoming wire transfers overview](https://docs.weavr.io/transactions/iwt/overview/)\nfor supported rails and lifecycle details.\n"
    },
    {
      "name": "Outgoing wire transfers",
      "description": "The Outgoing Wire Transfer transaction is used to transfer funds from managed accounts to an external bank account.\n",
      "x-longDescription": "An outgoing wire transfer moves funds from a managed account with an IBAN to a\nbank account at another financial institution. The available payment rails and\ncurrencies depend on the source account and destination.\n\nCreate the transfer with payee details, present the payee-verification result to\nthe user when required, then confirm or cancel it. Use the retrieval endpoints\nand webhooks to follow the payment through its lifecycle.\n\nRead the [outgoing wire transfers overview](https://docs.weavr.io/transactions/owt/overview/)\nfor prerequisites, payee verification, and testing.\n"
    },
    {
      "name": "Correspondent bank transfers",
      "description": "Correspondent bank transfers allow financial institutions to initiate wire transfers on behalf of originators (third parties).\nThese transfers comply with travel rule requirements by capturing and transmitting originator information.\n",
      "x-longDescription": "Correspondent bank transfers let an eligible financial institution send funds\nfrom a managed account on behalf of another person or business. Unlike a normal\noutgoing wire transfer, the originator is a third party rather than the managed\naccount holder.\n\nSupply the originator and beneficiary information required by the travel rule,\nthen retrieve the transfer to follow its status. This capability must be enabled\nfor your program before it can be used.\n\nRead the [transactions overview](https://docs.weavr.io/transactions/overview/)\nfor how external payments fit into the movement of funds.\n"
    },
    {
      "name": "Card payments",
      "description": "Retrieve card payment activity, including authorizations, settlements, and related events.",
      "x-longDescription": "A card payment is one record covering the full lifecycle of a payment made with\na managed card. Its events include the initial authorization, settlement, and\nany later reversal, refund, expiry, or original credit.\n\nUse these endpoints to retrieve card payments and their chronological event\nhistory. Pending authorizations appear in the event feed, while settled card\npayments also appear in account and card statements.\n\nRead the [card payments overview](https://docs.weavr.io/transactions/card-payments/overview/)\nfor lifecycle, status, and event details.\n"
    },
    {
      "name": "Spend controls",
      "description": "Manage spend rules and authorization forwarding to approve or reject card payments in real time.",
      "x-longDescription": "Spend controls restrict how a managed card can be used. Rules can set limits by\namount and period, or constrain attributes such as merchant category, transaction\ntype, and location.\n\nUse these endpoints to create, retrieve, update, and remove card-level rules.\nAuthorization forwarding can add your own real-time decision after Weavr's spend\ncontrols run; your service must answer within the configured timeout.\n\nRead [Spend controls](https://docs.weavr.io/instruments/cards/configuration/spend-controls/overview/)\nfor rule types and authorization behavior.\n"
    },
    {
      "name": "Sends",
      "description": "The Send transaction is used to send funds between managed accounts and managed cards belonging to different identities.\n",
      "x-longDescription": "A send moves funds between instruments owned by different identities on the\nWeavr platform. The destination can be a managed account or managed card, and\nthe source and destination must use the same currency.\n\nUse these endpoints to create and retrieve sends. A send may require Strong\nCustomer Authentication unless the destination is a trusted payee or another\nconfigured exemption applies.\n\nRead [Sends](https://docs.weavr.io/transactions/sends/)\nfor setup, authentication, and transaction states.\n"
    },
    {
      "name": "Fees",
      "description": "Charge and retrieve in-platform fees.",
      "x-longDescription": "End-customer fees let you charge customers for using your services. Fees can be\nconfigured for accounts, cards, transfers, sends, and outgoing wire transfers,\nor charged explicitly as custom fees through the API.\n\nUse these endpoints to charge a custom fee and retrieve fee transactions. Fees\ncollected on your behalf are deposited into your program's revenue account.\n\nRead the [end-customer fees overview](https://docs.weavr.io/end-customer-fees/overview/)\nfor configuration and revenue-account details.\n"
    },
    {
      "name": "Operations",
      "description": "Submit supported API operations for asynchronous bulk processing."
    },
    {
      "name": "Manage",
      "description": "Manage bulk processes that group together multiple operations to be executed asynchronously.\n",
      "x-longDescription": "A bulk process groups many supported API operations into one asynchronous job.\nThis increases throughput, keeps the work within one secure session, and gives\nyour application a single lifecycle to track.\n\nAdd operations to a process, execute it, and inspect the result of each operation.\nProcesses can also be paused, resumed, or canceled when their current status\npermits it. Bulk operations must be enabled for your program.\n\nRead [Operations in bulk](https://docs.weavr.io/bulk-operations/overview/)\nfor supported operations and process states.\n"
    },
    {
      "name": "System-managed cards",
      "description": "Manage cards created and controlled by the platform."
    },
    {
      "name": "Roles",
      "description": "Retrieve the roles available to users of an identity."
    }
  ],
  "paths": {
    "/login_with_password": {
      "post": {
        "operationId": "loginWithPassword",
        "summary": "Sign in with a password",
        "tags": [
          "Sign-in"
        ],
        "description": "Authenticates a user with the `email` and `password` they set when registering. This is the first step \nof signing in.\n\n### What you get back\nOn success, a `token` of type `AUTH`. An auth token doesn't authorize ordinary API calls. It only \nreaches `/identities` and `/access_token`. Exchange it for an access token with \n[Create an access token](https://docs.weavr.io/api/requestaccesstoken) before doing anything else. If \nthe user belongs to more than one identity, read the list first with \n[List linked identities](https://docs.weavr.io/api/useridentities) and let them choose.\n\nThe token is valid for 5 minutes from last activity.\n\n### Expired passwords\nA `409` means the password has expired. The response still carries a `token`, but a temporary one that \nworks only for [Update a password](https://docs.weavr.io/api/passwordupdate). Send the user through a \npassword change and then sign them in again.\n\nA `423` means the account is locked; a `410` means the token supplied has expired.\n\n### Other ways in\n[Verify with biometrics](https://docs.weavr.io/api/loginviabiometrics) is an alternative to a\npassword, and feeds the same access token exchange.\n",
        "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": {
        "operationId": "loginViaBiometrics",
        "summary": "Verify with biometrics",
        "tags": [
          "Sign-in"
        ],
        "description": "Signs in a user with biometrics instead of a password. Pass the `email` they enrolled with; if it \nmatches, Weavr sends a push notification to their enrolled device asking them to authenticate \nbiometrically.\n\nBecause the user has already completed a second factor, the token you get back is stepped up. You can \nuse it straight away for endpoints and UI components that require step-up, with no separate step-up \nchallenge.\n\nThe device must have been enrolled beforehand through `/authentication_factors/push/{channel}`. For \nthe password flow, see [Sign in with a password](https://docs.weavr.io/api/loginwithpassword).\n",
        "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": []
          }
        ]
      }
    },
    "/login_with_iam": {
      "post": {
        "operationId": "loginWithIam",
        "summary": "Sign in with an identity provider",
        "tags": [
          "Sign-in"
        ],
        "description": "Signs in a user through the identity provider configured for the programme.",
        "x-internal": true,
        "responses": {
          "200": {
            "$ref": "#/components/responses/LoginWithIamResponse"
          },
          "400": {
            "$ref": "#/components/responses/BadRequestError"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "description": "The programme not found or is not configured to use third party authentication provider."
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "api-key": []
          }
        ]
      }
    },
    "/stepup/challenges/otp/{channel}": {
      "post": {
        "operationId": "stepupSCAChallenge",
        "summary": "Send a one-time password to step up a token",
        "tags": [
          "Step-up challenges"
        ],
        "description": "Use this when an operation rejects your access token because it isn't stepped up.\n\nIt starts the step-up process by sending a one-time password over SMS to a device belonging to the \nlogged-in user. Confirm the code with \n[Verify a one-time password to step up a token](https://docs.weavr.io/api/stepupscaverify); the token \nyou are already using is then raised to `STEPPED_UP` in place, so there is no new token to store.\n\nOperations that need a stepped-up token include creating \n[prepaid](https://docs.weavr.io/api/prepaidmanagedcardcreate) and \n[debit](https://docs.weavr.io/api/debitmanagedcardcreate) cards, \n[creating accounts](https://docs.weavr.io/api/managedaccountcreate), \n[reading a card PIN](https://docs.weavr.io/api/managedcardphysicalpinget), and \n[statements](https://docs.weavr.io/api/managedaccountstatement).\n\n### Prerequisites\nThe device must have been enrolled beforehand through `/authentication_factors/otp/{channel}`, or the \nrequest fails with `CHANNEL_NOT_REGISTERED`. `SMS` is the only OTP channel; to use a push notification \ninstead, see [the push variant](https://docs.weavr.io/api/stepupscachallengepush).\n\n### Rate limits\nChallenges are throttled. `RETRY_IN_15SEC` means you asked again too soon, and \n`CHALLENGE_LIMIT_EXCEEDED` means the user has run out of attempts for now.\n\n:::note\nOn sandbox, no text message is sent and the one-time password is always `123456`.\n:::\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/idempotency-ref"
          },
          {
            "$ref": "#/components/parameters/channel"
          }
        ],
        "responses": {
          "204": {
            "description": "Success, no content",
            "headers": {
              "request-ref": {
                "$ref": "#/components/headers/request-ref"
              }
            },
            "links": {
              "verifyStepUpOtp": {
                "operationId": "stepupSCAVerify",
                "parameters": {
                  "channel": "$request.path.channel"
                },
                "description": "Verify the one-time password sent for this step-up challenge."
              }
            }
          },
          "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": [
          {
            "access_token": [],
            "api-key": []
          }
        ]
      }
    },
    "/stepup/challenges/otp/{channel}/verify": {
      "post": {
        "operationId": "stepupSCAVerify",
        "summary": "Verify a one-time password to step up a token",
        "tags": [
          "Step-up challenges"
        ],
        "description": "Completes step-up by submitting the one-time password sent to the user.\n\nOn success the access token you are already using is raised to `STEPPED_UP` in place. No new token is \nreturned, and no token needs swapping in your client. Retry the operation that required step-up with the \nsame token.\n\n### Limits\nThe challenge expires after 5 minutes (`VERIFICATION_CODE_EXPIRED`) and the number of incorrect attempts \nis capped to reduce the risk of fraud. `ONE_CHALLENGE_LIMIT_REMAINING` is the warning before \n`CHALLENGE_LIMIT_EXCEEDED`; once exceeded, issue a fresh challenge with \n[Send a one-time password to step up a token](https://docs.weavr.io/api/stepupscachallenge).\n\n`ALREADY_VERIFIED` means the token is already stepped up, and `STATE_INVALID` means no challenge is in \nflight for this token.\n\n:::note\nOn sandbox, no text message is sent and `verificationCode` is always `123456`.\n:::\n",
        "x-speccy-prerequisites": [
          "stepupSCAChallenge"
        ],
        "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": [
          {
            "access_token": [],
            "api-key": []
          }
        ]
      }
    },
    "/stepup/challenges/push/{channel}": {
      "post": {
        "operationId": "stepupSCAChallengePush",
        "summary": "Send a push notification to step up a token",
        "tags": [
          "Step-up challenges"
        ],
        "description": "Starts step-up by sending a push notification to a device belonging to the logged-in user, as an \nalternative to [the one-time password variant](https://docs.weavr.io/api/stepupscachallenge).\n\nThe `channel` is `AUTHY` or `BIOMETRIC`, and the device must have been enrolled beforehand through\n`/authentication_factors/push/{channel}`. The user approves the challenge on their device, so unlike the\none-time password flow there is no code to collect and no verify call to make. The response returns the\nchallenge `id` for correlating the notification you sent with the approval that follows.\n\nOnly start this if a step-up isn't already in flight for the token.\n\nOnce approved, the access token you are already using is raised to `STEPPED_UP` in place. Retry the \noperation that required step-up with the same token.\n",
        "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": [
          {
            "access_token": [],
            "api-key": []
          }
        ]
      }
    },
    "/logout": {
      "post": {
        "operationId": "logout",
        "summary": "Sign out",
        "tags": [
          "Sign-in"
        ],
        "description": "Logs out the user and terminates the session identified by the `access_token` in the `Authorization` header.",
        "deprecated": true,
        "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": [
          {
            "access_token": [],
            "api-key": []
          }
        ]
      }
    },
    "/passwords/{user_id}/create": {
      "post": {
        "operationId": "passwordCreate",
        "summary": "Create a password",
        "tags": [
          "Authentication factors"
        ],
        "description": "Create a new password for the user identified by the `user_id` path parameter.",
        "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": {
        "operationId": "passwordUpdate",
        "summary": "Update a password",
        "tags": [
          "Authentication factors"
        ],
        "description": "Replaces the logged-in user's password with the tokenized password supplied in the\nrequest. The user must provide a valid authentication token.\n\nRead [Password](https://docs.weavr.io/sdks/web/login-components/) for how to collect and\ntokenize passwords without exposing their plain-text value to your application.\n",
        "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": [
          {
            "access_token": [],
            "api-key": []
          }
        ]
      }
    },
    "/passwords/validate": {
      "post": {
        "operationId": "passwordValidate",
        "summary": "Validate a password",
        "tags": [
          "Authentication factors"
        ],
        "description": "Checks whether a tokenized password meets the configured password rules without\ncreating or changing a password. A `204` response means the password is valid;\nvalidation failures return a conflict response.\n\nRead [Password](https://docs.weavr.io/sdks/web/login-components/) for how to collect and\ntokenize passwords without exposing their plain-text value to your application.\n",
        "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": {
        "operationId": "lostPasswordInitiate",
        "summary": "Start password recovery",
        "tags": [
          "Authentication factors"
        ],
        "description": "Initiate the lost password process.\n\nIf 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.\nThe 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.\n",
        "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": {
        "operationId": "lostPasswordResume",
        "summary": "Continue password recovery",
        "tags": [
          "Authentication factors"
        ],
        "description": "This is the second and final step in updating the password of a user who forgot their password.",
        "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": {
        "operationId": "authFactorsGet",
        "summary": "List user authentication factors",
        "tags": [
          "Authentication factors"
        ],
        "description": "Retrieves the list of authentication factors that can be used to verify the logged-in user.",
        "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": [
          {
            "access_token": [],
            "api-key": []
          }
        ]
      }
    },
    "/authentication_factors/otp/{channel}": {
      "post": {
        "operationId": "enrolDeviceUsingOtpStepOne",
        "summary": "Enroll a user device for authentication using one-time passwords",
        "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.\n\n:::note\nOn sandbox, no text message is sent and the one-time password is always `123456`.\n:::\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/idempotency-ref"
          },
          {
            "$ref": "#/components/parameters/channel"
          }
        ],
        "responses": {
          "204": {
            "description": "Success, no content",
            "headers": {
              "request-ref": {
                "$ref": "#/components/headers/request-ref"
              }
            },
            "links": {
              "verifyOtpEnrolment": {
                "operationId": "enrolDeviceUsingOtpStepTwo",
                "parameters": {
                  "channel": "$request.path.channel"
                },
                "description": "Verify the one-time password sent for this enrollment."
              }
            }
          },
          "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": [],
            "access_token": []
          }
        ]
      }
    },
    "/authentication_factors/otp/{channel}/verify": {
      "post": {
        "operationId": "enrolDeviceUsingOtpStepTwo",
        "summary": "Verify enrollment of a user device for authentication using one-time passwords",
        "tags": [
          "Authentication factors"
        ],
        "description": "The second step in enrolling the logged-in user's device for one-time passwords: submit the code the \ndevice received to complete enrollment. Once enrolled, the device can verify transactions and step up \ntokens.\n\nThe challenge expires after 5 minutes, and the number of incorrect attempts is capped to reduce the risk \nof fraud. Once either limit is hit, issue a fresh challenge.\n\n:::note\nOn sandbox, no text message is sent and `verificationCode` is always `123456`.\n:::\n",
        "x-speccy-prerequisites": [
          "enrolDeviceUsingOtpStepOne"
        ],
        "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": [],
            "access_token": []
          }
        ]
      }
    },
    "/authentication_factors/push/{channel}": {
      "post": {
        "operationId": "enrolDeviceUsingPush",
        "summary": "Enroll a user device for authentication using push notifications",
        "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.\n",
        "x-sca": "SECOND_FACTOR_HISTORICAL",
        "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/Forbidden"
          },
          "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": [],
            "access_token": []
          }
        ]
      },
      "delete": {
        "operationId": "unlinkDeviceUsingPush",
        "summary": "Unlink a user device for authentication using push notifications",
        "tags": [
          "Authentication factors"
        ],
        "description": "Unlinks the logged-in user's mobile device from the push authentication factor on the `channel` path parameter, so it is no longer offered as an SCA method for that user.\n\nThe unlink is immediate and permanent. Once removed, push challenges can't be sent to the device; to use it again, re-enroll it with `POST /authentication_factors/push/{channel}`. Returns `409 CHANNEL_NOT_REGISTERED` if the user has no device enrolled on this channel, and `409 CREDENTIALS_INACTIVE` if the user's credentials aren't active.\n",
        "x-sca": "SECOND_FACTOR_HISTORICAL",
        "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/Forbidden"
          },
          "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": [],
            "access_token": []
          }
        ]
      }
    },
    "/challenges/otp/{channel}": {
      "post": {
        "operationId": "multipleSCAChallenge",
        "summary": "Issue a one-time password that can be used to verify a list of resources",
        "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. \n\nUse this for outgoing wire transfers, sends, and linked account declarations.\n\nYou should only start this process if the operation `state` is `PENDING_CHALLENGE`.\n\n:::note\nOn sandbox, no text message is sent and the one-time password is always `123456`.\n:::\n",
        "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": [
          {
            "access_token": [],
            "api-key": []
          }
        ]
      }
    },
    "/challenges/{scaChallengeId}/otp/{channel}/verify": {
      "post": {
        "operationId": "multipleSCAVerify",
        "summary": "Verify a list of resources using a one-time password",
        "tags": [
          "Confirmation challenges"
        ],
        "description": "Completes the verification process for a list of resources by submitting the one-time password sent to \nthe user. On success, each resource in the list is executed.\n\nUse this for outgoing wire transfers and sends.\n\nThe challenge expires after 5 minutes, and the number of incorrect attempts is capped to reduce the risk \nof fraud. Once either limit is hit, issue a fresh challenge.\n\n:::note\nOn sandbox, no text message is sent and `verificationCode` is always `123456`.\n:::\n",
        "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]+$",
              "example": "123456789"
            }
          },
          {
            "$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": [
          {
            "access_token": [],
            "api-key": []
          }
        ]
      }
    },
    "/challenges/push/{channel}": {
      "post": {
        "operationId": "multipleSCAChallengePush",
        "summary": "Issue a push notification that can be used to verify a list of resources",
        "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.\n\nUse this for outgoing wire transfers and sends.\n\nYou should only start this process if the resource `state` is `PENDING_CHALLENGE`.\n",
        "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": [
          {
            "access_token": [],
            "api-key": []
          }
        ]
      }
    },
    "/access_token": {
      "post": {
        "operationId": "requestAccessToken",
        "summary": "Create an access token",
        "tags": [
          "Access tokens"
        ],
        "description": "Exchanges an auth token for an access token, which is what authorizes identity-scoped API calls.\n\nSigning in returns an auth token that can only reach `/identities` and `/access_token`. Everything else \n(accounts, cards, transactions) needs the access token produced here.\n\n### When to call it\n- After a user signs in with a [password](https://docs.weavr.io/api/loginwithpassword) or\n  [biometrics](https://docs.weavr.io/api/loginviabiometrics).\n- When a user with access to several identities switches between them. An access token authorizes one \n  identity at a time, so switching means requesting another.\n- When the current access token expires.\n\n### Fields\n`identity` chooses which identity the token authorizes. If the user has access to only one, it can be \nomitted; otherwise list the options with \n[List linked identities](https://docs.weavr.io/api/useridentities) first.\n\n`clientAssertion` applies only to customers enabled for delegation, and is generated from the \ncertificate linked to the Delegated API Client.\n\n### Token status\nThe response carries a `status` of `STANDARD` or `STEPPED_UP`. Some operations (creating cards and \naccounts, reading a card PIN, statements) require a stepped-up token. A fresh access token is \n`STANDARD`; raise it with \n[Send a one-time password to step up a token](https://docs.weavr.io/api/stepupscachallenge) and \n[Verify](https://docs.weavr.io/api/stepupscaverify).\n",
        "x-speccy-prerequisites": [
          "loginWithPassword"
        ],
        "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": [
          {
            "access_token": [],
            "api-key": []
          },
          {
            "api-key": []
          }
        ]
      }
    },
    "/users": {
      "post": {
        "operationId": "userCreate",
        "summary": "Register a user",
        "tags": [
          "Setup"
        ],
        "description": "Creates a user linked to the logged-in corporate or consumer identity.\n\nOnce on-boarded, a user can see and use every instrument (cards and accounts) the identity holds. \nIf you need finer-grained permissions per user, implement them in your own application.\n\nThe new user has no password yet. Send them an invitation with \n[Invite a user to set a password](https://docs.weavr.io/api/userinvitesend) so they can set one.\n\n### Access\nThis operation requires a stepped-up access token. Step up before calling it by issuing a challenge \nthrough [Step-up](https://docs.weavr.io/api/stepupscachallenge).\n",
        "x-sca": "SECOND_FACTOR_SESSION",
        "x-permissions": [
          "i:users:create"
        ],
        "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": [
          {
            "access_token_stepped_up": [],
            "api-key": []
          }
        ]
      },
      "get": {
        "operationId": "usersGet",
        "summary": "List users",
        "tags": [
          "Setup"
        ],
        "description": "Fetches all users associated with the corporate or consumer identity the logged-in user belongs to.",
        "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"
          },
          {
            "name": "roles",
            "in": "query",
            "required": false,
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/components/schemas/UserPredefinedRole"
              }
            },
            "description": "Filter users by role. Multiple roles use OR logic."
          }
        ],
        "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": [
          {
            "access_token": [],
            "api-key": []
          }
        ]
      }
    },
    "/bulks": {
      "get": {
        "operationId": "bulks",
        "summary": "List bulk processes",
        "tags": [
          "Manage"
        ],
        "description": "Returns a paginated list of bulk processes for the logged-in identity. Use the\n`status` query parameter to inspect processes at a particular stage of execution.\n\nRead [The bulk process](https://docs.weavr.io/bulk-operations/process/) for the\nbulk lifecycle and the operations available in each state.\n",
        "x-permissions": [
          "i:bulks:list"
        ],
        "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"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "access_token": [],
            "api-key": []
          }
        ]
      }
    },
    "/bulks/{bulk_id}": {
      "get": {
        "operationId": "bulkId",
        "summary": "Get bulk process",
        "tags": [
          "Manage"
        ],
        "description": "Retrieves the bulk process identified by the `bulk_id` parameter.\n\nUse this to poll a process after [executing](https://docs.weavr.io/api/bulkidexecute) it, since \nexecution is asynchronous. `status` reports where the run is: `SUBMITTED` before execution, `RUNNING` \nor `PAUSED` during it, and `COMPLETED`, `PARTIALLY_COMPLETED`, `FAILED`, or `CANCELLED` once it \nsettles. The response also carries the counts of submitted, successful, and failed operations.\n\nWhen a run ends `PARTIALLY_COMPLETED` or `FAILED`, use \n[List bulk operations](https://docs.weavr.io/api/bulkidoperations) filtered on `status` to find the \nindividual operations that failed.\n",
        "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"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "access_token": [],
            "api-key": []
          }
        ]
      }
    },
    "/bulks/{bulk_id}/operations": {
      "get": {
        "operationId": "bulkIdOperations",
        "summary": "List bulk operations",
        "tags": [
          "Manage"
        ],
        "description": "Returns the individual operations that make up the bulk process identified by the `bulk_id` parameter.\n\nUse this to find out what happened inside a run, in particular which operations failed after a process \nended `PARTIALLY_COMPLETED` or `FAILED`.\n\nFilter with `status` (`SUBMITTED`, `RUNNING`, `COMPLETED`, `FAILED`, `CANCELLED`) to isolate the \nfailures, and with `sequence` to look up a specific position in the batch. Page through results with \n`offset` and `limit`.\n",
        "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"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "access_token": [],
            "api-key": []
          }
        ]
      }
    },
    "/bulks/{bulk_id}/execute": {
      "post": {
        "operationId": "bulkIdExecute",
        "summary": "Execute bulk process",
        "tags": [
          "Manage"
        ],
        "description": "Starts execution of the bulk process identified by the `bulk_id` parameter.\n\nA bulk process is created by one of the bulk operations \n(creating users, sends, transfers, or wire transfers, blocking cards, and so on) and sits in \n`SUBMITTED` until you execute it. Nothing runs until this call.\n\nThe process must be in `SUBMITTED`; calling it in any other state fails with `INVALID_STATE`, and \ncalling it twice fails with `ALREADY_SUBMITTED`.\n\n### Fields\n`mode` decides what happens when an individual operation fails:\n\n| Mode | Effect |\n| --- | --- |\n| `ON_FAILURE_STOP` | Execution stops at the first operation that returns a 4xx or 5xx. |\n| `ON_FAILURE_CONTINUE` | Execution carries on through failures and reports them at the end. |\n\n`webhookInterval` is the number of operations between Bulk Process Progress webhooks. The effective \nminimum is 25% of the total, so a smaller value still yields four webhooks across the run.\n\n### It returns immediately\nExecution is asynchronous: a `204` means the run was accepted, not that it finished. The process moves \nto `RUNNING` and settles on one of:\n\n| Final state | Meaning |\n| --- | --- |\n| `COMPLETED` | Every operation succeeded. |\n| `PARTIALLY_COMPLETED` | Execution finished, but some operations failed. |\n| `FAILED` | No operation executed. |\n| `CANCELLED` | The run was canceled before finishing. |\n\nTrack it with [Get bulk process](https://docs.weavr.io/api/bulkid), and find which individual \noperations failed with [List bulk operations](https://docs.weavr.io/api/bulkidoperations), filtering on \n`status`.\n\n### Controlling a run\nWhile `RUNNING`, you can [pause](https://docs.weavr.io/api/bulkidpause) the process and later \n[resume](https://docs.weavr.io/api/bulkidresume) it, or \n[cancel](https://docs.weavr.io/api/bulkidcancel) it. Canceling is final. Operations that have already \nexecuted aren't rolled back by either.\n\nRead [The bulk process](https://docs.weavr.io/bulk-operations/process/) for the full lifecycle.\n",
        "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"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "access_token": [],
            "api-key": []
          }
        ]
      }
    },
    "/bulks/{bulk_id}/pause": {
      "post": {
        "operationId": "bulkIdPause",
        "summary": "Pause bulk process",
        "tags": [
          "Manage"
        ],
        "description": "Pauses the bulk process identified by the `bulk_id` parameter, leaving it in `PAUSED`.\n\nThe process must be `RUNNING`, or the request fails with `INVALID_STATE`. Operations already in flight \nare allowed to finish; no further operations are started.\n\nPausing is reversible, and [resume](https://docs.weavr.io/api/bulkidresume) picks up where the run left \noff. To stop a run for good, [cancel](https://docs.weavr.io/api/bulkidcancel) it instead.\n",
        "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"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "access_token": [],
            "api-key": []
          }
        ]
      }
    },
    "/bulks/{bulk_id}/resume": {
      "post": {
        "operationId": "bulkIdResume",
        "summary": "Resume bulk process",
        "tags": [
          "Manage"
        ],
        "description": "Resumes the bulk process identified by the `bulk_id` parameter, returning it to `RUNNING`.\n\nThe process must be `PAUSED`, or the request fails with `INVALID_STATE`. Execution continues from the \noperation the run stopped at; operations that already ran aren't repeated.\n\nA [canceled](https://docs.weavr.io/api/bulkidcancel) process can't be resumed.\n",
        "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"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "access_token": [],
            "api-key": []
          }
        ]
      }
    },
    "/bulks/{bulk_id}/cancel": {
      "post": {
        "operationId": "bulkIdCancel",
        "summary": "Cancel bulk process",
        "tags": [
          "Manage"
        ],
        "description": "Cancels the bulk process identified by the `bulk_id` parameter, leaving it in `CANCELLED`.\n\nThe process must be `RUNNING` or `PAUSED`, or the request fails with `INVALID_STATE`.\n\n:::note\n`CANCELLED` is a final state. A canceled process can't be resumed or re-executed. You would need to \ncreate a new bulk process for the remaining work.\n:::\n\nCanceling stops further operations from starting. It does not roll back operations that have already \nexecuted. Use [List bulk operations](https://docs.weavr.io/api/bulkidoperations) to see which ones ran \nbefore the cancellation. To stop a run temporarily instead, use \n[Pause bulk process](https://docs.weavr.io/api/bulkidpause).\n",
        "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"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "access_token": [],
            "api-key": []
          }
        ]
      }
    },
    "/bulks/users": {
      "post": {
        "operationId": "bulksUserCreate",
        "summary": "Create users in bulk",
        "tags": [
          "Operations"
        ],
        "description": "Submits between 1 and 10,000 user registration operations as a bulk process.\n\nThe returned bulk process is initially `SUBMITTED`. Use [Execute a bulk process](#tag/Manage/operation/bulkIdExecute) to start it, and the other Manage operations to inspect, pause, resume, or cancel it. Each item is processed using [Register a user](#tag/Setup/operation/userCreate).\n",
        "x-permissions": [
          "i:users:create"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/idempotency-ref"
          }
        ],
        "requestBody": {
          "$ref": "#/components/requestBodies/UserCreateBulkRequest"
        },
        "responses": {
          "201": {
            "$ref": "#/components/responses/BulkProcessResponse"
          },
          "400": {
            "$ref": "#/components/responses/BadRequestError"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "409": {
            "$ref": "#/components/responses/BulkProcessorConflictResponse"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "access_token_stepped_up": [],
            "api-key": []
          }
        ]
      }
    },
    "/bulks/users/_user_id_/invite": {
      "post": {
        "operationId": "bulksUserInviteSend",
        "summary": "Send user invites in bulk",
        "tags": [
          "Operations"
        ],
        "description": "Submits between 1 and 10,000 user invitation operations as a bulk process.\n\nThe returned bulk process is initially `SUBMITTED`. Use [Execute a bulk process](#tag/Manage/operation/bulkIdExecute) to start it, and the other Manage operations to inspect, pause, resume, or cancel it. Each item is processed using [Invite a user to become an authorized user](#tag/Setup/operation/userInviteSend).\n",
        "x-permissions": [
          "i:users:send_invite"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/idempotency-ref"
          }
        ],
        "requestBody": {
          "$ref": "#/components/requestBodies/BulkUserInviteRequest"
        },
        "responses": {
          "201": {
            "$ref": "#/components/responses/BulkProcessResponse"
          },
          "400": {
            "$ref": "#/components/responses/BadRequestError"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "409": {
            "$ref": "#/components/responses/BulkProcessorConflictResponse"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "access_token": [],
            "api-key": []
          }
        ]
      }
    },
    "/bulks/managed_cards/_id_/block": {
      "post": {
        "operationId": "bulksManagedCardBlock",
        "summary": "Block cards in bulk",
        "tags": [
          "Operations"
        ],
        "description": "Submits between 1 and 10,000 managed card block operations as a bulk process.\n\nThe returned bulk process is initially `SUBMITTED`. Use [Execute a bulk process](#tag/Manage/operation/bulkIdExecute) to start it, and the other Manage operations to inspect, pause, resume, or cancel it. Each item is processed using [Block a card](#tag/Managed-cards/operation/managedCardBlock).\n",
        "x-permissions": [
          "i:managed_cards:block"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/idempotency-ref"
          }
        ],
        "requestBody": {
          "$ref": "#/components/requestBodies/BulkManagedCardPathRequest"
        },
        "responses": {
          "201": {
            "$ref": "#/components/responses/BulkProcessResponse"
          },
          "400": {
            "$ref": "#/components/responses/BadRequestError"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "409": {
            "$ref": "#/components/responses/BulkProcessorConflictResponse"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "access_token": [],
            "api-key": []
          }
        ]
      }
    },
    "/bulks/managed_cards/_id_/unblock": {
      "post": {
        "operationId": "bulksManagedCardUnblock",
        "summary": "Unblock cards in bulk",
        "tags": [
          "Operations"
        ],
        "description": "Submits between 1 and 10,000 managed card unblock operations as a bulk process.\n\nThe returned bulk process is initially `SUBMITTED`. Use [Execute a bulk process](#tag/Manage/operation/bulkIdExecute) to start it, and the other Manage operations to inspect, pause, resume, or cancel it. Each item is processed using [Unblock a card](#tag/Managed-cards/operation/managedCardUnblock).\n",
        "x-permissions": [
          "i:managed_cards:unblock"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/idempotency-ref"
          }
        ],
        "requestBody": {
          "$ref": "#/components/requestBodies/BulkManagedCardPathRequest"
        },
        "responses": {
          "201": {
            "$ref": "#/components/responses/BulkProcessResponse"
          },
          "400": {
            "$ref": "#/components/responses/BadRequestError"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "409": {
            "$ref": "#/components/responses/BulkProcessorConflictResponse"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "access_token": [],
            "api-key": []
          }
        ]
      }
    },
    "/bulks/managed_cards/_id_/remove": {
      "post": {
        "operationId": "bulksManagedCardRemove",
        "summary": "Remove cards in bulk",
        "tags": [
          "Operations"
        ],
        "description": "Submits between 1 and 10,000 managed card removal operations as a bulk process.\n\nThe returned bulk process is initially `SUBMITTED`. Use [Execute a bulk process](#tag/Manage/operation/bulkIdExecute) to start it, and the other Manage operations to inspect, pause, resume, or cancel it. Each item is processed using [Remove a card](#tag/Managed-cards/operation/managedCardRemove).\n",
        "x-permissions": [
          "i:managed_cards:remove"
        ],
        "requestBody": {
          "$ref": "#/components/requestBodies/BulkManagedCardPathRequest"
        },
        "responses": {
          "201": {
            "$ref": "#/components/responses/BulkProcessResponse"
          },
          "400": {
            "$ref": "#/components/responses/BadRequestError"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "409": {
            "$ref": "#/components/responses/BulkProcessorConflictResponse"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "access_token": [],
            "api-key": []
          }
        ]
      }
    },
    "/bulks/managed_cards/_id_/spend_rules": {
      "patch": {
        "operationId": "bulksManagedCardSpendRulesUpdate",
        "summary": "Update spend rules for a managed card in bulk",
        "tags": [
          "Operations"
        ],
        "description": "Submits between 1 and 10,000 managed card spend rule updates as a bulk process.\n\nThe returned bulk process is initially `SUBMITTED`. Use [Execute a bulk process](#tag/Manage/operation/bulkIdExecute) to start it, and the other Manage operations to inspect, pause, resume, or cancel it. Each item is processed using [Update spend rules for a card](#tag/Spend-controls/operation/managedCardSpendRulesUpdate).\n",
        "x-permissions": [
          "i:managed_cards:update_spendrules"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/idempotency-ref"
          }
        ],
        "requestBody": {
          "$ref": "#/components/requestBodies/BulkManagedCardSpendRulesRequest"
        },
        "responses": {
          "201": {
            "$ref": "#/components/responses/BulkProcessResponse"
          },
          "400": {
            "$ref": "#/components/responses/BadRequestError"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "409": {
            "$ref": "#/components/responses/BulkProcessorConflictResponse"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "access_token": [],
            "api-key": []
          }
        ]
      }
    },
    "/bulks/transfers": {
      "post": {
        "operationId": "bulksTransferCreate",
        "summary": "Create transfer transactions in bulk",
        "tags": [
          "Operations"
        ],
        "description": "Submits between 1 and 10,000 transfer creation operations as a bulk process.\n\nThe returned bulk process is initially `SUBMITTED`. Use [Execute a bulk process](#tag/Manage/operation/bulkIdExecute) to start it, and the other Manage operations to inspect, pause, resume, or cancel it. Each item is processed using [Create a transfer](#tag/Transfers/operation/transferCreate).\n",
        "x-permissions": [
          "i:transfers:create"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/idempotency-ref"
          }
        ],
        "requestBody": {
          "$ref": "#/components/requestBodies/BulkTransferCreateRequest"
        },
        "responses": {
          "201": {
            "$ref": "#/components/responses/BulkProcessResponse"
          },
          "400": {
            "$ref": "#/components/responses/BadRequestError"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "409": {
            "$ref": "#/components/responses/BulkProcessorConflictResponse"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "access_token": [],
            "api-key": []
          }
        ]
      }
    },
    "/bulks/sends": {
      "post": {
        "operationId": "bulksSendCreate",
        "summary": "Create send transactions in bulk",
        "tags": [
          "Operations"
        ],
        "description": "Submits between 1 and 10,000 send creation operations as a bulk process.\n\nThe returned bulk process is initially `SUBMITTED`. Use [Execute a bulk process](#tag/Manage/operation/bulkIdExecute) to start it, and the other Manage operations to inspect, pause, resume, or cancel it. Each item is processed using [Create a send](#tag/Sends/operation/sendCreate).\n",
        "x-permissions": [
          "i:sends:create"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/idempotency-ref"
          }
        ],
        "requestBody": {
          "$ref": "#/components/requestBodies/BulkSendCreateRequest"
        },
        "responses": {
          "201": {
            "$ref": "#/components/responses/BulkProcessResponse"
          },
          "400": {
            "$ref": "#/components/responses/BadRequestError"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "409": {
            "$ref": "#/components/responses/BulkProcessorConflictResponse"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "access_token": [],
            "api-key": []
          }
        ]
      }
    },
    "/bulks/outgoing_wire_transfers": {
      "post": {
        "operationId": "bulksOutgoingWireTransferCreate",
        "summary": "Create outgoing wire transfers in bulk",
        "tags": [
          "Operations"
        ],
        "description": "Submits between 1 and 10,000 outgoing wire transfer creation operations as a bulk process.\n\nThe returned bulk process is initially `SUBMITTED`. Use [Execute a bulk process](#tag/Manage/operation/bulkIdExecute) to start it, and the other Manage operations to inspect, pause, resume, or cancel it. Each item is processed using [Create an outgoing wire transfer](#tag/Outgoing-wire-transfers/operation/outgoingWireTransferCreate).\n",
        "x-permissions": [
          "i:owt:create"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/idempotency-ref"
          }
        ],
        "requestBody": {
          "$ref": "#/components/requestBodies/BulkOutgoingWireTransferCreateRequest"
        },
        "responses": {
          "201": {
            "$ref": "#/components/responses/BulkProcessResponse"
          },
          "400": {
            "$ref": "#/components/responses/BadRequestError"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "409": {
            "$ref": "#/components/responses/BulkProcessorConflictResponse"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "access_token": [],
            "api-key": []
          }
        ]
      }
    },
    "/users/{user_id}": {
      "get": {
        "operationId": "userGetById",
        "summary": "Get a user",
        "tags": [
          "Setup"
        ],
        "description": "Retrieves the user identified by the `user_id` path parameter.",
        "x-permissions": [
          "i:users:get",
          "i:users:get:own"
        ],
        "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": [
          {
            "access_token": [],
            "api-key": []
          }
        ]
      },
      "patch": {
        "operationId": "userUpdate",
        "summary": "Update a user",
        "tags": [
          "Setup"
        ],
        "description": "Updates the user identified by the `user_id` path parameter. Only the fields you send are changed; \neverything else is left as it was.\n\nIf you change the mobile number, enroll the new number as an authentication factor afterwards, or \none-time passwords keep going to the old one.\n",
        "x-sca": "SECOND_FACTOR_SESSION",
        "x-permissions": [
          "i:users:update",
          "i:users:update:own"
        ],
        "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": [
          {
            "access_token": [],
            "api-key": []
          }
        ]
      }
    },
    "/identities": {
      "get": {
        "operationId": "userIdentities",
        "summary": "List linked identities",
        "tags": [
          "Setup"
        ],
        "description": "Retrieves a list of identities available to the holder of the token.",
        "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"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "access_token": [],
            "api-key": []
          },
          {
            "api-key": []
          }
        ]
      }
    },
    "/users/{user_id}/invite": {
      "post": {
        "operationId": "userInviteSend",
        "summary": "Invite a user to set a password",
        "tags": [
          "Setup"
        ],
        "x-tagSubgroup": "User email invites",
        "description": "Sends the user identified by the `user_id` path parameter an invitation email so they can set their \npassword for the first time.\n\nA user created with [Register a user](https://docs.weavr.io/api/usercreate) has no password until they \naccept an invitation. The email carries a URL with everything needed to set one, and stays valid for \n1 month. Your application consumes the invite with \n[Accept a user invitation](https://docs.weavr.io/api/userinviteconsume).\n\nTo give a user that already exists on another identity access to your identity, use\n[Link an existing user to your identity](https://docs.weavr.io/api/userlink) instead. Their password is\nalready set, so no invitation is needed.\n",
        "x-permissions": [
          "i:users:send_invite"
        ],
        "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": [
          {
            "access_token": [],
            "api-key": []
          }
        ]
      }
    },
    "/users/{user_id}/invite/validate": {
      "post": {
        "operationId": "userInviteValidate",
        "summary": "Validate a user's invite",
        "tags": [
          "Setup"
        ],
        "x-tagSubgroup": "User email invites",
        "description": "Checks whether a user's invite is still valid. Call it before showing the password form, so the user doesn't fill it in only to hit an expired invite.",
        "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": {
        "operationId": "userInviteConsume",
        "summary": "Accept a user invitation",
        "tags": [
          "Setup"
        ],
        "x-tagSubgroup": "User email invites",
        "description": "Accepts the invitation sent with [Invite a user to set a password](https://docs.weavr.io/api/userinvitesend) \nand sets the user's first password.\n\nPass the `inviteCode` from the invitation URL together with the tokenized password. Check the invite \nis still valid first with [Validate a user's invite](https://docs.weavr.io/api/userinvitevalidate), so \nthe user doesn't fill in a form for an expired link.\n\n:::note\nOn sandbox, `inviteCode` is always `123456`.\n:::\n",
        "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/{user_id}/link": {
      "post": {
        "operationId": "userLink",
        "summary": "Link an existing user to your identity",
        "tags": [
          "Setup"
        ],
        "description": "Use this when someone who already has a user on another identity needs access to yours, such as the same person\nacting for a second company.\n\nIt links the user identified by the `user_id` path parameter to the logged-in identity. Their credentials\nalready exist, so no invitation is sent and no password is set. The user has access immediately and picks\nthe identity they want to act for when they sign in. See\n[List identities](https://docs.weavr.io/api/useridentities).\n\n### Choosing between linking and inviting\nUse this for a user that already exists elsewhere on the platform. For someone new, register them with\n[Register a user](https://docs.weavr.io/api/usercreate) and send an invitation with\n[Invite a user](https://docs.weavr.io/api/userinvitesend) instead.\n\n### Conflicts\n`USER_ALREADY_LINKED_TO_IDENTITY` means the user can already access this identity, so no action is needed.\n`CREDENTIAL_NOT_FOUND` means there is no user to link, so register one instead. `KYB_MISSING`,\n`PROFILE_MISMATCH`, and `EMAIL_DOMAIN_NOT_ALLOWED` mean the identity or the user isn't eligible for linking.\n\n### Access\nThis operation requires a stepped-up access token. Step up before calling it by issuing a challenge\nthrough [Step-up](https://docs.weavr.io/api/stepupscachallenge).\n",
        "x-sca": "SECOND_FACTOR_SESSION",
        "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/UserLinkConflict"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "access_token_stepped_up": [],
            "api-key": []
          }
        ]
      }
    },
    "/users/verification/email/send": {
      "post": {
        "operationId": "authorisedUserEmailVerificationCodeSend",
        "summary": "Send an email verification code to a user",
        "tags": [
          "Setup"
        ],
        "x-tagSubgroup": "User email invites",
        "description": "The first step in verifying an authorized user's email. The authorized user whose email address is to be verified is sent an email containing a randomly generated code.\n\nThis code must then be provided in [Verify email of the authorized user](https://docs.weavr.io/api/authoriseduseremailverify) to verify the authorized user's email address.\n\n:::note\nOn sandbox, no email is sent and `verificationCode` is always `123456`.\n:::\n",
        "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": {
        "operationId": "authorisedUserEmailVerify",
        "summary": "Verify email of the authorized user",
        "tags": [
          "Setup"
        ],
        "x-tagSubgroup": "User email invites",
        "description": "The second step in verifying the authorized user's email. The randomly generated code sent to the authorized user via\nemail, using [Send an email verification code to a user](https://docs.weavr.io/api/authoriseduseremailverificationcodesend), is submitted here to verify the authorized user's email.\n\nThis is needed as part of the verification process for basic due diligence.\n\n:::note\nOn sandbox, no email is sent and `verificationCode` is always `123456`.\n:::\n",
        "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/{user_id}/deactivate": {
      "post": {
        "operationId": "userDeactivate",
        "summary": "Deactivate an authorized user",
        "tags": [
          "Setup"
        ],
        "description": "Deactivates the user identified by the `user_id` path parameter. A deactivated user can't log in or \ncall the API with their credentials.\n\nThis is reversible: another active user can restore them with \n[Reactivate an authorized user](https://docs.weavr.io/api/useractivate). A deactivated user can't \nreactivate themselves.\n\nDeactivation is identity-specific. If the user belongs to several identities, it applies only to the\nidentity the caller represents and leaves their status on the others untouched.\n",
        "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": [
          {
            "access_token": [],
            "api-key": []
          }
        ]
      }
    },
    "/users/{user_id}/activate": {
      "post": {
        "operationId": "userActivate",
        "summary": "Reactivate an authorized user",
        "tags": [
          "Setup"
        ],
        "description": "Reactivates the user identified by the `user_id` path parameter.\n\nNew users are active from the start, so you only need this for a user who was deactivated with \n[Deactivate an authorized user](https://docs.weavr.io/api/userdeactivate), or locked out automatically \nafter too many failed login attempts.\n\nActivation is identity-specific. If the user belongs to several identities, it applies only to the identity\nthe caller represents and leaves their status on the others untouched.\n",
        "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": [
          {
            "access_token": [],
            "api-key": []
          }
        ]
      }
    },
    "/users/kyc": {
      "post": {
        "operationId": "userKyc",
        "summary": "Start signatory verification",
        "tags": [
          "Setup"
        ],
        "description": "Starts verification for an authorized user of a corporate. Once approved, the user becomes an \nauthorized signatory who can act as a legal representative of the corporate.\n\nThe response contains a `reference` used to initialize the KYB UI Component, which presents the \nprovider's verification flow to the user. Verification itself happens there, not through this API.\n\n### Prerequisites\nThree things must already be true, and each has its own conflict code:\n\n- The corporate itself must have completed KYB (`KYB_IDENTITY_NOT_APPROVED`). See \n  [Start KYB for a corporate](https://docs.weavr.io/api/corporatekybstart).\n- The user must have verified their email address (`EMAIL_NOT_VERIFIED`). See \n  [Verify email of the authorized user](https://docs.weavr.io/api/authoriseduseremailverify).\n- The user must have verified their mobile number (`MOBILE_NOT_VERIFIED`).\n\n### Calling it more than once\nThe request fails with `KYC_ALREADY_APPROVED` if the user is already a verified signatory, \n`KYC_PENDING_REVIEW` while a submission is under review, and `KYC_REJECTED` if it was turned down. \nTreat these as \"no action needed\" rather than retrying.\n\nRead [Corporate due diligence and KYB](https://docs.weavr.io/identities/corporate/due-diligence/) for the \nverification requirements and integration flow.\n",
        "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 initialize the KYB UI Component.",
                      "example": "123456789"
                    }
                  }
                }
              }
            }
          },
          "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"
                      ]
                    }
                  }
                }
              }
            }
          },
          "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": []
          }
        ]
      }
    },
    "/corporates": {
      "post": {
        "operationId": "corporateCreate",
        "summary": "Register a corporate",
        "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.",
        "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": {
        "operationId": "corporateGet",
        "summary": "Get a corporate",
        "tags": [
          "Corporates"
        ],
        "description": "Returns the corporate associated with the authentication token, including its\ncompany details, contact information, and current state.\n\nRead the [corporate overview](https://docs.weavr.io/identities/corporate/overview/)\nfor the corporate lifecycle and onboarding flow.\n",
        "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": [
          {
            "access_token": [],
            "api-key": []
          }
        ]
      },
      "patch": {
        "operationId": "corporateUpdate",
        "summary": "Update a corporate",
        "tags": [
          "Corporates"
        ],
        "description": "Updates the details of the logged-in corporate identity.\n\nThe following fields are verified during due diligence (KYB) and can't be updated via the API once \nthe corporate has been verified:\n\n- `name`\n- `surname`\n- `email`\n- `mobile.countryCode`\n- `mobile.number`\n- `dateOfBirth`\n- `companyBusinessAddress`\n\nTo change any of these after due diligence, contact customer support, who will restart the process.\n",
        "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": [
          {
            "access_token": [],
            "api-key": []
          }
        ]
      }
    },
    "/corporates/verification/email/send": {
      "post": {
        "operationId": "corporateRootUserEmailVerificationCodeSend",
        "summary": "Send an email verification code to the corporate root user",
        "tags": [
          "Authorised signatories"
        ],
        "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.\n\nThis code must then be provided in [Verify email of the corporate root user](https://docs.weavr.io/api/corporaterootuseremailverify) to verify the root user's email address.\n\n:::note\nOn sandbox, no email is sent and `verificationCode` is always `123456`.\n:::\n",
        "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": {
        "operationId": "corporateRootUserEmailVerify",
        "summary": "Verify email of the corporate root user",
        "tags": [
          "Authorised signatories"
        ],
        "description": "The second step in verifying the root user's email. The randomly generated code sent to the root user via\nemail, using [Send an email verification code to the corporate root user](https://docs.weavr.io/api/corporaterootuseremailverificationcodesend), is submitted here to verify the root user's email.\n\nThis is needed as part of the verification process for basic due diligence.\n\n:::note\nOn sandbox, no email is sent and `verificationCode` is always `123456`.\n:::\n",
        "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": {
        "operationId": "corporateKybStart",
        "summary": "Start KYB for a corporate",
        "tags": [
          "Corporates"
        ],
        "description": "Use this to begin verification for a corporate. A corporate can't create instruments or move money \nuntil due diligence is approved.\n\nIt starts the KYB process for the logged-in corporate and returns a `reference`. Verification itself is \ncarried out by a KYB provider, not through this API. Embed the KYB UI Component in your application \nand initialize it with that `reference` to show the provider's screens to the corporate.\n\n### Prerequisites\nThe corporate's root user must have verified their email address first, or the request fails with \n`EMAIL_UNVERIFIED`. See \n[Verify email of the corporate root user](https://docs.weavr.io/api/corporaterootuseremailverify).\n\n### Managed onboarding\nOn managed-onboarding programmes, `MANAGED_ONBOARDING_PENDING` means Weavr is still\npreparing the corporate's KYB case. Wait for the corporate KYB status webhook with a\n`COLLECTION.READY_TO_START` run, then call this endpoint. The call succeeds and the\nsame run continues when the corporate opens the KYB UI Component.\n\n### Calling it more than once\nThe request fails with `KYB_ALREADY_APPROVED` if the corporate is already verified, `KYB_PENDING_REVIEW` \nwhile a submission is under review, and `KYB_PERMANENTLY_REJECTED` if it was turned down for good. Read \nthe current status with [Get KYB for a corporate](https://docs.weavr.io/api/corporatekybget) before \nstarting, and treat these conflicts as \"no action needed\" rather than retrying.\n\n### Tracking the outcome\nThis call only opens the process; approval happens asynchronously once the corporate completes the\nprovider's flow. Poll [Get KYB for a corporate](https://docs.weavr.io/api/corporatekybget) or subscribe\nto the KYB status webhook. Use `corporateKybStatus` for the corporate's acceptance to use financial\nservices, and `kybRuns` for detailed progress.\n\n### Authorized signatories\nKYB covers the corporate itself. Individuals who act as legal representatives are verified separately \nonce KYB is approved. See \n[Start signatory verification](https://docs.weavr.io/api/userkyc).\n\nRead [Corporate due diligence and KYB](https://docs.weavr.io/identities/corporate/due-diligence/) for the \nfull flow.\n",
        "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 initialize the KYB UI Component.",
                      "example": "123456789"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequestError"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "409": {
            "description": "Conflict",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "errorCode": {
                      "type": "string",
                      "enum": [
                        "KYB_ALREADY_APPROVED",
                        "KYB_PERMANENTLY_REJECTED",
                        "KYB_PENDING_REVIEW",
                        "EMAIL_UNVERIFIED",
                        "MANAGED_ONBOARDING_PENDING"
                      ]
                    }
                  }
                }
              }
            }
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "access_token": [],
            "api-key": []
          }
        ]
      },
      "get": {
        "operationId": "corporateKybGet",
        "summary": "Get KYB for a corporate",
        "tags": [
          "Corporates"
        ],
        "description": "Returns the KYB lifecycle status and every KYB run for the logged-in corporate. Use\n`corporateKybStatus` to decide whether the corporate may use financial services, and\n`kybRuns` to show the detailed progress of each verification attempt.\n\n`kybStatus` and `ongoingKybStatus` are deprecated but remain populated for backward\ncompatibility.\n\nRead [Corporate due diligence and KYB](https://docs.weavr.io/identities/corporate/due-diligence/)\nfor the verification flow and status handling.\n",
        "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": [
          {
            "access_token": [],
            "api-key": []
          }
        ]
      }
    },
    "/corporates/{corporateId}/kyb/entity": {
      "post": {
        "operationId": "corporateKybSubmitEntity",
        "summary": "Submit known KYB entity data for a corporate",
        "tags": [
          "Corporates"
        ],
        "description": "Use this when you already hold company and ownership information for a corporate and want its KYB\npre-populated before the corporate starts verification. Every field is optional, so send what you have.\n\nIt records the company details and the ownership graph for the corporate identified by the `corporateId`\npath parameter. The corporate's own name, registration number, and registration country come from the\ncorporate record and aren't accepted here.\n\n### Describing the ownership graph\nGive every company in `companies` and every person in `individuals` a `ref` of your own choosing, then\njoin them up in `relations`. A relation points `fromRef` (the holder of the stake or role) at `toRef`;\nleave `toRef` empty to point at the corporate itself. `INVALID_REF` means a relation names a `ref` that\nisn't in the submission.\n\nOnly the corporate's root user can be marked with `isSignatory`, otherwise the request fails with\n`SIGNATORY_MUST_BE_ROOT`.\n\n### Timing\nThis only works before verification starts. Once the corporate has begun its KYB journey the submission\nis rejected with `KYB_ALREADY_STARTED`, so submit what you hold before calling\n[Start KYB for a corporate](https://docs.weavr.io/api/corporatekybstart). `NOT_SUPPORTED` means the\ncorporate's profile isn't configured to accept pre-populated KYB data.\n\nRead [Corporate due diligence and KYB](https://docs.weavr.io/identities/corporate/due-diligence/) for the\nfull verification flow.\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/corporateIdPath"
          }
        ],
        "requestBody": {
          "$ref": "#/components/requestBodies/CorporateKybEntitySubmissionRequest"
        },
        "responses": {
          "201": {
            "description": "Details accepted"
          },
          "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": [
                        "NOT_SUPPORTED",
                        "INVALID_REF",
                        "INVALID_DATA",
                        "SIGNATORY_MUST_BE_ROOT",
                        "KYB_ALREADY_STARTED"
                      ]
                    }
                  }
                }
              }
            }
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "api-key": []
          }
        ]
      },
      "get": {
        "operationId": "corporateKybGetEntity",
        "summary": "Get the submitted KYB entity data for a corporate",
        "tags": [
          "Corporates"
        ],
        "description": "Returns the company details and ownership graph submitted to pre-populate the KYB of the corporate\nidentified by the `corporateId` path parameter, so you can check what was recorded.\n\nAlongside what you submitted, the response carries the corporate's own `companyName`,\n`registrationNumber`, and `registrationCountry`, taken from the corporate record.\n\nSee [Submit known KYB entity data for a corporate](https://docs.weavr.io/api/corporatekybsubmitentity)\nfor how the graph is put together.\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/corporateIdPath"
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/CorporateKybEntityGetResponse"
          },
          "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": [
                        "NOT_SUPPORTED",
                        "INVALID_REF",
                        "INVALID_DATA"
                      ]
                    }
                  }
                }
              }
            }
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "api-key": []
          }
        ]
      }
    },
    "/corporates/{corporateId}/kyb/profile": {
      "post": {
        "operationId": "corporateKybSetProfile",
        "summary": "Submit the KYB account-usage profile for a corporate",
        "tags": [
          "Corporates"
        ],
        "description": "Use this when you already know how a corporate intends to use its account and want that answered ahead of\nverification, so the corporate doesn't have to fill it in again.\n\nIt records the account-usage profile for the corporate identified by the `corporateId` path parameter:\nwhere funds come from, where they go, expected monthly volumes and values, and whether collections,\npayouts, and cards are in use. Every field is optional.\n\n### Timing\nThis only works before verification starts. Once the corporate has begun its KYB journey the submission is\nrejected with `KYB_ALREADY_STARTED`, so submit what you hold before calling\n[Start KYB for a corporate](https://docs.weavr.io/api/corporatekybstart). `NOT_SUPPORTED` means the\ncorporate's profile isn't configured to accept pre-populated KYB data.\n\nRead [Corporate due diligence and KYB](https://docs.weavr.io/identities/corporate/due-diligence/) for the\nfull verification flow.\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/corporateIdPath"
          }
        ],
        "requestBody": {
          "$ref": "#/components/requestBodies/CorporateKybProfileSubmissionRequest"
        },
        "responses": {
          "201": {
            "description": "Profile accepted"
          },
          "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": [
                        "NOT_SUPPORTED",
                        "INVALID_REF",
                        "INVALID_DATA",
                        "KYB_ALREADY_STARTED"
                      ]
                    }
                  }
                }
              }
            }
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "api-key": []
          }
        ]
      },
      "get": {
        "operationId": "corporateKybGetProfile",
        "summary": "Get the submitted KYB account-usage profile for a corporate",
        "tags": [
          "Corporates"
        ],
        "description": "Returns the account-usage profile submitted to pre-populate the KYB of the corporate identified by the\n`corporateId` path parameter, so you can check what was recorded.\n\nSee [Submit the KYB account-usage profile for a corporate](https://docs.weavr.io/api/corporatekybsetprofile)\nfor what the profile covers.\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/corporateIdPath"
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/CorporateKybProfileGetResponse"
          },
          "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": [
                        "NOT_SUPPORTED",
                        "INVALID_REF",
                        "INVALID_DATA"
                      ]
                    }
                  }
                }
              }
            }
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "api-key": []
          }
        ]
      }
    },
    "/corporates/{corporateId}/kyb/documents": {
      "post": {
        "operationId": "corporateKybUploadDocument",
        "summary": "Upload a KYB supporting document for a corporate",
        "tags": [
          "Corporates"
        ],
        "description": "Use this when you already hold paperwork for a corporate (a registration certificate or a shareholder\nregister, say) and want it attached to the corporate's KYB before verification starts.\n\nIt stores one document against the corporate identified by the `corporateId` path parameter and returns\nthe `reference` it was stored under. Send one document per call, up to 10 MB, as `multipart/form-data`.\nOversized files are rejected with `DOCUMENT_TOO_LARGE` and unreadable ones with\n`UNSUPPORTED_DOCUMENT_FORMAT`.\n\n### Timing\nThis only works before verification starts. Once the corporate has begun its KYB journey the upload is\nrejected with `KYB_ALREADY_STARTED`, so upload what you hold before calling\n[Start KYB for a corporate](https://docs.weavr.io/api/corporatekybstart). `NOT_SUPPORTED` means the\ncorporate's profile isn't configured to accept pre-populated KYB data.\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/corporateIdPath"
          }
        ],
        "requestBody": {
          "$ref": "#/components/requestBodies/CorporateKybDocumentUploadRequest"
        },
        "responses": {
          "201": {
            "description": "Document accepted",
            "headers": {
              "request-ref": {
                "$ref": "#/components/headers/request-ref"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CorporateKybDocumentResponse"
                }
              }
            }
          },
          "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": [
                        "NOT_SUPPORTED",
                        "DOCUMENT_TOO_LARGE",
                        "UNSUPPORTED_DOCUMENT_FORMAT",
                        "INVALID_DATA",
                        "KYB_ALREADY_STARTED"
                      ]
                    }
                  }
                }
              }
            }
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "api-key": []
          }
        ]
      },
      "get": {
        "operationId": "corporateKybGetDocuments",
        "summary": "List the uploaded KYB documents for a corporate",
        "tags": [
          "Corporates"
        ],
        "description": "Lists the documents uploaded to pre-populate the KYB of the corporate identified by the `corporateId` path\nparameter, so you can check what was recorded.\n\nMetadata only: each entry carries the stored `reference`, `documentType`, `description`, and `filename`.\nThe binaries themselves can't be read back through this API.\n\nSee [Upload a KYB supporting document for a corporate](https://docs.weavr.io/api/corporatekybuploaddocument)\nfor how documents are stored.\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/corporateIdPath"
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/CorporateKybDocumentsGetResponse"
          },
          "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": [
                        "NOT_SUPPORTED",
                        "INVALID_REF",
                        "INVALID_DATA"
                      ]
                    }
                  }
                }
              }
            }
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "api-key": []
          }
        ]
      }
    },
    "/corporates/fees/charge": {
      "post": {
        "operationId": "corporateChargeFee",
        "summary": "Charge fee to a corporate",
        "tags": [
          "Fees"
        ],
        "description": "Charges the logged-in corporate one of the custom fees configured in the Multi Portal.\n\nThe amount lands in your revenue account, whose balance and history you can see in the Multi Portal.\n",
        "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": [
          {
            "access_token": [],
            "api-key": []
          }
        ]
      }
    },
    "/fees": {
      "get": {
        "operationId": "feesGet",
        "summary": "List fees",
        "tags": [
          "Fees"
        ],
        "description": "Returns the fee transactions accrued by the logged-in identity: every `FeeTransaction` posted against any of the identity's instruments, filterable by time window.\n\nFor surfaces that need fees inline with their parent activity, the same `FeeTransaction` records are also exposed via the Transaction Activity API and on Statements V2.\n",
        "x-permissions": [
          "i:fees:get"
        ],
        "x-sca": "SECOND_FACTOR_WITHIN_WINDOW",
        "parameters": [
          {
            "$ref": "#/components/parameters/offset"
          },
          {
            "$ref": "#/components/parameters/limit"
          },
          {
            "$ref": "#/components/parameters/creationTimestampFrom"
          },
          {
            "$ref": "#/components/parameters/creationTimestampTo"
          },
          {
            "$ref": "#/components/parameters/sortOrder"
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/FeeTransactionListResponse"
          },
          "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": [
          {
            "access_token": [],
            "api-key": []
          }
        ]
      }
    },
    "/consumers": {
      "post": {
        "operationId": "consumerCreate",
        "summary": "Register a consumer",
        "tags": [
          "Consumers"
        ],
        "description": "Create a consumer identity to represent an individual.\n\nThe information provided must be accurate as it will be passed on for KYC verification with our partner.\n\n:::warning\nIncorrect information may incur a re-processing fee.\n:::\n",
        "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": {
        "operationId": "consumerGet",
        "summary": "Get a consumer",
        "tags": [
          "Consumers"
        ],
        "description": "Returns the consumer associated with the authentication token, including their\nprofile, contact details, and current state.\n\nRead the [consumer overview](https://docs.weavr.io/identities/consumer/overview/)\nfor the consumer lifecycle and onboarding flow.\n",
        "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": [
          {
            "access_token": [],
            "api-key": []
          }
        ]
      },
      "patch": {
        "operationId": "consumerUpdate",
        "summary": "Update a consumer",
        "tags": [
          "Consumers"
        ],
        "description": "Updates the details of the logged-in consumer identity.\n\nIf the consumer root user has already completed KYC, the following fields can't be updated:\n\n- `name`\n- `surname`\n- `email`\n- `mobile.countryCode`\n- `mobile.number`\n- `dateOfBirth`\n- `address`\n",
        "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": [
          {
            "access_token": [],
            "api-key": []
          }
        ]
      }
    },
    "/consumers/verification/email/send": {
      "post": {
        "operationId": "consumerRootUserEmailVerificationCodeSend",
        "summary": "Send an email verification code to the consumer root user",
        "tags": [
          "Authorised signatories"
        ],
        "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.\n\nThis code must then be provided in [Verify email of the consumer root user](https://docs.weavr.io/api/consumerrootuseremailverify) to verify the root user's email address.\n\n:::note\nOn sandbox, no email is sent and `verificationCode` is always `123456`.\n:::\n",
        "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": {
        "operationId": "consumerRootUserEmailVerify",
        "summary": "Verify email of the consumer root user",
        "tags": [
          "Authorised signatories"
        ],
        "description": "The second step in verifying the root user's email. The randomly generated code sent to the root user via\nemail, using [Send an email verification code to the consumer root user](https://docs.weavr.io/api/consumerrootuseremailverificationcodesend), is submitted here to verify the root user's email.\n\nThis is needed as part of the verification process for basic due diligence.\n\n:::note\nOn sandbox, no email is sent and `verificationCode` is always `123456`.\n:::\n",
        "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": {
        "operationId": "consumerKycStart",
        "summary": "Start KYC for a consumer",
        "tags": [
          "Consumers"
        ],
        "description": "Use this to begin identity verification for a consumer. A consumer can't create instruments or move \nmoney until due diligence is approved.\n\nIt starts the KYC process for the logged-in consumer and returns a `reference`. Verification itself is \ncarried out by a KYC provider, not through this API. Embed the KYC UI Component in your application \nand initialize it with that `reference` to show the provider's screens to the user.\n\n### Prerequisites\nThe consumer's root user must have verified their email address first, or the request fails with \n`EMAIL_UNVERIFIED`. See \n[Verify email of the consumer root user](https://docs.weavr.io/api/consumerrootuseremailverify).\n\n### Fields\n`prefillDetails` lets you pass details you already hold as name/value pairs, so the user doesn't \nre-enter them in the provider's screens.\n\n### Calling it more than once\nKYC starts once per outcome. The request fails with `KYC_ALREADY_APPROVED` if the consumer is already \nverified, `KYC_PENDING_REVIEW` while a submission is under review, and `KYC_REJECTED` if it was turned \ndown. Read the current status with \n[Get KYC for a consumer](https://docs.weavr.io/api/consumerkycget) before starting, and treat these \nconflicts as \"no action needed\" rather than retrying.\n\n### Tracking the outcome\nThis call only opens the process; approval happens asynchronously once the user completes the \nprovider's flow. Poll [Get KYC for a consumer](https://docs.weavr.io/api/consumerkycget), where \n`fullDueDiligence` moves through `NOT_STARTED`, `INITIATED`, `PENDING_REVIEW`, and then `APPROVED` or \n`REJECTED`. The consumer can transact once it is `APPROVED`.\n\nRead [Consumer due diligence and KYC](https://docs.weavr.io/identities/consumer/due-diligence/) for the \nfull flow.\n",
        "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": [
          {
            "access_token": [],
            "api-key": []
          }
        ]
      },
      "get": {
        "operationId": "consumerKycGet",
        "summary": "Get KYC for a consumer",
        "tags": [
          "Consumers"
        ],
        "description": "Returns the due diligence status of the logged-in consumer. Use the effective and\nongoing KYC statuses to decide whether the consumer can use financial services or\nmust complete further verification.\n\nRead [Consumer due diligence and KYC](https://docs.weavr.io/identities/consumer/due-diligence/)\nfor the verification flow and status handling.\n",
        "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": [
          {
            "access_token": [],
            "api-key": []
          }
        ]
      }
    },
    "/consumers/fees/charge": {
      "post": {
        "operationId": "consumerChargeFee",
        "summary": "Charge fee to a consumer",
        "tags": [
          "Fees"
        ],
        "description": "Charges the logged-in consumer one of the custom fees configured in the Multi Portal.\n\nThe amount lands in your revenue account, whose balance and history you can see in the Multi Portal.\n",
        "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": [
          {
            "access_token": [],
            "api-key": []
          }
        ]
      }
    },
    "/managed_accounts": {
      "get": {
        "operationId": "managedAccountsGet",
        "summary": "List accounts",
        "tags": [
          "Managed accounts"
        ],
        "description": "Retrieves all managed accounts belonging to the logged-in identity.",
        "x-sca": "SECOND_FACTOR_HISTORICAL",
        "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": [
          {
            "access_token_stepped_up": [],
            "api-key": []
          }
        ]
      },
      "post": {
        "operationId": "managedAccountCreate",
        "summary": "Create an account",
        "tags": [
          "Managed accounts"
        ],
        "description": "Use this when an identity needs a place to hold funds, receive deposits, or fund debit cards.\n\nA managed account is created for the logged-in consumer or corporate identity in a single currency \nfixed at creation. It can hold a balance, act as the parent account for debit cards, and (once it \nhas an IBAN) send and receive wire transfers.\n\n### Prerequisites\nThe identity must have completed due diligence before it can create accounts; otherwise the request \nfails with `OWNER_IDENTITY_NOT_VERIFIED`. The Managed Account Profile referenced by `profileId` must \nbe active and must support the requested `currency`.\n\nThis operation requires a stepped-up access token. Step up before calling it by issuing a challenge \nthrough [Step-up](https://docs.weavr.io/api/stepupscachallenge).\n\n### Fields\n`profileId` selects the Managed Account Profile configured in the Multi Portal, which determines the \nbehavior, limits, and restrictions applied to the account. `currency` fixes the account's currency \nand can't be changed afterwards; it must be enabled on the profile, or the request fails with \n`CURRENCY_NOT_SUPPORTED_BY_PROFILE`. `friendlyName` is a label for your own use.\n\nSet `lowBalanceThreshold` to receive a low balance notification webhook whenever the available \nbalance drops below that amount. It is expressed in the account's own currency.\n\n### Next steps\nA new account has no IBAN and starts with a zero balance. Wire transfers in either direction need \nbank details, so if the account is to send or receive them, call \n[Add an IBAN to an account](https://docs.weavr.io/api/managedaccountsibanupgrade) next.\n",
        "x-sca": "SECOND_FACTOR_HISTORICAL",
        "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": [
          {
            "access_token_stepped_up": [],
            "api-key": []
          }
        ]
      }
    },
    "/managed_accounts/{id}": {
      "get": {
        "operationId": "managedAccountGet",
        "summary": "Get an account",
        "tags": [
          "Managed accounts"
        ],
        "description": "Returns the managed account identified by `id`, including its profile, currency,\nbalances, state, and account details.\n\nRead the [managed accounts overview](https://docs.weavr.io/instruments/accounts/overview/)\nfor account types, balances, and lifecycle operations.\n",
        "x-sca": "SECOND_FACTOR_HISTORICAL",
        "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]+$",
              "example": "123456789"
            }
          }
        ],
        "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": [
          {
            "access_token_stepped_up": [],
            "api-key": []
          }
        ]
      },
      "patch": {
        "operationId": "managedAccountUpdate",
        "summary": "Update an account",
        "tags": [
          "Managed accounts"
        ],
        "description": "Update the details for the managed account identified by the `id` in the path.",
        "x-sca": "SECOND_FACTOR_HISTORICAL",
        "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]+$",
              "example": "123456789"
            }
          }
        ],
        "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": [
          {
            "access_token_stepped_up": [],
            "api-key": []
          }
        ]
      }
    },
    "/managed_accounts/{id}/iban": {
      "post": {
        "operationId": "managedAccountsIBANUpgrade",
        "summary": "Add an IBAN to an account",
        "tags": [
          "Managed accounts"
        ],
        "description": "Use this when a managed account needs to send or receive wire transfers.\n\nIt assigns an IBAN, and the associated bank details, to the managed account identified by the `id` \npath parameter. Without one, the account can hold funds and fund cards, but can't take part in \nincoming or outgoing wire transfers. An outgoing wire transfer from an account with no IBAN fails \nwith `IBAN_UPGRADE_REQUIRED`.\n\n### Prerequisites\nThe account must exist and be active (`INSTRUMENT_IS_NOT_ACTIVE`), and the owning identity must have \ncompleted due diligence (`OWNER_NOT_VERIFIED`). Whether an IBAN can be issued at all depends on the \naccount's currency and your payment model; unsupported combinations fail with `IBAN_NOT_SUPPORTED`.\n\n### Allocation is asynchronous\nAllocation may not complete during the request. Read `state` on the response:\n\n| State | Meaning |\n| --- | --- |\n| `PENDING_ALLOCATION` | The IBAN is being allocated. `bankAccountDetails` isn't usable yet. |\n| `ALLOCATED` | The IBAN is ready and `bankAccountDetails` can be shared and used. |\n| `UNALLOCATED` | No IBAN has ever been assigned to this account. |\n\nWhen the state is `PENDING_ALLOCATION`, poll \n[Get an account IBAN](https://docs.weavr.io/api/managedaccountibanget) until it becomes `ALLOCATED`. \nDon't display bank details to the user before then.\n\n### Calling it more than once\nAn account holds at most one IBAN. Repeating the call once an IBAN exists fails with \n`INSTRUMENT_ALREADY_UPGRADED_TO_IBAN`, and calling it again while allocation is still in flight fails \nwith `IBAN_ALREADY_REQUESTED`. Treat both as \"already done\" rather than retrying. Use \n[Get an account IBAN](https://docs.weavr.io/api/managedaccountibanget) to read the current state \ninstead.\n\n`bankAccountDetails` is a list because a payment model can support more than one IBAN provider. Where \nseveral sets are returned, each is a valid route for depositing into the same account.\n",
        "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]+$",
              "example": "123456789"
            }
          },
          {
            "$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": [
          {
            "access_token": [],
            "api-key": []
          }
        ]
      },
      "get": {
        "operationId": "managedAccountIBANGet",
        "summary": "Get an account IBAN",
        "tags": [
          "Managed accounts"
        ],
        "description": "Fetches the IBAN and bank account details of the managed account identified by the `id` path \nparameter.\n\nUse this to poll after [adding an IBAN](https://docs.weavr.io/api/managedaccountsibanupgrade), and to \nread back the details to display for incoming deposits.\n\nCheck `state` before using the response. `UNALLOCATED` means no IBAN has been assigned yet, \n`PENDING_ALLOCATION` means allocation is still in progress and the details aren't usable, and \n`ALLOCATED` means they are ready to share.\n\n`bankAccountDetails` is a list because a payment model can support more than one IBAN provider. Where \nseveral sets are returned, each is a valid route for depositing into the same account.\n",
        "x-permissions": [
          "i:managed_accounts:get_iban"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The unique identifier of the managed account.",
            "required": true,
            "style": "simple",
            "schema": {
              "type": "string",
              "pattern": "^[0-9]+$",
              "example": "123456789"
            }
          }
        ],
        "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": [
          {
            "access_token": [],
            "api-key": []
          }
        ]
      }
    },
    "/managed_accounts/{id}/block": {
      "post": {
        "operationId": "managedAccountBlock",
        "summary": "Block an account",
        "tags": [
          "Managed accounts"
        ],
        "description": "Temporarily blocks the managed account identified by `id`. The account remains in\nplace and can be restored with the unblock endpoint.\n\nRead the [managed accounts overview](https://docs.weavr.io/instruments/accounts/overview/)\nfor account states and lifecycle operations.\n",
        "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]+$",
              "example": "123456789"
            }
          },
          {
            "$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": [
          {
            "access_token": [],
            "api-key": []
          }
        ]
      }
    },
    "/managed_accounts/{id}/unblock": {
      "post": {
        "operationId": "managedAccountUnblock",
        "summary": "Unblock an account",
        "tags": [
          "Managed accounts"
        ],
        "description": "Unblocks the managed account identified by the `id` path parameter.\nThe managed account must have `state.blockedReason` as `USER` so that it can be unblocked.\nIf the managed account was blocked by `SYSTEM`, users cannot unblock it.\n",
        "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]+$",
              "example": "123456789"
            }
          },
          {
            "$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": [
          {
            "access_token": [],
            "api-key": []
          }
        ]
      }
    },
    "/deprecated/managed_accounts/{id}/statement": {
      "get": {
        "operationId": "managedAccountStatementDeprecated",
        "summary": "Get an account statement (legacy)",
        "tags": [
          "Managed accounts"
        ],
        "description": "Legacy version of [Get an account statement](https://docs.weavr.io/api/managedaccountstatement).\nSee the [Release 113 changelog](https://docs.weavr.io/changelog/2026/06/23/multi/release-113/) for\nwhat changed and how to migrate.\n\nReturns a statement for the managed account identified by the `id` path parameter — a settled view\nof posted transactions matching the criteria provided in the request.\n",
        "deprecated": true,
        "x-sca": "SECOND_FACTOR_WITHIN_WINDOW",
        "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]+$",
              "example": "123456789"
            }
          },
          {
            "$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/statementTransactionType"
          }
        ],
        "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": [
          {
            "access_token": [],
            "api-key": []
          }
        ]
      }
    },
    "/managed_accounts/{id}/statement": {
      "get": {
        "operationId": "managedAccountStatement",
        "summary": "Get an account statement",
        "tags": [
          "Managed accounts"
        ],
        "description": "Returns a statement for the managed account identified by the `id` path parameter.\n\nA statement is a settled view of the account. It contains only posted transactions where funds have \ndefinitively moved and the account's actual balance changed; pending transactions and authorizations are \nexcluded. Repeating a request for the same period returns the same result, which makes statements safe to \nreconcile against.\n\n:::note\nFor an unsettled view, including transactions that are committed but not yet executed, use \n[List transactions](https://docs.weavr.io/api/transactionsget) or \n[List account transactions](https://docs.weavr.io/api/managedaccounttransactionsget) instead.\n:::\n\n### Response formats\nSet the `accept` header to `application/json` (the default) or `text/csv`. Anything else falls back to \nJSON. Use CSV for reconciliation and JSON to render the statement yourself.\n\n:::note\n`application/pdf` on this endpoint is deprecated. For a document the customer downloads, use \n[Download an account statement as a PDF](https://docs.weavr.io/api/managedaccountstatementpdf), which \nrenders in a timezone you choose and covers the whole period rather than a single page. The JSON and CSV \nresponses aren't deprecated.\n:::\n\n### Choosing a period\n`startPeriod` and `endPeriod` are epoch timestamps in milliseconds. Page with `offset` and `limit`; \n`limit` is capped at 500. `sortOrder` defaults to `ASC`, oldest first. Pass `DESC` for a most-recent-first \nview.\n\n### Filtering\nNarrow the statement by `transaction.type`, and by the instrument that initiated each entry using \n`executingAccessInstrument.id` and `executingAccessInstrument.type`. Both accept multiple values.\n\n### Access\nThis operation requires a stepped-up access token. Step up before calling it by issuing a challenge \nthrough [Step-up](https://docs.weavr.io/api/stepupscachallenge).\n",
        "x-sca": "SECOND_FACTOR_WITHIN_WINDOW",
        "x-permissions": [
          "i:managed_accounts:statement"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The unique identifier of the managed account.",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^[0-9]+$",
              "example": "123456789"
            }
          },
          {
            "$ref": "#/components/parameters/accept"
          },
          {
            "$ref": "#/components/parameters/apiVersion"
          },
          {
            "$ref": "#/components/parameters/offset"
          },
          {
            "$ref": "#/components/parameters/statementResponseLimit"
          },
          {
            "$ref": "#/components/parameters/startPeriod"
          },
          {
            "$ref": "#/components/parameters/endPeriod"
          },
          {
            "$ref": "#/components/parameters/statementSortOrder"
          },
          {
            "$ref": "#/components/parameters/statementResponseTransactionType"
          },
          {
            "$ref": "#/components/parameters/statementResponseExecutingAccessInstrumentId"
          },
          {
            "$ref": "#/components/parameters/statementResponseExecutingAccessInstrumentType"
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/InstrumentStatementJsonResponse"
          },
          "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": [
          {
            "access_token_stepped_up": [],
            "api-key": []
          }
        ]
      }
    },
    "/managed_accounts/{id}/statement/pdf": {
      "get": {
        "operationId": "managedAccountStatementPdf",
        "summary": "Download an account statement as a PDF",
        "tags": [
          "Managed accounts"
        ],
        "description": "Use this when the customer needs a statement document they can keep, print, or send to a third party.\n\nIt returns the statement for the managed account identified by the `id` path parameter as a rendered PDF,\nready to hand to the end customer as-is.\n\n### Choosing a period\n`startPeriod` and `endPeriod` are dates in the format `yyyy-MM-dd`, both inclusive, and are resolved to\nlocal midnight in `timezone`. The period defaults to the last month and must not exceed 12 months.\n\nUnlike [Get an account statement](https://docs.weavr.io/api/managedaccountstatement), this returns\n**every** entry in the period rather than a page of them. A period longer than 12 months, or one holding\nmore than 5,000 entries, is rejected with a `400` rather than silently truncated. Narrow the period and\nrequest again. A period with no entries still produces a valid PDF, with no entry rows.\n\n### Timezones\nEvery date and time on the document is rendered in `timezone`, which the document itself states, so the\nreader knows what the times mean. It defaults to `UTC`. Pass an IANA name such as `Europe/Rome`; fixed\noffsets like `+02:00` are rejected because they carry no daylight-saving rules.\n\n### Access\nThis operation requires a stepped-up access token. Step up before calling it by issuing a challenge\nthrough [Step-up](https://docs.weavr.io/api/stepupscachallenge).\n",
        "x-sca": "SECOND_FACTOR_WITHIN_WINDOW",
        "x-permissions": [
          "i:managed_accounts:statement"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The unique identifier of the managed account.",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^[0-9]+$",
              "example": "123456789"
            }
          },
          {
            "$ref": "#/components/parameters/statementPdfStartPeriod"
          },
          {
            "$ref": "#/components/parameters/statementPdfEndPeriod"
          },
          {
            "$ref": "#/components/parameters/statementPdfTimezone"
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/InstrumentStatementPdfResponse"
          },
          "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": [
          {
            "access_token_stepped_up": [],
            "api-key": []
          }
        ]
      }
    },
    "/managed_accounts/{id}/transactions": {
      "get": {
        "operationId": "managedAccountTransactionsGet",
        "summary": "List account transactions",
        "tags": [
          "Managed accounts"
        ],
        "description": "Returns all transactional activity on the managed account identified by the `id` path parameter.\n\nUnlike the statement endpoint, this includes pending, completed, failed, and rejected transactions.\nAll transaction types are returned in a unified schema.\n",
        "x-sca": "SECOND_FACTOR_WITHIN_WINDOW",
        "x-permissions": [
          "i:managed_accounts:statement"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The unique identifier of the managed account.",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^[0-9]+$",
              "example": "123456789"
            }
          },
          {
            "$ref": "#/components/parameters/offset"
          },
          {
            "$ref": "#/components/parameters/limit"
          },
          {
            "$ref": "#/components/parameters/transactionActivityType"
          },
          {
            "$ref": "#/components/parameters/transactionActivityStatus"
          },
          {
            "$ref": "#/components/parameters/transactionActivityDirection"
          },
          {
            "$ref": "#/components/parameters/creationTimestampFrom"
          },
          {
            "$ref": "#/components/parameters/creationTimestampTo"
          },
          {
            "$ref": "#/components/parameters/lastUpdatedTimestampFrom"
          },
          {
            "$ref": "#/components/parameters/lastUpdatedTimestampTo"
          },
          {
            "$ref": "#/components/parameters/sortOrder"
          },
          {
            "$ref": "#/components/parameters/transactionActivitySortBy"
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/InstrumentTransactionActivityListResponse"
          },
          "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": [
          {
            "access_token": [],
            "api-key": []
          }
        ]
      }
    },
    "/managed_accounts/{id}/transactions/{transactionId}": {
      "get": {
        "operationId": "managedAccountTransactionGet",
        "summary": "Get an account transaction",
        "tags": [
          "Managed accounts"
        ],
        "description": "Returns the transaction identified by `transactionId` for the managed account\nidentified by `id`, including its type, amount, state, and timestamps.\n\nRead the [transaction activity overview](https://docs.weavr.io/transactions/transaction-activity/overview/)\nfor the common transaction model and supported transaction types.\n",
        "x-sca": "SECOND_FACTOR_WITHIN_WINDOW",
        "x-permissions": [
          "i:managed_accounts:statement"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The unique identifier of the managed account.",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^[0-9]+$",
              "example": "123456789"
            }
          },
          {
            "name": "transactionId",
            "in": "path",
            "description": "The unique identifier of the transaction.",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^[0-9]+$",
              "example": "123456789"
            }
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/InstrumentTransactionActivityResponse"
          },
          "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": [
          {
            "access_token": [],
            "api-key": []
          }
        ]
      }
    },
    "/managed_accounts/{id}/remove": {
      "post": {
        "operationId": "managedAccountRemove",
        "summary": "Remove an account",
        "tags": [
          "Managed accounts"
        ],
        "description": "Destroys the managed account identified by the `id` path parameter. Unlike block, this action is not reversible.\n\nA managed account must be emptied from any remaining funds before it can be destroyed.\n",
        "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]+$",
              "example": "123456789"
            }
          }
        ],
        "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": [
          {
            "access_token": [],
            "api-key": []
          }
        ]
      }
    },
    "/managed_cards": {
      "get": {
        "operationId": "managedCardsGet",
        "summary": "List cards",
        "tags": [
          "Managed cards"
        ],
        "description": "Returns a paginated list of managed cards belonging to the logged-in identity.\nFilter the results by profile, state, currency, card type, cardholder, creation\ndate, card-number fragments, or other card attributes.\n\nRead the [managed cards overview](https://docs.weavr.io/instruments/cards/overview/)\nfor card types, ownership, and lifecycle operations.\n",
        "x-sca": "SECOND_FACTOR_SESSION",
        "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,
            "description": "Filter by one or more physical-card manufacturing states.",
            "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": [
          {
            "access_token_stepped_up": [],
            "api-key": []
          }
        ]
      }
    },
    "/managed_cards#prepaid": {
      "post": {
        "operationId": "prepaidManagedCardCreate",
        "summary": "Create a prepaid card",
        "tags": [
          "Managed cards"
        ],
        "description": "Create a card with its own balance. Fund it by transferring money onto the card, then spend from\nthat balance.\n\nThe card is created as a virtual card for the logged-in consumer or corporate identity. Its balance\nis in one currency, fixed when it is created. It can spend only the funds transferred onto it.\n\n### Prerequisites\nThe identity must have completed due diligence before it can create cards; otherwise the request\nfails with `OWNER_IDENTITY_NOT_VERIFIED`. The Managed Card Profile referenced by `profileId` must\nbe active and support the requested `currency`.\n\nThis operation requires a stepped-up access token. Step up before calling it by issuing a challenge \nthrough [Step-up](https://docs.weavr.io/api/stepupscachallenge).\n\n### Fields\n\n#### Profile and mode\n`profileId` selects the Managed Card Profile configured in the Multi Portal, which determines the\nbehavior, limits, and restrictions applied to the card. Set `mode` to `PREPAID_MODE`.\n\n#### Balance\n`currency` fixes the card's balance currency and can't be changed afterwards. It must be one of the\ncurrencies enabled on the profile, or the request fails with `CURRENCY_NOT_SUPPORTED_BY_PROFILE`.\nA new card starts with a zero balance. You can transfer funds to and from the card; its available\nbalance is what it can spend. Spend limits aren't supported for prepaid cards.\n\n#### Names\n`nameOnCard` is the cardholder name and may be checked by merchants for online purchases. It is\nprinted on the card if the card is later upgraded to physical, as is the optional `nameOnCardLine2`.\nBoth are capped at 27 characters here, but the limit that actually applies to a printed card depends \non the chosen card design and is confirmed by Weavr during physical card setup. `friendlyName` is a \nlabel for your own use and isn't printed or shared with merchants.\n\n#### Address\n`billingAddress` is the cardholder's billing address and may be verified by merchants for online\npurchases. It is unrelated to where a physical card is delivered. The delivery address is supplied \nwhen the card is upgraded to physical.\n\n#### Linking a user\nSet `userId` to link the card to an authorized user. The linked user's authentication details are \nthen used for actions performed on the card, such as 3DS authentication and manual provisioning to \na digital wallet. Linking is also a prerequisite for bulk physical delivery.\n\n#### Renewal\n`renewalType` controls what happens as the card approaches expiry. `RENEW` reissues the card with\nthe same card number and a new expiry date and CVV; `NO_RENEW` lets it expire and be destroyed.\n\n#### Digital wallets and external data\n`digitalWallets` controls whether the card can be tokenized and push-provisioned into a digital \nwallet, and which artwork is used. `externalData` holds up to 10 name/value pairs of your own. \nWeavr stores them against the card and can surface them in reports and filters, but never acts \non them.\n\n### Next steps\nThe card is usable as a virtual card as soon as it is created. To issue plastic for it, see\n[Request a physical card for individual delivery](https://docs.weavr.io/api/managedcardphysicalupgrade)\nor [for bulk delivery](https://docs.weavr.io/api/managedcardphysicalupgradebulk).\n",
        "x-permissions": [
          "i:managed_cards:create"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/idempotency-ref"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PrepaidModeCardRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "request-ref": {
                "$ref": "#/components/headers/request-ref"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PrepaidModeCard"
                }
              }
            }
          },
          "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": [
          {
            "access_token_stepped_up": [],
            "api-key": []
          }
        ]
      }
    },
    "/managed_cards#debit": {
      "post": {
        "operationId": "debitManagedCardCreate",
        "summary": "Create a debit card",
        "tags": [
          "Managed cards"
        ],
        "description": "Create a card that spends directly from a managed account.\n\nThe card is created as a virtual card for the logged-in consumer or corporate identity and is bound\nto a parent managed account. It has no balance of its own. Spending draws on the parent account's\nfunds, up to a configurable spend limit. Several debit cards can share the same parent account.\n\n### Prerequisites\nThe identity must have completed due diligence before it can create cards; otherwise the request\nfails with `OWNER_IDENTITY_NOT_VERIFIED`. The Managed Card Profile referenced by `profileId` must be\nactive, and the parent managed account must already exist and be active, otherwise the request\nfails with `PARENT_MANAGED_ACCOUNT_NOT_FOUND` or `PARENT_MANAGED_ACCOUNT_NOT_ACTIVE`.\n\nThis operation requires a stepped-up access token. Step up before calling it by issuing a challenge \nthrough [Step-up](https://docs.weavr.io/api/stepupscachallenge).\n\n### Fields\n\n#### Profile and mode\n`profileId` selects the Managed Card Profile configured in the Multi Portal, which determines the\nbehavior, limits, and restrictions applied to the card. Set `mode` to `DEBIT_MODE`.\n\n#### Funding\n`parentManagedAccountId` identifies the managed account the card spends from. The card has no\nseparate balance or `currency` field: payments are billed in the parent account's currency. Use\nspend rules to cap how much of the parent account's funds this card can use. The response includes\n`availableToSpend` for each configured spend-limit interval.\n\n#### Display currency\n`userCurrency` is optional and presentation-only. Set it to show cardholder amounts in their\npreferred currency. Card payment data then includes a `userAmount` alongside `billingAmount`, which\nyou can display in your app. It has no effect on how a payment is billed or settled. If it\nisn't set, `userAmount` matches `billingAmount`.\n\n#### Names\n`nameOnCard` is the cardholder name and may be checked by merchants for online purchases. It is\nprinted on the card if the card is later upgraded to physical, as is the optional `nameOnCardLine2`.\nBoth are capped at 27 characters here, but the limit that actually applies to a printed card depends \non the chosen card design and is confirmed by Weavr during physical card setup. `friendlyName` is a \nlabel for your own use and isn't printed or shared with merchants.\n\n#### Address\n`billingAddress` is the cardholder's billing address and may be verified by merchants for online\npurchases. It is unrelated to where a physical card is delivered. The delivery address is supplied \nwhen the card is upgraded to physical.\n\n#### Linking a user\nSet `userId` to link the card to an authorized user. The linked user's authentication details are \nthen used for actions performed on the card, such as 3DS authentication and manual provisioning to \na digital wallet. Linking is also a prerequisite for bulk physical delivery.\n\n#### Renewal\n`renewalType` controls what happens as the card approaches expiry. `RENEW` reissues the card with\nthe same card number and a new expiry date and CVV; `NO_RENEW` lets it expire and be destroyed.\n\n#### Digital wallets and external data\n`digitalWallets` controls whether the card can be tokenized and push-provisioned into a digital \nwallet, and which artwork is used. `externalData` holds up to 10 name/value pairs of your own. \nWeavr stores them against the card and can surface them in reports and filters, but never acts \non them.\n\n### Next steps\nThe card is usable as a virtual card as soon as it is created. To issue plastic for it, see\n[Request a physical card for individual delivery](https://docs.weavr.io/api/managedcardphysicalupgrade)\nor [for bulk delivery](https://docs.weavr.io/api/managedcardphysicalupgradebulk).\n",
        "x-permissions": [
          "i:managed_cards:create"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/idempotency-ref"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DebitModeCardRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "headers": {
              "request-ref": {
                "$ref": "#/components/headers/request-ref"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DebitModeCard"
                }
              }
            }
          },
          "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": [
          {
            "access_token_stepped_up": [],
            "api-key": []
          }
        ]
      }
    },
    "/managed_cards/system": {
      "post": {
        "operationId": "systemManagedCardCreate",
        "summary": "Create a system card",
        "tags": [
          "System-managed cards"
        ],
        "description": "Creates a system managed card.\nThe Managed Card Profile specified determines the behavior and restrictions. System managed cards are not associated with a specific user.\n",
        "x-permissions": [
          "i:managed_cards:create"
        ],
        "x-sca": "SECOND_FACTOR_SESSION",
        "parameters": [
          {
            "$ref": "#/components/parameters/idempotency-ref"
          }
        ],
        "requestBody": {
          "$ref": "#/components/requestBodies/SystemManagedCardRequest"
        },
        "responses": {
          "200": {
            "$ref": "#/components/responses/SystemManagedCardResponse"
          },
          "400": {
            "$ref": "#/components/responses/BadRequestError"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/InstrumentForbidden"
          },
          "409": {
            "$ref": "#/components/responses/SystemManagedCardConflict"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "access_token": [],
            "api-key": []
          }
        ]
      },
      "get": {
        "operationId": "systemManagedCardsGet",
        "summary": "List system cards",
        "tags": [
          "System-managed cards"
        ],
        "description": "Fetch system managed cards matching the search criteria provided.",
        "x-permissions": [
          "i:managed_cards:list",
          "i:managed_cards:list:all"
        ],
        "x-sca": "SECOND_FACTOR_SESSION",
        "parameters": [
          {
            "$ref": "#/components/parameters/offset"
          },
          {
            "$ref": "#/components/parameters/limit"
          },
          {
            "$ref": "#/components/parameters/profileId"
          },
          {
            "$ref": "#/components/parameters/state"
          },
          {
            "$ref": "#/components/parameters/currency"
          },
          {
            "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]+$"
            }
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/SystemManagedCardPageResponse"
          },
          "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": [
          {
            "access_token": [],
            "api-key": []
          }
        ]
      }
    },
    "/managed_cards/system/{id}": {
      "get": {
        "operationId": "systemManagedCardGet",
        "summary": "Get a system card",
        "tags": [
          "System-managed cards"
        ],
        "description": "Returns all details of the system managed card identified by the `id` path parameter.",
        "x-permissions": [
          "i:managed_cards:list",
          "i:managed_cards:list:all"
        ],
        "x-sca": "SECOND_FACTOR_SESSION",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The unique identifier of a system managed card.",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^[0-9]+$",
              "example": "123456789"
            }
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/SystemManagedCardResponse"
          },
          "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": [
          {
            "access_token": [],
            "api-key": []
          }
        ]
      },
      "patch": {
        "operationId": "systemManagedCardUpdate",
        "summary": "Update a system card",
        "tags": [
          "System-managed cards"
        ],
        "description": "Update the details of the system managed card identified by the `id` path parameter.",
        "x-permissions": [
          "i:managed_cards:update",
          "i:managed_cards:update:all"
        ],
        "x-sca": "SECOND_FACTOR_SESSION",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "The unique identifier of a system managed card.",
            "schema": {
              "type": "string",
              "pattern": "^[0-9]+$",
              "example": "123456789"
            }
          },
          {
            "$ref": "#/components/parameters/idempotency-ref"
          }
        ],
        "requestBody": {
          "$ref": "#/components/requestBodies/SystemManagedCardUpdateRequest"
        },
        "responses": {
          "200": {
            "$ref": "#/components/responses/SystemManagedCardResponse"
          },
          "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": [
          {
            "access_token": [],
            "api-key": []
          }
        ]
      }
    },
    "/managed_cards/{id}": {
      "get": {
        "operationId": "managedCardGet",
        "summary": "Get a card",
        "tags": [
          "Managed cards"
        ],
        "description": "Returns all details of the managed card identified by the `id` path parameter.",
        "x-sca": "SECOND_FACTOR_SESSION",
        "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]+$",
              "example": "123456789"
            }
          }
        ],
        "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": [
          {
            "access_token_stepped_up": [],
            "api-key": []
          }
        ]
      },
      "patch": {
        "operationId": "managedCardUpdate",
        "summary": "Update a card",
        "tags": [
          "Managed cards"
        ],
        "description": "Update the details of the managed card identified by the `id` path parameter.",
        "x-sca": "SECOND_FACTOR_SESSION",
        "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]+$",
              "example": "123456789"
            }
          },
          {
            "$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": [
          {
            "access_token_stepped_up": [],
            "api-key": []
          }
        ]
      }
    },
    "/managed_cards/{id}/block": {
      "post": {
        "operationId": "managedCardBlock",
        "summary": "Block a card",
        "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 [Unblock a card](https://docs.weavr.io/api/managedcardunblock).",
        "x-permissions": [
          "i:managed_cards:block",
          "i:managed_cards:block:own"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "The unique identifier of a managed card.",
            "schema": {
              "type": "string",
              "pattern": "^[0-9]+$",
              "example": "123456789"
            }
          },
          {
            "$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": [
          {
            "access_token": [],
            "api-key": []
          }
        ]
      }
    },
    "/managed_cards/{id}/unblock": {
      "post": {
        "operationId": "managedCardUnblock",
        "summary": "Unblock a card",
        "tags": [
          "Managed cards"
        ],
        "description": "Unblocks the managed card identified by the `id` path parameter.\nThe managed card must have `state.blockedReason` as `USER` so that it can be unblocked.\nIf the managed card was blocked by `SYSTEM`, users cannot unblock it.\n",
        "x-permissions": [
          "i:managed_cards:unblock",
          "i:managed_cards:unblock:own"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "The unique identifier of the managed card.",
            "schema": {
              "type": "string",
              "pattern": "^[0-9]+$",
              "example": "123456789"
            }
          },
          {
            "$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": [
          {
            "access_token": [],
            "api-key": []
          }
        ]
      }
    },
    "/managed_cards/{id}/remove": {
      "post": {
        "operationId": "managedCardRemove",
        "summary": "Remove a card",
        "tags": [
          "Managed cards"
        ],
        "description": "Destroys the managed card identified by the `id` path parameter. Unlike block, this action is not reversible.\n\nA managed card must be empty before it can be destroyed using this operation.\n",
        "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]+$",
              "example": "123456789"
            }
          }
        ],
        "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": [
          {
            "access_token": [],
            "api-key": []
          }
        ]
      }
    },
    "/deprecated/managed_cards/{id}/statement": {
      "get": {
        "operationId": "managedCardStatementDeprecated",
        "summary": "Get a card statement (legacy)",
        "tags": [
          "Transaction activity"
        ],
        "description": "Legacy version of [Get a card statement](https://docs.weavr.io/api/managedcardstatement).\nSee the [Release 113 changelog](https://docs.weavr.io/changelog/2026/06/23/multi/release-113/) for\nwhat changed and how to migrate.\n\nReturns a statement for the managed card identified by the `id` path parameter — a settled view\nof posted transactions matching the criteria provided in the request.\n",
        "deprecated": true,
        "x-sca": "SECOND_FACTOR_WITHIN_WINDOW",
        "x-permissions": [
          "i:managed_cards:statement",
          "i:managed_cards:statement:own"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "The unique identifier of a managed card.",
            "schema": {
              "type": "string",
              "pattern": "^[0-9]+$",
              "example": "123456789"
            }
          },
          {
            "$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/statementTransactionType"
          }
        ],
        "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": [
          {
            "access_token": [],
            "api-key": []
          }
        ]
      }
    },
    "/managed_cards/{id}/statement": {
      "get": {
        "operationId": "managedCardStatement",
        "summary": "Get a card statement",
        "tags": [
          "Transaction activity"
        ],
        "description": "Returns a statement for the managed card identified by the `id` path parameter.\n\nA statement is a settled view of the card. It contains only posted transactions where funds have\ndefinitively moved; pending transactions and authorizations are excluded. Repeating a request for\nthe same period returns the same result, which makes statements safe to reconcile against.\n\n:::note\nFor an unsettled view, including transactions that are committed but not yet executed, use\n[List transactions](https://docs.weavr.io/api/transactionsget) or\n[List card transactions](https://docs.weavr.io/api/managedcardtransactionsget) instead.\n:::\n\n:::note\nThis is available for prepaid cards only. A prepaid card holds its own balance, so `openingBalance`, \n`closingBalance`, and `balanceAfter` all refer to that card. A debit card holds no balance of its own (it \nis an access instrument onto its parent managed account), so use \n[Get an account statement](https://docs.weavr.io/api/managedaccountstatement) for the parent account \ninstead, filtering on `executingAccessInstrument.id` to isolate that card's spending.\n:::\n\n### Response formats\nSet the `accept` header to `application/json` (the default) or `text/csv`. Anything else falls back to \nJSON. Use CSV for reconciliation and JSON to render the statement yourself.\n\n:::note\n`application/pdf` on this endpoint is deprecated. For a document the customer downloads, use \n[Download a card statement as a PDF](https://docs.weavr.io/api/managedcardstatementpdf), which renders in \na timezone you choose and covers the whole period rather than a single page. The JSON and CSV responses \naren't deprecated.\n:::\n\n### Choosing a period\n`startPeriod` and `endPeriod` are epoch timestamps in milliseconds. Page with `offset` and `limit`; \n`limit` is capped at 500. `sortOrder` defaults to `ASC`, oldest first. Pass `DESC` for a most-recent-first \nview.\n\n### Filtering\nNarrow the statement by `transaction.type`, and by the instrument that initiated each entry using \n`executingAccessInstrument.id` and `executingAccessInstrument.type`. Both accept multiple values.\n\n### Access\nThis operation requires a stepped-up access token. Step up before calling it by issuing a challenge \nthrough [Step-up](https://docs.weavr.io/api/stepupscachallenge).\n",
        "x-sca": "SECOND_FACTOR_WITHIN_WINDOW",
        "x-permissions": [
          "i:managed_cards:statement",
          "i:managed_cards:statement:own"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The unique identifier of the managed card.",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^[0-9]+$",
              "example": "123456789"
            }
          },
          {
            "$ref": "#/components/parameters/accept"
          },
          {
            "$ref": "#/components/parameters/apiVersion"
          },
          {
            "$ref": "#/components/parameters/offset"
          },
          {
            "$ref": "#/components/parameters/statementResponseLimit"
          },
          {
            "$ref": "#/components/parameters/startPeriod"
          },
          {
            "$ref": "#/components/parameters/endPeriod"
          },
          {
            "$ref": "#/components/parameters/statementSortOrder"
          },
          {
            "$ref": "#/components/parameters/statementResponseTransactionType"
          },
          {
            "$ref": "#/components/parameters/statementResponseExecutingAccessInstrumentId"
          },
          {
            "$ref": "#/components/parameters/statementResponseExecutingAccessInstrumentType"
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/InstrumentStatementJsonResponse"
          },
          "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": [
          {
            "access_token_stepped_up": [],
            "api-key": []
          }
        ]
      }
    },
    "/managed_cards/{id}/statement/pdf": {
      "get": {
        "operationId": "managedCardStatementPdf",
        "summary": "Download a card statement as a PDF",
        "tags": [
          "Managed cards"
        ],
        "description": "Use this when the customer needs a card statement document they can keep, print, or send to a third party.\n\nIt returns the statement for the managed card identified by the `id` path parameter as a rendered PDF,\nready to hand to the end customer as-is.\n\n### Choosing a period\n`startPeriod` and `endPeriod` are dates in the format `yyyy-MM-dd`, both inclusive, and are resolved to\nlocal midnight in `timezone`. The period defaults to the last month and must not exceed 12 months.\n\nUnlike [Get a card statement](https://docs.weavr.io/api/managedcardstatement), this returns **every** entry\nin the period rather than a page of them. A period longer than 12 months, or one holding more than 5,000\nentries, is rejected with a `400` rather than silently truncated. Narrow the period and request again. A\nperiod with no entries still produces a valid PDF, with no entry rows.\n\n### Prepaid and debit cards\nA prepaid card holds its own balance, so the opening and closing balances on the document refer to that\ncard alone. A debit card holds no balance of its own (its activity posts to the parent managed account),\nso its document omits the balance column.\n\n### Timezones\nEvery date and time on the document is rendered in `timezone`, which the document itself states, so the\nreader knows what the times mean. It defaults to `UTC`. Pass an IANA name such as `Europe/Rome`; fixed\noffsets like `+02:00` are rejected because they carry no daylight-saving rules.\n\n### Access\nThis operation requires a stepped-up access token. Step up before calling it by issuing a challenge\nthrough [Step-up](https://docs.weavr.io/api/stepupscachallenge).\n",
        "x-sca": "SECOND_FACTOR_WITHIN_WINDOW",
        "x-permissions": [
          "i:managed_cards:statement",
          "i:managed_cards:statement:own"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The unique identifier of the managed card.",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^[0-9]+$",
              "example": "123456789"
            }
          },
          {
            "$ref": "#/components/parameters/statementPdfStartPeriod"
          },
          {
            "$ref": "#/components/parameters/statementPdfEndPeriod"
          },
          {
            "$ref": "#/components/parameters/statementPdfTimezone"
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/InstrumentStatementPdfResponse"
          },
          "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": [
          {
            "access_token_stepped_up": [],
            "api-key": []
          }
        ]
      }
    },
    "/card_payments": {
      "get": {
        "operationId": "cardPaymentsGet",
        "summary": "List card payments",
        "tags": [
          "Card payments"
        ],
        "description": "Returns the aggregated card payments for the logged-in identity. A CardPayment represents the full lifecycle of a card payment (authorization + settlements + optional reversal/expiry/refund/original credit) as a single business-level entity.",
        "x-sca": "SECOND_FACTOR_WITHIN_WINDOW",
        "x-permissions": [
          "i:managed_cards:statement",
          "i:managed_cards:statement:own"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/accept"
          },
          {
            "$ref": "#/components/parameters/offset"
          },
          {
            "$ref": "#/components/parameters/limit"
          },
          {
            "$ref": "#/components/parameters/cardPaymentCardId"
          },
          {
            "$ref": "#/components/parameters/cardPaymentStatus"
          },
          {
            "$ref": "#/components/parameters/cardPaymentType"
          },
          {
            "$ref": "#/components/parameters/cardPaymentSubtype"
          },
          {
            "$ref": "#/components/parameters/cardPaymentMerchantName"
          },
          {
            "$ref": "#/components/parameters/cardPaymentAmountFrom"
          },
          {
            "$ref": "#/components/parameters/cardPaymentAmountTo"
          },
          {
            "$ref": "#/components/parameters/cardPaymentRelatedCardPaymentId"
          },
          {
            "$ref": "#/components/parameters/cardPaymentCreationTimestampFrom"
          },
          {
            "$ref": "#/components/parameters/cardPaymentCreationTimestampTo"
          },
          {
            "$ref": "#/components/parameters/cardPaymentLastUpdatedTimestampFrom"
          },
          {
            "$ref": "#/components/parameters/cardPaymentLastUpdatedTimestampTo"
          },
          {
            "$ref": "#/components/parameters/cardPaymentSortOrder"
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/CardPaymentListResponse"
          },
          "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": [
          {
            "access_token": [],
            "api-key": []
          }
        ]
      }
    },
    "/card_payments/{id}": {
      "get": {
        "operationId": "cardPaymentGet",
        "summary": "Get a card payment",
        "tags": [
          "Card payments"
        ],
        "description": "Returns the card payment identified by `id`, including its amount, merchant,\ncurrent state, and related card details.\n\nRead the [card payments overview](https://docs.weavr.io/transactions/card-payments/overview/)\nfor the payment lifecycle and state transitions.\n",
        "x-sca": "SECOND_FACTOR_WITHIN_WINDOW",
        "x-permissions": [
          "i:managed_cards:statement",
          "i:managed_cards:statement:own"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/cardPaymentId"
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/CardPaymentResponse"
          },
          "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": [
          {
            "access_token": [],
            "api-key": []
          }
        ]
      }
    },
    "/card_payment_events": {
      "get": {
        "operationId": "cardPaymentEventsGet",
        "summary": "List card payment events",
        "tags": [
          "Card payments"
        ],
        "description": "Returns a flat, chronological list of card payment events across one or more card payments. Each entry carries the event plus the parent CardPayment context (card, merchant, group).",
        "x-sca": "SECOND_FACTOR_WITHIN_WINDOW",
        "x-permissions": [
          "i:managed_cards:statement",
          "i:managed_cards:statement:own"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/accept"
          },
          {
            "$ref": "#/components/parameters/offset"
          },
          {
            "$ref": "#/components/parameters/limit"
          },
          {
            "$ref": "#/components/parameters/cardPaymentEventCardPaymentId"
          },
          {
            "$ref": "#/components/parameters/cardPaymentEventCardId"
          },
          {
            "$ref": "#/components/parameters/cardPaymentEventType"
          },
          {
            "$ref": "#/components/parameters/cardPaymentEventSubtype"
          },
          {
            "$ref": "#/components/parameters/cardPaymentEventReversal"
          },
          {
            "$ref": "#/components/parameters/cardPaymentEventTimestampFrom"
          },
          {
            "$ref": "#/components/parameters/cardPaymentEventTimestampTo"
          },
          {
            "$ref": "#/components/parameters/cardPaymentEventSortOrder"
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/CardPaymentEventListResponse"
          },
          "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": [
          {
            "access_token": [],
            "api-key": []
          }
        ]
      }
    },
    "/managed_cards/{id}/transactions": {
      "get": {
        "operationId": "managedCardTransactionsGet",
        "summary": "List card transactions",
        "tags": [
          "Transaction activity"
        ],
        "description": "Returns all transactional activity on the managed card identified by the `id` path parameter.\n\nThis includes pending authorizations, completed settlements, refunds, and all other card transaction types\nin a unified schema.\n",
        "x-sca": "SECOND_FACTOR_WITHIN_WINDOW",
        "x-permissions": [
          "i:managed_cards:statement",
          "i:managed_cards:statement:own"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The unique identifier of the managed card.",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^[0-9]+$",
              "example": "123456789"
            }
          },
          {
            "$ref": "#/components/parameters/offset"
          },
          {
            "$ref": "#/components/parameters/limit"
          },
          {
            "$ref": "#/components/parameters/transactionActivityType"
          },
          {
            "$ref": "#/components/parameters/transactionActivityStatus"
          },
          {
            "$ref": "#/components/parameters/transactionActivityDirection"
          },
          {
            "$ref": "#/components/parameters/creationTimestampFrom"
          },
          {
            "$ref": "#/components/parameters/creationTimestampTo"
          },
          {
            "$ref": "#/components/parameters/lastUpdatedTimestampFrom"
          },
          {
            "$ref": "#/components/parameters/lastUpdatedTimestampTo"
          },
          {
            "$ref": "#/components/parameters/sortOrder"
          },
          {
            "$ref": "#/components/parameters/transactionActivitySortBy"
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/InstrumentTransactionActivityListResponse"
          },
          "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": [
          {
            "access_token": [],
            "api-key": []
          }
        ]
      }
    },
    "/managed_cards/{id}/transactions/{transactionId}": {
      "get": {
        "operationId": "managedCardTransactionGet",
        "summary": "Get a card transaction",
        "tags": [
          "Transaction activity"
        ],
        "description": "Returns the transaction identified by `transactionId` for the managed card\nidentified by `id`, including its type, amount, state, and timestamps.\n\nRead the [transaction activity overview](https://docs.weavr.io/transactions/transaction-activity/overview/)\nfor the common transaction model and supported transaction types.\n",
        "x-sca": "SECOND_FACTOR_WITHIN_WINDOW",
        "x-permissions": [
          "i:managed_cards:statement",
          "i:managed_cards:statement:own"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The unique identifier of the managed card.",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^[0-9]+$",
              "example": "123456789"
            }
          },
          {
            "name": "transactionId",
            "in": "path",
            "description": "The unique identifier of the transaction.",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^[0-9]+$",
              "example": "123456789"
            }
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/InstrumentTransactionActivityResponse"
          },
          "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": [
          {
            "access_token": [],
            "api-key": []
          }
        ]
      }
    },
    "/managed_cards/{id}/spend_rules": {
      "get": {
        "operationId": "managedCardSpendRulesGet",
        "summary": "List card spend rules",
        "tags": [
          "Spend controls"
        ],
        "description": "Returns the spend rules in force for the managed card identified by the `id` path parameter.\n\nThe response separates the two levels at which rules are configured: the profile-level rules that \napply to every card on the Managed Card Profile, and the card-level rules set for this card alone. An \nauthorization must satisfy both, so read them together when working out why a transaction was \ndeclined.\n\nEach spend limit is returned with its interval and its rollover policy. When `rolloverNegative` is \nenabled, overspend is carried into subsequent intervals and reduces the card's available-to-spend \namount until it becomes positive.\n\n:::note\nThe merchant, MCC, and country lists at the top level of the response are deprecated. Read the \nequivalent fields under `cardLevelSpendRules` instead.\n:::\n",
        "x-permissions": [
          "i:managed_cards:get_spendrules",
          "i:managed_cards:get_spendrules:own"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The unique identifier of the managed card.",
            "required": true,
            "style": "simple",
            "schema": {
              "type": "string",
              "pattern": "^[0-9]+$",
              "example": "123456789"
            }
          }
        ],
        "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": [
          {
            "access_token": [],
            "api-key": []
          }
        ]
      },
      "post": {
        "operationId": "managedCardSpendRulesCreate",
        "summary": "Create spend rules for a card",
        "tags": [
          "Spend controls"
        ],
        "description": "Use this when you need to restrict what a card can be used for, beyond what its profile already \nallows.\n\nIt sets the card-level spend rules for the managed card identified by the `id` path parameter. Rules \napply at two levels: profile-level rules are configured in the Multi Portal and apply to every card \non the profile, and card-level rules are set here for one card. Both are evaluated on each \nauthorization, and card-level rules can only narrow what the profile permits, never widen it.\n\nCall this once per card. If the card already has card-level rules, the request fails with \n`SPEND_RULE_ALREADY_SET`. Use \n[Update spend rules](https://docs.weavr.io/api/managedcardspendrulesupdate) instead.\n\n### Fields\n\n#### Where the card can be used\n`allowedMerchantCategories` and `blockedMerchantCategories` filter by merchant category code (MCC), \n`allowedMerchantIds` and `blockedMerchantIds` by merchant, and `allowedMerchantCountries` and \n`blockedMerchantCountries` by ISO 3166-1 alpha-2 country code. The merchant and MCC lists hold up to \n200 entries each; the country lists hold up to 50.\n\nAn allow list means \"only these\": anything not on it is declined. A block list means \"not these.\"\n**Where a value appears on both lists, the block list wins.**\n\n#### How the card can be used\n`allowContactless`, `allowAtm`, `allowECommerce`, `allowCashback`, and `allowCreditAuthorisations` \nswitch whole categories of transaction on or off for the card.\n\n#### Transaction size\n`minTransactionAmount` and `maxTransactionAmount` are expressed in the card's currency. A transaction \noutside that range is declined.\n\n#### Spend limits\n`spendLimit` is a list of amount-and-interval pairs, for example 50000 daily and 500000 monthly. All \nlimits are checked, so the tightest one binds. Each `interval` is a fixed UTC calendar window \n(`DAILY`, `WEEKLY`, `MONTHLY`, `QUARTERLY`, `YEARLY`), except `ALWAYS`, which is a lifetime cap on the \ncard. Use `startTimestamp` to delay when a limit starts applying.\n\nEach `value` must be in the card's currency, or the request fails with \n`SPEND_LIMIT_CURRENCY_DIFFERENT_FROM_CARD_CURRENCY`. You can't set two limits on the same interval \n(`SPEND_LIMIT_DUPLICATE_INTERVAL`).\n\n:::note\nSpend limits apply to debit cards. Setting one on a prepaid card fails with \n`SPEND_LIMIT_NOT_SUPPORTED_FOR_PREPAID_MODE_CARD`, since a prepaid card is already bounded by its own \nbalance.\n:::\n\n#### Rollover\nSet `rolloverPolicy.rolloverNegative` to `true` on a spend limit to carry overspend into subsequent \nintervals. A negative available-to-spend amount is then deducted from each new interval until the \nbalance becomes positive. It is disabled by default and configured separately for each card.\n",
        "x-permissions": [
          "i:managed_cards:create_spendrules"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The unique identifier of the managed card.",
            "required": true,
            "style": "simple",
            "schema": {
              "type": "string",
              "pattern": "^[0-9]+$",
              "example": "123456789"
            }
          },
          {
            "$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": [
          {
            "access_token": [],
            "api-key": []
          }
        ]
      },
      "patch": {
        "operationId": "managedCardSpendRulesUpdate",
        "summary": "Update spend rules for a card",
        "tags": [
          "Spend controls"
        ],
        "description": "Updates the card-level spend rules of the managed card identified by the `id` path parameter. Use \nthis once the card has rules; to set them for the first time, use \n[Create spend rules](https://docs.weavr.io/api/managedcardspendrulescreate).\n\nThe same fields are accepted as on create: merchant, MCC, and country allow and block lists, the \n`allow*` transaction-type switches, transaction size bounds, and `spendLimit`.\n\n### Updating spend limits\n`updateSpendLimitMethod` controls how the `spendLimit` you send is applied:\n\n| Method | Effect |\n| --- | --- |\n| `OVERWRITE` | Replaces the existing limits with the ones supplied. This is the default. |\n| `INCREMENT` | Adds the supplied `value` to the existing limit for that interval. |\n\n`INCREMENT` combined with an `ALWAYS` interval is how you top a card up on your own schedule. \nIncrementing a lifetime limit monthly, for instance, leaves any unused allowance from earlier periods \navailable to spend, which a fixed `MONTHLY` limit would not.\n\n### Rollover\nSet `rolloverPolicy.rolloverNegative` to `true` on a spend limit to carry overspend into subsequent \nintervals. This applies per card; to change it across many cards at once, use \n[Update spend rules in bulk](https://docs.weavr.io/api/bulksmanagedcardspendrulesupdate).\n",
        "x-permissions": [
          "i:managed_cards:update_spendrules"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The unique identifier of the managed card.",
            "required": true,
            "style": "simple",
            "schema": {
              "type": "string",
              "pattern": "^[0-9]+$",
              "example": "123456789"
            }
          },
          {
            "$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": [
          {
            "access_token": [],
            "api-key": []
          }
        ]
      },
      "delete": {
        "operationId": "managedCardSpendRulesDelete",
        "summary": "Delete all spend rules for a card",
        "tags": [
          "Spend controls"
        ],
        "description": "Clears all card-level spend rules from the managed card identified by the `id` path parameter.\n\nThis removes the merchant, MCC, and country lists, the transaction-type switches, the transaction \nsize bounds, and every spend limit set on this card. The profile-level rules configured in the Multi \nPortal are unaffected and continue to apply, so the card falls back to whatever its Managed Card \nProfile permits, which is usually less restrictive. Check the profile's rules before calling this on \na live card.\n\nThe deletion is immediate and permanent; there is no way to restore the previous rules. \nAfterwards, the card has no card-level rules, so use \n[Create spend rules](https://docs.weavr.io/api/managedcardspendrulescreate) rather than the update \noperation to set new ones.\n",
        "x-permissions": [
          "i:managed_cards:delete_spendrules"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The unique identifier of the managed card.",
            "required": true,
            "style": "simple",
            "schema": {
              "type": "string",
              "pattern": "^[0-9]+$",
              "example": "123456789"
            }
          }
        ],
        "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": [
          {
            "access_token": [],
            "api-key": []
          }
        ]
      }
    },
    "/managed_cards/{id}/physical#individual": {
      "post": {
        "operationId": "managedCardPhysicalUpgrade",
        "summary": "Request a physical card for individual delivery",
        "tags": [
          "Managed cards"
        ],
        "x-tagSubgroup": "Physical cards",
        "description": "Use this when you need to issue a physical card for an existing virtual card. \n\nIt requests a physical card for the virtual card identified by the `id` path parameter to a physical card \nand sends it as an *individual delivery*. Each request creates one physical card.\nThe card is personalized, sealed in its own \nenvelope with a card carrier, and sent directly to the recipient in `deliveryAddress`. \n\n### Prerequisites\nBefore cards can be upgraded, a physical card programme must be set up and the card \nprofile configuration updated accordingly.\n\n### Fields\n\nSet `bulkDelivery` to `false` or omit it.\n\n#### Address\n`deliveryAddress.name` and `deliveryAddress.surname` identify the cardholder and are \nprinted on the card carrier. If the card is linked to a user, the linked user's name \nand surname take precedence over these values. The remaining `deliveryAddress` fields \nidentify where the individual card is sent.\n\n#### Delivery methods\nIndividual delivery supports `STANDARD_DELIVERY`, `REGISTERED_MAIL`, `COURIER`, and \n`FIRST_CLASS_MAIL`. `deliveryAddress.contactNumber` is required when using `COURIER`; \nit isn't used for other delivery methods.\n\nUS deliveries must use `COURIER`. When `deliveryAddress.country` is `US`, any other \n`deliveryMethod`, or omitting it, is rejected with a `REQUIRES` syntax error on \n`deliveryMethod`, unless your programme is configured to convert the delivery method to \n`COURIER` automatically.\n\n### Tracking fulfillment\nOnce the request is accepted, Weavr sends the *Physical card fulfillment status* webhook\n(`/managed_cards/physical_cards_upgrade/watch`) each time\n`physicalCardDetails.manufacturingState` changes (`REQUESTED` → `SENT_FOR_FULFILLMENT` →\n`DISPATCHED` → `DELIVERED`). The same state is available on demand via\n[Get a card](#tag/Managed-cards/operation/managedCardGet).\n",
        "x-speccy-webhooks": [
          {
            "operationId": "managed_cards_physical_cards_upgrade_watch",
            "description": "Sent on every fulfillment status change of the requested physical card."
          }
        ],
        "x-sca": "SECOND_FACTOR_SESSION",
        "x-permissions": [
          "i:managed_cards:create_physical",
          "i:managed_cards:create_physical:own"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The unique identifier of the managed card.",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^[0-9]+$",
              "example": "123456789"
            }
          },
          {
            "$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": [
          {
            "access_token_stepped_up": [],
            "api-key": []
          }
        ]
      }
    },
    "/managed_cards/{id}/physical#bulk": {
      "post": {
        "operationId": "managedCardPhysicalUpgradeBulk",
        "summary": "Request a physical card for bulk delivery",
        "tags": [
          "Managed cards"
        ],
        "x-tagSubgroup": "Physical cards",
        "description": "Use this when you need to issue a physical card for an existing virtual card. \n\nIt requests a physical card for the virtual card identified by the `id` path parameter to a physical card \nand sends it as a *bulk delivery*. \n\nEach request creates one physical card. The card is personalized and sealed in its \nown envelope, then grouped with other bulk orders into a parcel *sent to one address*. \nThis is the processing address for the bulk delivery, e.g. your business address.\n\nOrders are grouped into the same parcel when they are placed on the same day and have \nidentical recipient names, address fields, and contact numbers. Keep these values identical \nacross the batch. Differences, including formatting differences, split the orders into separate parcels.\n\n:::note\nFor individual delivery, see [here](https://docs.weavr.io/api/managedcardphysicalupgrade).\n:::\n\n### Prerequisites\nBefore cards can be upgraded, a physical card programme must be set up and the card \nprofile configuration updated accordingly.\n\n### Fields\nSet `bulkDelivery` to `true`. The card must be linked to a user; bulk delivery isn't \navailable for unlinked cards.\n\n#### Address\n`deliveryAddress.name` and `deliveryAddress.surname` identify the parcel recipient, \nsuch as an office manager. They aren't printed on the individual card carrier. The \ncarrier uses the linked user's name and surname instead. The remaining `deliveryAddress` \nfields identify where the parcel is sent and are also printed on each card carrier inside it.\n\n#### Delivery methods\nBulk delivery supports `REGISTERED_MAIL` and `COURIER` only. Other methods aren't supported. \n`deliveryAddress.contactNumber` is required when \nusing `COURIER`; it isn't used for other delivery methods.\n\nA `REGISTERED_MAIL` parcel can contain up to 90 cards, and a `COURIER` parcel can contain \nup to 200 cards. The fulfillment center splits larger groups across multiple parcels.\n\nUS deliveries must use `COURIER`. When `deliveryAddress.country` is `US`, any other \n`deliveryMethod`, or omitting it, is rejected with a `REQUIRES` syntax error on \n`deliveryMethod`, unless your programme is configured to convert the delivery method to \n`COURIER` automatically.\n\n### Tracking fulfillment\nOnce the request is accepted, Weavr sends the *Physical card fulfillment status* webhook\n(`/managed_cards/physical_cards_upgrade/watch`) each time\n`physicalCardDetails.manufacturingState` changes (`REQUESTED` → `SENT_FOR_FULFILLMENT` →\n`DISPATCHED` → `DELIVERED`). The same state is available on demand via\n[Get a card](#tag/Managed-cards/operation/managedCardGet).\n",
        "x-speccy-webhooks": [
          {
            "operationId": "managed_cards_physical_cards_upgrade_watch",
            "description": "Sent on every fulfillment status change of the requested physical card."
          }
        ],
        "x-sca": "SECOND_FACTOR_SESSION",
        "x-permissions": [
          "i:managed_cards:create_physical",
          "i:managed_cards:create_physical:own"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The unique identifier of the managed card.",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^[0-9]+$",
              "example": "123456789"
            }
          },
          {
            "$ref": "#/components/parameters/idempotency-ref"
          }
        ],
        "requestBody": {
          "$ref": "#/components/requestBodies/ManagedCardPhysicalUpgradeBulkRequest"
        },
        "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": [
          {
            "access_token": [],
            "api-key": []
          }
        ]
      }
    },
    "/managed_cards/{id}/physical/activate": {
      "post": {
        "operationId": "managedCardPhysicalActivate",
        "summary": "Activate a physical card",
        "tags": [
          "Managed cards"
        ],
        "x-tagSubgroup": "Physical cards",
        "description": "Use this when the cardholder has received their physical card and wants to start using it.\n\nIt activates the physical card identified by the `id` path parameter. A card that has been printed \nand delivered is inactive until this call succeeds. It can't be used in person or at an ATM, and its \nPIN can't be read.\n\n### Fields\n`activationCode` is the code set when the card was upgraded to physical. If you supply it, it is \nchecked against the code recorded at upgrade, and a mismatch fails with `ACTIVATION_CODE_INVALID`. If \nyou leave it out, no check is carried out and the card is activated regardless.\n\n### Conflicts\nActivation applies once, to a physical card that is still usable. Repeating it fails with \n`INSTRUMENT_ALREADY_ACTIVATED`, and a card that is blocked or destroyed fails with \n`INSTRUMENT_BLOCKED` or `INSTRUMENT_DESTROYED`. A virtual card that was never upgraded fails with \n`INSTRUMENT_NOT_PHYSICAL`.\n\n### Next steps\nOnce activated, the cardholder can retrieve their PIN with \n[Get PIN for a physical card](https://docs.weavr.io/api/managedcardphysicalpinget).\n",
        "x-sca": "SECOND_FACTOR_SESSION",
        "x-permissions": [
          "i:managed_cards:activate_physical",
          "i:managed_cards:activate_physical:own"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The unique identifier of the managed card.",
            "required": true,
            "style": "simple",
            "schema": {
              "type": "string",
              "pattern": "^[0-9]+$",
              "example": "123456789"
            }
          },
          {
            "$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": [
          {
            "access_token_stepped_up": [],
            "api-key": []
          }
        ]
      }
    },
    "/managed_cards/{id}/physical/pin": {
      "get": {
        "operationId": "managedCardPhysicalPinGet",
        "summary": "Get PIN for a physical card",
        "tags": [
          "Managed cards"
        ],
        "x-tagSubgroup": "Physical cards",
        "description": "Retrieves the PIN of the physical card identified by the `id` path parameter, for the cardholder to \nuse at point of sale and at ATMs.\n\n### Prerequisites\nThe card must be physical and already activated. See \n[Activate a physical card](https://docs.weavr.io/api/managedcardphysicalactivate). Calling this \nbefore activation fails with `PHYSICAL_CARD_NOT_ACTIVATED`.\n\nThis operation requires a stepped-up access token. Step up before calling it by issuing a challenge \nthrough [Step-up](https://docs.weavr.io/api/stepupscachallenge).\n\n### Handling the response\nUnless you are PCI-DSS compliant and have opted out of Weavr's security model, the PIN comes back \ntokenized rather than in plain text. Pass the token to the Display Card PIN UI Component embedded in \nyour application, which renders the PIN on screen. Don't log it, store it, or send it anywhere else.\n\n### Conflicts\n`PIN_NOT_SET` means no PIN has been assigned to the card yet. `PIN_TRIES_EXCEEDED` means the PIN is \nblocked after too many failed attempts. Clear it with \n[Unblock PIN](https://docs.weavr.io/api/managedcardphysicalpinunblock) before retrying.\n",
        "x-sca": "SECOND_FACTOR_SESSION",
        "x-permissions": [
          "i:managed_cards:get_physical_pin",
          "i:managed_cards:get_physical_pin:own"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The unique identifier of the managed card.",
            "required": true,
            "style": "simple",
            "schema": {
              "type": "string",
              "pattern": "^[0-9]+$",
              "example": "123456789"
            }
          }
        ],
        "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": [
          {
            "access_token_stepped_up": [],
            "api-key": []
          }
        ]
      }
    },
    "/managed_cards/{id}/physical/pin/unblock": {
      "patch": {
        "operationId": "managedCardPhysicalPinUnBlock",
        "summary": "Unblock PIN for a physical card",
        "tags": [
          "Managed cards"
        ],
        "x-tagSubgroup": "Physical cards",
        "description": "Use this when a cardholder has locked themselves out of their card at the terminal.\n\nA physical card is marked `pinBlocked` after too many failed PIN attempts, and stops working for \nin-person and ATM transactions. This clears that block so the existing PIN can be used again. It \ndoesn't change the PIN.\n\n### Prerequisites\nThe card must be physical and activated (`PHYSICAL_CARD_NOT_ACTIVATED`), and neither blocked nor \ndestroyed. A PIN block is separate from a card block: if the card itself is blocked, this fails with \n`INSTRUMENT_BLOCKED` and you need \n[Unblock a card](https://docs.weavr.io/api/managedcardunblock) instead.\n",
        "x-permissions": [
          "i:managed_cards:unblock_physical_pin",
          "i:managed_cards:unblock_physical_pin:own"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The unique identifier of the managed card.",
            "required": true,
            "style": "simple",
            "schema": {
              "type": "string",
              "pattern": "^[0-9]+$",
              "example": "123456789"
            }
          }
        ],
        "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": [
          {
            "access_token": [],
            "api-key": []
          }
        ]
      }
    },
    "/managed_cards/{id}/physical/replace_damaged": {
      "post": {
        "operationId": "managedCardPhysicalReplaceDamaged",
        "summary": "Replace a damaged physical card",
        "tags": [
          "Managed cards"
        ],
        "x-tagSubgroup": "Physical cards",
        "description": "Use this when a card still belongs to the cardholder but no longer works: a broken chip, a worn \nmagnetic stripe, a cracked card.\n\nIt reports the physical card identified by the `id` path parameter as damaged and orders a \nreplacement. The replacement is printed with the same details and delivered to the same address as \nthe original.\n\n:::note\nIf the card is missing rather than faulty, report it \n[lost](https://docs.weavr.io/api/managedcardphysicalreportlost) or \n[stolen](https://docs.weavr.io/api/managedcardphysicalreportstolen) first, then use \n[Replace a lost or stolen physical card](https://docs.weavr.io/api/managedcardphysicalreplacelostorstolen). \nThis operation rejects a card already marked as lost with `INSTRUMENT_MARKED_AS_LOST`.\n:::\n\n### Fields\n`activationCode` is required, and is the code the cardholder will use to activate the replacement \nonce it arrives. It is a new code for the new card, not the one used for the original.\n\n### Conflicts\nThe card must be physical and already activated. A replacement that has already been ordered fails \nwith `INSTRUMENT_ALREADY_PENDING_REPLACEMENT`, and a destroyed card fails with \n`INSTRUMENT_ALREADY_DESTROYED`. `MAX_PRINT_CHARACTERS_EXCEEDED` means the name held on the card is \ntoo long for the chosen card design to print. Shorten `nameOnCard` with \n[Update a card](https://docs.weavr.io/api/managedcardupdate) before retrying.\n",
        "x-sca": "SECOND_FACTOR_SESSION",
        "x-permissions": [
          "i:managed_cards:replace_damaged",
          "i:managed_cards:replace_damaged:own"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The unique identifier of the managed card.",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^[0-9]+$",
              "example": "123456789"
            }
          },
          {
            "$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": [
          {
            "access_token_stepped_up": [],
            "api-key": []
          }
        ]
      }
    },
    "/managed_cards/{id}/physical/report_lost": {
      "post": {
        "operationId": "managedCardPhysicalReportLost",
        "summary": "Report a physical card as lost",
        "tags": [
          "Managed cards"
        ],
        "x-tagSubgroup": "Physical cards",
        "description": "Use this as soon as a cardholder tells you their card is missing.\n\nIt reports the physical card identified by the `id` path parameter as lost. The card is deactivated \nimmediately and can't be used again, so call it before ordering a replacement rather than after.\n\n:::note\nIf the card was taken rather than mislaid, use \n[Report a physical card as stolen](https://docs.weavr.io/api/managedcardphysicalreportstolen) \ninstead. A card can be marked as one or the other, not both. Reporting a card that is already marked \nfails with `INSTRUMENT_ALREADY_MARKED_LOST` or `INSTRUMENT_ALREADY_MARKED_STOLEN`.\n:::\n\n### Next steps\nReporting a card lost does not order a replacement. Call \n[Replace a lost or stolen physical card](https://docs.weavr.io/api/managedcardphysicalreplacelostorstolen) \nto issue one; funds remaining on the reported card move across to it.\n",
        "x-permissions": [
          "i:managed_cards:report_lost",
          "i:managed_cards:report_lost:own"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The unique identifier of the managed card.",
            "required": true,
            "style": "simple",
            "schema": {
              "type": "string",
              "pattern": "^[0-9]+$",
              "example": "123456789"
            }
          },
          {
            "$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": [
          {
            "access_token": [],
            "api-key": []
          }
        ]
      }
    },
    "/managed_cards/{id}/physical/report_stolen": {
      "post": {
        "operationId": "managedCardPhysicalReportStolen",
        "summary": "Report a physical card as stolen",
        "tags": [
          "Managed cards"
        ],
        "x-tagSubgroup": "Physical cards",
        "description": "Use this when a cardholder reports their card as taken rather than mislaid.\n\nIt reports the physical card identified by the `id` path parameter as stolen. The instrument is \ndestroyed, not merely deactivated, and can never be used again.\n\nFunds remaining on the card aren't lost. Once a replacement is requested, they are transferred to the \nreplacement card.\n\n:::note\nIf the card was mislaid rather than taken, use \n[Report a physical card as lost](https://docs.weavr.io/api/managedcardphysicalreportlost) instead. A \ncard can be marked as one or the other, not both.\n:::\n\n### Prerequisites\nThe card must be physical and already activated (`PHYSICAL_CARD_NOT_ACTIVATED`), and not already \nmarked or destroyed.\n\n### Next steps\nReporting a card stolen does not order a replacement. Call \n[Replace a lost or stolen physical card](https://docs.weavr.io/api/managedcardphysicalreplacelostorstolen) \nto issue one.\n",
        "x-permissions": [
          "i:managed_cards:report_stolen",
          "i:managed_cards:report_stolen:own"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The unique identifier of the managed card.",
            "required": true,
            "style": "simple",
            "schema": {
              "type": "string",
              "pattern": "^[0-9]+$",
              "example": "123456789"
            }
          },
          {
            "$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": [
          {
            "access_token": [],
            "api-key": []
          }
        ]
      }
    },
    "/managed_cards/{id}/physical/replace_lost_stolen": {
      "post": {
        "operationId": "managedCardPhysicalReplaceLostOrStolen",
        "summary": "Replace a lost or stolen physical card",
        "tags": [
          "Managed cards"
        ],
        "x-tagSubgroup": "Physical cards",
        "description": "Issues a replacement for the physical card identified by the `id` path parameter, which has already \nbeen reported as lost or stolen.\n\nThe replacement is printed with the same details and delivered to the same address as the original. \nAny funds remaining on the original card are transferred to it automatically, except for amounts \nstill held against a previous authorization.\n\n### Prerequisites\nThe card must already be marked as lost or stolen, otherwise the request fails with \n`INSTRUMENT_NOT_MARKED_LOST_OR_STOLEN`. Report it first with \n[Report a physical card as lost](https://docs.weavr.io/api/managedcardphysicalreportlost) or \n[as stolen](https://docs.weavr.io/api/managedcardphysicalreportstolen). For a debit card, the parent \nmanaged account must still be active (`PARENT_MANAGED_ACCOUNT_NOT_ACTIVE`).\n\nThis operation requires a stepped-up access token. Step up before calling it by issuing a challenge \nthrough [Step-up](https://docs.weavr.io/api/stepupscachallenge).\n\n### Fields\n`activationCode` is required, and is the code the cardholder will use to activate the replacement \nonce it arrives. It is a new code for the new card, not the one used for the original.\n\n### Conflicts\nA card can be replaced once: a second call fails with `INSTRUMENT_ALREADY_REPLACED`. \n`MAX_PRINT_CHARACTERS_EXCEEDED` means the name held on the card is too long for the chosen card \ndesign to print. Shorten `nameOnCard` with \n[Update a card](https://docs.weavr.io/api/managedcardupdate) before retrying.\n\n### Next steps\nThe replacement arrives inactive. The cardholder activates it with \n[Activate a physical card](https://docs.weavr.io/api/managedcardphysicalactivate), using the \n`activationCode` supplied here.\n",
        "x-sca": "SECOND_FACTOR_SESSION",
        "x-permissions": [
          "i:managed_cards:replace_lost_stolen",
          "i:managed_cards:replace_lost_stolen:own"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The unique identifier of the managed card.",
            "required": true,
            "style": "simple",
            "schema": {
              "type": "string",
              "pattern": "^[0-9]+$",
              "example": "123456789"
            }
          },
          {
            "$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": [
          {
            "access_token_stepped_up": [],
            "api-key": []
          }
        ]
      }
    },
    "/managed_cards/{id}/physical/contactless_limit/reset": {
      "post": {
        "operationId": "managedCardPhysicalContactlessLimitReset",
        "summary": "Reset contactless limit for a physical card",
        "tags": [
          "Managed cards"
        ],
        "x-tagSubgroup": "Physical cards",
        "description": "Resets the contactless limit on the physical card identified by the `id` path parameter.\n\nFor security, a cardholder is asked for their PIN after a number of consecutive contactless \npurchases. Resetting the limit clears that counter, so contactless payments work again without a PIN \nentry.\n\n:::note\nThis applies only to physical cards in the wearable form factor. Any other card fails with \n`PHYSICAL_CARD_TYPE_NOT_SUPPORTED`.\n:::\n\n### Prerequisites\nThe card must be physical and activated (`PHYSICAL_CARD_NOT_ACTIVATED`), and neither blocked nor \ndestroyed.\n",
        "x-permissions": [
          "i:managed_cards:reset_contactless_limit",
          "i:managed_cards:reset_contactless_limit:own"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The unique identifier of the managed card.",
            "required": true,
            "style": "simple",
            "schema": {
              "type": "string",
              "pattern": "^[0-9]+$",
              "example": "123456789"
            }
          },
          {
            "$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/ManagedCardPhysicalContactlessLimitResetConflict"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "access_token": [],
            "api-key": []
          }
        ]
      }
    },
    "/transfers": {
      "post": {
        "operationId": "transferCreate",
        "summary": "Create a transfer",
        "tags": [
          "Transfers"
        ],
        "description": "Transfers funds between managed accounts and managed cards belonging to the same corporate or consumer identity.\n\nBoth instruments must be active. Debit-mode cards can't be used because they don't hold a balance. The specified Transfer Profile, configured in the Multi Portal, determines the transaction's fees and restrictions.\n\nSet `scheduledTimestamp` to schedule execution for a future UTC date and time.\n",
        "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": [
          {
            "access_token": [],
            "api-key": []
          }
        ]
      },
      "get": {
        "operationId": "transfersGet",
        "summary": "List transfers",
        "tags": [
          "Transfers"
        ],
        "description": "Retrieves all the transfer transactions performed by the logged-in identity.",
        "x-sca": "SECOND_FACTOR_WITHIN_WINDOW",
        "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": [
          {
            "access_token_stepped_up": [],
            "api-key": []
          }
        ]
      }
    },
    "/transfers/bulk/cancel": {
      "post": {
        "operationId": "transferCancel",
        "summary": "Cancel transfers",
        "tags": [
          "Transfers"
        ],
        "description": "Cancels one or more transfers before they execute. Only transfers in `SCHEDULED` can be canceled.\n\nProvide the transaction IDs and, optionally, a cancellation reason in the request body.\n",
        "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"
          },
          "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": [
          {
            "access_token": [],
            "api-key": []
          }
        ]
      }
    },
    "/transfers/{id}": {
      "get": {
        "operationId": "transferGet",
        "summary": "Get a transfer",
        "tags": [
          "Transfers"
        ],
        "description": "Returns the transfer identified by `id`, including its current state.\n\nUse the state to determine whether the transfer is scheduled, has completed, or has failed.\n",
        "x-sca": "SECOND_FACTOR_WITHIN_WINDOW",
        "x-permissions": [
          "i:transfers:get"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "The unique identifier of the transfer.",
            "schema": {
              "type": "string",
              "pattern": "^[0-9]+$",
              "example": "123456789"
            }
          }
        ],
        "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": [
          {
            "access_token_stepped_up": [],
            "api-key": []
          }
        ]
      }
    },
    "/sends": {
      "post": {
        "operationId": "sendCreate",
        "summary": "Create a send",
        "tags": [
          "Sends"
        ],
        "description": "Sends funds between managed accounts and managed cards belonging to *different* corporate or consumer identities.\n\nThe source can be a managed account or managed card. The destination can be a managed account, managed card, or beneficiary. The specified Send Profile, configured in the Multi Portal, determines the transaction's fees and restrictions.\n\nAfter creating the send, the user must complete a transaction confirmation challenge before it is processed. Check the state in the response to determine the next action. Set `scheduledTimestamp` to schedule execution for a future UTC date and time.\n",
        "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": [
          {
            "access_token": [],
            "api-key": []
          }
        ]
      },
      "get": {
        "operationId": "sendsGet",
        "summary": "List sends",
        "tags": [
          "Sends"
        ],
        "description": "Retrieves all the send transactions performed by the logged-in identity.",
        "x-sca": "SECOND_FACTOR_WITHIN_WINDOW",
        "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": [
          {
            "access_token_stepped_up": [],
            "api-key": []
          }
        ]
      }
    },
    "/sends/{id}": {
      "get": {
        "operationId": "sendGet",
        "summary": "Get a send",
        "tags": [
          "Sends"
        ],
        "description": "Returns the send identified by `id`, including its current state.\n\nSends are usually executed immediately, but risk assessment or a transaction confirmation challenge can delay execution. Use the state to determine whether the send needs confirmation, is awaiting approval, is scheduled, has completed, or has failed or been returned.\n",
        "x-sca": "SECOND_FACTOR_WITHIN_WINDOW",
        "x-permissions": [
          "i:sends:get"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "The unique identifier of the send.",
            "schema": {
              "type": "string",
              "pattern": "^[0-9]+$",
              "example": "123456789"
            }
          }
        ],
        "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": [
          {
            "access_token_stepped_up": [],
            "api-key": []
          }
        ]
      }
    },
    "/sends/{id}/cancel": {
      "post": {
        "operationId": "sendSingleCancel",
        "summary": "Cancel a send",
        "tags": [
          "Sends"
        ],
        "description": "Cancels the send identified by `id` before it executes.\n\nOnly sends in `SCHEDULED` can be canceled with this operation. Canceling a scheduled send doesn't require Strong Customer Authentication.\n",
        "x-permissions": [
          "i:sends:cancel_bulk"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "The unique identifier of the send.",
            "schema": {
              "type": "string",
              "pattern": "^[0-9]+$",
              "example": "123456789"
            }
          }
        ],
        "requestBody": {
          "$ref": "#/components/requestBodies/TransactionSingleCancelRequest"
        },
        "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"
          },
          "409": {
            "$ref": "#/components/responses/SendCancelConflict"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "access_token": [],
            "api-key": []
          }
        ]
      }
    },
    "/sends/{id}/challenges/otp/{channel}": {
      "post": {
        "operationId": "sendSCAChallenge",
        "summary": "Issue a one-time password that can be used to verify a send",
        "tags": [
          "Sends"
        ],
        "description": "Deprecated in favor of [Challenges endpoints](#tag/Confirmation-Challenges/operation/multipleSCAChallenge)\n\nStarts 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.\n\nYou should only start this process if the send `state` is `PENDING_CHALLENGE`.\n\n:::note\nOn sandbox, no text message is sent and the one-time password is always `123456`.\n:::\n",
        "deprecated": true,
        "x-permissions": [
          "i:sends:send_sca_challenge"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "The unique identifier of the send.",
            "schema": {
              "type": "string",
              "pattern": "^[0-9]+$",
              "example": "123456789"
            }
          },
          {
            "$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": [
          {
            "access_token": [],
            "api-key": []
          }
        ]
      }
    },
    "/sends/{id}/challenges/otp/{channel}/verify": {
      "post": {
        "operationId": "sendSCAVerify",
        "summary": "Verify a send using a one-time password",
        "tags": [
          "Sends"
        ],
        "description": "Deprecated in favor of [Challenges endpoints](#tag/Confirmation-Challenges/operation/multipleSCAVerify)\n\nCompletes the verification process for a send by submitting the one-time password sent to the user. \nOn success, the send is executed.\n\nThe challenge expires after 5 minutes, and the number of incorrect attempts is capped to reduce the risk \nof fraud. Once either limit is hit, issue a fresh challenge.\n\n:::note\nOn sandbox, no text message is sent and `verificationCode` is always `123456`.\n:::\n",
        "deprecated": true,
        "x-permissions": [
          "i:sends:send_sca_verify"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "The unique identifier of the send.",
            "schema": {
              "type": "string",
              "pattern": "^[0-9]+$",
              "example": "123456789"
            }
          },
          {
            "$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": [
          {
            "access_token": [],
            "api-key": []
          }
        ]
      }
    },
    "/sends/{id}/challenges/push/{channel}": {
      "post": {
        "operationId": "sendSCAChallengePush",
        "summary": "Send a push notification to verify a send",
        "tags": [
          "Sends"
        ],
        "description": "Deprecated in favor of [Challenges endpoints](#tag/Confirmation-Challenges/operation/multipleSCAChallengePush)\n\nStarts 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.\n\nYou should only start this process if the send `state` is `PENDING_CHALLENGE`.\n",
        "deprecated": true,
        "x-permissions": [
          "i:sends:send_sca_challenge_push"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "The unique identifier of the send.",
            "schema": {
              "type": "string",
              "pattern": "^[0-9]+$",
              "example": "123456789"
            }
          },
          {
            "$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": [
          {
            "access_token": [],
            "api-key": []
          }
        ]
      }
    },
    "/incoming_wire_transfers": {
      "get": {
        "operationId": "incomingWireTransfersGet",
        "summary": "List incoming wire transfers",
        "tags": [
          "Incoming wire transfers"
        ],
        "description": "Returns all incoming wire transfers for the authenticated identity.\n",
        "x-sca": "SECOND_FACTOR_WITHIN_WINDOW",
        "x-permissions": [
          "i:iwt:list"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/offset"
          },
          {
            "$ref": "#/components/parameters/limit"
          },
          {
            "$ref": "#/components/parameters/iwtState"
          },
          {
            "$ref": "#/components/parameters/creationTimestampFrom"
          },
          {
            "$ref": "#/components/parameters/creationTimestampTo"
          },
          {
            "$ref": "#/components/parameters/lastUpdatedTimestampFrom"
          },
          {
            "$ref": "#/components/parameters/lastUpdatedTimestampTo"
          },
          {
            "$ref": "#/components/parameters/sortOrder"
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/IncomingWireTransferListResponse"
          },
          "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": [
          {
            "access_token": [],
            "api-key": []
          }
        ]
      }
    },
    "/incoming_wire_transfers/{id}": {
      "get": {
        "operationId": "incomingWireTransferGet",
        "summary": "Get an incoming wire transfer",
        "tags": [
          "Incoming wire transfers"
        ],
        "description": "Returns the incoming wire transfer identified by `id`, including its originator,\ndestination account, amount, and current state.\n\nRead the [incoming wire transfers overview](https://docs.weavr.io/transactions/iwt/overview/)\nfor transfer requirements, states, and webhook events.\n",
        "x-sca": "SECOND_FACTOR_WITHIN_WINDOW",
        "x-permissions": [
          "i:iwt:get"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The unique identifier of the incoming wire transfer.",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^[0-9]+$",
              "example": "123456789"
            }
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/IncomingWireTransferResponse"
          },
          "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": [
          {
            "access_token": [],
            "api-key": []
          }
        ]
      }
    },
    "/outgoing_wire_transfers": {
      "post": {
        "operationId": "outgoingWireTransferCreate",
        "summary": "Create an outgoing wire transfer",
        "tags": [
          "Outgoing wire transfers"
        ],
        "description": "Use this when you need to move funds out of the Weavr platform to an external bank account.\n\nIt transfers funds from one of the identity's managed accounts to a destination bank account over \nSEPA, Faster Payments, SWIFT, or RIX. The rails are chosen from the destination's bank details \nand reported back as `type`.\n\nA transfer isn't submitted the moment you create it. Depending on the destination and the amount, \nit may first need payee confirmation, a transaction confirmation challenge, or both. Always read \n`state` in the response to decide what to do next.\n\n### Prerequisites\nThe source managed account must have an IBAN, otherwise the request fails with \n`IBAN_UPGRADE_REQUIRED`. See \n[Add an IBAN to an account](https://docs.weavr.io/api/managedaccountsibanupgrade).\n\nThe Outgoing Wire Transfer Profile referenced by `profileId`, configured in the Multi Portal, must be \nactive and must support the payment type being used. It determines the fees and restrictions applied \nto the transfer.\n\n### Fields\n\n#### Source\n`sourceInstrument` must be a managed account; cards can't fund a wire transfer. `transferAmount` is \ntaken from that account and must be in the account's currency, or the request fails with \n`CURRENCY_MISMATCH`. Any fee is charged separately and reported as `fee` on the transfer.\n\n#### Destination\n`destinationBeneficiary` accepts the destination in one of three ways:\n\n- **Bank details**: a `SEPABeneficiary`, `FasterPaymentsBeneficiary`, `SWIFTBeneficiary`, or \n  `RIXBeneficiary`, supplied inline. The rails follow from the details you provide.\n- **A trusted payee**: `beneficiaryId`, referencing a payee the identity has already added and \n  verified. See [Add payees](https://docs.weavr.io/api/beneficiarybatchcreate).\n- **A linked account**: an `ExternalAccountId` of type `linked_accounts`, referencing an external \n  account the identity has already proven it owns.\n\n#### Reference and purpose\n`description` is passed to the beneficiary as the payment reference. It is mandatory for SEPA and \nSWIFT, and the length limit depends on the rails: 35 characters for SEPA and SWIFT, 18 for Faster \nPayments. `purpose` is mandatory for SWIFT; omitting it where it's required fails with \n`PURPOSE_OF_PAYMENT_REQUIRED`.\n\n#### Scheduling\nSet `scheduledTimestamp` to an epoch timestamp to execute the transfer at a future time. The transfer \nis held in `SCHEDULED` until then and can be canceled with \n[Cancel an outgoing wire transfer](https://docs.weavr.io/api/outgoingwiretransfersinglecancel).\n\n### Payee confirmation\nWeavr checks the payee name before executing the transfer. GBP Faster Payments use Confirmation of \nPayee (CoP), and EUR SEPA transfers use Verification of Payee (VoP).\n\nWhen confirmation is required, the transfer is created in `PENDING_CONFIRMATION`. Show the result to \nthe user, then either \n[confirm](https://docs.weavr.io/api/outgoingwiretransferconfirm) the transfer or cancel it. Where the \nname is close but not exact, you can correct it with \n[Update the beneficiary name](https://docs.weavr.io/api/outgoingwiretransferupdatebeneficiaryname) \nbefore confirming.\n\nGBP transfers to linked accounts skip this confirmation, because ownership was already checked when \nthe account was linked. EUR transfers to linked accounts still require confirmation.\n\n### Transaction confirmation\nThe user must complete a transaction confirmation challenge before the transfer is submitted. A \ntransfer waiting on this is in `PENDING_CHALLENGE`; issue a challenge with \n[one-time password](https://docs.weavr.io/api/outgoingwiretransferscachallenge) or \n[push notification](https://docs.weavr.io/api/outgoingwiretransferscachallengepush), then verify it.\n\n### States\nA newly created transfer is in one of:\n\n| State | Meaning |\n| --- | --- |\n| `PENDING_CONFIRMATION` | Payee confirmation is required. Show the result, then confirm or cancel. |\n| `PENDING_CHALLENGE` | A transaction confirmation challenge is required before submission. |\n| `SCHEDULED` | Accepted and waiting for `scheduledTimestamp`. |\n| `SUBMITTED` | Sent to the financial institution for processing. |\n| `INVALID` | Failed initial validation and won't proceed. |\n\nOnce submitted, the transfer moves on to `APPROVED`, then `COMPLETED`, or to `REJECTED`, `FAILED`, \nor `RETURNED`. Track it with \n[Get an outgoing wire transfer](https://docs.weavr.io/api/outgoingwiretransferget).\n",
        "x-permissions": [
          "i:owt:create"
        ],
        "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": [
          {
            "access_token": [],
            "api-key": []
          }
        ]
      },
      "get": {
        "operationId": "outgoingWireTransfersGet",
        "summary": "List outgoing wire transfers",
        "tags": [
          "Outgoing wire transfers"
        ],
        "description": "Retrieves all the outgoing wire transfer transactions performed by the logged-in identity.",
        "x-sca": "SECOND_FACTOR_WITHIN_WINDOW",
        "x-permissions": [
          "i:owt:list"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/offset"
          },
          {
            "$ref": "#/components/parameters/limit"
          },
          {
            "$ref": "#/components/parameters/profileId"
          },
          {
            "name": "instrument",
            "in": "query",
            "required": false,
            "deprecated": true,
            "description": "Deprecated. Use `sourceInstrument.id` and `sourceInstrument.type` instead. 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"
                }
              }
            }
          },
          {
            "$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"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "access_token_stepped_up": [],
            "api-key": []
          }
        ]
      }
    },
    "/outgoing_wire_transfers/{id}": {
      "get": {
        "operationId": "outgoingWireTransferGet",
        "summary": "Get an outgoing wire transfer",
        "tags": [
          "Outgoing wire transfers"
        ],
        "description": "Returns the outgoing wire transfer identified by `id`, including its current state.\n\nTransfers are processed asynchronously. Use the state to determine whether the transfer needs payee confirmation or a transaction confirmation challenge, has been submitted for processing, has completed, or has failed or been returned.\n",
        "x-sca": "SECOND_FACTOR_WITHIN_WINDOW",
        "x-permissions": [
          "i:owt:get"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "The unique identifier of the outgoing wire transfer.",
            "schema": {
              "type": "string",
              "pattern": "^[0-9]+$",
              "example": "123456789"
            }
          }
        ],
        "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"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "access_token_stepped_up": [],
            "api-key": []
          }
        ]
      },
      "patch": {
        "operationId": "outgoingWireTransferUpdateBeneficiaryName",
        "summary": "Update the beneficiary name of an outgoing wire transfer",
        "tags": [
          "Outgoing wire transfers"
        ],
        "description": "Updates the beneficiary name on the outgoing wire transfer identified by `id` and re-runs the payee \ncheck with the new name.\n\nUse this when a transfer is in `PENDING_CONFIRMATION` and the Confirmation of Payee (CoP) or \nVerification of Payee (VoP) result shows a close but inexact match. The previous result is discarded \nand the check runs again. Once the result is acceptable, \n[confirm the transfer](https://docs.weavr.io/api/outgoingwiretransferconfirm).\n",
        "x-permissions": [
          "i:owt:confirm"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "The unique identifier of the outgoing wire transfer.",
            "schema": {
              "type": "string",
              "pattern": "^[0-9]+$",
              "example": "123456789"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/OutgoingWireTransferUpdateBeneficiaryNameRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "$ref": "#/components/responses/OutgoingWireTransferResponse"
          },
          "400": {
            "$ref": "#/components/responses/BadRequestError"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/OutgoingWireTransferUpdateBeneficiaryNameConflict"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "access_token": [],
            "api-key": []
          }
        ]
      }
    },
    "/outgoing_wire_transfers/{id}/payment_confirmation": {
      "get": {
        "operationId": "outgoingWireTransferPaymentConfirmation",
        "summary": "Get an outgoing wire transfer payment confirmation",
        "tags": [
          "Outgoing wire transfers"
        ],
        "description": "Returns a customer-facing payment confirmation as a PDF for the outgoing wire transfer identified by `id`.\n\nThe document confirms that Weavr sent the funds through the instructed payment rail; it doesn't confirm that the funds have reached the payee's account. It is available only after the transfer reaches `COMPLETED`. A request made before then, or for a transfer with no confirmation, returns `409`. If the transfer was subsequently returned, the document also includes the return details.\n",
        "x-permissions": [
          "i:owt:get"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "The unique identifier of the outgoing wire transfer.",
            "schema": {
              "type": "string",
              "pattern": "^[0-9]+$",
              "example": "123456789"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/pdf": {
                "schema": {
                  "type": "string",
                  "format": "binary"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequestError"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/InstrumentForbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/OutgoingWireTransferPaymentConfirmationConflict"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "access_token": [],
            "api-key": []
          }
        ]
      }
    },
    "/outgoing_wire_transfers/{id}/cancel": {
      "post": {
        "operationId": "outgoingWireTransferSingleCancel",
        "summary": "Cancel an outgoing wire transfer",
        "tags": [
          "Outgoing wire transfers"
        ],
        "description": "Cancels the outgoing wire transfer identified by `id` before it executes.\n\nOnly transfers in `SCHEDULED` can be canceled with this operation. Canceling a scheduled transfer doesn't require Strong Customer Authentication.\n",
        "x-permissions": [
          "i:owt:cancel"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "The unique identifier of the outgoing wire transfer.",
            "schema": {
              "type": "string",
              "pattern": "^[0-9]+$",
              "example": "123456789"
            }
          }
        ],
        "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"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "access_token": [],
            "api-key": []
          }
        ]
      }
    },
    "/outgoing_wire_transfers/{id}/confirm": {
      "post": {
        "operationId": "outgoingWireTransferConfirm",
        "summary": "Confirm an outgoing wire transfer",
        "tags": [
          "Outgoing wire transfers"
        ],
        "description": "Confirms that the user accepts the payee verification result for the outgoing wire transfer identified by `id`.\n\nUse this operation when a transfer is in `PENDING_CONFIRMATION` after a Confirmation of Payee (CoP) or Verification of Payee (VoP) check. The transfer can then proceed to the transaction confirmation challenge. GBP transfers to linked accounts skip this step, while EUR transfers to linked accounts always require it.\n",
        "x-permissions": [
          "i:owt:confirm"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "The unique identifier of the outgoing wire transfer.",
            "schema": {
              "type": "string",
              "pattern": "^[0-9]+$",
              "example": "123456789"
            }
          }
        ],
        "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"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "access_token": [],
            "api-key": []
          }
        ]
      }
    },
    "/outgoing_wire_transfers/{id}/challenges/otp/{channel}": {
      "post": {
        "operationId": "outgoingWireTransferSCAChallenge",
        "summary": "Issue a one-time password that can be used to verify an outgoing wire transfer",
        "tags": [
          "Outgoing wire transfers"
        ],
        "description": "Deprecated in favor of [Challenges endpoints](#tag/Confirmation-Challenges/operation/multipleSCAChallenge)\n\nStarts 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.\n\nYou should only start this process if the outgoing wire transfer `state` is `PENDING_CHALLENGE`.\n\n:::note\nOn sandbox, no text message is sent and the one-time password is always `123456`.\n:::\n",
        "deprecated": true,
        "x-permissions": [
          "i:owt:create_challenge"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "The unique identifier of the outgoing wire transfer.",
            "schema": {
              "type": "string",
              "pattern": "^[0-9]+$",
              "example": "123456789"
            }
          },
          {
            "$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": [
          {
            "access_token": [],
            "api-key": []
          }
        ]
      }
    },
    "/outgoing_wire_transfers/{id}/challenges/otp/{channel}/verify": {
      "post": {
        "operationId": "outgoingWireTransferSCAVerify",
        "summary": "Verify an outgoing wire transfer using a one-time password",
        "tags": [
          "Outgoing wire transfers"
        ],
        "description": "Deprecated in favor of [Challenges endpoints](#tag/Confirmation-Challenges/operation/multipleSCAVerify)\n\nCompletes the verification process for an outgoing wire transfer by submitting the one-time password \nsent to the user. On success, the transfer is executed.\n\nThe challenge expires after 5 minutes, and the number of incorrect attempts is capped to reduce the risk \nof fraud. Once either limit is hit, issue a fresh challenge.\n\n:::note\nOn sandbox, no text message is sent and `verificationCode` is always `123456`.\n:::\n",
        "deprecated": true,
        "x-permissions": [
          "i:owt:verify_challenge"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "The unique identifier of the outgoing wire transfer.",
            "schema": {
              "type": "string",
              "pattern": "^[0-9]+$",
              "example": "123456789"
            }
          },
          {
            "$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": [
          {
            "access_token": [],
            "api-key": []
          }
        ]
      }
    },
    "/outgoing_wire_transfers/{id}/challenges/push/{channel}": {
      "post": {
        "operationId": "outgoingWireTransferSCAChallengePush",
        "summary": "Issue a push notification that can be used to verify an outgoing wire transfer",
        "tags": [
          "Outgoing wire transfers"
        ],
        "description": "Deprecated in favor of [Challenges endpoints](#tag/Confirmation-Challenges/operation/multipleSCAChallengePush)\n\nStarts 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.\n\nYou should only start this process if the outgoing wire transfer `state` is `PENDING_CHALLENGE`.\n",
        "deprecated": true,
        "x-permissions": [
          "i:owt:create_push_challenge"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "The unique identifier of the outgoing wire transfer.",
            "schema": {
              "type": "string",
              "pattern": "^[0-9]+$",
              "example": "123456789"
            }
          },
          {
            "$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": [
          {
            "access_token": [],
            "api-key": []
          }
        ]
      }
    },
    "/correspondent_bank_transfers": {
      "post": {
        "operationId": "correspondentBankTransferCreate",
        "summary": "Create a correspondent bank transfer",
        "tags": [
          "Correspondent bank transfers"
        ],
        "description": "Creates an outgoing wire transfer on behalf of an originator (correspondent banking).\n\nThis endpoint is designed for correspondent banking use cases where a financial institution\ninitiates a wire transfer on behalf of another party (the originator).\n\nThe Outgoing Wire Transfer Profile (configured in the Multi Portal) specified determines the behavior\nand restrictions of the transaction (for example, fees).\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/idempotency-ref"
          }
        ],
        "requestBody": {
          "$ref": "#/components/requestBodies/CorrespondentBankingOwtCreateRequest"
        },
        "responses": {
          "200": {
            "$ref": "#/components/responses/CorrespondentBankingOwtResponse"
          },
          "400": {
            "$ref": "#/components/responses/BadRequestError"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "409": {
            "$ref": "#/components/responses/CorrespondentBankingOwtCreateConflict"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "access_token": [],
            "api-key": []
          }
        ]
      },
      "get": {
        "operationId": "correspondentBankTransfersGet",
        "summary": "List correspondent bank transfers",
        "tags": [
          "Correspondent bank transfers"
        ],
        "description": "Returns a paginated list of correspondent bank transfers for the logged-in\nidentity. Filter results by profile, source instrument, creation date,\nexecution date, state, tag, or originator details.\n\nRead the [transaction activity overview](https://docs.weavr.io/transactions/transaction-activity/overview/)\nfor how correspondent bank transfers appear in the common transaction model.\n",
        "parameters": [
          {
            "$ref": "#/components/parameters/offset"
          },
          {
            "$ref": "#/components/parameters/limit"
          },
          {
            "$ref": "#/components/parameters/profileId"
          },
          {
            "$ref": "#/components/parameters/sourceInstrument_id"
          },
          {
            "$ref": "#/components/parameters/sourceInstrument_type"
          },
          {
            "name": "createdFrom",
            "in": "query",
            "required": false,
            "description": "Filter for correspondent bank transfer transactions created after `createdFrom` timestamp, expressed in Epoch timestamp using millisecond precision.",
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "createdTo",
            "in": "query",
            "required": false,
            "description": "Filter for correspondent bank transfer transactions created before `createdTo` timestamp, expressed in Epoch timestamp using millisecond precision.",
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "executedFrom",
            "in": "query",
            "required": false,
            "description": "Filter for correspondent bank transfer transactions executed after `executedFrom` timestamp, expressed in Epoch timestamp using millisecond precision.",
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "executedTo",
            "in": "query",
            "required": false,
            "description": "Filter for correspondent bank transfer transactions executed before `executedTo` timestamp, expressed in Epoch timestamp using millisecond precision.",
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "tag",
            "in": "query",
            "required": false,
            "description": "Filter by the correspondent bank transfer tag. The exact tag must be provided, as wildcards are not supported.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "state",
            "in": "query",
            "required": false,
            "description": "Filter by the state of the correspondent bank transfer transaction.",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/components/schemas/CorrespondentBankingOwtState"
              }
            }
          },
          {
            "name": "originator.name",
            "in": "query",
            "required": false,
            "description": "Filter by the originator name. Partial matches are supported.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "originator.type",
            "in": "query",
            "required": false,
            "description": "Filter by the originator type.",
            "schema": {
              "type": "string",
              "enum": [
                "INDIVIDUAL",
                "BUSINESS"
              ]
            }
          },
          {
            "name": "originator.tag",
            "in": "query",
            "required": false,
            "description": "Filter by the originator tag.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/CorrespondentBankingOwtsResponse"
          },
          "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": [
          {
            "access_token": [],
            "api-key": []
          }
        ]
      }
    },
    "/correspondent_bank_transfers/{id}": {
      "get": {
        "operationId": "correspondentBankTransferGet",
        "summary": "Get a correspondent bank transfer",
        "tags": [
          "Correspondent bank transfers"
        ],
        "description": "Retrieves the correspondent bank transfer identified by the `id` path parameter.",
        "x-sca": "SECOND_FACTOR_WITHIN_WINDOW",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "The unique identifier of the correspondent bank transfer.",
            "schema": {
              "type": "string",
              "pattern": "^[0-9]+$",
              "example": "123456789"
            }
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/CorrespondentBankingOwtResponse"
          },
          "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": [
          {
            "access_token": [],
            "api-key": []
          }
        ]
      }
    },
    "/correspondent_bank_transfers/{id}/cancel": {
      "post": {
        "operationId": "correspondentBankTransferCancel",
        "summary": "Cancel a correspondent bank transfer",
        "tags": [
          "Correspondent bank transfers"
        ],
        "description": "Cancel the correspondent bank transfer identified by the `id` path parameter.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "The unique identifier of the correspondent bank transfer.",
            "schema": {
              "type": "string",
              "pattern": "^[0-9]+$",
              "example": "123456789"
            }
          }
        ],
        "requestBody": {
          "$ref": "#/components/requestBodies/TransactionSingleCancelRequest"
        },
        "responses": {
          "200": {
            "$ref": "#/components/responses/CorrespondentBankingOwtResponse"
          },
          "400": {
            "$ref": "#/components/responses/BadRequestError"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/CorrespondentBankingOwtCancelConflict"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "access_token": [],
            "api-key": []
          }
        ]
      }
    },
    "/correspondent_bank_transfers/{id}/confirm": {
      "post": {
        "operationId": "correspondentBankTransferConfirm",
        "summary": "Confirm a correspondent bank transfer",
        "tags": [
          "Correspondent bank transfers"
        ],
        "description": "Confirm the correspondent bank transfer identified by the `id` path parameter.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "The unique identifier of the correspondent bank transfer.",
            "schema": {
              "type": "string",
              "pattern": "^[0-9]+$",
              "example": "123456789"
            }
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/CorrespondentBankingOwtResponse"
          },
          "400": {
            "$ref": "#/components/responses/BadRequestError"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/CorrespondentBankingOwtConfirmConflict"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          },
          "default": {
            "$ref": "#/components/responses/Error"
          }
        },
        "security": [
          {
            "access_token": [],
            "api-key": []
          }
        ]
      }
    },
    "/beneficiaries": {
      "post": {
        "operationId": "beneficiaryBatchCreate",
        "summary": "Add payees",
        "tags": [
          "Trusted payees"
        ],
        "description": "Use this when a user wants to save a recipient so they can pay it again without re-entering its \ndetails.\n\nIt creates a batch containing one or more trusted payees for the logged-in corporate or consumer \nidentity. Once the batch completes, each payee can be referenced by `beneficiaryId` as the destination \nof a [send](https://docs.weavr.io/api/sendcreate) or an \n[outgoing wire transfer](https://docs.weavr.io/api/outgoingwiretransfercreate).\n\nPayees belong to the identity that creates them and can't be shared with other identities.\n\n### Fields\nEach entry in `beneficiaries` needs `trustLevel` set to `TRUSTED`, plus:\n\n- `beneficiaryInformation`: who the payee is, as either a business (`businessName`) or a consumer \n  (name and surname). Length and character limits depend on the payment details supplied below; Faster \n  Payments and BACS are stricter than IBAN.\n- `beneficiaryDetails`: how to pay them, as either an `instrument` held on the Weavr platform, used \n  for sends, or `bankAccountDetails` for an external account, used for wire transfers.\n\n`group` and `externalRefs` are yours to use (a category for filtering, and your own identifiers for \nthe payee) and don't affect processing.\n\n### Verification is required\nThe batch isn't applied when you create it. The response carries an `operationBatchId` and a `state`:\n\n| State | What to do |\n| --- | --- |\n| `PENDING_CHALLENGE` | Issue an SCA challenge and verify it. |\n| `CHALLENGE_COMPLETED` | Verification succeeded; the batch is being applied. |\n| `COMPLETED` | The payees are on the trusted list and can be paid. |\n| `CHALLENGE_FAILED` | Verification failed. The payees weren't added. |\n| `FAILED` | The batch couldn't be applied. |\n\nWhile the state is `PENDING_CHALLENGE`, issue a challenge with \n[one-time password](https://docs.weavr.io/api/beneficiarybatchscachallenge) or \n[push notification](https://docs.weavr.io/api/beneficiarybatchscachallengepush), then confirm it with \n[Verify a payee batch](https://docs.weavr.io/api/beneficiarybatchscaverify). Verification covers the \nwhole batch, not individual payees.\n\n### Next steps\nRead the outcome with [Get a batch of payees](https://docs.weavr.io/api/beneficiarybatchget), and the \nresulting payees with [List payees](https://docs.weavr.io/api/beneficiariesget). A payee is usable \nonce it reaches `ACTIVE`.\n",
        "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": [
          {
            "access_token": [],
            "api-key": []
          }
        ]
      },
      "get": {
        "operationId": "beneficiariesGet",
        "summary": "List payees",
        "tags": [
          "Trusted payees"
        ],
        "description": "Returns the logged-in identity's trusted payees that match the supplied batch and group filters.\n\nTrusted payees are saved recipients that can be referenced by `beneficiaryId` in sends and outgoing wire transfers. They can't be shared between identities.\n",
        "x-permissions": [
          "i:beneficiaries:list"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/offset"
          },
          {
            "$ref": "#/components/parameters/limit"
          },
          {
            "name": "batchId",
            "in": "query",
            "required": false,
            "description": "Search by the payee batch id.",
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "pattern": "^[0-9]+$"
              }
            }
          },
          {
            "name": "group",
            "in": "query",
            "required": false,
            "description": "Search by the payee 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": [
          {
            "access_token": [],
            "api-key": []
          }
        ]
      }
    },
    "/beneficiaries/remove": {
      "post": {
        "operationId": "beneficiaryBatchRemove",
        "summary": "Remove payees",
        "tags": [
          "Trusted payees"
        ],
        "description": "Creates a batch operation to remove one or more trusted payees from the logged-in identity's list.\n\nRemoval follows the same two-step pattern as \n[adding payees](https://docs.weavr.io/api/beneficiarybatchcreate): the batch is created in \n`PENDING_CHALLENGE` and is only applied once the logged-in user completes a Strong Customer \nAuthentication challenge. Issue the challenge with \n[one-time password](https://docs.weavr.io/api/beneficiarybatchscachallenge) or \n[push notification](https://docs.weavr.io/api/beneficiarybatchscachallengepush), then confirm it with \n[Verify a payee batch](https://docs.weavr.io/api/beneficiarybatchscaverify).\n\nRemoved payees move to the `REMOVED` state and can no longer be used as a destination. Transactions \nalready made to them are unaffected.\n",
        "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": [
          {
            "access_token": [],
            "api-key": []
          }
        ]
      }
    },
    "/beneficiaries/{id}": {
      "get": {
        "operationId": "beneficiaryGet",
        "summary": "Get a payee",
        "tags": [
          "Trusted payees"
        ],
        "description": "Returns the trusted payee identified by `id`, including its recipient and destination details.\n\nA trusted payee is a saved recipient belonging to one identity. Reference it by `beneficiaryId` when creating a send or outgoing wire transfer. Eligible transactions to a trusted payee can skip Strong Customer Authentication and report `TRUSTED_BENEFICIARY` as their challenge exemption reason.\n",
        "x-permissions": [
          "i:beneficiaries:get"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The unique identifier of the payee.",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^[0-9]+$",
              "example": "123456789"
            }
          }
        ],
        "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": [
          {
            "access_token": [],
            "api-key": []
          }
        ]
      }
    },
    "/beneficiaries/batch": {
      "get": {
        "operationId": "beneficiaryBatchesGet",
        "summary": "List payee batches",
        "tags": [
          "Trusted payees"
        ],
        "description": "Returns the logged-in identity's payee batches, filtered by state, operation, or tag. Payees were previously called beneficiaries, which is why the paths and field names still say `beneficiary`.",
        "x-permissions": [
          "i:beneficiaries:list_batches"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/offset"
          },
          {
            "$ref": "#/components/parameters/limit"
          },
          {
            "name": "state",
            "in": "query",
            "required": false,
            "description": "Filter by one or more payee batch states.",
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "$ref": "#/components/schemas/BeneficiaryBatchState"
              }
            }
          },
          {
            "name": "operation",
            "in": "query",
            "required": false,
            "description": "Filter by one or more operations performed by the payee batch.",
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "$ref": "#/components/schemas/BeneficiaryBatchOperation"
              }
            }
          },
          {
            "name": "tag",
            "in": "query",
            "required": false,
            "description": "Filter by the payee 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": [
          {
            "access_token": [],
            "api-key": []
          }
        ]
      }
    },
    "/beneficiaries/batch/{id}": {
      "get": {
        "operationId": "beneficiaryBatchGet",
        "summary": "Get a batch of payees",
        "tags": [
          "Trusted payees"
        ],
        "description": "Returns the trusted payee batch identified by `id`, including the requested payee changes, operation type, and current state.\n\nUse the state to determine whether the batch needs a Strong Customer Authentication challenge or has been executed.\n",
        "x-permissions": [
          "i:beneficiaries:get_batch"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The unique identifier of the payee batch.",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^[0-9]+$",
              "example": "123456789"
            }
          }
        ],
        "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": [
          {
            "access_token": [],
            "api-key": []
          }
        ]
      }
    },
    "/beneficiaries/batch/{id}/challenges/otp/{channel}": {
      "post": {
        "operationId": "beneficiaryBatchSCAChallenge",
        "summary": "Send a one-time password to verify a payee batch",
        "tags": [
          "Trusted payees"
        ],
        "description": "Starts verification of a payee batch by sending a one-time password to a device belonging to the \nlogged-in user.\n\nUse this after [adding](https://docs.weavr.io/api/beneficiarybatchcreate) or \n[removing](https://docs.weavr.io/api/beneficiarybatchremove) payees, passing the `operationBatchId` \nfrom that response as `id`. Only start this when the batch `state` is `PENDING_CHALLENGE`.\n\nThe device must have been enrolled beforehand through `/authentication_factors/otp/{channel}`. To send \na push notification instead of a one-time password, use \n[the push variant](https://docs.weavr.io/api/beneficiarybatchscachallengepush).\n\nConfirm the code with [Verify a payee batch](https://docs.weavr.io/api/beneficiarybatchscaverify) to \napply the batch.\n\n:::note\nOn sandbox, no text message is sent and the one-time password is always `123456`.\n:::\n",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "The unique identifier of the payee batch.",
            "schema": {
              "type": "string",
              "pattern": "^[0-9]+$",
              "example": "123456789"
            }
          },
          {
            "$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": [
          {
            "access_token": [],
            "api-key": []
          }
        ]
      }
    },
    "/beneficiaries/batch/{id}/challenges/otp/{channel}/verify": {
      "post": {
        "operationId": "beneficiaryBatchSCAVerify",
        "summary": "Verify a payee batch using a one-time password",
        "tags": [
          "Trusted payees"
        ],
        "description": "Completes verification of a payee batch by submitting the one-time password sent to the user.\n\nPass the `operationBatchId` as `id` and the code the user received as `verificationCode`. On success \nthe batch is applied (payees are added to or removed from the trusted list) and the batch moves to \n`CHALLENGE_COMPLETED` and then `COMPLETED`. On failure it moves to `CHALLENGE_FAILED` and the payees \nare left unchanged.\n\nThis returns `204` as soon as the code is accepted, but the batch is applied asynchronously. Read the \noutcome with [Get a batch of payees](https://docs.weavr.io/api/beneficiarybatchget).\n\n:::note\nOn sandbox, no text message is sent and `verificationCode` is always `123456`.\n:::\n",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "The unique identifier of the payee batch.",
            "schema": {
              "type": "string",
              "pattern": "^[0-9]+$",
              "example": "123456789"
            }
          },
          {
            "$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": [
          {
            "access_token": [],
            "api-key": []
          }
        ]
      }
    },
    "/beneficiaries/batch/{id}/challenges/push/{channel}": {
      "post": {
        "operationId": "beneficiaryBatchSCAChallengePush",
        "summary": "Send a push notification to verify a payee batch",
        "tags": [
          "Trusted payees"
        ],
        "description": "Starts verification of a payee batch by sending a push notification to a device belonging to the \nlogged-in user, as an alternative to \n[the one-time password variant](https://docs.weavr.io/api/beneficiarybatchscachallenge).\n\nUse this after [adding](https://docs.weavr.io/api/beneficiarybatchcreate) or \n[removing](https://docs.weavr.io/api/beneficiarybatchremove) payees, passing the `operationBatchId` \nfrom that response as `id`. Only start this when the batch `state` is `PENDING_CHALLENGE`.\n\nThe device must have been enrolled beforehand through `/authentication_factors/push/{channel}`. The \nuser approves the challenge on the device, so there is no code to collect and no verify call to make. \nRead the outcome with [Get a batch of payees](https://docs.weavr.io/api/beneficiarybatchget).\n",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "The unique identifier of the payee batch.",
            "schema": {
              "type": "string",
              "pattern": "^[0-9]+$",
              "example": "123456789"
            }
          },
          {
            "$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": [
          {
            "access_token": [],
            "api-key": []
          }
        ]
      }
    },
    "/roles": {
      "get": {
        "operationId": "rolesGet",
        "summary": "List available roles",
        "tags": [
          "Roles"
        ],
        "description": "Returns the roles that can be assigned to users. Only available when role-based access control is enabled for the programme.",
        "x-permissions": [
          "i:roles:list"
        ],
        "responses": {
          "200": {
            "description": "List of available roles",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/RbacRole"
                  }
                }
              }
            }
          },
          "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": [
          {
            "access_token": [],
            "api-key": []
          }
        ]
      }
    },
    "/transactions": {
      "get": {
        "operationId": "transactionsGet",
        "summary": "List transactions",
        "tags": [
          "Transaction activity"
        ],
        "description": "Returns all transactional activity across all managed accounts and managed cards.\n\nThis provides a single view of all transfers, sends, wire transfers, card payments, fees, and other\ntransaction types regardless of which wallet they belong to.\n\n`creationTimestamp` is when the transaction was created in its owning service (the same value the\nnested `transaction` object reports), and is the field the creation-window filter applies to.\nTransactions that are committed but not yet executed (e.g. scheduled wire transfers) appear with\nstatus `SUBMITTED`; such transactions never appear on statements until they execute.\n\nA transfer between two of the caller's own instruments (e.g. between a managed account and a\nmanaged card belonging to the same identity) returns **two** entries (a `DEBIT` on the source\ninstrument and a `CREDIT` on the destination instrument) which share the same `id` and differ by\n`instrument`. Treat `(id, instrument)` as the key when reconciling, and note that such a transfer\ncontributes 2 to the `count`. The per-instrument activity endpoints\n(`/managed_accounts/{id}/transactions`, `/managed_cards/{id}/transactions`) are scoped to one\ninstrument and so still show the single relevant side.\n",
        "x-sca": "SECOND_FACTOR_WITHIN_WINDOW",
        "x-permissions": [
          "i:managed_accounts:statement",
          "i:managed_cards:statement"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/offset"
          },
          {
            "$ref": "#/components/parameters/limit"
          },
          {
            "$ref": "#/components/parameters/transactionActivityType"
          },
          {
            "$ref": "#/components/parameters/transactionActivityStatus"
          },
          {
            "$ref": "#/components/parameters/transactionActivityDirection"
          },
          {
            "$ref": "#/components/parameters/creationTimestampFrom"
          },
          {
            "$ref": "#/components/parameters/creationTimestampTo"
          },
          {
            "$ref": "#/components/parameters/lastUpdatedTimestampFrom"
          },
          {
            "$ref": "#/components/parameters/lastUpdatedTimestampTo"
          },
          {
            "$ref": "#/components/parameters/sortOrder"
          },
          {
            "$ref": "#/components/parameters/transactionActivitySortBy"
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/TransactionActivityListResponse"
          },
          "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": [
          {
            "access_token": [],
            "api-key": []
          }
        ]
      }
    }
  },
  "webhooks": {
    "/corporates/kyb/watch": {
      "post": {
        "tags": [
          "Corporates"
        ],
        "summary": "Corporate KYB status update",
        "description": "Sent when the KYB status of a corporate identity changes.\n\nEnable and configure webhooks in the Embedder Portal; recent events are listed on its\nWebhook Logs page. Weavr sends this event to `{Webhook URL}/corporates/kyb/watch`.\n",
        "operationId": "corporates_kyb_watch",
        "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/CorporateKybEvent"
              }
            }
          },
          "required": true
        },
        "responses": {
          "204": {
            "description": "Event received."
          }
        },
        "security": [
          {
            "webhooks_key": []
          }
        ]
      }
    },
    "/corporates/kyb/beneficiaries/watch": {
      "post": {
        "tags": [
          "Corporates"
        ],
        "summary": "Corporate beneficiary status update",
        "description": "Sent when the verification status or details of a corporate beneficiary change. A beneficiary\nis a director, UBO, shareholder, or partner whose own verification feeds into the corporate's\nKYB outcome.\n\nUse it to prompt a beneficiary for a fresh document before `identityRestrictionDate` passes and\nthe corporate is restricted, rather than waiting for the KYB status itself to regress.\n\nEnable and configure webhooks in the Embedder Portal; recent events are listed on its\nWebhook Logs page. Weavr sends this event to `{Webhook URL}/corporates/kyb/beneficiaries/watch`.\n",
        "operationId": "corporates_kyb_beneficiaries_watch",
        "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/CorporateBeneficiaryEvent"
              }
            }
          },
          "required": true
        },
        "responses": {
          "204": {
            "description": "Event received."
          }
        },
        "security": [
          {
            "webhooks_key": []
          }
        ]
      }
    },
    "/corporates/corporate_activated/watch": {
      "post": {
        "tags": [
          "Corporates"
        ],
        "summary": "Corporate activation",
        "description": "Sent when a corporate identity is activated, restoring access to its managed accounts, cards,\nand outbound payments.\n\nEnable and configure webhooks in the Embedder Portal; recent events are listed on its\nWebhook Logs page. Weavr sends this event to `{Webhook URL}/corporates/corporate_activated/watch`.\n",
        "operationId": "corporates_corporate_activated_watch",
        "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/IdentityActivatedEvent"
              }
            }
          },
          "required": true
        },
        "responses": {
          "204": {
            "description": "Event received."
          }
        },
        "security": [
          {
            "webhooks_key": []
          }
        ]
      }
    },
    "/corporates/corporate_deactivated/watch": {
      "post": {
        "tags": [
          "Corporates"
        ],
        "summary": "Corporate deactivation",
        "description": "Sent when a corporate identity is deactivated. A deactivated corporate cannot sign in, and its\ninstruments stop accepting new transactions until it is activated again. `reasonCode` says why.\n\nEnable and configure webhooks in the Embedder Portal; recent events are listed on its\nWebhook Logs page. Weavr sends this event to `{Webhook URL}/corporates/corporate_deactivated/watch`.\n",
        "operationId": "corporates_corporate_deactivated_watch",
        "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/IdentityDeactivatedEvent"
              }
            }
          },
          "required": true
        },
        "responses": {
          "204": {
            "description": "Event received."
          }
        },
        "security": [
          {
            "webhooks_key": []
          }
        ]
      }
    },
    "/consumers/kyc/watch": {
      "post": {
        "tags": [
          "Consumers"
        ],
        "summary": "Consumer KYC status update",
        "description": "Sent when the KYC status of a consumer identity changes.\n\n`status` carries the effective KYC status and `kycLevel` the level reached. `ongoingStatus` and\n`ongoingKycLevel` track a re-verification running against an already-approved consumer, so a\nconsumer can stay `APPROVED` while an ongoing check is in progress.\n\nEnable and configure webhooks in the Embedder Portal; recent events are listed on its\nWebhook Logs page. Weavr sends this event to `{Webhook URL}/consumers/kyc/watch`.\n",
        "operationId": "consumers_kyc_watch",
        "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/ConsumerKycEvent"
              }
            }
          },
          "required": true
        },
        "responses": {
          "204": {
            "description": "Event received."
          }
        },
        "security": [
          {
            "webhooks_key": []
          }
        ]
      }
    },
    "/consumers/consumer_activated/watch": {
      "post": {
        "tags": [
          "Consumers"
        ],
        "summary": "Consumer activation",
        "description": "Sent when a consumer identity is activated, restoring access to its managed accounts, cards,\nand outbound payments.\n\nEnable and configure webhooks in the Embedder Portal; recent events are listed on its\nWebhook Logs page. Weavr sends this event to `{Webhook URL}/consumers/consumer_activated/watch`.\n",
        "operationId": "consumers_consumer_activated_watch",
        "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/IdentityActivatedEvent"
              }
            }
          },
          "required": true
        },
        "responses": {
          "204": {
            "description": "Event received."
          }
        },
        "security": [
          {
            "webhooks_key": []
          }
        ]
      }
    },
    "/consumers/consumer_deactivated/watch": {
      "post": {
        "tags": [
          "Consumers"
        ],
        "summary": "Consumer deactivation",
        "description": "Sent when a consumer identity is deactivated. A deactivated consumer cannot sign in, and its\ninstruments stop accepting new transactions until it is activated again. `reasonCode` says why.\n\nEnable and configure webhooks in the Embedder Portal; recent events are listed on its\nWebhook Logs page. Weavr sends this event to `{Webhook URL}/consumers/consumer_deactivated/watch`.\n",
        "operationId": "consumers_consumer_deactivated_watch",
        "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/IdentityDeactivatedEvent"
              }
            }
          },
          "required": true
        },
        "responses": {
          "204": {
            "description": "Event received."
          }
        },
        "security": [
          {
            "webhooks_key": []
          }
        ]
      }
    },
    "/bank_transfers_in/authorisation_request": {
      "post": {
        "tags": [
          "Incoming wire transfers"
        ],
        "summary": "Approve or reject incoming wire transfers",
        "description": "Receive incoming wire transfer authorization events and reply with `APPROVED` or `DENIED`.\n\nTo receive these events, enable Incoming Wire Transfer Forwarding and configure the Authorization Forwarding URL in the Embedder Portal. Weavr sends this event to `{Authorization Forwarding URL}/bank_transfers_in/authorisation_request`.\n\nA response is expected within 1.5 seconds. If no valid response is received, the transfer is denied.\n",
        "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.",
                    "example": "123456789"
                  },
                  "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": "An external reference, input by the sender when creating the payment and intended for the recipient. Present when available.",
                            "example": "Invoice 1042"
                          }
                        }
                      }
                    }
                  },
                  "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": "Transaction timestamp, in epoch milliseconds.",
                    "format": "int64",
                    "example": 1786118400000,
                    "x-fieldValidation": "required"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Authorization event received with an `APPROVED` or `DENIED` 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": [
          "Spend controls"
        ],
        "summary": "Approve or reject card payments",
        "description": "Receive purchase authorization events and choose whether to approve or decline them by replying to the event.\n\nEnable Authorization Forwarding and configure the Authorization Forwarding URL in the Embedder Portal. Weavr sends this event to `{Authorization Forwarding URL}/managed_cards_authorisation_forwarding`.\n\nA response is expected within 1.5 seconds. If no response is received, the Default Timeout Response configured in the card profile or the card `authForwardingDefaultTimeoutDecision` parameter is used.\n",
        "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": "Authorization event received with an `APPROVED` or `DENIED` 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/physical_cards_upgrade/watch": {
      "post": {
        "tags": [
          "Managed cards"
        ],
        "x-tagSubgroup": "Physical cards",
        "summary": "Physical card fulfillment status",
        "description": "Sent each time the fulfillment status of a physical card changes, after a virtual card has\nbeen upgraded with [Request a physical card for individual delivery](#tag/Managed-cards/operation/managedCardPhysicalUpgrade)\nor [Request a physical card for bulk delivery](#tag/Managed-cards/operation/managedCardPhysicalUpgradeBulk).\n\nUse it to keep cardholders, and whoever ordered the card for them, informed of where their\ncard is without polling.\n\n### Events\nOne event is sent per transition of `physicalCardDetails.manufacturingState`:\n\n- `REQUESTED`: the upgrade request was accepted and fulfillment has started.\n- `SENT_FOR_FULFILLMENT`: the card has been sent to the manufacturer for printing and packaging.\n- `DISPATCHED`: the card has left the manufacturer and is with the postal or courier service.\n  A second `DISPATCHED` event is sent if the manufacturer supplies a `deliveryTrackingCode`\n  after the first one; `deliveryTrackingMethod` and `deliveryTrackingUrl` are populated when available.\n- `DELIVERED`: the card has been activated by the cardholder with\n  [Activate a physical card](#tag/Managed-cards/operation/managedCardPhysicalActivate).\n\n`physicalCardDetails` is a snapshot of the card's physical details at the time of the event,\nincluding the delivery address and method. The same `manufacturingState` is available on\ndemand via [Get a card](#tag/Managed-cards/operation/managedCardGet).\n\nEnable and configure webhooks in the Embedder Portal; recent events are listed on its\nWebhook Logs page. Weavr sends this event to `{Webhook URL}/managed_cards/physical_cards_upgrade/watch`.\n",
        "operationId": "managed_cards_physical_cards_upgrade_watch",
        "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/ManagedCardsUpgradeToPhysicalEvent"
              }
            }
          },
          "required": true
        },
        "responses": {
          "204": {
            "description": "Event received."
          }
        },
        "security": [
          {
            "webhooks_key": []
          }
        ]
      }
    },
    "/ibans/watch": {
      "post": {
        "tags": [
          "Managed accounts"
        ],
        "summary": "IBAN state change",
        "description": "Sent each time an IBAN allocated to a managed account is issued or changes state.\n\nAllocation is asynchronous: a `REQUESTED` event is followed by `CREATED` once the IBAN can\nreceive funds, or `REJECTED` if it could not be allocated.\n\nEnable and configure webhooks in the Embedder Portal; recent events are listed on its\nWebhook Logs page. Weavr sends this event to `{Webhook URL}/ibans/watch`.\n",
        "operationId": "ibans_watch",
        "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/IbanEvent"
              }
            }
          },
          "required": true
        },
        "responses": {
          "204": {
            "description": "Event received."
          }
        },
        "security": [
          {
            "webhooks_key": []
          }
        ]
      }
    },
    "/managed_accounts/watch": {
      "post": {
        "tags": [
          "Managed accounts"
        ],
        "summary": "Managed account state change",
        "description": "Sent each time a managed account is created or changes state, so you can track an account from\nthe moment it is requested through to closure without polling.\n\nEnable and configure webhooks in the Embedder Portal; recent events are listed on its\nWebhook Logs page. Weavr sends this event to `{Webhook URL}/managed_accounts/watch`.\n",
        "operationId": "managed_accounts_watch",
        "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/ManagedAccountEvent"
              }
            }
          },
          "required": true
        },
        "responses": {
          "204": {
            "description": "Event received."
          }
        },
        "security": [
          {
            "webhooks_key": []
          }
        ]
      }
    },
    "/managed_accounts/deposits/watch": {
      "post": {
        "tags": [
          "Managed accounts"
        ],
        "summary": "Incoming wire transfer received",
        "description": "Sent when an incoming wire transfer is received into a managed account.\n\nA deposit is normally reported twice: once as `PENDING` while it is being processed, and again as\n`COMPLETED` when the funds are credited. Reconcile on `transactionId`, and treat `transactionFee`\nas already deducted from the credited amount.\n\nSender details vary by payment network: `senderIban` is populated for SEPA and SWIFT, while\n`senderSortCode` and `senderAccountNumber` are populated for Faster Payments, BACS, and CHAPS.\n\nEnable and configure webhooks in the Embedder Portal; recent events are listed on its\nWebhook Logs page. Weavr sends this event to `{Webhook URL}/managed_accounts/deposits/watch`.\n",
        "operationId": "managed_accounts_deposits_watch",
        "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/ManagedAccountDepositEvent"
              }
            }
          },
          "required": true
        },
        "responses": {
          "204": {
            "description": "Event received."
          }
        },
        "security": [
          {
            "webhooks_key": []
          }
        ]
      }
    },
    "/managed_cards/state_change/watch": {
      "post": {
        "tags": [
          "Managed cards"
        ],
        "summary": "Managed card state change",
        "description": "Sent each time a managed card is activated, blocked, unblocked, or destroyed — whether the\nchange came from your own call, from the cardholder, or from Weavr.\n\n`state.blockedReason` and `state.destroyedReason` say what drove the change, which distinguishes\na card the cardholder reported lost from one you blocked yourself.\n\nEnable and configure webhooks in the Embedder Portal; recent events are listed on its\nWebhook Logs page. Weavr sends this event to `{Webhook URL}/managed_cards/state_change/watch`.\n",
        "operationId": "managed_cards_state_change_watch",
        "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/ManagedCardStateChangeEvent"
              }
            }
          },
          "required": true
        },
        "responses": {
          "204": {
            "description": "Event received."
          }
        },
        "security": [
          {
            "webhooks_key": []
          }
        ]
      }
    },
    "/managed_cards/authorisations/watch": {
      "post": {
        "tags": [
          "Managed cards"
        ],
        "summary": "Card authorization",
        "description": "Sent each time an authorization is processed on a managed card — a merchant asking for funds,\nor an existing hold being adjusted or released. No money moves until the authorization clears.\n\nThis reports authorizations after the fact. To approve or decline them as they happen, use\n[Approve or reject card payments](#tag/Spend-controls/operation/managed_cards_authorisation_forwarding)\ninstead.\n\nMatch against the corresponding settlement using `authCode`.\n\nEnable and configure webhooks in the Embedder Portal; recent events are listed on its\nWebhook Logs page. Weavr sends this event to `{Webhook URL}/managed_cards/authorisations/watch`.\n",
        "operationId": "managed_cards_authorisations_watch",
        "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/CardPaymentAuthorisationEventDetail"
              }
            }
          },
          "required": true
        },
        "responses": {
          "204": {
            "description": "Event received."
          }
        },
        "security": [
          {
            "webhooks_key": []
          }
        ]
      }
    },
    "/managed_cards/adjustments/watch": {
      "post": {
        "tags": [
          "Managed cards"
        ],
        "summary": "Managed card balance adjustment",
        "description": "Sent when a card's balance is adjusted outside the normal authorization and settlement flow —\nmost often when the remaining balance of a lost or stolen card is moved onto its replacement.\n\nEnable and configure webhooks in the Embedder Portal; recent events are listed on its\nWebhook Logs page. Weavr sends this event to `{Webhook URL}/managed_cards/adjustments/watch`.\n",
        "operationId": "managed_cards_adjustments_watch",
        "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/ManagedCardAdjustmentEvent"
              }
            }
          },
          "required": true
        },
        "responses": {
          "204": {
            "description": "Event received."
          }
        },
        "security": [
          {
            "webhooks_key": []
          }
        ]
      }
    },
    "/managed_cards/settlements/watch": {
      "post": {
        "tags": [
          "Managed cards"
        ],
        "summary": "Card settlement",
        "description": "Sent each time a settlement is processed on a managed card — the point at which money actually\nmoves between the cardholder and the merchant.\n\nA settlement carries the `authCode` of the authorization it clears, so it can be matched back to\nthe [Card authorization](#tag/Managed-cards/operation/managed_cards_authorisations_watch) event.\nSettlement amounts can differ from the authorized amount.\n\nEnable and configure webhooks in the Embedder Portal; recent events are listed on its\nWebhook Logs page. Weavr sends this event to `{Webhook URL}/managed_cards/settlements/watch`.\n",
        "operationId": "managed_cards_settlements_watch",
        "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/CardPaymentSettlementEventDetail"
              }
            }
          },
          "required": true
        },
        "responses": {
          "204": {
            "description": "Event received."
          }
        },
        "security": [
          {
            "webhooks_key": []
          }
        ]
      }
    },
    "/managed_cards/payments/watch": {
      "post": {
        "tags": [
          "Managed cards"
        ],
        "summary": "Card payment update",
        "description": "Sent each time a card payment (the aggregate of related authorizations, settlements, reversals,\nrefunds, and original credits) is created or updated. The payload carries the full current state\nof the `CardPayment`, including its complete event history with running-total snapshots after\neach event.\n\nUse this instead of subscribing to the per-event-type webhooks — [Card authorization](#tag/Managed-cards/operation/managed_cards_authorisations_watch),\n[Card settlement](#tag/Managed-cards/operation/managed_cards_settlements_watch) — when you want to\ntrack the overall card payment from a single webhook.\n\nEnable and configure webhooks in the Embedder Portal; recent events are listed on its\nWebhook Logs page. Weavr sends this event to `{Webhook URL}/managed_cards/payments/watch`.\n",
        "operationId": "managed_cards_payments_watch",
        "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/ManagedCardPaymentEvent"
              }
            }
          },
          "required": true
        },
        "responses": {
          "204": {
            "description": "Event received."
          }
        },
        "security": [
          {
            "webhooks_key": []
          }
        ]
      }
    },
    "/managed_cards/expiries/watch": {
      "post": {
        "tags": [
          "Managed cards"
        ],
        "summary": "Managed card expiry and renewal",
        "description": "Sent as a managed card approaches expiry, expires, or is renewed.\n\nUse `CARD_ABOUT_TO_EXPIRE` to prompt a cardholder before the card stops working. Whether a card\nrenews automatically is set by `renewalType`.\n\nEnable and configure webhooks in the Embedder Portal; recent events are listed on its\nWebhook Logs page. Weavr sends this event to `{Webhook URL}/managed_cards/expiries/watch`.\n",
        "operationId": "managed_cards_expiries_watch",
        "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/ManagedCardExpiryEvent"
              }
            }
          },
          "required": true
        },
        "responses": {
          "204": {
            "description": "Event received."
          }
        },
        "security": [
          {
            "webhooks_key": []
          }
        ]
      }
    },
    "/managed_cards/replacement/watch": {
      "post": {
        "tags": [
          "Managed cards"
        ],
        "summary": "Managed card replacement",
        "description": "Sent when a managed card is replaced. `replacementId` is the new card, and `replacementReason`\nsays why the original was replaced.\n\nAny remaining balance on the original card is moved to the replacement by a separate adjustment,\nreported on the [Managed card balance adjustment](#tag/Managed-cards/operation/managed_cards_adjustments_watch)\nwebhook.\n\nEnable and configure webhooks in the Embedder Portal; recent events are listed on its\nWebhook Logs page. Weavr sends this event to `{Webhook URL}/managed_cards/replacement/watch`.\n",
        "operationId": "managed_cards_replacement_watch",
        "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/ManagedCardReplacementEvent"
              }
            }
          },
          "required": true
        },
        "responses": {
          "204": {
            "description": "Event received."
          }
        },
        "security": [
          {
            "webhooks_key": []
          }
        ]
      }
    },
    "/transfers/watch": {
      "post": {
        "tags": [
          "Transfers"
        ],
        "summary": "Transfer state change",
        "description": "Sent each time a transfer between two of an identity's own instruments changes state.\n\nA transfer normally reports `PENDING` then `COMPLETED`. On `FAILED`, `transfer.conflict` carries\nthe reason.\n\nEnable and configure webhooks in the Embedder Portal; recent events are listed on its\nWebhook Logs page. Weavr sends this event to `{Webhook URL}/transfers/watch`.\n",
        "operationId": "transfers_watch",
        "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/TransferEvent"
              }
            }
          },
          "required": true
        },
        "responses": {
          "204": {
            "description": "Event received."
          }
        },
        "security": [
          {
            "webhooks_key": []
          }
        ]
      }
    },
    "/send/watch": {
      "post": {
        "tags": [
          "Sends"
        ],
        "summary": "Send state change",
        "description": "Sent each time a send to another identity within the same programme changes state.\n\nA send that requires Strong Customer Authentication reports `PENDING_CHALLENGE` until the\nchallenge is completed. On `FAILED` or `INVALID`, `send.conflict` carries the reason.\n\nEnable and configure webhooks in the Embedder Portal; recent events are listed on its\nWebhook Logs page. Weavr sends this event to `{Webhook URL}/send/watch`.\n",
        "operationId": "send_watch",
        "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/SendEvent"
              }
            }
          },
          "required": true
        },
        "responses": {
          "204": {
            "description": "Event received."
          }
        },
        "security": [
          {
            "webhooks_key": []
          }
        ]
      }
    },
    "/outgoing_wire_transfers/watch": {
      "post": {
        "tags": [
          "Outgoing wire transfers"
        ],
        "summary": "Outgoing wire transfer state change",
        "description": "Sent each time an outgoing wire transfer moves through its lifecycle, from submission to\nsettlement or return.\n\n`COMPLETED` means the funds have left the account, not that the beneficiary has been credited —\na transfer can still come back as `RETURNED` afterwards. On `REJECTED`, `FAILED`, or `INVALID`,\n`transfer.conflict` carries the reason.\n\nEnable and configure webhooks in the Embedder Portal; recent events are listed on its\nWebhook Logs page. Weavr sends this event to `{Webhook URL}/outgoing_wire_transfers/watch`.\n",
        "operationId": "outgoing_wire_transfers_watch",
        "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/OutgoingWireTransferEvent"
              }
            }
          },
          "required": true
        },
        "responses": {
          "204": {
            "description": "Event received."
          }
        },
        "security": [
          {
            "webhooks_key": []
          }
        ]
      }
    },
    "/manual_transactions/watch": {
      "post": {
        "tags": [
          "Manage"
        ],
        "summary": "Manual transaction",
        "description": "Sent when Weavr manually credits or debits an instrument, for example to correct a processing\nerror or settle a dispute.\n\nThe available and actual balance adjustments are reported separately because they can differ:\na correction may release a held amount without moving settled funds.\n\nEnable and configure webhooks in the Embedder Portal; recent events are listed on its\nWebhook Logs page. Weavr sends this event to `{Webhook URL}/manual_transactions/watch`.\n",
        "operationId": "manual_transactions_watch",
        "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/ManualTransactionEvent"
              }
            }
          },
          "required": true
        },
        "responses": {
          "204": {
            "description": "Event received."
          }
        },
        "security": [
          {
            "webhooks_key": []
          }
        ]
      }
    },
    "/fees/watch": {
      "post": {
        "tags": [
          "Fees"
        ],
        "summary": "Fee charged",
        "description": "Sent when a fee is charged to an instrument, so fees can be reconciled as they are taken rather\nthan discovered later on a statement.\n\nEnable and configure webhooks in the Embedder Portal; recent events are listed on its\nWebhook Logs page. Weavr sends this event to `{Webhook URL}/fees/watch`.\n",
        "operationId": "fees_watch",
        "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/ChargeFeeEvent"
              }
            }
          },
          "required": true
        },
        "responses": {
          "204": {
            "description": "Event received."
          }
        },
        "security": [
          {
            "webhooks_key": []
          }
        ]
      }
    },
    "/login/watch": {
      "post": {
        "tags": [
          "Sign-in"
        ],
        "summary": "Sign-in attempt",
        "description": "Sent each time a sign-in is attempted, whether it succeeds or not.\n\nUse it to drive your own audit trail, or to alert a user when their credentials are used from\nsomewhere they do not recognize. A `DECLINED` run against one credential is worth watching.\n\nEnable and configure webhooks in the Embedder Portal; recent events are listed on its\nWebhook Logs page. Weavr sends this event to `{Webhook URL}/login/watch`.\n",
        "operationId": "login_watch",
        "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/LoginEvent"
              }
            }
          },
          "required": true
        },
        "responses": {
          "204": {
            "description": "Event received."
          }
        },
        "security": [
          {
            "webhooks_key": []
          }
        ]
      }
    },
    "/stepup/watch": {
      "post": {
        "tags": [
          "Step-up challenges"
        ],
        "summary": "Step-up challenge resolved",
        "description": "Sent when a step-up authentication challenge is resolved.\n\nOn `VERIFIED` the event carries `authToken`, the stepped-up token that authorizes operations\nrequiring Strong Customer Authentication. Treat it as a credential and store it accordingly.\n\nEnable and configure webhooks in the Embedder Portal; recent events are listed on its\nWebhook Logs page. Weavr sends this event to `{Webhook URL}/stepup/watch`.\n",
        "operationId": "stepup_watch",
        "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/StepUpEvent"
              }
            }
          },
          "required": true
        },
        "responses": {
          "204": {
            "description": "Event received."
          }
        },
        "security": [
          {
            "webhooks_key": []
          }
        ]
      }
    },
    "/auth/users/user_deactivated/watch": {
      "post": {
        "tags": [
          "Setup"
        ],
        "summary": "User deactivation",
        "description": "Sent when a user belonging to a corporate or consumer identity is deactivated. The user can no\nlonger sign in, and any cards issued to them stop accepting new transactions.\n\nThis covers individual users. For the identity as a whole, see the corporate and consumer\ndeactivation webhooks.\n\nEnable and configure webhooks in the Embedder Portal; recent events are listed on its\nWebhook Logs page. Weavr sends this event to `{Webhook URL}/auth/users/user_deactivated/watch`.\n",
        "operationId": "auth_users_user_deactivated_watch",
        "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/IdentityDeactivatedEvent"
              }
            }
          },
          "required": true
        },
        "responses": {
          "204": {
            "description": "Event received."
          }
        },
        "security": [
          {
            "webhooks_key": []
          }
        ]
      }
    },
    "/authentication_factors/watch": {
      "post": {
        "tags": [
          "Authentication factors"
        ],
        "summary": "Authentication factor enrollment",
        "description": "Sent when a user's authentication factor is enrolled or removed.\n\nA user with no `ACTIVE` factor cannot complete step-up authentication, so watch for `INACTIVE`\nto prompt them to enroll a replacement before they need one.\n\nEnable and configure webhooks in the Embedder Portal; recent events are listed on its\nWebhook Logs page. Weavr sends this event to `{Webhook URL}/authentication_factors/watch`.\n",
        "operationId": "authentication_factors_watch",
        "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/AuthenticationFactorEnrollmentEvent"
              }
            }
          },
          "required": true
        },
        "responses": {
          "204": {
            "description": "Event received."
          }
        },
        "security": [
          {
            "webhooks_key": []
          }
        ]
      }
    },
    "/beneficiaries/batch/watch": {
      "post": {
        "tags": [
          "Trusted payees"
        ],
        "summary": "Payee batch state change",
        "description": "Sent as a batch of trusted payee operations moves through verification.\n\nPayees added in a batch only become usable once the batch reaches `CHALLENGE_COMPLETED`; wait for\nthat before attempting a payment to any of them.\n\nEnable and configure webhooks in the Embedder Portal; recent events are listed on its\nWebhook Logs page. Weavr sends this event to `{Webhook URL}/beneficiaries/batch/watch`.\n",
        "operationId": "beneficiary_batch_watch",
        "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/BeneficiaryBatchEvent"
              }
            }
          },
          "required": true
        },
        "responses": {
          "204": {
            "description": "Event received."
          }
        },
        "security": [
          {
            "webhooks_key": []
          }
        ]
      }
    },
    "/bulk_process_end/watch": {
      "post": {
        "tags": [
          "Manage"
        ],
        "summary": "Bulk process progress",
        "description": "Sent as a bulk process runs and again when it finishes.\n\nHow often progress events arrive is set by `webhookInterval` on\n[Execute bulk process](#tag/Manage/operation/bulkIdExecute), which is the number of operations\nbetween events. The effective minimum is 25% of the total, so a smaller value still yields four\nevents across the run.\n\n`COMPLETED`, `PARTIALLY_COMPLETED`, `FAILED`, and `CANCELLED` are final. On\n`PARTIALLY_COMPLETED`, read `operationStatusCounts` to see how many operations failed.\n\nEnable and configure webhooks in the Embedder Portal; recent events are listed on its\nWebhook Logs page. Weavr sends this event to `{Webhook URL}/bulk_process_end/watch`.\n",
        "operationId": "bulk_process_end",
        "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/BulkProcessProgressEvent"
              }
            }
          },
          "required": true
        },
        "responses": {
          "204": {
            "description": "Event received."
          }
        },
        "security": [
          {
            "webhooks_key": []
          }
        ]
      }
    }
  },
  "components": {
    "securitySchemes": {
      "api-key": {
        "type": "apiKey",
        "description": "An API key defined in your User API Client, or Delegate API Client if your account has delegation enabled. Manage API Clients in the Embedder Portal.",
        "name": "api-key",
        "in": "header"
      },
      "access_token": {
        "type": "http",
        "description": "An authentication token representing a logged-in user. This token needs to be stepped up before it can be used to authorize operations that require Strong Customer Authentication (SCA).",
        "scheme": "bearer",
        "bearerFormat": "JWT",
        "x-example": "eyJraWQiOiJnZW5lcmF0b3IiLCJhbGciOiJFUzI1NiJ9.eyJTWVNURU0iOiJmYWxzZSIsInN1YiI6IlJPT1QsMTE1NjI3Njc4MTk4NzkyNDI2IiwiVE9LRU5fUFJPVklERVIiOiJFTUFJTF9BTkRfUEFTU1dPUkQiLCJSRVNPVVJDRV9JRCI6IjExNTYyNzY3ODE5ODc5MjQyNiIsIlJBTkRPTSI6IjY0NDU2MjIyNDg2Mjg5NTAwMTgiLCJVU0VSX1NVQkpFQ1QiOiJST09ULDExNTYyNzY3ODE5ODc5MjQyNiIsIk1FTUJFUlNISVBfSUQiOiIxMTU2Mjc2NzgyMjA3NDY5ODYiLCJSRVNPVVJDRV9UWVBFIjoiSURFTlRJVFkiLCJBUElfQ0xJRU5UX0lEIjoiMCIsIklERU5USVRZX0lEIjoiMTE1NjI3Njc4MTk4NzkyNDI2IiwiSURFTlRJVFlfVFlQRSI6ImNvcnBvcmF0ZXMiLCJQRVJQRVRVQUwiOiJmYWxzZSIsIk1FTUJFUlNISVBfVFlQRSI6IkFVVEhPUklaRURfU0lHTkFUT1JZIiwiVE9LRU5fVFlQRSI6IkFDQ0VTUyIsIlRFTkFOVF9JRCI6IjIzODQiLCJJTVBFUlNPTkFUT1JfU0VTU0lPTl9JRCI6IjAiLCJQUk9HUkFNTUVfSUQiOiIxMTU2Mjc1NDYwNjYwOTIyNjciLCJTRVNTSU9OX0lEIjoiMTE3MDc3NzU3Njc4MzIxNjk2IiwiREVWSUNFX0lEIjoiIiwiSU1QRVJTT05BVEVEIjoiZmFsc2UiLCJBVVRIX0dST1VQX0lEIjoiIn0.1KnuaBkSX_YfempeNMkUbxkkXsNz65-lQQXAhXrhiEKjdkR3mwrjCEu_aZnLo2-ojacrenf1nR7-Nrn2HEDZMg"
      },
      "access_token_stepped_up": {
        "type": "http",
        "description": "An authentication token representing a logged-in user who has completed step-up authentication. A stepped up token is valid for operations that require Strong Customer Authentication (SCA).",
        "scheme": "bearer",
        "bearerFormat": "JWT",
        "x-example": "eyJraWQiOiJnZW5lcmF0b3IiLCJhbGciOiJFUzI1NiJ9.eyJTWVNURU0iOiJmYWxzZSIsInN1YiI6IlJPT1QsMTE1NjI3Njc4MTk4NzkyNDI2IiwiVE9LRU5fUFJPVklERVIiOiJFTUFJTF9BTkRfUEFTU1dPUkQiLCJSRVNPVVJDRV9JRCI6IjExNTYyNzY3ODE5ODc5MjQyNiIsIlJBTkRPTSI6IjY0NDU2MjIyNDg2Mjg5NTAwMTgiLCJVU0VSX1NVQkpFQ1QiOiJST09ULDExNTYyNzY3ODE5ODc5MjQyNiIsIk1FTUJFUlNISVBfSUQiOiIxMTU2Mjc2NzgyMjA3NDY5ODYiLCJSRVNPVVJDRV9UWVBFIjoiSURFTlRJVFkiLCJBUElfQ0xJRU5UX0lEIjoiMCIsIklERU5USVRZX0lEIjoiMTE1NjI3Njc4MTk4NzkyNDI2IiwiSURFTlRJVFlfVFlQRSI6ImNvcnBvcmF0ZXMiLCJQRVJQRVRVQUwiOiJmYWxzZSIsIk1FTUJFUlNISVBfVFlQRSI6IkFVVEhPUklaRURfU0lHTkFUT1JZIiwiVE9LRU5fVFlQRSI6IkFDQ0VTUyIsIlRFTkFOVF9JRCI6IjIzODQiLCJJTVBFUlNPTkFUT1JfU0VTU0lPTl9JRCI6IjAiLCJQUk9HUkFNTUVfSUQiOiIxMTU2Mjc1NDYwNjYwOTIyNjciLCJTRVNTSU9OX0lEIjoiMTE3MDc3NzU3Njc4MzIxNjk2IiwiREVWSUNFX0lEIjoiIiwiSU1QRVJTT05BVEVEIjoiZmFsc2UiLCJBVVRIX0dST1VQX0lEIjoiIn0.1KnuaBkSX_YfempeNMkUbxkkXsNz65-lQQXAhXrhiEKjdkR3mwrjCEu_aZnLo2-ojacrenf1nR7-Nrn2HEDZMg"
      },
      "webhooks_key": {
        "type": "apiKey",
        "description": "Find the webhooks key in the API Credentials tab of the Embedder Portal.",
        "name": "webhooks-key",
        "in": "header"
      }
    },
    "schemas": {
      "Email": {
        "type": "string",
        "description": "Email Address of the user",
        "format": "email",
        "example": "alex@example.com"
      },
      "SensitivePassword": {
        "type": "object",
        "description": "The user's password or passcode used to log in a user.\nPasswords must be:\n  - minimum 8 characters for end-users (Consumers and Corporates); 12 characters for others\n  - maximum 30 characters\n  - include a lowercase character\n  - include an uppercase character\n  - include a digit and a special character\n  - different from any of the 5 last such passwords used.\n\nFor non-PCI compliant integrations, the password submitted must be **tokenized**.\n",
        "required": [
          "value"
        ],
        "properties": {
          "value": {
            "maxLength": 100,
            "type": "string",
            "format": "password",
            "x-sensitive-attribute": {
              "type": "PASSWORD",
              "lifetime": "TEMPORARY"
            },
            "example": "Passw0rd!"
          }
        }
      },
      "Error": {
        "type": "object",
        "description": "A machine-readable error code and a human-readable explanation of the failure.",
        "properties": {
          "code": {
            "type": "string",
            "description": "The code returned by the service for this type of failure.",
            "example": "NOT_FOUND"
          },
          "message": {
            "type": "string",
            "description": "A human-readable explanation intended to help diagnose the request.",
            "example": "The requested resource could not be found."
          }
        }
      },
      "TokenType": {
        "type": "string",
        "description": "The auth token received can only be used to access the following endpoints:\n  - `/identities`\n  - `/access_token`\n",
        "enum": [
          "NO_TYPE",
          "AUTH",
          "ACCESS"
        ]
      },
      "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.",
            "example": "123456789"
          }
        },
        "example": {
          "type": "CONSUMER",
          "id": "123456789"
        }
      },
      "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.",
            "example": "987654321"
          }
        },
        "example": {
          "type": "USER",
          "id": "987654321"
        }
      },
      "SyntaxError": {
        "type": "object",
        "description": "Field-level validation failures returned when the request body or parameters are invalid.",
        "properties": {
          "invalidFields": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "params": {
                  "type": "array",
                  "description": "Validation-rule arguments, such as the permitted range or maximum length.",
                  "items": {
                    "type": "string"
                  },
                  "example": [
                    "1",
                    "100"
                  ]
                },
                "fieldName": {
                  "type": "string",
                  "description": "The request field that failed validation.",
                  "example": "destinationAmount.amount"
                },
                "error": {
                  "type": "string",
                  "description": "The validation rule that failed.",
                  "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"
            ]
          }
        }
      },
      "SCAOtpChannel": {
        "type": "string",
        "enum": [
          "SMS"
        ],
        "description": "- `SMS`: The one-time-password is sent as a text message\n"
      },
      "Nonce": {
        "type": "string",
        "description": "A randomly generated one-time use code.",
        "pattern": "^[0-9]{6}$",
        "example": "654321",
        "x-sensitive-attribute": {
          "type": "NONE",
          "lifetime": "MASKED"
        }
      },
      "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)\n- `BIOMETRIC`: The push notification is sent to the user's device\n"
      },
      "UserId": {
        "type": "string",
        "pattern": "^[0-9]+$",
        "example": "987654321"
      },
      "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.",
            "allOf": [
              {
                "$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.",
            "example": 1793894400000
          }
        }
      },
      "PasswordValidateComplexityIssueCode": {
        "enum": [
          "PASSWORD_TOO_SHORT",
          "PASSWORD_TOO_LONG",
          "PASSWORD_TOO_SIMPLE"
        ],
        "type": "string"
      },
      "PasswordValidateComplexityIssue": {
        "description": "A single password complexity rule that the submitted password failed.",
        "properties": {
          "code": {
            "$ref": "#/components/schemas/PasswordValidateComplexityIssueCode"
          },
          "requirement": {
            "description": "The value required by the profile: minimum length (PASSWORD_TOO_SHORT), maximum length (PASSWORD_TOO_LONG) or required number of character types (PASSWORD_TOO_SIMPLE).",
            "type": "integer",
            "example": 8
          },
          "actual": {
            "description": "The value of the submitted password: its length (PASSWORD_TOO_SHORT / PASSWORD_TOO_LONG) or the number of character types present (PASSWORD_TOO_SIMPLE).",
            "type": "integer",
            "example": 5
          }
        },
        "type": "object"
      },
      "TokenResponse": {
        "type": "object",
        "properties": {
          "token": {
            "type": "string",
            "description": "An authorization token to be used in the Authorization header for secured operations.",
            "x-sensitive-attribute": {
              "type": "NONE",
              "lifetime": "MASKED"
            },
            "example": "eyJraWQiOiJnZW5lcmF0b3IiLCJhbGciOiJFUzI1NiJ9.eyJzdWIiOiJST09ULDk4NzY1NDMyMSJ9.1KnuaBkSX_YfempeNMkUbxkkXsNz65-lQQXAhXrhiEI"
          }
        }
      },
      "SCAChallengeType": {
        "type": "string",
        "enum": [
          "OTP",
          "PUSH",
          "BIOMETRIC"
        ],
        "description": "- `OTP`: The OTP is sent as a text message\n- `PUSH`: The authorization request is sent as a push notification\n- `BIOMETRIC`: The push notification is sent via Firebase to a mobile application\n"
      },
      "SCAFactorStatus": {
        "type": "string",
        "description": "The state of the factor type.\n- `PENDING_VERIFICATION` : The user has started the enrollment process but still hasn't completed enrollment. Challenges cannot be used before they are verified.\n- `ACTIVE` : The user has successfully completed enrollment and the challenge can be used to verify transactions.\n- `INACTIVE` : The user has rejected the enrollment.\n",
        "enum": [
          "PENDING_VERIFICATION",
          "ACTIVE",
          "INACTIVE"
        ]
      },
      "SCAChannel": {
        "type": "string",
        "enum": [
          "SMS",
          "AUTHY",
          "BIOMETRIC"
        ],
        "description": "- `SMS`: The one-time-password is sent as a text message\n- `AUTHY`: The push notification is sent to an Authy application\n- `BIOMETRIC`: The push notification is sent to an innovator application\n"
      },
      "SCAFactor": {
        "type": "object",
        "properties": {
          "type": {
            "$ref": "#/components/schemas/SCAChallengeType"
          },
          "status": {
            "$ref": "#/components/schemas/SCAFactorStatus"
          },
          "channel": {
            "$ref": "#/components/schemas/SCAChannel"
          }
        }
      },
      "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)\n"
      },
      "MultipleSCAResourceType": {
        "type": "string",
        "description": "The operation type upon which an SCA Challenge is being contested.\n",
        "enum": [
          "outgoing_wire_transfers",
          "sends",
          "variable_recurring_payments",
          "linked_account_declaration",
          "correspondent_bank_transfers"
        ],
        "x-hidden-enum-values": [
          "variable_recurring_payments"
        ]
      },
      "Id": {
        "type": "string",
        "pattern": "^[0-9]+$",
        "example": "123456789"
      },
      "UserPredefinedRole": {
        "type": "string",
        "enum": [
          "CARD_ASSIGNEE",
          "CARDS_MANAGEMENT_ROLE",
          "FUNDS_MANAGEMENT_ROLE",
          "ACCESS_MANAGEMENT_ROLE",
          "ADMIN"
        ]
      },
      "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).",
            "example": "+44"
          },
          "number": {
            "pattern": "^[0-9]{1,12}$",
            "type": "string",
            "description": "The mobile number of the user - excluding country code.",
            "example": "7700900123"
          }
        }
      },
      "Date": {
        "required": [
          "year",
          "month",
          "day"
        ],
        "type": "object",
        "properties": {
          "year": {
            "type": "integer",
            "format": "int32",
            "maximum": 2100,
            "minimum": 1900,
            "example": 1990
          },
          "month": {
            "type": "integer",
            "format": "int32",
            "maximum": 12,
            "minimum": 1,
            "example": 1
          },
          "day": {
            "type": "integer",
            "format": "int32",
            "maximum": 31,
            "minimum": 1,
            "example": 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_-]+$",
        "example": "customer-123"
      },
      "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.\n",
        "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.\n",
        "maxLength": 25,
        "example": "Acme"
      },
      "User": {
        "required": [
          "id",
          "email",
          "name",
          "surname",
          "identity",
          "active"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "pattern": "^[0-9]+$",
            "description": "The unique identifier of the user.",
            "example": "987654321"
          },
          "identity": {
            "description": "The identity that the user belongs to.",
            "allOf": [
              {
                "$ref": "#/components/schemas/IdentityId"
              }
            ]
          },
          "name": {
            "maxLength": 100,
            "type": "string",
            "description": "The first name of the user.",
            "example": "Alex"
          },
          "surname": {
            "maxLength": 100,
            "type": "string",
            "description": "The last name of the user.",
            "example": "Smith"
          },
          "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.",
            "example": true
          },
          "dateOfBirth": {
            "description": "Date of birth of the authorized user.",
            "allOf": [
              {
                "$ref": "#/components/schemas/Date"
              }
            ]
          },
          "tag": {
            "$ref": "#/components/schemas/Tag"
          },
          "countryOfResidence": {
            "type": "string",
            "maxLength": 2,
            "minLength": 2,
            "pattern": "^[A-Z]+$",
            "example": "GB"
          },
          "locale": {
            "$ref": "#/components/schemas/UserLocale"
          },
          "brand": {
            "$ref": "#/components/schemas/Brand"
          },
          "roles": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/UserPredefinedRole"
            }
          }
        }
      },
      "BulkProcessStatus": {
        "description": "The current status of the bulk process:\n\n- `SUBMITTED`: The bulk process data has been persisted and is ready for execution. This is the initial state.\n- `RUNNING`: The bulk process is currently being executed.\n- `PARTIALLY_COMPLETED`: Execution is complete, but some bulk operations failed. This is a final state.\n- `COMPLETED`: Execution is complete, and all bulk operations succeeded. This is a final state.\n- `FAILED`: No operations in the bulk process were executed. This is a final state.\n- `PAUSED`: Execution has been paused and can be resumed.\n- `CANCELLED`: Execution has been canceled. This is a final state.\n",
        "type": "string",
        "enum": [
          "SUBMITTED",
          "RUNNING",
          "PARTIALLY_COMPLETED",
          "COMPLETED",
          "FAILED",
          "PAUSED",
          "CANCELLED"
        ]
      },
      "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).\nON_FAILURE_CONTINUE: the execution of the bulk process resumes as normal even when any of the bulk operations fail.\n",
        "type": "string",
        "enum": [
          "ON_FAILURE_STOP",
          "ON_FAILURE_CONTINUE"
        ]
      },
      "BulkProcess": {
        "type": "object",
        "properties": {
          "bulkId": {
            "description": "The bulk id of the bulk process",
            "type": "string",
            "example": "123456789"
          },
          "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\n\n`RUNNING` :  the bulk process is currently being executed by the system\n\n`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\n\n`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\n\n`FAILED` : none of the operations of the bulk process have executed. This is a final state for the bulk process\n\n`PAUSED`  : the execution of bulk process has been paused through the Pause bulk process operation  Execution can be resumed through Resume bulk operation\n\n`CANCELLED` : the execution of bulk process has been canceled through Cancel bulk operation. This is a final state for the bulk process\n",
            "type": "string",
            "example": "COMPLETED"
          },
          "submittedItemsCount": {
            "description": "The number of bulk operations in the bulk process",
            "type": "integer",
            "example": 100
          },
          "executionStart": {
            "description": "Timestamp of when the execution of the Bulk Process started",
            "type": "integer",
            "format": "int64",
            "example": 1786118400000
          },
          "executionFinish": {
            "description": "Timestamp of when the execution of the Bulk Process finished.",
            "type": "integer",
            "format": "int64",
            "example": 1786118405000
          },
          "operation": {
            "description": "The underlying operations contained within the Bulk; shown as the endpoint for the equivalent single operation.",
            "type": "string",
            "example": "/multi/managed_cards"
          },
          "mode": {
            "description": "The mode that was instructed when execution was started",
            "allOf": [
              {
                "$ref": "#/components/schemas/BulkProcessMode"
              }
            ]
          }
        }
      },
      "BulkProcessesPaged": {
        "properties": {
          "count": {
            "description": "Total number of records (excluding limit)",
            "format": "int32",
            "type": "integer",
            "example": 42
          },
          "bulkProcesses": {
            "items": {
              "$ref": "#/components/schemas/BulkProcess"
            },
            "type": "array"
          },
          "responseCount": {
            "description": "Total number of records returned in this response",
            "format": "int32",
            "type": "integer",
            "example": 10
          }
        },
        "type": "object"
      },
      "BulkProcessConflictErrorCode": {
        "enum": [
          "VALIDATION_FAILED",
          "USER_VALIDATION_FAILED",
          "ALREADY_SUBMITTED",
          "DUPLICATE_OPERATION_TYPE",
          "NO_CONFIG_FOUND",
          "INVALID_STATE",
          "TOO_MANY_REQUESTS"
        ],
        "type": "string"
      },
      "BulkProcessConflict": {
        "properties": {
          "errorCode": {
            "$ref": "#/components/schemas/BulkProcessConflictErrorCode"
          }
        },
        "type": "object"
      },
      "BulkId": {
        "type": "string",
        "pattern": "^[0-9]+$",
        "example": "2468013579"
      },
      "BulkProcessOperationStatus": {
        "type": "string",
        "enum": [
          "SUBMITTED",
          "RUNNING",
          "COMPLETED",
          "FAILED",
          "CANCELLED"
        ]
      },
      "BulkProcessOperationStatusCounts": {
        "type": "object",
        "properties": {
          "status": {
            "$ref": "#/components/schemas/BulkProcessOperationStatus"
          },
          "count": {
            "type": "integer",
            "example": 25
          }
        }
      },
      "BulkProcessDetails": {
        "allOf": [
          {
            "$ref": "#/components/schemas/BulkProcess"
          },
          {
            "type": "object",
            "properties": {
              "operationStatusCounts": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/BulkProcessOperationStatusCounts"
                }
              }
            }
          }
        ]
      },
      "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",
            "example": "1"
          },
          "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",
            "example": 1
          },
          "method": {
            "description": "HTTP request method used for the executed operation within the Bulk process",
            "type": "string",
            "example": "POST"
          },
          "path": {
            "description": "The endpoint path for the Operation",
            "type": "string",
            "example": "/multi/managed_cards"
          },
          "status": {
            "description": "The execution status of the operation within the Bulk Process. This can be one of: \"SUBMITTED\" \"RUNNING\" \"COMPLETED\" \"FAILED\" \"CANCELLED\"\n",
            "allOf": [
              {
                "$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",
            "example": "{\"profileId\":\"10001\",\"friendlyName\":\"Travel card\"}"
          },
          "responsePayload": {
            "description": "The response for the execution of the operation",
            "type": "string",
            "example": "{\"id\":\"234567890\",\"state\":\"ACTIVE\"}"
          }
        }
      },
      "BulkProcessOperationsPaged": {
        "properties": {
          "count": {
            "description": "Total number of records (excluding limit)",
            "format": "int32",
            "type": "integer",
            "example": 42
          },
          "operations": {
            "items": {
              "$ref": "#/components/schemas/BulkProcessOperation"
            },
            "type": "array"
          },
          "responseCount": {
            "description": "Total number of records returned in this response",
            "format": "int32",
            "type": "integer",
            "example": 10
          }
        },
        "type": "object"
      },
      "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 is sent after every tenth operation is attempted. The minimum value for 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",
            "example": 50
          }
        }
      },
      "SubmitBulkProcessResponse": {
        "type": "object",
        "required": [
          "bulkId",
          "operationCount",
          "path"
        ],
        "properties": {
          "bulkId": {
            "type": "string",
            "pattern": "^[0-9]+$",
            "description": "The unique identifier of the submitted bulk process.",
            "example": "123456789"
          },
          "operationCount": {
            "type": "integer",
            "minimum": 1,
            "maximum": 10000,
            "description": "The number of operations submitted in the bulk process.",
            "example": 100
          },
          "path": {
            "type": "string",
            "description": "The API path used to manage the submitted bulk process.",
            "example": "/multi/bulks/123456789"
          }
        }
      },
      "BulkManagedCardPathOperation": {
        "type": "object",
        "required": [
          "pathParams"
        ],
        "properties": {
          "pathParams": {
            "type": "object",
            "required": [
              "_id_"
            ],
            "properties": {
              "_id_": {
                "type": "string",
                "pattern": "^[0-9]+$",
                "description": "The unique identifier of the managed card.",
                "example": "234567890"
              }
            }
          }
        }
      },
      "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 authorized, or when a merchant clears funds without authorizing, 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.",
            "example": false
          }
        }
      },
      "CommonLevelSpendRules": {
        "type": "object",
        "properties": {
          "allowedMerchantCategories": {
            "type": "array",
            "maxItems": 200,
            "items": {
              "type": "string"
            },
            "description": "Allowlist 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": "Blocklist 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": "Allowlist 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": "Blocklist 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": "Allowlist 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": "Blocklist 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.",
            "example": true
          },
          "allowAtm": {
            "type": "boolean",
            "description": "Indicates if an ATM Withdrawal transaction is allowed on the card.",
            "example": true
          },
          "allowECommerce": {
            "type": "boolean",
            "description": "Indicates if an online transaction is allowed on the card.",
            "example": true
          },
          "allowCashback": {
            "type": "boolean",
            "description": "Indicates if a cashback transaction at a physical terminal is allowed on the card.",
            "example": true
          },
          "allowCreditAuthorisations": {
            "type": "boolean",
            "description": "Indicates if a the card can receive a credit transaction.",
            "example": true
          },
          "rolloverPolicy": {
            "$ref": "#/components/schemas/RolloverPolicy"
          }
        }
      },
      "Currency": {
        "type": "string",
        "description": "The currency expressed in ISO-4217 code. Example: GBP, EUR, USD.",
        "maxLength": 3,
        "minLength": 3,
        "pattern": "^[A-Z]*$",
        "example": "GBP"
      },
      "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.\n\nExample, an amount of 1000 for a EUR currency is actually 1000 Euro cents or EUR 10.00.\n",
            "example": 1250
          }
        },
        "description": "The object representing a monetary amount in a particular currency.",
        "example": {
          "currency": "GBP",
          "amount": 1250
        }
      },
      "SpendLimitInterval": {
        "description": "The time period for which the `spendLimit` is valid.\n - DAILY: starting from 00:00:00 UTC of current day to 23:59:59 UTC of current day\n - WEEKLY: 00:00:00 UTC Monday of current week to following Sunday 23:59:59 UTC\n - MONTHLY: first day of current calendar month to end of current calendar month\n - QUARTERLY: starting from beginning of current quarter where quarters are defined as follows:\n  - 1 January 00:00:00 UTC to 31 March 23:59:59 UTC\n  - 1 April 00:00:00 UTC to 30 Jun 23:59:59 UTC\n  - 1 July 00:00:00 UTC to 30 September 23:59:59 UTC\n  - 1 October 00:00:00 UTC to 31 December 23:59:59 UTC\n\n- YEARLY: 1 January 00:00:00 UTC of current calendar year to 31 December 23:59:59 UTC of current calendar year.\n- ALWAYS: This indicates that the `spendLimit` is the total amount that can be spent through the card throughout the whole lifetime of the card.\n",
        "type": "string",
        "enum": [
          "DAILY",
          "WEEKLY",
          "MONTHLY",
          "QUARTERLY",
          "YEARLY",
          "ALWAYS"
        ]
      },
      "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",
            "minimum": 1,
            "example": 1767225600000
          },
          "value": {
            "description": "The spend limit, as amount and currency, (for the given interval).",
            "allOf": [
              {
                "$ref": "#/components/schemas/CurrencyAmount"
              }
            ]
          },
          "interval": {
            "$ref": "#/components/schemas/SpendLimitInterval"
          }
        }
      },
      "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"
                }
              }
            }
          }
        ]
      },
      "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.",
                "example": 100
              },
              "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.",
                "example": 50000
              }
            }
          }
        ]
      },
      "SpendLimitUpdateMethod": {
        "type": "string",
        "description": "The spend limit update method to apply. Currently supported:\n  - OVERWRITE: (default option if nothing selected). Overwrites the previous values for the spendLimit object i.e. sets new limits\n  - 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\n",
        "enum": [
          "OVERWRITE",
          "INCREMENT"
        ]
      },
      "UpdateCardLevelSpendRules": {
        "allOf": [
          {
            "$ref": "#/components/schemas/CardLevelSpendRules"
          },
          {
            "type": "object",
            "properties": {
              "updateSpendLimitMethod": {
                "$ref": "#/components/schemas/SpendLimitUpdateMethod"
              }
            }
          }
        ]
      },
      "BulkManagedCardSpendRulesOperation": {
        "type": "object",
        "required": [
          "pathParams",
          "requestBody"
        ],
        "properties": {
          "pathParams": {
            "type": "object",
            "required": [
              "_id_"
            ],
            "properties": {
              "_id_": {
                "type": "string",
                "pattern": "^[0-9]+$",
                "description": "The unique identifier of the managed card.",
                "example": "234567890"
              }
            }
          },
          "requestBody": {
            "$ref": "#/components/schemas/UpdateCardLevelSpendRules"
          }
        }
      },
      "StringWrappedTypeId": {
        "required": [
          "type",
          "id"
        ],
        "type": "object",
        "properties": {
          "type": {
            "maxLength": 50,
            "pattern": "^[a-zA-Z0-9_-]+$",
            "type": "string",
            "example": "managed_accounts"
          },
          "id": {
            "type": "string",
            "pattern": "^[0-9]+$",
            "example": "123456789"
          }
        },
        "example": {
          "type": "example",
          "id": "123456789"
        }
      },
      "ScheduledTimestamp": {
        "pattern": "^[0-9]+$",
        "type": "string",
        "description": "The epoch timestamp at which the transaction is scheduled to be executed.",
        "example": "1786118400000"
      },
      "CreateTransferRequest": {
        "properties": {
          "description": {
            "type": "string",
            "example": "Invoice 1042"
          },
          "destination": {
            "$ref": "#/components/schemas/StringWrappedTypeId"
          },
          "destinationAmount": {
            "$ref": "#/components/schemas/CurrencyAmount"
          },
          "profileId": {
            "pattern": "^[0-9]+$",
            "type": "string",
            "example": "10001"
          },
          "source": {
            "$ref": "#/components/schemas/StringWrappedTypeId"
          },
          "tag": {
            "maxLength": 50,
            "pattern": "^[a-zA-Z0-9_-]+$",
            "type": "string",
            "example": "customer-123"
          },
          "scheduledTimestamp": {
            "$ref": "#/components/schemas/ScheduledTimestamp"
          }
        },
        "required": [
          "destination",
          "destinationAmount",
          "profileId",
          "source"
        ],
        "type": "object"
      },
      "BulkTransferCreateOperation": {
        "type": "object",
        "required": [
          "requestBody"
        ],
        "properties": {
          "requestBody": {
            "$ref": "#/components/schemas/CreateTransferRequest"
          }
        }
      },
      "ProfileId": {
        "type": "string",
        "description": "The profile Id which a specific identity, instrument, or transaction type is linked to.\n\nProfiles contain configuration and determine behavioral aspects of the newly created transaction, for example, fees that may apply.\n\nYou 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.\n\nProfile Ids can be found in the Multi Portal, in the API Credentials page.\n",
        "pattern": "^[0-9]+$",
        "example": "10001"
      },
      "InstrumentType": {
        "type": "string",
        "enum": [
          "managed_cards",
          "managed_accounts"
        ]
      },
      "InstrumentId": {
        "required": [
          "id",
          "type"
        ],
        "type": "object",
        "properties": {
          "id": {
            "$ref": "#/components/schemas/Id"
          },
          "type": {
            "$ref": "#/components/schemas/InstrumentType"
          }
        },
        "example": {
          "id": "123456789",
          "type": "managed_accounts"
        }
      },
      "BeneficiaryId": {
        "required": [
          "beneficiaryId"
        ],
        "type": "object",
        "properties": {
          "beneficiaryId": {
            "$ref": "#/components/schemas/Id"
          }
        },
        "example": {
          "beneficiaryId": "123456789"
        }
      },
      "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.",
            "example": "Invoice 1042"
          },
          "scheduledTimestamp": {
            "$ref": "#/components/schemas/ScheduledTimestamp"
          }
        }
      },
      "BulkSendCreateOperation": {
        "type": "object",
        "required": [
          "requestBody"
        ],
        "properties": {
          "requestBody": {
            "$ref": "#/components/schemas/SendCreateRequest"
          }
        }
      },
      "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",
            "example": "GB29NWBK60161331926819"
          },
          "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",
            "example": "NWBKGB2L"
          }
        }
      },
      "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.",
            "example": "31926819"
          },
          "sortCode": {
            "type": "string",
            "pattern": "^[0-9]{6}$",
            "description": "Sort code, required for wire transfer over Faster Payments.",
            "example": "601613"
          },
          "secondaryReference": {
            "type": "string",
            "example": "0012345678"
          }
        }
      },
      "Nationality": {
        "maxLength": 2,
        "minLength": 2,
        "pattern": "^[A-Z]+$",
        "type": "string",
        "description": "Nationality of the user - using ISO 3166 alpha-2.",
        "example": "GB"
      },
      "DateOfBirth": {
        "type": "string",
        "format": "date",
        "description": "The date of birth in ISO 8601 format (YYYY-MM-DD).",
        "example": "1990-01-01"
      },
      "OutgoingWireTransferBeneficiary": {
        "deprecated": true,
        "required": [
          "name",
          "bankAccountDetails"
        ],
        "type": "object",
        "description": "Details of the beneficiary of the outgoing wire transfer.\n**Deprecated**: Use `SEPABeneficiary` for SEPA/IBAN transfers or `FasterPaymentsBeneficiary` for Faster Payments transfers instead.\n",
        "properties": {
          "name": {
            "type": "string",
            "description": "The beneficiary's full name. The allowed length and pattern is dependent on the bank account details type:\n\n`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.\n\n`FasterPaymentsBankDetailsOrBACSBankDetails`: >= `1` character and <= `140` characters with a pattern of `^[a-zA-Z0-9\\/\\-?:().,’+\\s#=!\"%&*<>;\\{@\\r\\n]*$`\n(please note that the `’` symbol is the unicode value U+2019 (right single quotation mark) and not the unicode value U+0027 (apostrophe))\n",
            "example": "Alex Smith"
          },
          "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.\n",
            "example": "1 High Street, London W1A 1AA"
          },
          "bankName": {
            "type": "string",
            "description": "The beneficiary's bank name.",
            "example": "National Westminster Bank PLC"
          },
          "bankAddress": {
            "maxLength": 150,
            "minLength": 1,
            "type": "string",
            "description": "The beneficiary's bank address.",
            "example": "250 Bishopsgate, London EC2M 4AA"
          },
          "bankCountry": {
            "type": "string",
            "description": "The beneficiary's bank country in ISO 3166 alpha-2 format.",
            "maxLength": 2,
            "minLength": 2,
            "pattern": "^[A-Z]{2}$",
            "example": "GB"
          },
          "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"
          }
        }
      },
      "SEPABeneficiary": {
        "required": [
          "name",
          "iban"
        ],
        "type": "object",
        "description": "Beneficiary details for SEPA/IBAN wire transfers.",
        "properties": {
          "name": {
            "type": "string",
            "minLength": 1,
            "maxLength": 150,
            "description": "The beneficiary's full name. >= 1 character and <= 150 characters.\nAn extended character set is accepted to cater for all European languages.\nIf SEPA does not support a particular character, it is automatically\nconverted to an acceptable alternative, in line with SEPA scheme guidance.\n",
            "example": "Alex Smith"
          },
          "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.",
            "example": "GB29NWBK60161331926819"
          },
          "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 (Bank Identifier Code) for wire transfer over SEPA.",
            "example": "NWBKGB2L"
          },
          "address": {
            "maxLength": 150,
            "minLength": 1,
            "type": "string",
            "description": "The beneficiary's address. An extended character set is accepted to cater\nfor all European languages. If SEPA does not support a particular character,\nit is automatically converted to an acceptable alternative.\n",
            "example": "1 High Street, London W1A 1AA"
          },
          "bankName": {
            "type": "string",
            "description": "The beneficiary's bank name.",
            "example": "National Westminster Bank PLC"
          },
          "bankAddress": {
            "maxLength": 150,
            "minLength": 1,
            "type": "string",
            "description": "The beneficiary's bank address.",
            "example": "250 Bishopsgate, London EC2M 4AA"
          },
          "bankCountry": {
            "type": "string",
            "description": "The beneficiary's bank country in ISO 3166 alpha-2 format.",
            "maxLength": 2,
            "minLength": 2,
            "pattern": "^[A-Z]{2}$",
            "example": "GB"
          },
          "nationality": {
            "$ref": "#/components/schemas/Nationality"
          },
          "dateOfBirth": {
            "$ref": "#/components/schemas/DateOfBirth"
          }
        }
      },
      "SWIFTBeneficiary": {
        "required": [
          "name",
          "account",
          "address",
          "bankCountry"
        ],
        "type": "object",
        "description": "Beneficiary details for SWIFT wire transfers.",
        "properties": {
          "name": {
            "type": "string",
            "minLength": 1,
            "maxLength": 150,
            "description": "The beneficiary's full name.",
            "example": "Alex Smith"
          },
          "account": {
            "type": "string",
            "minLength": 1,
            "maxLength": 34,
            "pattern": "^[a-zA-Z0-9]{1,34}$",
            "description": "Can be either an account number or an International Bank Account Number (IBAN).",
            "example": "GB29NWBK60161331926819"
          },
          "bankIdentifierCode": {
            "type": "string",
            "minLength": 8,
            "maxLength": 11,
            "pattern": "^[a-zA-Z0-9]{8,11}$",
            "description": "Required if account is not an IBAN. Bank Identifier Code (BIC).",
            "example": "NWBKGB2L"
          },
          "address": {
            "maxLength": 150,
            "minLength": 1,
            "type": "string",
            "description": "The beneficiary's address.",
            "example": "1 High Street, London W1A 1AA"
          },
          "bankName": {
            "type": "string",
            "description": "The beneficiary's bank name.",
            "example": "National Westminster Bank PLC"
          },
          "bankAddress": {
            "maxLength": 150,
            "minLength": 1,
            "type": "string",
            "description": "The beneficiary's bank address.",
            "example": "250 Bishopsgate, London EC2M 4AA"
          },
          "bankCountry": {
            "type": "string",
            "description": "The beneficiary's bank country in ISO 3166 alpha-2 format.",
            "maxLength": 2,
            "minLength": 2,
            "pattern": "^[A-Z]{2}$",
            "example": "GB"
          },
          "nationality": {
            "$ref": "#/components/schemas/Nationality"
          },
          "dateOfBirth": {
            "$ref": "#/components/schemas/DateOfBirth"
          }
        }
      },
      "RIXBeneficiary": {
        "required": [
          "name",
          "iban"
        ],
        "type": "object",
        "description": "Beneficiary details for RIX wire transfers.",
        "properties": {
          "name": {
            "type": "string",
            "minLength": 1,
            "maxLength": 150,
            "description": "The beneficiary's full name. >= 1 character and <= 150 characters.\nAn extended character set is accepted to cater for all European languages.\nIf RIX does not support a particular character, it is automatically\nconverted to an acceptable alternative.\n",
            "example": "Alex Smith"
          },
          "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 RIX.",
            "example": "GB29NWBK60161331926819"
          },
          "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 (Bank Identifier Code) for wire transfer over RIX.",
            "example": "NWBKGB2L"
          },
          "address": {
            "maxLength": 150,
            "minLength": 1,
            "type": "string",
            "description": "The beneficiary's address. An extended character set is accepted to cater\nfor all European languages. If RIX does not support a particular character,\nit is automatically converted to an acceptable alternative.\n",
            "example": "1 High Street, London W1A 1AA"
          },
          "bankName": {
            "type": "string",
            "description": "The beneficiary's bank name.",
            "example": "National Westminster Bank PLC"
          },
          "bankAddress": {
            "maxLength": 150,
            "minLength": 1,
            "type": "string",
            "description": "The beneficiary's bank address.",
            "example": "250 Bishopsgate, London EC2M 4AA"
          },
          "bankCountry": {
            "type": "string",
            "description": "The beneficiary's bank country in ISO 3166 alpha-2 format.",
            "maxLength": 2,
            "minLength": 2,
            "pattern": "^[A-Z]{2}$",
            "example": "GB"
          },
          "nationality": {
            "$ref": "#/components/schemas/Nationality"
          },
          "dateOfBirth": {
            "$ref": "#/components/schemas/DateOfBirth"
          }
        }
      },
      "FasterPaymentsBeneficiary": {
        "required": [
          "name",
          "type",
          "accountNumber",
          "sortCode"
        ],
        "type": "object",
        "description": "Beneficiary details for Faster Payments wire transfers.",
        "properties": {
          "name": {
            "type": "string",
            "minLength": 1,
            "maxLength": 140,
            "pattern": "^[a-zA-Z0-9\\/\\-?:().,'+\\s#=!\"%&*<>;\\{@\\r\\n]*$",
            "description": "The beneficiary's full name. >= 1 character and <= 140 characters.\nNote: the ' symbol is the unicode value U+2019 (right single quotation mark)\nand not the unicode value U+0027 (apostrophe).\n",
            "example": "Alex Smith"
          },
          "type": {
            "type": "string",
            "description": "The type of beneficiary account. Required for Faster Payments.",
            "enum": [
              "PERSONAL",
              "BUSINESS"
            ]
          },
          "accountNumber": {
            "type": "string",
            "pattern": "^[0-9]{8}$",
            "description": "Account number, required for wire transfer over Faster Payments.",
            "example": "31926819"
          },
          "sortCode": {
            "type": "string",
            "pattern": "^[0-9]{6}$",
            "description": "Sort code, required for wire transfer over Faster Payments.",
            "example": "601613"
          },
          "secondaryReference": {
            "type": "string",
            "description": "Optional secondary reference for accounts without unique sort codes.",
            "example": "0012345678"
          },
          "address": {
            "maxLength": 150,
            "minLength": 1,
            "type": "string",
            "description": "The beneficiary's address.",
            "example": "1 High Street, London W1A 1AA"
          },
          "bankName": {
            "type": "string",
            "description": "The beneficiary's bank name.",
            "example": "National Westminster Bank PLC"
          },
          "bankAddress": {
            "maxLength": 150,
            "minLength": 1,
            "type": "string",
            "description": "The beneficiary's bank address.",
            "example": "250 Bishopsgate, London EC2M 4AA"
          },
          "bankCountry": {
            "type": "string",
            "description": "The beneficiary's bank country in ISO 3166 alpha-2 format.",
            "maxLength": 2,
            "minLength": 2,
            "pattern": "^[A-Z]{2}$",
            "example": "GB"
          },
          "nationality": {
            "$ref": "#/components/schemas/Nationality"
          },
          "dateOfBirth": {
            "$ref": "#/components/schemas/DateOfBirth"
          }
        }
      },
      "ExternalAccountType": {
        "type": "string",
        "enum": [
          "linked_accounts"
        ]
      },
      "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]+$",
            "example": "123456789"
          }
        },
        "example": {
          "type": "linked_accounts",
          "id": "123456789"
        }
      },
      "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]+$",
                "example": "123456789"
              }
            }
          },
          "transferAmount": {
            "description": "The amount, in same currency as source and destination, that was transferred from the source.",
            "allOf": [
              {
                "$ref": "#/components/schemas/CurrencyAmount"
              }
            ]
          },
          "purpose": {
            "type": "string",
            "maxLength": 255,
            "description": "The purpose of the payment. Mandatory for wire transfers executed over `SWIFT`.",
            "example": "Invoice payment"
          },
          "description": {
            "type": "string",
            "description": "These details are passed to the beneficiary as the `reference` . This field is mandatory for wire transfers executed over `SEPA`and `SWIFT`. The allowed length is dependent on the payment type:\n\n`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.\n\n`SWIFT` <= `35` characters\n\n`Faster Payments` <= `18` characters\n",
            "example": "Invoice 1042"
          },
          "destinationBeneficiary": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/OutgoingWireTransferBeneficiary"
              },
              {
                "$ref": "#/components/schemas/SEPABeneficiary"
              },
              {
                "$ref": "#/components/schemas/SWIFTBeneficiary"
              },
              {
                "$ref": "#/components/schemas/RIXBeneficiary"
              },
              {
                "$ref": "#/components/schemas/FasterPaymentsBeneficiary"
              },
              {
                "$ref": "#/components/schemas/BeneficiaryId"
              },
              {
                "$ref": "#/components/schemas/ExternalAccountId"
              }
            ]
          },
          "scheduledTimestamp": {
            "$ref": "#/components/schemas/ScheduledTimestamp"
          }
        }
      },
      "BulkOutgoingWireTransferCreateOperation": {
        "type": "object",
        "required": [
          "requestBody"
        ],
        "properties": {
          "requestBody": {
            "$ref": "#/components/schemas/OutgoingWireTransferCreateRequest"
          }
        }
      },
      "UserIdentity": {
        "required": [
          "id",
          "name"
        ],
        "type": "object",
        "properties": {
          "id": {
            "description": "The unique identifier of the Corporate Identity.",
            "allOf": [
              {
                "$ref": "#/components/schemas/IdentityId"
              }
            ]
          },
          "name": {
            "type": "string",
            "description": "The name of the company.",
            "example": "Acme Ltd"
          }
        }
      },
      "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",
            "example": 42
          },
          "responseCount": {
            "type": "integer",
            "description": "The total number of records returned in this response (always capped at 100).",
            "format": "int32",
            "example": 10
          }
        },
        "example": {
          "identities": [
            {
              "id": {
                "type": "CORPORATE",
                "id": "123456789"
              },
              "name": "Acme Ltd"
            },
            {
              "id": {
                "type": "CORPORATE",
                "id": "987654321"
              },
              "name": "Example Ltd"
            }
          ],
          "count": 2,
          "responseCount": 2
        }
      },
      "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}$",
        "example": "123456"
      },
      "CompanyPosition": {
        "type": "string",
        "description": "The company position of the Corporate Root User.",
        "enum": [
          "DIRECTOR",
          "AUTHORISED_REPRESENTATIVE"
        ]
      },
      "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.",
            "example": "Alex"
          },
          "surname": {
            "maxLength": 100,
            "type": "string",
            "description": "Last name of the root user.",
            "example": "Smith"
          },
          "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.",
            "example": true
          },
          "emailVerified": {
            "type": "boolean",
            "description": "Indicates if the root user's email has been verified.",
            "example": true
          },
          "mobileNumberVerified": {
            "type": "boolean",
            "description": "Indicates if the root user's mobile number has been verified.",
            "example": true
          },
          "dateOfBirth": {
            "description": "Date of birth of the authorized user.",
            "allOf": [
              {
                "$ref": "#/components/schemas/Date"
              }
            ]
          },
          "tag": {
            "$ref": "#/components/schemas/Tag"
          },
          "locale": {
            "$ref": "#/components/schemas/UserLocale"
          },
          "brand": {
            "$ref": "#/components/schemas/Brand"
          }
        }
      },
      "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"
        ]
      },
      "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",
            "example": "1 High Street"
          },
          "addressLine2": {
            "type": "string",
            "example": "Flat 2"
          },
          "city": {
            "type": "string",
            "example": "London"
          },
          "postCode": {
            "maxLength": 10,
            "pattern": "^[A-Za-z0-9 -]*$",
            "type": "string",
            "example": "W1A 1AA"
          },
          "state": {
            "maxLength": 50,
            "type": "string",
            "example": "Greater London"
          },
          "country": {
            "maxLength": 2,
            "minLength": 2,
            "pattern": "^[A-Z]+$",
            "type": "string",
            "description": "Country of the identity in ISO 3166 alpha-2 format.",
            "example": "GB"
          }
        }
      },
      "Address": {
        "required": [
          "addressLine1",
          "city",
          "postCode",
          "country"
        ],
        "type": "object",
        "properties": {
          "addressLine1": {
            "minLength": 1,
            "maxLength": 150,
            "type": "string",
            "description": "The first line of the address.",
            "example": "1 High Street"
          },
          "addressLine2": {
            "maxLength": 150,
            "type": "string",
            "description": "The second line of the address.",
            "example": "Flat 2"
          },
          "city": {
            "maxLength": 50,
            "type": "string",
            "description": "The city of the address.",
            "example": "London"
          },
          "postCode": {
            "maxLength": 10,
            "pattern": "^[A-Za-z0-9 -]*$",
            "type": "string",
            "description": "The post code associated with the address.",
            "example": "W1A 1AA"
          },
          "state": {
            "maxLength": 50,
            "type": "string",
            "description": "The state of the address.",
            "example": "Greater London"
          },
          "country": {
            "maxLength": 2,
            "minLength": 2,
            "pattern": "^[A-Z]+$",
            "type": "string",
            "description": "The country of the address expressed in ISO 3166 alpha-2 format.",
            "example": "GB"
          }
        }
      },
      "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"
        ]
      },
      "Corporate": {
        "required": [
          "id",
          "profileId",
          "rootUser",
          "company",
          "ipAddress",
          "baseCurrency",
          "creationTimestamp"
        ],
        "type": "object",
        "properties": {
          "id": {
            "description": "The unique identifier of the Corporate Identity.",
            "allOf": [
              {
                "$ref": "#/components/schemas/IdentityId"
              }
            ]
          },
          "profileId": {
            "$ref": "#/components/schemas/ProfileId"
          },
          "tag": {
            "$ref": "#/components/schemas/Tag"
          },
          "rootUser": {
            "description": "The root user of the Corporate Identity.",
            "allOf": [
              {
                "$ref": "#/components/schemas/CorporateRootUser"
              }
            ]
          },
          "company": {
            "required": [
              "name",
              "type",
              "countryOfRegistration"
            ],
            "type": "object",
            "properties": {
              "name": {
                "maxLength": 100,
                "type": "string",
                "description": "The registered name of the company.",
                "example": "Acme Ltd"
              },
              "type": {
                "$ref": "#/components/schemas/CompanyType"
              },
              "registrationNumber": {
                "maxLength": 20,
                "minLength": 1,
                "type": "string",
                "description": "The company registration number.",
                "example": "12345678"
              },
              "registeredAddress": {
                "$ref": "#/components/schemas/LegalAddress"
              },
              "businessAddress": {
                "description": "The address where the business is based.",
                "allOf": [
                  {
                    "$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.",
                "example": "GB"
              },
              "incorporatedOn": {
                "description": "The company's date of incorporation",
                "allOf": [
                  {
                    "$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,
            "example": "Inheritance"
          },
          "acceptedTerms": {
            "type": "boolean",
            "description": "Must be set to *true* to indicate that the root user has accepted the terms and conditions.",
            "example": true
          },
          "ipAddress": {
            "maxLength": 45,
            "minLength": 5,
            "type": "string",
            "description": "The IP address of the user doing the registration.",
            "example": "203.0.113.10"
          },
          "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.",
            "example": "DEFAULT"
          },
          "creationTimestamp": {
            "type": "integer",
            "format": "int64",
            "description": "The time when the Corporate was created, expressed in Epoch timestamp using millisecond precision.",
            "example": 1786118400000
          },
          "retailQualifier": {
            "type": "string",
            "description": "Indicates the type of corporate entity based on its retail status.",
            "enum": [
              "RETAIL",
              "NON_RETAIL",
              "UNKNOWN"
            ]
          }
        }
      },
      "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.",
                "example": false
              }
            }
          }
        ]
      },
      "CreatedCorporate": {
        "allOf": [
          {
            "$ref": "#/components/schemas/Corporate"
          },
          {
            "type": "object",
            "required": [
              "rootUser"
            ],
            "properties": {
              "rootUser": {
                "description": "The root user of the Corporate Identity.",
                "allOf": [
                  {
                    "$ref": "#/components/schemas/CreatedCorporateRootUser"
                  }
                ]
              }
            }
          }
        ]
      },
      "KyiStatus": {
        "type": "string",
        "enum": [
          "NOT_STARTED",
          "INITIATED",
          "PENDING_REVIEW",
          "APPROVED",
          "REJECTED"
        ]
      },
      "CorporateKybStatusValue": {
        "type": "string",
        "description": "Whether the corporate may use financial services.",
        "enum": [
          "NEW",
          "PENDING",
          "APPROVED",
          "REJECTED",
          "CLOSED"
        ]
      },
      "KybRunStatus": {
        "type": "string",
        "description": "Status of a KYB run.",
        "enum": [
          "COLLECTION.NOT_STARTED",
          "COLLECTION.READY_TO_START",
          "COLLECTION.IN_PROGRESS",
          "REVIEW.IN_PROGRESS",
          "RESUBMISSION.IN_PROGRESS",
          "KYB_RUN.APPROVED",
          "KYB_RUN.REJECTED",
          "KYB_RUN.CANCELLED"
        ]
      },
      "KybRunType": {
        "type": "string",
        "description": "Whether the run is the first verification or a later re-check.",
        "enum": [
          "INITIAL_ONBOARDING",
          "REFRESH"
        ]
      },
      "KybRun": {
        "type": "object",
        "required": [
          "id",
          "status",
          "runType",
          "startedTimestamp"
        ],
        "properties": {
          "id": {
            "type": "string",
            "pattern": "^[0-9]+$",
            "description": "Identifier of the KYB run."
          },
          "regulatoryFi": {
            "type": "string",
            "description": "The regulatory financial institution whose license this run verifies the corporate against."
          },
          "status": {
            "allOf": [
              {
                "$ref": "#/components/schemas/KybRunStatus"
              }
            ],
            "description": "Where the KYB run is in its lifecycle. Parse the complete value exactly as sent."
          },
          "runType": {
            "allOf": [
              {
                "$ref": "#/components/schemas/KybRunType"
              }
            ],
            "description": "Whether the run is the initial onboarding verification or a KYB refresh."
          },
          "startedTimestamp": {
            "type": "string",
            "pattern": "^[0-9]+$",
            "description": "Epoch timestamp with millisecond precision."
          },
          "endedTimestamp": {
            "type": "string",
            "pattern": "^[0-9]+$",
            "description": "Epoch timestamp with millisecond precision. Absent while the run is open."
          },
          "notes": {
            "type": "string",
            "description": "Compliance note attached to the run."
          }
        }
      },
      "CorporateKybClassification": {
        "type": "object",
        "description": "An industry or activity classification code.",
        "properties": {
          "type": {
            "type": "string",
            "description": "Classification scheme.",
            "enum": [
              "NACE",
              "SIC",
              "ISIC"
            ]
          },
          "code": {
            "type": "string",
            "maxLength": 50,
            "example": "62.01"
          },
          "description": {
            "type": "string",
            "maxLength": 255,
            "example": "Computer programming activities"
          }
        }
      },
      "CorporateKybTaxIdentifier": {
        "type": "object",
        "description": "A tax identification number and its issuing country.",
        "required": [
          "identifier"
        ],
        "properties": {
          "identifier": {
            "type": "string",
            "maxLength": 100,
            "description": "The tax identification number.",
            "example": "1234567890"
          },
          "country": {
            "type": "string",
            "maxLength": 2,
            "description": "Issuing country, ISO 3166-1 alpha-2.",
            "example": "GB"
          }
        }
      },
      "CorporateKybAddress": {
        "type": "object",
        "description": "A postal address.",
        "properties": {
          "streetAddress": {
            "type": "string",
            "maxLength": 255,
            "example": "1 High Street"
          },
          "streetAddress2": {
            "type": "string",
            "maxLength": 255,
            "example": "Flat 2"
          },
          "postalCode": {
            "type": "string",
            "maxLength": 50,
            "example": "W1A 1AA"
          },
          "city": {
            "type": "string",
            "maxLength": 100,
            "example": "London"
          },
          "state": {
            "type": "string",
            "maxLength": 100,
            "example": "Greater London"
          },
          "region": {
            "type": "string",
            "maxLength": 100,
            "example": "England"
          },
          "country": {
            "type": "string",
            "maxLength": 2,
            "description": "ISO 3166-1 alpha-2.",
            "example": "GB"
          }
        }
      },
      "CorporateKybCompanyData": {
        "type": "object",
        "description": "Details about the main corporate. Identity fields (name, registration number, country) are taken from the corporate record and aren't accepted here.",
        "properties": {
          "registrationDate": {
            "type": "string",
            "description": "Incorporation date, `YYYY-MM-DD`.",
            "example": "2015-06-15"
          },
          "legalForm": {
            "type": "string",
            "maxLength": 4,
            "description": "Legal form, ISO 20275 ELF code.",
            "example": "H0PO"
          },
          "classifications": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CorporateKybClassification"
            }
          },
          "taxIdentifiers": {
            "type": "array",
            "description": "The first entry maps to the provider's primary TIN; the rest are stored as supporting data.",
            "items": {
              "$ref": "#/components/schemas/CorporateKybTaxIdentifier"
            }
          },
          "addresses": {
            "type": "array",
            "description": "The first entry maps to the provider's primary address; the rest are stored as supporting data.",
            "items": {
              "$ref": "#/components/schemas/CorporateKybAddress"
            }
          },
          "websiteUrl": {
            "type": "string",
            "maxLength": 500,
            "example": "https://www.acme.example"
          }
        }
      },
      "CorporateKybCompanyDetails": {
        "type": "object",
        "description": "Details of an affiliated company in the ownership graph.",
        "properties": {
          "name": {
            "type": "string",
            "maxLength": 255,
            "example": "Acme Ltd"
          },
          "registrationNumber": {
            "type": "string",
            "maxLength": 180,
            "example": "12345678"
          },
          "country": {
            "type": "string",
            "maxLength": 2,
            "description": "ISO 3166-1 alpha-2.",
            "example": "GB"
          },
          "registrationDate": {
            "type": "string",
            "description": "`YYYY-MM-DD`.",
            "example": "2015-06-15"
          },
          "legalForm": {
            "type": "string",
            "maxLength": 4,
            "description": "ISO 20275 ELF code.",
            "example": "H0PO"
          },
          "taxIdentifiers": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CorporateKybTaxIdentifier"
            }
          },
          "addresses": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CorporateKybAddress"
            }
          }
        }
      },
      "CorporateKybCompanyNode": {
        "type": "object",
        "description": "An affiliated company in the ownership graph, referenced by relations.",
        "required": [
          "ref"
        ],
        "properties": {
          "ref": {
            "type": "string",
            "maxLength": 100,
            "description": "Your own reference for this company, used to wire up relations.",
            "example": "company-1"
          },
          "details": {
            "$ref": "#/components/schemas/CorporateKybCompanyDetails"
          }
        }
      },
      "CorporateKybIndividualDetails": {
        "type": "object",
        "description": "Details of an individual in the ownership graph.",
        "properties": {
          "firstName": {
            "type": "string",
            "maxLength": 100,
            "example": "Alex"
          },
          "lastName": {
            "type": "string",
            "maxLength": 100,
            "example": "Smith"
          },
          "middleName": {
            "type": "string",
            "maxLength": 100,
            "example": "Jordan"
          },
          "maidenName": {
            "type": "string",
            "maxLength": 100,
            "example": "Taylor"
          },
          "birthDate": {
            "type": "string",
            "description": "`YYYY-MM-DD`.",
            "example": "1990-01-01"
          },
          "birthCountry": {
            "type": "string",
            "maxLength": 2,
            "description": "ISO 3166-1 alpha-2.",
            "example": "GB"
          },
          "birthPlace": {
            "type": "string",
            "maxLength": 100,
            "example": "London"
          },
          "gender": {
            "type": "string",
            "enum": [
              "MALE",
              "FEMALE",
              "OTHER"
            ]
          },
          "nationalities": {
            "type": "array",
            "description": "ISO 3166-1 alpha-2 codes.",
            "items": {
              "type": "string",
              "maxLength": 2
            }
          },
          "email": {
            "type": "string",
            "maxLength": 255,
            "example": "alex@example.com"
          },
          "phoneNumber": {
            "type": "string",
            "maxLength": 50,
            "description": "E.164 format.",
            "example": "+447700900123"
          },
          "taxIdentifiers": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CorporateKybTaxIdentifier"
            }
          },
          "addresses": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CorporateKybAddress"
            }
          }
        }
      },
      "CorporateKybIndividualNode": {
        "type": "object",
        "description": "An individual in the ownership graph, referenced by relations.",
        "required": [
          "ref"
        ],
        "properties": {
          "ref": {
            "type": "string",
            "maxLength": 100,
            "description": "Your own reference for this person, used to wire up relations.",
            "example": "person-1"
          },
          "details": {
            "$ref": "#/components/schemas/CorporateKybIndividualDetails"
          },
          "isBeneficialOwner": {
            "type": "boolean",
            "example": true
          },
          "isControllingPerson": {
            "type": "boolean",
            "example": true
          },
          "isBusinessContact": {
            "type": "boolean",
            "example": false
          },
          "isSignatory": {
            "type": "boolean",
            "description": "Only the corporate's root user can be marked as a signatory.",
            "example": true
          },
          "isDelegator": {
            "type": "boolean",
            "example": false
          }
        }
      },
      "CorporateKybRelation": {
        "type": "object",
        "description": "An ownership or control relationship between two entities in the graph.",
        "required": [
          "fromRef"
        ],
        "properties": {
          "fromRef": {
            "type": "string",
            "maxLength": 100,
            "description": "Ref of the entity holding the stake or role.",
            "example": "person-1"
          },
          "toRef": {
            "type": "string",
            "maxLength": 100,
            "description": "Ref of the company being held. Leave empty to target the main corporate.",
            "example": "company-1"
          },
          "roles": {
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "SHAREHOLDER",
                "LEGAL_REPRESENTATIVE"
              ]
            }
          },
          "ownershipPercentage": {
            "type": "number",
            "format": "double",
            "description": "Percentage of the company owned, 0-100.",
            "example": 51.5
          },
          "votingRightsPercentage": {
            "type": "number",
            "format": "double",
            "description": "Percentage of the voting rights held, 0-100.",
            "example": 51.5
          },
          "position": {
            "type": "string",
            "maxLength": 255,
            "example": "Director"
          }
        }
      },
      "CorporateKybEntityResponseSchema": {
        "type": "object",
        "description": "The company and ownership-graph information submitted to pre-populate a corporate's KYB.",
        "properties": {
          "company": {
            "$ref": "#/components/schemas/CorporateKybCompanyData"
          },
          "companies": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CorporateKybCompanyNode"
            }
          },
          "individuals": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CorporateKybIndividualNode"
            }
          },
          "relations": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CorporateKybRelation"
            }
          },
          "companyName": {
            "type": "string",
            "maxLength": 255,
            "description": "The main corporate's name, taken from the corporate record.",
            "example": "Acme Ltd"
          },
          "registrationNumber": {
            "type": "string",
            "maxLength": 100,
            "description": "The main corporate's registration number, taken from the corporate record.",
            "example": "12345678"
          },
          "registrationCountry": {
            "type": "string",
            "maxLength": 2,
            "description": "The main corporate's registration country, ISO 3166-1 alpha-2.",
            "example": "GB"
          }
        }
      },
      "CorporateKybEntitySubmission": {
        "type": "object",
        "description": "Company and ownership-graph information submitted to pre-populate a corporate's KYB. Every field is optional.",
        "properties": {
          "company": {
            "$ref": "#/components/schemas/CorporateKybCompanyData"
          },
          "companies": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CorporateKybCompanyNode"
            }
          },
          "individuals": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CorporateKybIndividualNode"
            }
          },
          "relations": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CorporateKybRelation"
            }
          }
        }
      },
      "KybIndustry": {
        "type": "string",
        "description": "The corporate's industry, for KYB pre-population.",
        "enum": [
          "ACCOUNTING",
          "AUDIT",
          "FINANCE",
          "PUBLIC_SECTOR_ADMINISTRATION",
          "ART_ENTERTAINMENT",
          "AUTO_AVIATION",
          "BANKING_LENDING",
          "BUSINESS_CONSULTANCY_LEGAL",
          "CONSTRUCTION_REPAIR",
          "EDUCATION_PROFESSIONAL_SERVICES",
          "INFORMATION_TECHNOLOGIES",
          "TOBACCO_ALCOHOL",
          "GAMING_GAMBLING",
          "MEDICAL_SERVICES",
          "PRECIOUS_GOODS_JEWELLERY",
          "NONGOVERNMENT_ORGANISATION",
          "INSURANCE_SECURITY",
          "RETAIL_WHOLESALE",
          "TRAVEL_TOURISM",
          "FREELANCER"
        ]
      },
      "KybSourceOfFunds": {
        "type": "string",
        "description": "The corporate's source of funds, for KYB pre-population.",
        "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"
        ]
      },
      "CorporateKybProfile": {
        "type": "object",
        "description": "How the corporate intends to use the account: where money comes from, where it goes, and how much of it is expected.",
        "properties": {
          "fundingOrigin": {
            "type": "string",
            "example": "Business revenue"
          },
          "fundingOriginCountries": {
            "type": "array",
            "items": {
              "type": "string",
              "maxLength": 2
            }
          },
          "fundingTransactionCountMonthly": {
            "type": "string",
            "example": "200"
          },
          "fundingTransactionValueMonthly": {
            "type": "string",
            "example": "50000"
          },
          "collectionsEnabled": {
            "type": "boolean",
            "example": true
          },
          "collectionsPurpose": {
            "type": "string",
            "example": "Invoice settlement"
          },
          "collectionsOrigin": {
            "type": "string",
            "example": "Customer payments"
          },
          "collectionsOriginCountries": {
            "type": "array",
            "items": {
              "type": "string",
              "maxLength": 2
            }
          },
          "collectionsTransactionCountMonthly": {
            "type": "string",
            "example": "200"
          },
          "collectionsTransactionValueMonthly": {
            "type": "string",
            "example": "50000"
          },
          "withdrawalDestination": {
            "type": "string",
            "example": "Company bank account"
          },
          "withdrawalDestinationCountries": {
            "type": "array",
            "items": {
              "type": "string",
              "maxLength": 2
            }
          },
          "withdrawalTransactionCountMonthly": {
            "type": "string",
            "example": "200"
          },
          "withdrawalTransactionValueMonthly": {
            "type": "string",
            "example": "50000"
          },
          "payoutsEnabled": {
            "type": "boolean",
            "example": true
          },
          "payoutsPurpose": {
            "type": "string",
            "example": "Supplier payments"
          },
          "payoutsDestination": {
            "type": "string",
            "example": "Suppliers"
          },
          "payoutsDestinationCountries": {
            "type": "array",
            "items": {
              "type": "string",
              "maxLength": 2
            }
          },
          "payoutsTransactionCountMonthly": {
            "type": "string",
            "example": "200"
          },
          "payoutsTransactionValueMonthly": {
            "type": "string",
            "example": "50000"
          },
          "cardsEnabled": {
            "type": "boolean",
            "example": true
          },
          "cardsTransactionCountMonthly": {
            "type": "string",
            "example": "200"
          },
          "cardsTransactionValueMonthly": {
            "type": "string",
            "example": "50000"
          },
          "cardsPurpose": {
            "type": "string",
            "example": "Employee expenses"
          },
          "cardsCardholderCount": {
            "type": "string",
            "example": "10"
          },
          "industry": {
            "$ref": "#/components/schemas/KybIndustry"
          },
          "sourceOfFunds": {
            "$ref": "#/components/schemas/KybSourceOfFunds"
          },
          "sourceOfFundsIsOther": {
            "type": "string",
            "description": "Description of the source of funds when `sourceOfFunds` is `OTHER`.",
            "example": "Inheritance"
          },
          "companyType": {
            "$ref": "#/components/schemas/CompanyType"
          },
          "customerOperatesSolelyInPermittedIndustries": {
            "type": "boolean",
            "example": true
          },
          "customerOperatesSolelyInPermittedJurisdictions": {
            "type": "boolean",
            "example": true
          },
          "isTheBusinessModelOfTheCustomerClear": {
            "type": "string",
            "example": "Yes"
          },
          "doesTheCustomersIntendedUsageAlignToTheirBusinessActivity": {
            "type": "boolean",
            "example": true
          },
          "doesTheCustomersIntendedUsageAlignToTheirBusinessActivityComment": {
            "type": "string",
            "example": "Usage matches the stated business activity"
          },
          "websiteUrl": {
            "type": "string",
            "maxLength": 500,
            "example": "https://www.acme.example"
          },
          "tradingName": {
            "type": "string",
            "maxLength": 255,
            "example": "Acme"
          }
        }
      },
      "CorporateKybProfileResponseSchema": {
        "type": "object",
        "description": "The account-usage profile submitted to pre-populate a corporate's KYB.",
        "properties": {
          "profile": {
            "$ref": "#/components/schemas/CorporateKybProfile"
          }
        }
      },
      "CorporateKybProfileSubmission": {
        "type": "object",
        "description": "Account-usage profile submitted to pre-populate a corporate's KYB.",
        "properties": {
          "profile": {
            "$ref": "#/components/schemas/CorporateKybProfile"
          }
        }
      },
      "KybDocumentType": {
        "type": "string",
        "description": "The kind of KYB supporting document.",
        "enum": [
          "REGISTRATION_CERTIFICATE",
          "ARTICLES_OF_ASSOCIATION",
          "SHAREHOLDER_REGISTER",
          "PROOF_OF_ADDRESS",
          "PROOF_OF_IDENTITY",
          "BANK_STATEMENT",
          "TAX_RETURN",
          "ANNUAL_REPORT",
          "SOURCE_OF_FUNDS",
          "OTHER"
        ]
      },
      "CorporateKybDocument": {
        "type": "object",
        "description": "Metadata for a document uploaded to a corporate's KYB.",
        "properties": {
          "reference": {
            "type": "string",
            "maxLength": 100,
            "description": "The stored document's reference.",
            "example": "doc-7f3e2b1a"
          },
          "documentType": {
            "$ref": "#/components/schemas/KybDocumentType"
          },
          "description": {
            "type": "string",
            "maxLength": 500,
            "example": "Certificate of incorporation"
          },
          "filename": {
            "type": "string",
            "maxLength": 255,
            "example": "certificate-of-incorporation.pdf"
          }
        }
      },
      "CorporateKybDocumentList": {
        "type": "object",
        "description": "The documents uploaded to a corporate's KYB.",
        "properties": {
          "documents": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CorporateKybDocument"
            }
          }
        }
      },
      "CorporateKybDocumentForm": {
        "type": "object",
        "description": "Multipart form carrying a single KYB supporting document, up to 10 MB.",
        "required": [
          "file",
          "documentType"
        ],
        "properties": {
          "file": {
            "type": "string",
            "format": "binary",
            "description": "The document binary. Up to 10 MB."
          },
          "documentType": {
            "$ref": "#/components/schemas/KybDocumentType"
          },
          "description": {
            "type": "string",
            "maxLength": 500,
            "example": "Certificate of incorporation"
          }
        }
      },
      "CorporateKybDocumentResponse": {
        "type": "object",
        "description": "Reference to the stored KYB document.",
        "required": [
          "reference"
        ],
        "properties": {
          "reference": {
            "type": "string",
            "maxLength": 100,
            "example": "doc-7f3e2b1a"
          }
        }
      },
      "Fee": {
        "required": [
          "feeType",
          "source"
        ],
        "type": "object",
        "properties": {
          "feeType": {
            "type": "string",
            "description": "The fee type as defined in the Multi Portal.",
            "example": "DEPOSIT_FEE"
          },
          "source": {
            "description": "The instrument from where the fee should be deducted.",
            "allOf": [
              {
                "$ref": "#/components/schemas/InstrumentId"
              }
            ]
          }
        }
      },
      "TransactionId": {
        "required": [
          "type",
          "id"
        ],
        "type": "object",
        "properties": {
          "type": {
            "enum": [
              "AUTHORISATION",
              "SETTLEMENT",
              "MANUAL_TRANSACTION",
              "TRANSFER",
              "SEND",
              "DEPOSIT",
              "AUTHORISATION_REVERSAL",
              "AUTHORISATION_EXPIRY",
              "AUTHORISATION_DECLINE",
              "AUTHORISATION_MANUAL_CLOSE",
              "MERCHANT_REFUND",
              "MERCHANT_REFUND_REVERSAL",
              "ORIGINAL_CREDIT_TRANSACTION",
              "SETTLEMENT_REVERSAL",
              "ADJUSTMENT",
              "CHARGE_FEE",
              "WITHDRAWAL_RESERVE",
              "WITHDRAWAL_RELEASE",
              "FEE_REVERSAL",
              "OUTGOING_WIRE_TRANSFER",
              "AUTHORISATION_CANCELLATION",
              "SYSTEM_TRANSACTION",
              "OUTGOING_DIRECT_DEBIT_COLLECTION",
              "OUTGOING_DIRECT_DEBIT_REFUND",
              "LINKED_ACCOUNT_VERIFICATION_TRANSFER",
              "INCOMING_WIRE_TRANSFER",
              "FUNDING",
              "TEST_FUNDING",
              "CORRESPONDENT_BANK_TRANSFER"
            ],
            "type": "string",
            "x-enumDescriptions": {
              "AUTHORISATION": "",
              "SETTLEMENT": "",
              "MANUAL_TRANSACTION": "For a manual transaction, the `additionalFields`: `note` will contain a description with the reason for the transaction. This will start with one of the following prefixes:\n\n- Account Closure\n- Chargebacks - Represented\n- Chargebacks - Won\n- Deleted Card - Transfer from\n- Deleted Card - Transfer to\n- Duplicate Authorisation Issue\n- Duplicate Settlement Issue\n- Expired Card - Transfer from\n- Expired Card - Transfer to\n- Forex Padding Release Issue\n- Funds Redemption & Account Closure\n- Manual Auth Expiry\n- Missing Settlement Issue\n- Negative Card Balance\n- Reversal - Duplicate Transaction\n- Reversal - Manual Auth Expiry\n- Reversal - Manual Transaction\n- Amend Balance - Auth Expiry\n- Balance Adjustment\n- Completing Deposit\n- Duplicate Deposit\n",
              "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]+$",
            "example": "123456789"
          }
        },
        "example": {
          "type": "TRANSFER",
          "id": "2468013579"
        }
      },
      "TransactionState": {
        "type": "string",
        "description": "Status of the transaction.",
        "enum": [
          "INITIALISED",
          "COMPLETED",
          "REJECTED",
          "FAILED",
          "PENDING",
          "SCHEDULED",
          "CANCELLED"
        ]
      },
      "ChargeFee": {
        "required": [
          "transactionId",
          "profileId",
          "feeType",
          "source",
          "destination",
          "availableBalanceAdjustment",
          "state",
          "creationTimestamp"
        ],
        "type": "object",
        "properties": {
          "transactionId": {
            "allOf": [
              {
                "$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.",
            "example": "10001"
          },
          "feeType": {
            "type": "string",
            "description": "The fee type as defined in the Multi Portal, and as sent in the request.",
            "example": "DEPOSIT_FEE"
          },
          "source": {
            "$ref": "#/components/schemas/InstrumentId"
          },
          "availableBalanceAdjustment": {
            "allOf": [
              {
                "$ref": "#/components/schemas/CurrencyAmount"
              }
            ],
            "description": "The object representing a monetary amount in a particular currency."
          },
          "state": {
            "allOf": [
              {
                "$ref": "#/components/schemas/TransactionState"
              }
            ],
            "description": "The transaction entry state."
          },
          "creationTimestamp": {
            "type": "integer",
            "format": "int64",
            "example": 1786118400000
          }
        }
      },
      "FeeSubtype": {
        "type": "string",
        "description": "The category of fee — indicates the activity or instrument-lifecycle event the fee relates to.",
        "enum": [
          "fee_reversals",
          "incoming_wire_fees",
          "withdrawal_fees",
          "purchase_fees",
          "refund_fees",
          "atm_withdrawal_fees",
          "chargeback_fees",
          "transfer_fees",
          "send_fees",
          "outgoing_wire_transfer_fees",
          "custom_fees",
          "other_fees",
          "instrument_delete_fees",
          "funds_redemption_fees",
          "system_transaction_fees"
        ]
      },
      "FeeTransactionStatus": {
        "type": "string",
        "description": "Lifecycle status of a fee transaction:\n  - `PENDING`: Fee accompanies a transaction that is still processing; it may still be canceled.\n  - `COMPLETED`: Fee was charged and posted to the instrument balance.\n  - `CANCELLED`: Fee was canceled before being charged.\n  - `REVERSED`: Fee was previously charged and has been reversed.\n",
        "enum": [
          "PENDING",
          "COMPLETED",
          "CANCELLED",
          "REVERSED"
        ]
      },
      "FeeTransaction": {
        "type": "object",
        "required": [
          "id",
          "feeType",
          "amount",
          "instrument",
          "status",
          "creationTimestamp"
        ],
        "description": "A fee charged or reversed on an instrument. Surfaced through `GET /fees`,\n`GET /transactions` (Transaction Activity), and as line items on statements.\n",
        "properties": {
          "id": {
            "type": "string",
            "pattern": "^[0-9]+$",
            "description": "The unique identifier of the fee transaction.",
            "example": "123456789"
          },
          "feeType": {
            "$ref": "#/components/schemas/FeeSubtype"
          },
          "amount": {
            "description": "The fee amount in the instrument's currency.",
            "allOf": [
              {
                "$ref": "#/components/schemas/CurrencyAmount"
              }
            ]
          },
          "instrument": {
            "description": "The instrument the fee was charged against.",
            "allOf": [
              {
                "$ref": "#/components/schemas/InstrumentId"
              }
            ]
          },
          "status": {
            "$ref": "#/components/schemas/FeeTransactionStatus"
          },
          "description": {
            "type": "string",
            "maxLength": 255,
            "example": "Monthly account fee"
          },
          "relatedTransactionId": {
            "type": "string",
            "pattern": "^[0-9]+$",
            "description": "The parent transaction this fee relates to, if any.",
            "example": "987654321"
          },
          "creationTimestamp": {
            "type": "integer",
            "format": "int64",
            "example": 1786118400000
          },
          "lastUpdatedTimestamp": {
            "type": "integer",
            "format": "int64",
            "example": 1786118401250
          }
        }
      },
      "FeeTransactionList": {
        "type": "object",
        "description": "A paginated list of fee transactions.",
        "properties": {
          "fees": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FeeTransaction"
            }
          },
          "count": {
            "type": "integer",
            "format": "int64",
            "description": "The total number of records matching the filter criteria.",
            "example": 42
          },
          "responseCount": {
            "type": "integer",
            "format": "int64",
            "example": 10
          }
        }
      },
      "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"
        ]
      },
      "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.",
            "example": "1 High Street"
          },
          "addressLine2": {
            "type": "string",
            "description": "The second line of the address.",
            "example": "Flat 2"
          },
          "city": {
            "type": "string",
            "description": "The city of the address.",
            "example": "London"
          },
          "postCode": {
            "maxLength": 10,
            "pattern": "^[A-Za-z0-9 -]*$",
            "type": "string",
            "description": "The post code associated with the address.",
            "example": "W1A 1AA"
          },
          "state": {
            "maxLength": 50,
            "type": "string",
            "description": "The state of the address.",
            "example": "Greater London"
          },
          "country": {
            "maxLength": 2,
            "minLength": 2,
            "pattern": "^[A-Z]+$",
            "type": "string",
            "description": "The country of the address expressed in ISO 3166 alpha-2 format.",
            "example": "GB"
          }
        }
      },
      "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.",
            "example": "Alex"
          },
          "surname": {
            "maxLength": 100,
            "type": "string",
            "description": "Last name of the root user.",
            "example": "Smith"
          },
          "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.",
            "example": true
          },
          "emailVerified": {
            "type": "boolean",
            "description": "Indicates if the root user's email has been verified.",
            "example": true
          },
          "mobileNumberVerified": {
            "type": "boolean",
            "description": "Indicates if the root user's mobile number has been verified.",
            "example": true
          },
          "dateOfBirth": {
            "description": "Date of birth of the consumer root user.",
            "allOf": [
              {
                "$ref": "#/components/schemas/Date"
              }
            ]
          },
          "address": {
            "description": "Address of the consumer root user.",
            "allOf": [
              {
                "$ref": "#/components/schemas/AddressWithNoRequiredFields"
              }
            ]
          },
          "nationality": {
            "description": "Nationality of the consumer root user, in ISO 3166 alpha-2 format.",
            "allOf": [
              {
                "$ref": "#/components/schemas/Nationality"
              }
            ]
          },
          "placeOfBirth": {
            "type": "string",
            "description": "The place of birth of the consumer root user.",
            "example": "London"
          },
          "tag": {
            "$ref": "#/components/schemas/Tag"
          },
          "locale": {
            "$ref": "#/components/schemas/UserLocale"
          },
          "brand": {
            "$ref": "#/components/schemas/Brand"
          }
        }
      },
      "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"
        ]
      },
      "Consumer": {
        "required": [
          "id",
          "profileId",
          "rootUser",
          "ipAddress",
          "creationTimestamp"
        ],
        "type": "object",
        "properties": {
          "id": {
            "description": "The unique identifier of the Consumer Identity.",
            "allOf": [
              {
                "$ref": "#/components/schemas/IdentityId"
              }
            ]
          },
          "profileId": {
            "$ref": "#/components/schemas/ProfileId"
          },
          "tag": {
            "$ref": "#/components/schemas/Tag"
          },
          "rootUser": {
            "description": "The root user of the Consumer Identity.",
            "allOf": [
              {
                "$ref": "#/components/schemas/ConsumerRootUser"
              }
            ]
          },
          "creationTimestamp": {
            "type": "integer",
            "format": "int64",
            "description": "The time when this consumer was created, expressed in Epoch timestamp using millisecond precision.",
            "example": 1786118400000
          },
          "ipAddress": {
            "maxLength": 45,
            "minLength": 5,
            "type": "string",
            "description": "The IP address of the consumer user doing the registration.",
            "example": "203.0.113.10"
          },
          "acceptedTerms": {
            "type": "boolean",
            "description": "Must be set to *true* to indicate that the consumer root user has accepted the terms and conditions.",
            "example": true
          },
          "baseCurrency": {
            "$ref": "#/components/schemas/Currency"
          },
          "feeGroup": {
            "type": "string",
            "description": "The fee group which the consumer is bound to.",
            "example": "DEFAULT"
          },
          "sourceOfFunds": {
            "$ref": "#/components/schemas/ConsumerSourceOfFunds"
          },
          "sourceOfFundsOther": {
            "type": "string",
            "description": "Description of source of funds in case `OTHER` was chosen.",
            "deprecated": true,
            "example": "Inheritance"
          }
        }
      },
      "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.",
            "example": "1 High Street"
          },
          "addressLine2": {
            "type": "string",
            "description": "The second line of the address.",
            "example": "Flat 2"
          },
          "city": {
            "type": "string",
            "description": "The city of the address.",
            "example": "London"
          },
          "postCode": {
            "maxLength": 10,
            "pattern": "^[A-Za-z0-9 -]*$",
            "type": "string",
            "description": "The post code associated with the address.",
            "example": "W1A 1AA"
          },
          "state": {
            "maxLength": 50,
            "type": "string",
            "description": "The state of the address.",
            "example": "Greater London"
          },
          "country": {
            "maxLength": 2,
            "minLength": 2,
            "pattern": "^[A-Z]+$",
            "type": "string",
            "description": "The country of the address expressed in ISO 3166 alpha-2 format.",
            "example": "GB"
          }
        }
      },
      "KycLevel": {
        "deprecated": true,
        "type": "string",
        "description": "The KYC level, which determines what KYC information will be requested from the consumer:\n  - KYC_LEVEL_1: The most basic level of KYC required. \n  - KYC_LEVEL_2: Full due diligence level 2\n",
        "enum": [
          "KYC_LEVEL_1",
          "KYC_LEVEL_2"
        ]
      },
      "InstrumentState": {
        "type": "string",
        "description": "The state of the instrument indicating what it can and cannot do as follows:\n  - ACTIVE: The instrument is in an active state and can be used in transactions.\n  - 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.\n  - DESTROYED: The instrument has been permanently destroyed. The `destroyReason` provides more information as to why it was destroyed.\n  - NOT_ENABLED: The instrument is not enabled for use, since the linked user has not completed all necessary verification steps.\n",
        "enum": [
          "ACTIVE",
          "BLOCKED",
          "DESTROYED",
          "NOT_ENABLED"
        ]
      },
      "BlockedReason": {
        "type": "string",
        "description": "The reason why the instrument has been blocked:\n  - USER: The root, or an authorized user, of the identity owning the instrument has temporarily blocked the instrument.\n  - SYSTEM: The platform or an administrator of the platform has temporarily blocked the instrument.\n  - LOST: The instrument has been blocked because it was marked as lost.\n  - SINGLE_SPEND: The instrument has been automatically blocked after its first successful transaction (single-spend card).\n",
        "enum": [
          "USER",
          "SYSTEM",
          "LOST",
          "SINGLE_SPEND"
        ]
      },
      "DestroyedReason": {
        "type": "string",
        "description": "The reason why the instrument has been destroyed:\n  - SYSTEM: The platform or an administrator of the platform has destroyed the instrument.\n  - USER: The root, or an authorized user, of the identity owning the instrument has destroyed the instrument.\n  - LOST: The instrument was automatically destroyed as it was marked as lost.\n  - STOLEN: The instrument was automatically destroyed as it was marked as stolen.\n  - EXPIRED: The instrument was automatically destroyed as it expired.\n  - COMPROMISED: The instrument was automatically destroyed as it was marked as compromised.\n  - SINGLE_SPEND: The instrument was automatically destroyed as it was a single-spend card that was used.\n",
        "enum": [
          "SYSTEM",
          "USER",
          "LOST",
          "STOLEN",
          "EXPIRED",
          "COMPROMISED",
          "SINGLE_SPEND"
        ]
      },
      "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.",
            "example": 120000
          },
          "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 authorization or a pending deposit, are included in the actual balance.",
            "example": 125000
          }
        }
      },
      "ManagedInstrumentState": {
        "required": [
          "state"
        ],
        "type": "object",
        "properties": {
          "state": {
            "$ref": "#/components/schemas/InstrumentState"
          },
          "blockedReason": {
            "$ref": "#/components/schemas/BlockedReason"
          },
          "destroyedReason": {
            "$ref": "#/components/schemas/DestroyedReason"
          }
        }
      },
      "AccountLowBalanceThreshold": {
        "type": "integer",
        "format": "int64",
        "description": "Sends a low balance notification webhook when the available balance drops below this amount. Currency is inherited from the managed account.",
        "example": 10000
      },
      "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.",
            "example": "123456789"
          },
          "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.",
            "example": "Main GBP 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.",
            "example": 1786118400000
          },
          "lowBalanceThreshold": {
            "$ref": "#/components/schemas/AccountLowBalanceThreshold"
          }
        }
      },
      "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.",
            "example": "GB29NWBK60161331926819"
          },
          "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.",
            "example": "NWBKGB2L"
          }
        }
      },
      "ManagedAccountIBAN": {
        "required": [
          "state",
          "bankAccountDetails"
        ],
        "type": "object",
        "properties": {
          "state": {
            "type": "string",
            "description": "The state of the Managed Account's IBAN as follows:\n  - UNALLOCATED: The Managed Account has never been assigned an IBAN. Use the _managedAccountsIBANUpgrade_ operation to assign an IBAN to a Managed Account.\n  - PENDING_ALLOCATION: The IBAN is being allocated to the Managed Account.\n  - ALLOCATED: An IBAN is allocated to the Managed Account.\n",
            "enum": [
              "UNALLOCATED",
              "PENDING_ALLOCATION",
              "ALLOCATED"
            ]
          },
          "bankAccountDetails": {
            "description": "A list of bank account details associated with the IBAN.\nMultiple 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.",
                  "example": "Alex Smith"
                },
                "beneficiaryBank": {
                  "type": "string",
                  "description": "The beneficiary bank name to be used when initiating a deposit onto the IBAN.",
                  "example": "National Westminster Bank PLC"
                },
                "beneficiaryBankAddress": {
                  "type": "string",
                  "description": "The beneficiary bank address to be used when initiating a deposit onto the IBAN.",
                  "example": "250 Bishopsgate, London EC2M 4AA"
                },
                "paymentReference": {
                  "type": "string",
                  "description": "A reference required by the partner bank to execute a deposit on the managed account.\n\n\nIf provided, make sure that this is included as part of the wire transfer details when initiating a deposit.\n",
                  "example": "WVR-123456789"
                },
                "details": {
                  "description": "The bank details required to initiate a deposit on the managed account.\n\nThe details required to deposit on the IBAN vary depending on the wire transfer channel that will be used.\n",
                  "anyOf": [
                    {
                      "$ref": "#/components/schemas/IBANDetails"
                    },
                    {
                      "$ref": "#/components/schemas/FasterPaymentsBankDetailsOrBACSBankDetails"
                    },
                    {
                      "$ref": "#/components/schemas/SwiftBankDetails"
                    }
                  ]
                }
              }
            }
          }
        }
      },
      "StatementTransactionType": {
        "type": "string",
        "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",
          "CORRESPONDENT_BANK_TRANSFER"
        ]
      },
      "StatementEntryState": {
        "type": "string",
        "description": "The transaction entry state, as follows:\n  - PENDING: The transaction has started and some of the fund movements have completed, however additional fund movements are still pending to finalize the transaction.\n  - COMPLETED: All fund movements for a transaction have completed.\n",
        "enum": [
          "PENDING",
          "COMPLETED"
        ]
      },
      "ScaledAmount": {
        "type": "object",
        "properties": {
          "value": {
            "type": "integer",
            "format": "int64",
            "example": 1250
          },
          "scale": {
            "maximum": 127,
            "minimum": -128,
            "type": "integer",
            "format": "int32",
            "example": 2
          }
        },
        "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",
            "example": "1.1750"
          }
        },
        "description": "The object representing the user transaction's currency, amount, and rate."
      },
      "StatementEntry": {
        "required": [
          "transactionAmount",
          "entryState",
          "transactionId",
          "processedTimestamp"
        ],
        "type": "object",
        "properties": {
          "transactionId": {
            "description": "The unique identifier of the transaction.",
            "allOf": [
              {
                "$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.\n\nIn case of purchases, this will indicate the original currency and amount that the merchant requested.\n",
            "$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.",
            "allOf": [
              {
                "$ref": "#/components/schemas/ScaledAmount"
              }
            ]
          },
          "transactionAmount": {
            "description": "The transaction amount in the instrument's currency.",
            "allOf": [
              {
                "$ref": "#/components/schemas/CurrencyAmount"
              }
            ]
          },
          "availableBalanceAdjustment": {
            "description": "The amount of funds credited or debited on the available balance of the instrument.",
            "allOf": [
              {
                "$ref": "#/components/schemas/CurrencyAmount"
              }
            ]
          },
          "actualBalanceAdjustment": {
            "description": "The amount of funds credited or debited on the actual balance of the instrument.",
            "allOf": [
              {
                "$ref": "#/components/schemas/CurrencyAmount"
              }
            ]
          },
          "balanceAfter": {
            "description": "The balance of the instrument after the transaction was executed.",
            "allOf": [
              {
                "$ref": "#/components/schemas/CurrencyAmount"
              }
            ]
          },
          "availableBalanceAfter": {
            "description": "The available balance of the instrument after the transaction was executed.",
            "allOf": [
              {
                "$ref": "#/components/schemas/CurrencyAmount"
              }
            ]
          },
          "actualBalanceAfter": {
            "description": "The actual balance of the instrument after the transaction was executed.",
            "allOf": [
              {
                "$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.",
            "allOf": [
              {
                "$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.",
            "allOf": [
              {
                "$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.",
            "example": 1786118401250
          },
          "sourceAmount": {
            "description": "The source amount of the transaction, if the transaction involves forex.",
            "allOf": [
              {
                "$ref": "#/components/schemas/CurrencyAmount"
              }
            ]
          },
          "userCurrencyTransactionDetails": {
            "description": "The object representing the user transaction's details",
            "allOf": [
              {
                "$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`, `authorisationCategory` and `authorisationTransactionType`."
          }
        }
      },
      "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",
            "example": 42
          },
          "responseCount": {
            "type": "integer",
            "description": "The total number of records returned in this response.",
            "format": "int32",
            "example": 10
          },
          "startBalance": {
            "description": "The start balance amount in the instrument's currency. Empty for debit cards.",
            "allOf": [
              {
                "$ref": "#/components/schemas/CurrencyAmount"
              }
            ]
          },
          "endBalance": {
            "description": "The end balance amount in the instrument's currency. Empty for debit cards.",
            "allOf": [
              {
                "$ref": "#/components/schemas/CurrencyAmount"
              }
            ]
          },
          "footer": {
            "description": "The footer description for the current statement",
            "type": "string",
            "example": "Statement generated for information purposes only."
          }
        }
      },
      "InstrumentStatementSortOrder": {
        "type": "string",
        "enum": [
          "ASC",
          "DESC"
        ]
      },
      "StatementResponseEntryTransactionType": {
        "type": "string",
        "description": "The top-level type of transaction represented by this statement entry.",
        "enum": [
          "card_payments",
          "transfers",
          "sends",
          "outgoing_wire_transfers",
          "incoming_wire_transfers",
          "correspondent_bank_transfers",
          "fees",
          "system_transactions"
        ]
      },
      "AccessInstrumentType": {
        "type": "string",
        "description": "The type of access instrument that initiated a transaction.",
        "enum": [
          "managed_cards",
          "ibans"
        ]
      },
      "StatementResponseEntryTransaction": {
        "type": "object",
        "required": [
          "id",
          "type"
        ],
        "description": "Reference to the transaction this statement entry records. The concrete shape is identified by the `type` discriminator — see the per-type variants for the available subtypes.",
        "discriminator": {
          "propertyName": "type",
          "mapping": {
            "card_payments": "#/components/schemas/StatementCardPaymentTransaction",
            "transfers": "#/components/schemas/StatementTransferTransaction",
            "sends": "#/components/schemas/StatementSendTransaction",
            "outgoing_wire_transfers": "#/components/schemas/StatementOutgoingWireTransferTransaction",
            "incoming_wire_transfers": "#/components/schemas/StatementIncomingWireTransferTransaction",
            "correspondent_bank_transfers": "#/components/schemas/StatementCorrespondentBankTransferTransaction",
            "fees": "#/components/schemas/StatementFeeTransaction",
            "system_transactions": "#/components/schemas/StatementSystemTransaction"
          }
        },
        "properties": {
          "id": {
            "type": "string",
            "pattern": "^[0-9]+$",
            "example": "123456789"
          },
          "type": {
            "$ref": "#/components/schemas/StatementResponseEntryTransactionType"
          }
        }
      },
      "StatementCardPaymentSubtype": {
        "type": "string",
        "description": "Subtype of a card payment statement entry.",
        "enum": [
          "sale_purchases",
          "cash_withdrawals",
          "sales_with_cashback",
          "mail_or_telephone_orders",
          "purchase_refund_reversals",
          "original_credit_transaction_reversals",
          "cash_withdrawal_reversals",
          "purchase_refunds",
          "purchase_reversals",
          "original_credit_transactions",
          "first_chargebacks",
          "first_chargeback_reversals",
          "first_representments",
          "first_representment_reversals",
          "second_chargebacks",
          "second_chargeback_reversals",
          "second_representments",
          "arbitration_chargebacks"
        ]
      },
      "StatementCardPaymentTransaction": {
        "description": "Reference to a card payment as it appears in a statement entry.",
        "allOf": [
          {
            "$ref": "#/components/schemas/StatementResponseEntryTransaction"
          },
          {
            "type": "object",
            "properties": {
              "subtype": {
                "$ref": "#/components/schemas/StatementCardPaymentSubtype"
              }
            }
          }
        ]
      },
      "StatementTransferTransaction": {
        "description": "Reference to a transfer as it appears in a statement entry.",
        "allOf": [
          {
            "$ref": "#/components/schemas/StatementResponseEntryTransaction"
          }
        ]
      },
      "StatementSendTransaction": {
        "description": "Reference to a send as it appears in a statement entry.",
        "allOf": [
          {
            "$ref": "#/components/schemas/StatementResponseEntryTransaction"
          }
        ]
      },
      "StatementOutgoingWireTransferSubtype": {
        "type": "string",
        "description": "Subtype of an outgoing wire transfer statement entry.",
        "enum": [
          "redemptions",
          "returns"
        ]
      },
      "StatementOutgoingWireTransferTransaction": {
        "description": "Reference to an outgoing wire transfer as it appears in a statement entry.",
        "allOf": [
          {
            "$ref": "#/components/schemas/StatementResponseEntryTransaction"
          },
          {
            "type": "object",
            "properties": {
              "subtype": {
                "$ref": "#/components/schemas/StatementOutgoingWireTransferSubtype"
              }
            }
          }
        ]
      },
      "StatementIncomingWireTransferSubtype": {
        "type": "string",
        "description": "Subtype of an incoming wire transfer statement entry.",
        "enum": [
          "fundings"
        ]
      },
      "StatementIncomingWireTransferTransaction": {
        "description": "Reference to an incoming wire transfer as it appears in a statement entry.",
        "allOf": [
          {
            "$ref": "#/components/schemas/StatementResponseEntryTransaction"
          },
          {
            "type": "object",
            "properties": {
              "subtype": {
                "$ref": "#/components/schemas/StatementIncomingWireTransferSubtype"
              }
            }
          }
        ]
      },
      "StatementCorrespondentBankTransferSubtype": {
        "type": "string",
        "description": "Subtype of a correspondent bank transfer statement entry.",
        "enum": [
          "returns"
        ]
      },
      "StatementCorrespondentBankTransferTransaction": {
        "description": "Reference to a correspondent bank transfer as it appears in a statement entry.",
        "allOf": [
          {
            "$ref": "#/components/schemas/StatementResponseEntryTransaction"
          },
          {
            "type": "object",
            "properties": {
              "subtype": {
                "$ref": "#/components/schemas/StatementCorrespondentBankTransferSubtype"
              }
            }
          }
        ]
      },
      "StatementFeeTransaction": {
        "description": "Reference to a fee transaction as it appears in a statement entry.",
        "allOf": [
          {
            "$ref": "#/components/schemas/StatementResponseEntryTransaction"
          },
          {
            "type": "object",
            "properties": {
              "subtype": {
                "$ref": "#/components/schemas/FeeSubtype"
              }
            }
          }
        ]
      },
      "SystemTransactionSubtype": {
        "type": "string",
        "description": "The specific kind of system-generated transaction.",
        "enum": [
          "account_closures",
          "chargebacks_represented",
          "chargebacks_won",
          "manual_auth_expiries",
          "negative_card_balances",
          "balance_adjustments",
          "lost_stolen_replacement_balance_transfers"
        ]
      },
      "StatementSystemTransaction": {
        "description": "Reference to a system-generated transaction as it appears in a statement entry.",
        "allOf": [
          {
            "$ref": "#/components/schemas/StatementResponseEntryTransaction"
          },
          {
            "type": "object",
            "properties": {
              "subtype": {
                "$ref": "#/components/schemas/SystemTransactionSubtype"
              }
            }
          }
        ]
      },
      "DigitalWalletType": {
        "type": "string",
        "description": "The digital wallet type.",
        "enum": [
          "GOOGLE_PAY",
          "APPLE_PAY",
          "MERCHANT_TOKEN"
        ]
      },
      "MerchantCounterparty": {
        "type": "object",
        "required": [
          "name"
        ],
        "description": "Counterparty for a card transaction — a merchant.",
        "properties": {
          "name": {
            "description": "The name of the merchant.",
            "type": "string",
            "example": "Coffee Corner"
          },
          "id": {
            "description": "The unique merchant identifier.",
            "type": "string",
            "example": "MID123456"
          },
          "categoryCode": {
            "description": "The ISO 18245 merchant category code.",
            "type": "string",
            "example": "5812"
          },
          "country": {
            "description": "ISO 3166-1 alpha-2 country code of the merchant terminal.",
            "type": "string",
            "example": "GB"
          },
          "digitalWalletTypeUsed": {
            "description": "The digital wallet (if any) used to initiate the card transaction at the merchant.",
            "allOf": [
              {
                "$ref": "#/components/schemas/DigitalWalletType"
              }
            ]
          }
        }
      },
      "InstrumentCounterparty": {
        "type": "object",
        "required": [
          "id",
          "type"
        ],
        "description": "Counterparty that is an internal platform instrument (managed account, managed card).",
        "properties": {
          "id": {
            "description": "The unique identifier of the counterparty instrument.",
            "type": "string",
            "pattern": "^[0-9]+$",
            "example": "123456789"
          },
          "type": {
            "$ref": "#/components/schemas/InstrumentType"
          },
          "friendlyName": {
            "description": "The friendly name of the counterparty instrument.",
            "type": "string",
            "example": "Main GBP account"
          },
          "owner": {
            "description": "The identity that owns the counterparty instrument.",
            "type": "object",
            "properties": {
              "id": {
                "description": "The identity identifier.",
                "type": "string",
                "pattern": "^[0-9]+$",
                "example": "123456789"
              },
              "type": {
                "description": "The type of identity.",
                "type": "string",
                "enum": [
                  "consumers",
                  "corporates"
                ]
              },
              "name": {
                "description": "The name of the identity.",
                "type": "string",
                "example": "Alex Smith"
              }
            }
          }
        }
      },
      "BankAccountCounterparty": {
        "type": "object",
        "description": "Counterparty that is a bank account (for wire transfers).",
        "properties": {
          "name": {
            "description": "The beneficiary or sender name.",
            "type": "string",
            "example": "Alex Smith"
          },
          "iban": {
            "description": "The IBAN of the bank account (SEPA/SWIFT).",
            "type": "string",
            "example": "GB29NWBK60161331926819"
          },
          "sortCode": {
            "description": "The UK sort code of the bank account (FasterPayments).",
            "type": "string",
            "example": "601613"
          },
          "accountNumber": {
            "description": "The UK account number of the bank account (FasterPayments).",
            "type": "string",
            "example": "31926819"
          },
          "bic": {
            "description": "The BIC/SWIFT code of the bank (SEPA/SWIFT).",
            "type": "string",
            "example": "NWBKGB2L"
          },
          "bankCode": {
            "description": "Deprecated: legacy overloaded field carrying either the BIC or the sort code. Prefer bic/sortCode on new integrations.",
            "type": "string",
            "example": "NWBKGB2L"
          },
          "reference": {
            "description": "The sender or beneficiary reference.",
            "type": "string",
            "example": "Invoice 1042"
          }
        }
      },
      "FeeSummary": {
        "type": "object",
        "required": [
          "id",
          "type",
          "amount"
        ],
        "properties": {
          "id": {
            "description": "Identifier of the fee — same value used as entryId on the corresponding fees-type entry, and as the fee transaction id in the Transaction Activity API.",
            "type": "string",
            "pattern": "^[0-9]+$",
            "example": "123456789"
          },
          "type": {
            "description": "Always `fees`. Aligns with the top-level transaction type.",
            "type": "string",
            "enum": [
              "fees"
            ]
          },
          "amount": {
            "description": "Fee amount in the instrument's currency.",
            "allOf": [
              {
                "$ref": "#/components/schemas/CurrencyAmount"
              }
            ]
          },
          "subtype": {
            "description": "Categorizes the fee — derived from the parent transaction type.",
            "allOf": [
              {
                "$ref": "#/components/schemas/FeeSubtype"
              }
            ]
          }
        }
      },
      "TransactionForex": {
        "type": "object",
        "description": "Foreign exchange details when the transaction involved currency conversion.",
        "properties": {
          "originalAmount": {
            "description": "The original amount in the source or merchant currency before conversion.",
            "allOf": [
              {
                "$ref": "#/components/schemas/CurrencyAmount"
              }
            ]
          },
          "exchangeRate": {
            "description": "The exchange rate applied to the conversion.",
            "allOf": [
              {
                "$ref": "#/components/schemas/ScaledAmount"
              }
            ]
          },
          "paddingAmount": {
            "description": "The forex padding amount held during authorization.",
            "allOf": [
              {
                "$ref": "#/components/schemas/CurrencyAmount"
              }
            ]
          },
          "feeAmount": {
            "description": "The forex markup fee amount.",
            "allOf": [
              {
                "$ref": "#/components/schemas/CurrencyAmount"
              }
            ]
          }
        }
      },
      "StatementResponseEntryExecutingAccessInstrument": {
        "type": "object",
        "required": [
          "id",
          "type"
        ],
        "description": "The access instrument that initiated the transaction. The concrete shape is identified by the `type` discriminator.",
        "discriminator": {
          "propertyName": "type",
          "mapping": {
            "managed_cards": "#/components/schemas/CardAccessInstrument",
            "ibans": "#/components/schemas/IbanAccessInstrument"
          }
        },
        "properties": {
          "id": {
            "description": "The unique identifier of the access instrument.",
            "type": "string",
            "pattern": "^[0-9]+$",
            "example": "123456789"
          },
          "type": {
            "$ref": "#/components/schemas/AccessInstrumentType"
          }
        }
      },
      "CardAccessInstrument": {
        "description": "An access instrument that is a managed card (e.g. a debit-mode card initiating a transaction on its parent managed account).",
        "allOf": [
          {
            "$ref": "#/components/schemas/StatementResponseEntryExecutingAccessInstrument"
          },
          {
            "type": "object",
            "properties": {
              "friendlyName": {
                "description": "The friendly name of the card.",
                "type": "string",
                "example": "Travel card"
              },
              "cardBrand": {
                "description": "The card brand (e.g. VISA, MASTERCARD).",
                "type": "string",
                "example": "VISA"
              },
              "cardNumberFirstSix": {
                "description": "The first six digits of the card number.",
                "type": "string",
                "example": "453201"
              },
              "cardNumberLastFour": {
                "description": "The last four digits of the card number.",
                "type": "string",
                "example": "0366"
              }
            }
          }
        ]
      },
      "IbanAccessInstrument": {
        "description": "An access instrument that is an IBAN attached to a managed account.",
        "allOf": [
          {
            "$ref": "#/components/schemas/StatementResponseEntryExecutingAccessInstrument"
          },
          {
            "type": "object",
            "properties": {
              "friendlyName": {
                "description": "The friendly name of the access instrument.",
                "type": "string",
                "example": "Main GBP account"
              },
              "handle": {
                "description": "The IBAN or account number.",
                "type": "string",
                "example": "GB29NWBK60161331926819"
              }
            }
          }
        ]
      },
      "StatementResponseEntry": {
        "type": "object",
        "required": [
          "entryId",
          "balanceAdjustment",
          "balanceAfter",
          "timestamp",
          "transaction"
        ],
        "description": "A single entry in an instrument statement. Each entry represents a posted transaction\nthat caused the actual balance of the instrument to change.\n",
        "properties": {
          "entryId": {
            "type": "string",
            "pattern": "^[0-9]+$",
            "description": "The unique identifier of this statement entry.",
            "example": "123456789"
          },
          "transaction": {
            "$ref": "#/components/schemas/StatementResponseEntryTransaction"
          },
          "description": {
            "type": "string",
            "maxLength": 255,
            "description": "Human-readable description or reference for the entry.",
            "example": "Invoice 1042"
          },
          "timestamp": {
            "type": "integer",
            "format": "int64",
            "description": "When the transaction was posted to the statement, expressed in Epoch timestamp using millisecond precision.",
            "example": 1786118400000
          },
          "balanceAdjustment": {
            "description": "The amount credited (positive) or debited (negative) on the actual balance of the instrument.",
            "allOf": [
              {
                "$ref": "#/components/schemas/CurrencyAmount"
              }
            ]
          },
          "balanceAfter": {
            "description": "The balance of the instrument after this entry was posted.",
            "allOf": [
              {
                "$ref": "#/components/schemas/CurrencyAmount"
              }
            ]
          },
          "counterparty": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/MerchantCounterparty"
              },
              {
                "$ref": "#/components/schemas/InstrumentCounterparty"
              },
              {
                "$ref": "#/components/schemas/BankAccountCounterparty"
              }
            ]
          },
          "fee": {
            "$ref": "#/components/schemas/FeeSummary"
          },
          "forex": {
            "$ref": "#/components/schemas/TransactionForex"
          },
          "relatedEntryId": {
            "type": "string",
            "pattern": "^[0-9]+$",
            "description": "The ID of a related statement entry (e.g. a fee entry linked to its parent transaction entry).",
            "example": "987654321"
          },
          "executingAccessInstrument": {
            "$ref": "#/components/schemas/StatementResponseEntryExecutingAccessInstrument"
          }
        }
      },
      "StatementResponse": {
        "type": "object",
        "description": "A financial statement for an instrument over a given period. Contains only posted/completed\ntransactions where funds have definitively moved (actual balance changed).\nRepeated requests for the same period return the same result.\n",
        "properties": {
          "openingBalance": {
            "description": "The balance of the instrument at the start of the statement period.",
            "allOf": [
              {
                "$ref": "#/components/schemas/CurrencyAmount"
              }
            ]
          },
          "closingBalance": {
            "description": "The balance of the instrument at the end of the statement period.",
            "allOf": [
              {
                "$ref": "#/components/schemas/CurrencyAmount"
              }
            ]
          },
          "entries": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/StatementResponseEntry"
            }
          },
          "count": {
            "type": "integer",
            "format": "int32",
            "description": "The total number of entries matching the filter criteria.",
            "example": 42
          },
          "responseCount": {
            "type": "integer",
            "format": "int32",
            "description": "The number of entries returned in this response.",
            "example": 10
          },
          "footer": {
            "type": "string",
            "description": "Regulatory and card scheme footer text for the statement.",
            "example": "Statement generated for information purposes only."
          }
        }
      },
      "TransactionActivityType": {
        "type": "string",
        "description": "The type of transaction:\n  - transfers: Internal transfer between instruments of the same identity\n  - sends: Transfer between instruments of different identities\n  - outgoing_wire_transfers: Wire transfer to an external bank account\n  - correspondent_bank_transfers: Wire transfer on behalf of a third-party originator\n  - incoming_wire_transfers: Wire transfer received from an external bank account\n  - card_payments: Card payment (purchase, refund, OCT, etc.) with full lifecycle\n  - fees: Fee charged or reversed on an instrument\n  - system_transactions: System-generated transactions (balance adjustments, account closures, dispute outcomes, etc.)\n",
        "enum": [
          "transfers",
          "sends",
          "outgoing_wire_transfers",
          "correspondent_bank_transfers",
          "incoming_wire_transfers",
          "card_payments",
          "fees",
          "system_transactions"
        ]
      },
      "TransactionActivityStatus": {
        "type": "string",
        "description": "Normalized lifecycle status of a transaction:\n  - DRAFT: Transaction ID has been created. There are additional user-actions required before the transaction is considered an “executable instruction” that is fully submitted. No balance movements have taken place on the target instrument yet.\n  - SUBMITTED: Transaction has been submitted and is awaiting processing. No balance movements have taken place yet. Transactions scheduled for processing on a future date remain in a submitted status.\n  - PROCESSING: The submitted transaction is being processed.\n  - COMPLETED: Executed and processed. Funds have moved, actual balance changed.\n  - CANCELLED: Transaction was canceled before completion. Funds have been returned to the original instrument. \n  - RETURNED: The transaction was previously COMPLETED but has been returned. Funds have been returned to the original instrument. Note that card refunds may be separate transactions, not RETURNED purchases.\n",
        "enum": [
          "DRAFT",
          "SUBMITTED",
          "PROCESSING",
          "COMPLETED",
          "CANCELLED",
          "RETURNED"
        ]
      },
      "TransactionActivityDirection": {
        "type": "string",
        "description": "Whether funds were credited to or debited from the instrument.",
        "enum": [
          "CREDIT",
          "DEBIT"
        ]
      },
      "TransactionActivitySortBy": {
        "type": "string",
        "description": "The field to sort transaction activity results by:\n  - creationTimestamp: Sort by when the transaction was first created (default).\n  - lastUpdatedTimestamp: Sort by when the transaction was most recently updated.\n",
        "enum": [
          "creationTimestamp",
          "lastUpdatedTimestamp"
        ]
      },
      "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.",
        "example": "1786118401250"
      },
      "TransactionCancellationReason": {
        "type": "string",
        "pattern": "^[ a-zA-Z0-9_-]+$",
        "maxLength": 50,
        "description": "The reason the scheduled transaction was canceled.",
        "example": "Payment no longer required"
      },
      "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.",
            "example": "123456789"
          },
          "profileId": {
            "$ref": "#/components/schemas/ProfileId"
          },
          "tag": {
            "$ref": "#/components/schemas/Tag"
          },
          "source": {
            "description": "The source managed account or card from where the funds were transferred.",
            "allOf": [
              {
                "$ref": "#/components/schemas/InstrumentId"
              }
            ]
          },
          "destination": {
            "description": "The destination managed account or card to where the funds were transferred.",
            "allOf": [
              {
                "$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.",
            "allOf": [
              {
                "$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.",
            "example": "Invoice 1042"
          },
          "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.",
            "example": 1786118400000
          },
          "scheduledTimestamp": {
            "$ref": "#/components/schemas/ScheduledTimestamp"
          },
          "executionTimestamp": {
            "$ref": "#/components/schemas/ExecutionTimestamp"
          },
          "cancellationReason": {
            "$ref": "#/components/schemas/TransactionCancellationReason"
          }
        },
        "example": {
          "id": "2468013579",
          "profileId": "10001",
          "tag": "invoice-2026-0042",
          "source": {
            "type": "managed_accounts",
            "id": "123456789"
          },
          "destination": {
            "type": "managed_accounts",
            "id": "987654321"
          },
          "destinationAmount": {
            "currency": "GBP",
            "amount": 1250
          },
          "description": "Invoice 2026-0042",
          "state": "COMPLETED",
          "creationTimestamp": 1786118400000,
          "executionTimestamp": "1786118401250"
        }
      },
      "SendState": {
        "type": "string",
        "description": "The state of the send transaction, as follows:\n - INVALID: The send transaction has failed initial validation checks. \n - INITIALISED: The initial state of a send transaction when SCA is not required.\n - PENDING_CHALLENGE: The send transaction requires the completion of a transaction confirmation challenge before it can be submitted.\n - PENDING: The send transaction has exceeded the destination limit and is pending treasury approval.\n - APPROVED: The send transaction that was submitted has been approved.\n - COMPLETED: The requested funds have been sent from the source instrument.\n - REJECTED: The send transaction that was submitted was rejected.\n - FAILED: There was an issue with the send transaction, and the transaction has failed.\n - RETURNED: The send transaction has been returned to the sender.\n - SCHEDULED: The send transaction will be executed at the scheduled time.\n - CANCELLED: The scheduled send transaction has been canceled.\n",
        "enum": [
          "INVALID",
          "INITIALISED",
          "COMPLETED",
          "REJECTED",
          "FAILED",
          "PENDING",
          "PENDING_CHALLENGE",
          "APPROVED",
          "RETURNED",
          "SCHEDULED",
          "CANCELLED"
        ]
      },
      "ChallengeExemptionReason": {
        "type": "string",
        "enum": [
          "LOW_VALUE",
          "TRUSTED_BENEFICIARY"
        ],
        "description": "The Reason the transaction was exempted from SCA verification"
      },
      "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.",
            "example": "123456789"
          },
          "profileId": {
            "$ref": "#/components/schemas/ProfileId"
          },
          "tag": {
            "$ref": "#/components/schemas/Tag"
          },
          "source": {
            "description": "The source managed account or card from where the funds were sent.",
            "allOf": [
              {
                "$ref": "#/components/schemas/InstrumentId"
              }
            ]
          },
          "sourceFee": {
            "description": "The fee applied to the source.",
            "allOf": [
              {
                "$ref": "#/components/schemas/CurrencyAmount"
              }
            ]
          },
          "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.",
            "allOf": [
              {
                "$ref": "#/components/schemas/CurrencyAmount"
              }
            ]
          },
          "destinationFee": {
            "description": "The fee applied to the destination.",
            "allOf": [
              {
                "$ref": "#/components/schemas/CurrencyAmount"
              }
            ]
          },
          "transactionAmount": {
            "description": "The original transaction amount before any fees were deducted.",
            "allOf": [
              {
                "$ref": "#/components/schemas/CurrencyAmount"
              }
            ]
          },
          "description": {
            "type": "string",
            "description": "The description details that are passed to the beneficiary.",
            "maxLength": 255,
            "pattern": "^[a-zA-Z0-9\\/\\-?:().$_,'+\\s#=!\"%&*<>;\\{@\\r\\n]*$",
            "example": "Invoice 1042"
          },
          "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.",
            "example": 1786118400000
          },
          "scheduledTimestamp": {
            "$ref": "#/components/schemas/ScheduledTimestamp"
          },
          "executionTimestamp": {
            "$ref": "#/components/schemas/ExecutionTimestamp"
          },
          "cancellationReason": {
            "$ref": "#/components/schemas/TransactionCancellationReason"
          }
        }
      },
      "OutgoingWireTransferType": {
        "type": "string",
        "description": "The wire transfer rails used, from SEPA, Faster Payments, SWIFT or RIX.",
        "enum": [
          "SEPA",
          "FASTER_PAYMENTS",
          "SWIFT",
          "RIX"
        ]
      },
      "OutgoingWireTransferState": {
        "description": "The state of the Outgoing wire transfer transaction, as follows:\n  - INVALID: The wire transfer has failed initial validation checks.\n  - PENDING_CHALLENGE: The wire transfer requires the completion of a transaction confirmation challenge before it can be submitted.\n  - SUBMITTED: The wire transfer has been submitted to the sending financial institution for processing.\n  - REJECTED: The wire transfer that was submitted was rejected.\n  - APPROVED: The wire transfer that was submitted has been approved and is being processed by the sending financial institution.\n  - FAILED: There was an issue with the wire transfer, and the transaction has failed.\n  - COMPLETED: The requested funds have been sent from the source instrument.\n  - RETURNED: The wire transfer has been returned to the sender.\n  - SCHEDULED: The wire transfer will be executed at the scheduled time.\n  - CANCELLED: The scheduled wire transfer has been canceled.\n  - PENDING_CONFIRMATION: The wire transfer requires a manual confirmation by the user before proceeding.\n",
        "type": "string",
        "enum": [
          "INVALID",
          "PENDING_CHALLENGE",
          "SUBMITTED",
          "REJECTED",
          "APPROVED",
          "FAILED",
          "COMPLETED",
          "RETURNED",
          "SCHEDULED",
          "DEFERRED",
          "CANCELLED",
          "PENDING_CONFIRMATION"
        ],
        "x-hidden-enum-values": [
          "DEFERRED"
        ]
      },
      "OutgoingWireTransferRejectedInfo": {
        "description": "Additional info when the outgoing wire transfer has been rejected, as follows:\n  - SYSTEM: The wire transfer was rejected by the system.\n  - USER: The wire transfer was rejected by the user.\n",
        "type": "string",
        "enum": [
          "SYSTEM",
          "USER"
        ]
      },
      "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",
              "NOT_POSSIBLE"
            ]
          },
          "reasonCode": {
            "type": "string",
            "description": "The reason why the matching failed at the UK Confirmation of Payee responder:\n\n  - ANNM: The CoP responder confirms that the account `name` provided does not match;\n  - 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;\n  - 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;\n  - 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;\n  - 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;\n  - 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;\n  - AC01: The account does not exist in the CoP responders books, the `accountNumber` specified is likely incorrect; \n  - IVCR: The CoP responder was unable to locate an account based on the `secondaryReference` field;\n  - ACNS: The account is not supported for CoP by the CoP responder;\n  - OPTO: The owner of the account has opted out of CoP service by the CoP responder;\n  - CASS: The account has been switched using the Current Account Switch Service;\n  - SCNS: The `sortCode` provided is not supported at endpoint;\n",
            "enum": [
              "ANNM",
              "MBAM",
              "BANM",
              "PANM",
              "BAMM",
              "PAMM",
              "AC01",
              "IVCR",
              "ACNS",
              "OPTO",
              "CASS",
              "SCNS"
            ]
          },
          "accountName": {
            "type": "string",
            "description": "CoP: Returned when the `match` is a `CLOSE_MATCH` and the `reasonCode` is MBAM, BAMM or PAMM\nVoP: Returned when the `match` is a `CLOSE_MATCH`\n",
            "example": "Alex J Smith"
          }
        }
      },
      "SEPAVerificationOfPayeeResult": {
        "type": "object",
        "required": [
          "match"
        ],
        "properties": {
          "match": {
            "type": "string",
            "description": "The result of the SEPA Verification of Payee check performed by the responding PSP.",
            "enum": [
              "MATCH",
              "NO_MATCH",
              "CLOSE_MATCH",
              "NOT_POSSIBLE"
            ]
          },
          "accountName": {
            "type": "string",
            "description": "The name of the account holder as registered with the responding PSP.\nReturned when the match result is CLOSE_MATCH to help the payer verify the payee.\n",
            "example": "Alex Smith"
          }
        }
      },
      "OutgoingWireTransferValidationOutcome": {
        "type": "object",
        "required": [
          "category",
          "categoryResult"
        ],
        "properties": {
          "category": {
            "type": "string",
            "enum": [
              "UK_CONFIRMATION_OF_PAYEE",
              "SEPA_VERIFICATION_OF_PAYEE"
            ]
          },
          "categoryResult": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/UKConfirmationOfPayeeResult"
              },
              {
                "$ref": "#/components/schemas/SEPAVerificationOfPayeeResult"
              }
            ]
          }
        }
      },
      "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.",
            "example": "123456789"
          },
          "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]+$",
                "example": "123456789"
              }
            }
          },
          "transferAmount": {
            "description": "The amount, in same currency as source and destination, that was transferred from the source.",
            "allOf": [
              {
                "$ref": "#/components/schemas/CurrencyAmount"
              }
            ]
          },
          "fee": {
            "description": "The fee charged on this outgoing wire transfer. Omitted when no fee was charged.",
            "allOf": [
              {
                "$ref": "#/components/schemas/CurrencyAmount"
              }
            ]
          },
          "purpose": {
            "type": "string",
            "maxLength": 255,
            "description": "The purpose of the payment.",
            "example": "Invoice payment"
          },
          "description": {
            "maxLength": 50,
            "type": "string",
            "description": " Transaction description.",
            "example": "Invoice 1042"
          },
          "type": {
            "$ref": "#/components/schemas/OutgoingWireTransferType"
          },
          "destination": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/OutgoingWireTransferBeneficiary"
              },
              {
                "$ref": "#/components/schemas/SEPABeneficiary"
              },
              {
                "$ref": "#/components/schemas/SWIFTBeneficiary"
              },
              {
                "$ref": "#/components/schemas/RIXBeneficiary"
              },
              {
                "$ref": "#/components/schemas/FasterPaymentsBeneficiary"
              },
              {
                "$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.",
            "example": 1786118400000
          },
          "scheduledTimestamp": {
            "$ref": "#/components/schemas/ScheduledTimestamp"
          },
          "executionTimestamp": {
            "$ref": "#/components/schemas/ExecutionTimestamp"
          },
          "cancellationReason": {
            "$ref": "#/components/schemas/TransactionCancellationReason"
          },
          "validationOutcomes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/OutgoingWireTransferValidationOutcome"
            }
          }
        }
      },
      "CorrespondentBankingBankAccountDetails": {
        "required": [
          "account",
          "financialInstitution"
        ],
        "type": "object",
        "description": "Bank account details for the originator.",
        "properties": {
          "account": {
            "type": "string",
            "minLength": 1,
            "maxLength": 34,
            "pattern": "^[a-zA-Z0-9]{1,34}$",
            "description": "Can be either an account number or an International Bank Account Number (IBAN).",
            "example": "GB29NWBK60161331926819"
          },
          "financialInstitution": {
            "type": "string",
            "minLength": 8,
            "maxLength": 11,
            "pattern": "^[a-zA-Z0-9]{8,11}$",
            "description": "Bank Identifier Code (BIC) of the originator's financial institution.",
            "example": "NWBKGB2L"
          }
        }
      },
      "CorrespondentBankingIndividualAddressAndIdInfo": {
        "required": [
          "documentType",
          "documentNumber"
        ],
        "type": "object",
        "description": "Personal identification for an individual originator.",
        "properties": {
          "documentType": {
            "type": "string",
            "enum": [
              "NATIONAL_ID",
              "PASSPORT",
              "TAX_ID",
              "OTHER"
            ],
            "description": "Type of personal identification document."
          },
          "documentNumber": {
            "type": "string",
            "maxLength": 35,
            "description": "Personal identification document number.",
            "example": "123456789"
          }
        }
      },
      "CorrespondentBankingIndividualAddressAndBirthInfo": {
        "required": [
          "dateOfBirth",
          "placeOfBirth"
        ],
        "type": "object",
        "description": "Birth information for an individual originator.",
        "properties": {
          "dateOfBirth": {
            "type": "string",
            "format": "date",
            "description": "Date of birth in YYYY-MM-DD format.",
            "example": "1990-01-01"
          },
          "placeOfBirth": {
            "type": "string",
            "maxLength": 140,
            "description": "Place of birth - city and country.",
            "example": "London, GB"
          }
        }
      },
      "CorrespondentBankingIndividualOriginator": {
        "required": [
          "name",
          "address",
          "country",
          "bankAccountDetails"
        ],
        "type": "object",
        "description": "An individual (natural person) originator of the transfer.\n\nTravel Rule Requirements:\n- Mandatory: Full name and account number (via bankAccountDetails)\n- Mandatory: At least one supplementary information type (address + birth details, or address + official ID)\n",
        "properties": {
          "tag": {
            "$ref": "#/components/schemas/Tag"
          },
          "name": {
            "type": "string",
            "maxLength": 140,
            "description": "Full name of the individual as documented on official ID.",
            "example": "Alex Smith"
          },
          "address": {
            "type": "string",
            "maxLength": 255,
            "description": "Full residential address of the individual.",
            "example": "1 High Street, London W1A 1AA"
          },
          "country": {
            "type": "string",
            "minLength": 2,
            "maxLength": 2,
            "pattern": "^[A-Z]{2}$",
            "description": "ISO 3166-1 alpha-2 country code.",
            "example": "GB"
          },
          "bankAccountDetails": {
            "allOf": [
              {
                "$ref": "#/components/schemas/CorrespondentBankingBankAccountDetails"
              }
            ],
            "description": "Account and financial institution details of the originator (travel rule mandatory)."
          },
          "supplementaryInformation": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/CorrespondentBankingIndividualAddressAndIdInfo"
              },
              {
                "$ref": "#/components/schemas/CorrespondentBankingIndividualAddressAndBirthInfo"
              }
            ]
          }
        }
      },
      "CorrespondentBankingBusinessAddressAndIdInfo": {
        "required": [
          "documentType",
          "documentNumber"
        ],
        "type": "object",
        "description": "Business identification for a business originator.",
        "properties": {
          "documentType": {
            "type": "string",
            "enum": [
              "LEI",
              "REGISTRATION_NUMBER",
              "TAX_ID",
              "OTHER"
            ],
            "description": "Type of business identification document."
          },
          "documentNumber": {
            "type": "string",
            "maxLength": 35,
            "description": "Business identification document number (e.g. LEI code, company registration number).",
            "example": "5493001KJTIIGC8Y1R12"
          }
        }
      },
      "CorrespondentBankingBusinessOriginator": {
        "required": [
          "name",
          "registrationAddress",
          "registrationCountry",
          "bankAccountDetails"
        ],
        "type": "object",
        "description": "A business (legal entity) originator of the transfer.\n\nTravel Rule Requirements:\n- Mandatory: Full legal name and account number (via bankAccountDetails)\n- Mandatory: Registered address and business identification (LEI, registration number, or tax ID)\n",
        "properties": {
          "tag": {
            "$ref": "#/components/schemas/Tag"
          },
          "name": {
            "type": "string",
            "maxLength": 140,
            "description": "Full legal name of the business entity.",
            "example": "Acme Ltd"
          },
          "registrationAddress": {
            "type": "string",
            "maxLength": 255,
            "description": "Registered address of the business entity.",
            "example": "1 High Street, London W1A 1AA"
          },
          "registrationCountry": {
            "type": "string",
            "minLength": 2,
            "maxLength": 2,
            "pattern": "^[A-Z]{2}$",
            "description": "ISO 3166-1 alpha-2 country code of registration.",
            "example": "GB"
          },
          "bankAccountDetails": {
            "allOf": [
              {
                "$ref": "#/components/schemas/CorrespondentBankingBankAccountDetails"
              }
            ],
            "description": "Account and financial institution details of the originator (travel rule mandatory)."
          },
          "supplementaryInformation": {
            "$ref": "#/components/schemas/CorrespondentBankingBusinessAddressAndIdInfo"
          }
        }
      },
      "CorrespondentBankingSEPABeneficiary": {
        "required": [
          "name",
          "iban",
          "address"
        ],
        "type": "object",
        "description": "CBT-specific beneficiary details for SEPA/IBAN wire transfers with Banking Circle FI-to-FI field limits.",
        "properties": {
          "name": {
            "type": "string",
            "minLength": 1,
            "maxLength": 35,
            "description": "The beneficiary's full name. >= 1 character and <= 35 characters.\nAn extended character set is accepted to cater for all European languages.\nIf SEPA does not support a particular character, it is automatically\nconverted to an acceptable alternative, in line with SEPA scheme guidance.\n",
            "example": "Alex Smith"
          },
          "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.",
            "example": "GB29NWBK60161331926819"
          },
          "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 (Bank Identifier Code) for wire transfer over SEPA.",
            "example": "NWBKGB2L"
          },
          "address": {
            "maxLength": 105,
            "minLength": 1,
            "type": "string",
            "description": "The beneficiary's address. Required for correspondent banking transfers.\nMaximum 105 characters (split into 3x35-char lines by the provider).\n",
            "example": "1 High Street, London W1A 1AA"
          },
          "bankName": {
            "type": "string",
            "maxLength": 150,
            "description": "The beneficiary's bank name.",
            "example": "National Westminster Bank PLC"
          },
          "bankAddress": {
            "maxLength": 150,
            "minLength": 1,
            "type": "string",
            "description": "The beneficiary's bank address.",
            "example": "250 Bishopsgate, London EC2M 4AA"
          },
          "bankCountry": {
            "type": "string",
            "description": "The beneficiary's bank country in ISO 3166 alpha-2 format.",
            "maxLength": 2,
            "minLength": 2,
            "pattern": "^[A-Z]{2}$",
            "example": "GB"
          },
          "nationality": {
            "$ref": "#/components/schemas/Nationality"
          },
          "dateOfBirth": {
            "$ref": "#/components/schemas/DateOfBirth"
          }
        }
      },
      "CorrespondentBankingRIXBeneficiary": {
        "required": [
          "name",
          "iban",
          "address"
        ],
        "type": "object",
        "description": "CBT-specific beneficiary details for RIX wire transfers with Banking Circle FI-to-FI field limits.",
        "properties": {
          "name": {
            "type": "string",
            "minLength": 1,
            "maxLength": 35,
            "description": "The beneficiary's full name. >= 1 character and <= 35 characters.\nAn extended character set is accepted to cater for all European languages.\nIf RIX does not support a particular character, it is automatically\nconverted to an acceptable alternative.\n",
            "example": "Alex Smith"
          },
          "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 RIX.",
            "example": "GB29NWBK60161331926819"
          },
          "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 (Bank Identifier Code) for wire transfer over RIX.",
            "example": "NWBKGB2L"
          },
          "address": {
            "maxLength": 105,
            "minLength": 1,
            "type": "string",
            "description": "The beneficiary's address. Required for correspondent banking transfers.\nMaximum 105 characters (split into 3x35-char lines by the provider).\n",
            "example": "1 High Street, London W1A 1AA"
          },
          "bankName": {
            "type": "string",
            "maxLength": 150,
            "description": "The beneficiary's bank name.",
            "example": "National Westminster Bank PLC"
          },
          "bankAddress": {
            "maxLength": 150,
            "minLength": 1,
            "type": "string",
            "description": "The beneficiary's bank address.",
            "example": "250 Bishopsgate, London EC2M 4AA"
          },
          "bankCountry": {
            "type": "string",
            "description": "The beneficiary's bank country in ISO 3166 alpha-2 format.",
            "maxLength": 2,
            "minLength": 2,
            "pattern": "^[A-Z]{2}$",
            "example": "GB"
          },
          "nationality": {
            "$ref": "#/components/schemas/Nationality"
          },
          "dateOfBirth": {
            "$ref": "#/components/schemas/DateOfBirth"
          }
        }
      },
      "CorrespondentBankingFasterPaymentsBeneficiary": {
        "required": [
          "name",
          "type",
          "accountNumber",
          "sortCode",
          "address"
        ],
        "type": "object",
        "description": "CBT-specific beneficiary details for Faster Payments wire transfers with Banking Circle FI-to-FI field limits.",
        "properties": {
          "name": {
            "type": "string",
            "minLength": 1,
            "maxLength": 35,
            "pattern": "^[a-zA-Z0-9\\/\\-?:().,'+\\s#=!\"%&*<>;\\{@\\r\\n]*$",
            "description": "The beneficiary's full name. >= 1 character and <= 35 characters.\nNote: the ' symbol is the unicode value U+2019 (right single quotation mark)\nand not the unicode value U+0027 (apostrophe).\n",
            "example": "Alex Smith"
          },
          "type": {
            "type": "string",
            "description": "The type of beneficiary account. Required for Faster Payments.",
            "enum": [
              "PERSONAL",
              "BUSINESS"
            ]
          },
          "accountNumber": {
            "type": "string",
            "pattern": "^[0-9]{8}$",
            "description": "Account number, required for wire transfer over Faster Payments.",
            "example": "31926819"
          },
          "sortCode": {
            "type": "string",
            "pattern": "^[0-9]{6}$",
            "description": "Sort code, required for wire transfer over Faster Payments.",
            "example": "601613"
          },
          "secondaryReference": {
            "type": "string",
            "description": "Optional secondary reference for accounts without unique sort codes.",
            "example": "0012345678"
          },
          "address": {
            "maxLength": 105,
            "minLength": 1,
            "type": "string",
            "description": "The beneficiary's address. Required for correspondent banking transfers.\nMaximum 105 characters (split into 3x35-char lines by the provider).\n",
            "example": "1 High Street, London W1A 1AA"
          },
          "bankName": {
            "type": "string",
            "maxLength": 150,
            "description": "The beneficiary's bank name.",
            "example": "National Westminster Bank PLC"
          },
          "bankAddress": {
            "maxLength": 150,
            "minLength": 1,
            "type": "string",
            "description": "The beneficiary's bank address.",
            "example": "250 Bishopsgate, London EC2M 4AA"
          },
          "bankCountry": {
            "type": "string",
            "description": "The beneficiary's bank country in ISO 3166 alpha-2 format.",
            "maxLength": 2,
            "minLength": 2,
            "pattern": "^[A-Z]{2}$",
            "example": "GB"
          },
          "nationality": {
            "$ref": "#/components/schemas/Nationality"
          },
          "dateOfBirth": {
            "$ref": "#/components/schemas/DateOfBirth"
          }
        }
      },
      "CorrespondentBankingExternalData": {
        "type": "object",
        "description": "External data key-value pair.",
        "required": [
          "name",
          "value"
        ],
        "properties": {
          "name": {
            "type": "string",
            "maxLength": 50,
            "description": "Name/key of the external data.",
            "example": "invoiceNumber"
          },
          "value": {
            "type": "string",
            "maxLength": 255,
            "description": "Value of the external data.",
            "example": "INV-1042"
          }
        }
      },
      "CorrespondentBankingOwtState": {
        "description": "The state of the correspondent bank transfer transaction, as follows:\n  - INVALID: The transfer has failed initial validation checks.\n  - PENDING_CHALLENGE: The transfer requires the completion of a transaction confirmation challenge before it can be submitted.\n  - SUBMITTED: The transfer has been submitted to the sending financial institution for processing.\n  - REJECTED: The transfer that was submitted was rejected.\n  - APPROVED: The transfer that was submitted has been approved and is being processed by the sending financial institution.\n  - FAILED: There was an issue with the transfer, and the transaction has failed.\n  - COMPLETED: The requested funds have been sent from the source instrument.\n  - RETURNED: The transfer has been returned to the sender.\n  - SCHEDULED: The transfer will be executed at the scheduled time.\n  - CANCELLED: The scheduled transfer has been canceled.\n  - PENDING_CONFIRMATION: The transfer requires a manual confirmation by the user before proceeding.\n",
        "type": "string",
        "enum": [
          "INVALID",
          "PENDING_CHALLENGE",
          "SUBMITTED",
          "REJECTED",
          "APPROVED",
          "FAILED",
          "COMPLETED",
          "RETURNED",
          "SCHEDULED",
          "CANCELLED",
          "PENDING_CONFIRMATION"
        ]
      },
      "CorrespondentBankingOwtValidationOutcome": {
        "type": "object",
        "required": [
          "category",
          "categoryResult"
        ],
        "properties": {
          "category": {
            "type": "string",
            "enum": [
              "SEPA_VERIFICATION_OF_PAYEE",
              "UK_CONFIRMATION_OF_PAYEE"
            ]
          },
          "categoryResult": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/SEPAVerificationOfPayeeResult"
              },
              {
                "$ref": "#/components/schemas/UKConfirmationOfPayeeResult"
              }
            ]
          }
        }
      },
      "CorrespondentBankingOwt": {
        "required": [
          "id",
          "profileId",
          "creationTimestamp",
          "sourceInstrument",
          "amount",
          "originator",
          "beneficiary",
          "purpose",
          "state"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "pattern": "^[0-9]+$",
            "description": "The unique identifier of the Correspondent Banking OWT.",
            "example": "123456789"
          },
          "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]+$",
                "example": "123456789"
              }
            }
          },
          "amount": {
            "description": "The amount transferred.",
            "allOf": [
              {
                "$ref": "#/components/schemas/CurrencyAmount"
              }
            ]
          },
          "originator": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/CorrespondentBankingIndividualOriginator"
              },
              {
                "$ref": "#/components/schemas/CorrespondentBankingBusinessOriginator"
              }
            ]
          },
          "beneficiary": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/CorrespondentBankingSEPABeneficiary"
              },
              {
                "$ref": "#/components/schemas/CorrespondentBankingRIXBeneficiary"
              },
              {
                "$ref": "#/components/schemas/CorrespondentBankingFasterPaymentsBeneficiary"
              }
            ]
          },
          "purpose": {
            "type": "string",
            "maxLength": 255,
            "description": "The purpose of the payment.",
            "example": "Invoice payment"
          },
          "description": {
            "maxLength": 35,
            "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:\n\n`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.\n\n`Faster Payments` <= `18` characters\n",
            "example": "Invoice 1042"
          },
          "externalData": {
            "type": "array",
            "description": "Additional external data as key-value pairs.",
            "items": {
              "$ref": "#/components/schemas/CorrespondentBankingExternalData"
            }
          },
          "state": {
            "$ref": "#/components/schemas/CorrespondentBankingOwtState"
          },
          "creationTimestamp": {
            "type": "integer",
            "format": "int64",
            "description": "The time when the transaction was created, expressed in Epoch timestamp using millisecond precision.",
            "example": 1786118400000
          },
          "scheduledTimestamp": {
            "$ref": "#/components/schemas/ScheduledTimestamp"
          },
          "cancellationReason": {
            "$ref": "#/components/schemas/TransactionCancellationReason"
          },
          "validationOutcomes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CorrespondentBankingOwtValidationOutcome"
            }
          }
        }
      },
      "IncomingWireTransferMultiState": {
        "type": "string",
        "description": "The state of an incoming wire transfer:\n  - PENDING: The transfer has been received and is being processed. Funds have not yet been credited to the destination account.\n  - COMPLETED: Funds have been credited to the destination account.\n  - REJECTED: The transfer was not accepted; funds were not credited.\n",
        "enum": [
          "PENDING",
          "COMPLETED",
          "REJECTED"
        ]
      },
      "IncomingWireTransfer": {
        "type": "object",
        "required": [
          "id",
          "state",
          "amount",
          "destinationInstrument",
          "createdAt"
        ],
        "description": "An incoming wire transfer received from an external bank account.",
        "properties": {
          "id": {
            "type": "string",
            "pattern": "^[0-9]+$",
            "description": "The unique identifier of the incoming wire transfer.",
            "example": "123456789"
          },
          "profileId": {
            "$ref": "#/components/schemas/ProfileId"
          },
          "state": {
            "$ref": "#/components/schemas/IncomingWireTransferMultiState"
          },
          "amount": {
            "description": "The amount credited (or to be credited) to the destination instrument, in the instrument's currency.",
            "allOf": [
              {
                "$ref": "#/components/schemas/CurrencyAmount"
              }
            ]
          },
          "fee": {
            "description": "The fee charged on this incoming wire transfer. Omitted when no fee was charged.",
            "allOf": [
              {
                "$ref": "#/components/schemas/CurrencyAmount"
              }
            ]
          },
          "destinationInstrument": {
            "description": "The managed account (with IBAN) that received the funds.",
            "allOf": [
              {
                "$ref": "#/components/schemas/InstrumentId"
              }
            ]
          },
          "paymentNetwork": {
            "type": "string",
            "enum": [
              "SEPA",
              "FASTER_PAYMENTS",
              "SWIFT",
              "RIX",
              "BACS",
              "CHAPS",
              "TARGET"
            ],
            "description": "The payment network over which the transfer was received."
          },
          "senderName": {
            "type": "string",
            "description": "The name of the sender.",
            "example": "Alex Smith"
          },
          "senderIban": {
            "type": "string",
            "description": "The IBAN of the sender.",
            "example": "GB29NWBK60161331926819"
          },
          "senderReference": {
            "type": "string",
            "description": "The payment reference provided by the sender.",
            "example": "Invoice 1042"
          },
          "forex": {
            "$ref": "#/components/schemas/TransactionForex"
          },
          "isInstant": {
            "type": "boolean",
            "description": "Whether this was an instant payment.",
            "example": true
          },
          "createdAt": {
            "type": "integer",
            "format": "int64",
            "description": "When the IWT was received, expressed in Epoch timestamp using millisecond precision.",
            "example": 1786118400000
          },
          "executedAt": {
            "type": "integer",
            "format": "int64",
            "description": "When the IWT was settled, expressed in Epoch timestamp using millisecond precision.",
            "example": 1786118401250
          }
        }
      },
      "CardPaymentType": {
        "type": "string",
        "description": "High-level type of card payment, derived from the first event.\n\n- `PURCHASE` — standard purchase at a merchant. A purchase of zero is the check a merchant runs to prove the card is live before storing it on file: no money moves, no hold is placed, and it is `SETTLED` on arrival since nothing further will follow. If the merchant later charges the same purchase, the card payment adopts the real type and amount.\n- `REFUND` — refund from a merchant to the cardholder.\n- `ORIGINAL_CREDIT` — push credit to the cardholder (OCT).\n- `ACCOUNT_FUNDING` — load funds onto an account.\n- `CASH_WITHDRAWAL` — cash withdrawn at ATM or scheme cash service.\n- `BALANCE_INQUIRY` — non-financial balance check.\n",
        "enum": [
          "PURCHASE",
          "REFUND",
          "ORIGINAL_CREDIT",
          "ACCOUNT_FUNDING",
          "CASH_WITHDRAWAL",
          "BALANCE_INQUIRY"
        ]
      },
      "Card": {
        "type": "object",
        "required": [
          "id",
          "type"
        ],
        "description": "Information about a managed card — used wherever a card appears (the card on a card payment, or the access instrument that initiated a transaction).",
        "properties": {
          "id": {
            "type": "string",
            "pattern": "^[0-9]+$",
            "description": "The unique identifier of the managed card.",
            "example": "234567890"
          },
          "type": {
            "type": "string",
            "enum": [
              "managed_cards"
            ]
          },
          "mode": {
            "type": "string",
            "enum": [
              "prepaid",
              "debit"
            ],
            "description": "The mode the card was created in.\n  - `prepaid`: The card has its own balance and can have funds transferred to or from it.\n  - `debit`: The card has no balance of its own; it draws on its parent managed account up to a configurable spend limit.\n"
          },
          "friendlyName": {
            "type": "string",
            "description": "The friendly name chosen for the card.",
            "example": "Travel card"
          },
          "nameOnCard": {
            "type": "string",
            "description": "The cardholder name printed on the card.",
            "example": "Alex Smith"
          },
          "cardBrand": {
            "type": "string",
            "enum": [
              "MASTERCARD",
              "VISA"
            ],
            "description": "The scheme of the card. Restricted to schemes supported by card payments."
          },
          "cardNumberFirstSix": {
            "type": "string",
            "pattern": "^[0-9]{6}$",
            "description": "The first six digits of the card number (BIN range).",
            "example": "453201"
          },
          "cardNumberLastFour": {
            "type": "string",
            "pattern": "^[0-9]{4}$",
            "description": "The last four digits of the card number.",
            "example": "0366"
          },
          "linkedUserId": {
            "type": "string",
            "pattern": "^[0-9]+$",
            "description": "Identifier of the authorized user the card is assigned to. Populated only when the card has been assigned to a specific user.",
            "example": "987654321"
          },
          "parentManagedAccountId": {
            "type": "string",
            "pattern": "^[0-9]+$",
            "description": "Identifier of the managed account this card draws funds from. Populated only when `mode` is `debit`.",
            "example": "123456789"
          }
        }
      },
      "Merchant": {
        "type": "object",
        "description": "Information about a merchant — used wherever a merchant appears in card-payment flows, statement entries, and transaction activity.",
        "required": [
          "id",
          "name"
        ],
        "properties": {
          "id": {
            "type": "string",
            "description": "Merchant identifier (MID) — the acquirer-assigned code that identifies the merchant on card-scheme messages (ISO 8583 DE 42 Card Acceptor Identification Code).",
            "example": "MID123456"
          },
          "name": {
            "type": "string",
            "description": "Merchant name (DBA name).",
            "example": "Coffee Corner"
          },
          "nameOther": {
            "type": "string",
            "description": "Alternative merchant name as supplied by the card network, when present.",
            "example": "Coffee Corner Ltd"
          },
          "networkId": {
            "type": "string",
            "description": "Identifier assigned by the acquirer or scheme to the merchant.",
            "example": "NET123456"
          },
          "categoryCode": {
            "type": "string",
            "description": "ISO 18245 merchant category code (MCC).",
            "example": "5812"
          },
          "description": {
            "type": "string",
            "description": "Free-text description of the merchant.",
            "example": "Coffee shop"
          },
          "street": {
            "type": "string",
            "description": "Street address of the merchant terminal.",
            "example": "1 High Street"
          },
          "city": {
            "type": "string",
            "description": "City of the merchant terminal.",
            "example": "London"
          },
          "state": {
            "type": "string",
            "description": "Subdivision (state, province, region) of the merchant terminal.",
            "example": "Greater London"
          },
          "postalCode": {
            "type": "string",
            "description": "Postal code of the merchant terminal.",
            "example": "W1A 1AA"
          },
          "country": {
            "type": "string",
            "description": "ISO 3166-1 alpha-2 country code of the merchant terminal.",
            "example": "GB"
          },
          "telephone": {
            "type": "string",
            "description": "Merchant telephone.",
            "example": "+442079460000"
          },
          "url": {
            "type": "string",
            "description": "Merchant website.",
            "example": "https://www.coffeecorner.example"
          },
          "contact": {
            "type": "string",
            "description": "Merchant contact (name or email of a representative, when present).",
            "example": "info@coffeecorner.example"
          },
          "reference": {
            "type": "string",
            "description": "Merchant-supplied reference for the transaction (the merchant's own identifier for what they billed).",
            "example": "ORD-20260803-0001"
          },
          "logoUrl": {
            "type": "string",
            "description": "Merchant logo URL, when available.",
            "example": "https://www.coffeecorner.example/logo.png"
          }
        }
      },
      "CardPaymentStatus": {
        "type": "string",
        "description": "Lifecycle status of a CardPayment.\n\n- `SETTLEMENT_IN_PROGRESS` — authorized, not yet (or not fully) settled. The hold is still on the card.\n- `SETTLED` — terminal; nothing further is expected. The customer has been charged, except for a zero-amount card check, which settles on arrival without a charge.\n- `DECLINED` — the latest authorization was declined; no money moved.\n- `CANCELLED` — the authorization was cancelled/reversed before settlement; no charge applied.\n- `EXPIRED` — the authorization timed out without settling.\n",
        "enum": [
          "SETTLEMENT_IN_PROGRESS",
          "SETTLED",
          "DECLINED",
          "CANCELLED",
          "EXPIRED"
        ]
      },
      "CardPaymentEvent": {
        "type": "object",
        "description": "An event in a card payment's lifecycle, lean — used **nested** inside `CardPayment.events[]`. The parent card payment provides `cardPaymentId`, `card`, and `merchant`, so the lean variants don't repeat them. Each event carries its own `authCode`. Four variants discriminated by `type`:\n\n  - `AUTHORISATION` → `CardPaymentAuthorisationEvent`\n  - `SETTLEMENT` → `CardPaymentSettlementEvent`\n  - `REFUND` → `CardPaymentRefundEvent`\n  - `ORIGINAL_CREDIT` → `CardPaymentOriginalCreditEvent` (Visa OCT / Mastercard MoneySend)\n\nFor the **standalone** version returned by `GET /card_payment_events` — which carries `cardPaymentId`, `card`, and `merchant` so each row is self-contained — see `CardPaymentEventDetail`.\n",
        "required": [
          "type"
        ],
        "properties": {
          "type": {
            "$ref": "#/components/schemas/CardPaymentEventType"
          }
        },
        "discriminator": {
          "propertyName": "type",
          "mapping": {
            "AUTHORISATION": "#/components/schemas/CardPaymentAuthorisationEvent",
            "SETTLEMENT": "#/components/schemas/CardPaymentSettlementEvent",
            "REFUND": "#/components/schemas/CardPaymentRefundEvent",
            "ORIGINAL_CREDIT": "#/components/schemas/CardPaymentOriginalCreditEvent"
          }
        }
      },
      "CardPaymentEventResult": {
        "type": "string",
        "description": "Outcome of an authorization event.",
        "enum": [
          "APPROVED",
          "DECLINED"
        ]
      },
      "AuthorisationCategory": {
        "type": "string",
        "description": "The category of the authorization.",
        "enum": [
          "PRE_AUTH",
          "FINAL_AUTH"
        ]
      },
      "CardPaymentAuthForwardingDecisionOutcome": {
        "type": "string",
        "description": "Default decision applied if the innovator does not respond in time during auth-forwarding.",
        "enum": [
          "APPROVE",
          "DECLINE"
        ]
      },
      "CardPaymentAuthForwardingDetails": {
        "type": "object",
        "description": "Details of auth-forwarding handling on the authorization.",
        "properties": {
          "triggered": {
            "type": "boolean",
            "description": "True if auth forwarding was triggered for this authorization.",
            "example": true
          },
          "decisionOutcome": {
            "description": "Default decision applied if the innovator did not respond in time.",
            "allOf": [
              {
                "$ref": "#/components/schemas/CardPaymentAuthForwardingDecisionOutcome"
              }
            ]
          },
          "innovatorTimedOut": {
            "type": "boolean",
            "description": "True if the innovator failed to respond within the configured timeout and the default decision was applied.",
            "example": false
          }
        }
      },
      "CardPaymentDeclineReason": {
        "type": "string",
        "description": "Reason an authorization was declined; populated only when `result = DECLINED`. Mirrors the legacy authorization webhook's decline reason values.",
        "enum": [
          "NO_REASON",
          "PHYSICAL_NOT_ACTIVATED",
          "INSUFFICIENT_BALANCE",
          "CVV_CHECKS_FAILED",
          "CVV_RETRIES_EXCEEDED",
          "CARD_STATUS_NOT_ALLOWED",
          "PIN_CHECKS_FAILED",
          "PIN_RETRIES_EXCEEDED",
          "CARD_EXPIRY_CHECKS_FAILED",
          "AVS_CHECKS_FAILED",
          "ATM_WITHDRAWAL_LIMIT_EXCEEDED",
          "SCA_REQUIRED",
          "AUTH_RULE_CHECKS_FAILED",
          "TRANSACTION_NOT_PERMITTED",
          "TIMEOUT",
          "SINGLE_SPEND"
        ]
      },
      "CardPaymentForex": {
        "type": "object",
        "description": "Auth-time FX context: the rate applied at authorization and the cushion blocked to cater for rate movement before settlement. Surfaced as a pair on `AUTHORISATION` events only — on settlement/refund/oct the rate sits at the event top-level (it modifies that event's amounts directly) and padding has already been absorbed or released at clearing time.",
        "properties": {
          "exchangeRate": {
            "description": "Rate applied to convert `transactionAmount` into `billingAmount` at authorization time. Populated on cross-currency authorizations.",
            "allOf": [
              {
                "$ref": "#/components/schemas/ScaledAmount"
              }
            ]
          },
          "padding": {
            "description": "Extra amount blocked at authorization time to cater for currency fluctuation between auth and settlement. Already included in the event's `transactionAmount`; surfaced separately so the embedder can show the cardholder how much of the charge is the FX cushion. Released or absorbed at clearing time.",
            "allOf": [
              {
                "$ref": "#/components/schemas/CurrencyAmount"
              }
            ]
          }
        }
      },
      "CardPaymentFee": {
        "type": "object",
        "description": "A fee accrued on a specific card payment event. Discriminated by `type`:\n  - `PLATFORM_FEE` → `CardPaymentPlatformFee` — fee charged by the platform; points at the underlying `FeeTransaction`.\n  - `FOREX_FEE` → `CardPaymentForexFee` — forex padding + forex fee captured at authorization on a cross-currency event.\n",
        "required": [
          "type"
        ],
        "properties": {
          "type": {
            "$ref": "#/components/schemas/CardPaymentFeeType"
          }
        },
        "discriminator": {
          "propertyName": "type",
          "mapping": {
            "PLATFORM_FEE": "#/components/schemas/CardPaymentPlatformFee",
            "FOREX_FEE": "#/components/schemas/CardPaymentForexFee"
          }
        }
      },
      "CardPaymentFeeSubtype": {
        "type": "string",
        "description": "The category of a platform fee accrued on a card payment event. Restricted to subtypes that can fire on card payments.",
        "enum": [
          "purchase_fees",
          "refund_fees",
          "atm_withdrawal_fees",
          "withdrawal_fees",
          "chargeback_fees",
          "fee_reversals",
          "custom_fees",
          "other_fees"
        ]
      },
      "CardPaymentPlatformFee": {
        "description": "A fee charged by the platform on this card payment event (a `FeeTransaction` posted against the cardholder's instrument). The `id` points at the underlying fee transaction, retrievable in full via the Transaction Activity API.",
        "allOf": [
          {
            "$ref": "#/components/schemas/CardPaymentFee"
          },
          {
            "type": "object",
            "required": [
              "id",
              "subtype",
              "amount"
            ],
            "properties": {
              "id": {
                "type": "string",
                "pattern": "^[0-9]+$",
                "description": "Identifier of the underlying `FeeTransaction`.",
                "example": "123456789"
              },
              "subtype": {
                "description": "Category of fee.",
                "allOf": [
                  {
                    "$ref": "#/components/schemas/CardPaymentFeeSubtype"
                  }
                ]
              },
              "amount": {
                "description": "Fee amount, in the currency of the instrument the fee was applied to.",
                "allOf": [
                  {
                    "$ref": "#/components/schemas/CurrencyAmount"
                  }
                ]
              }
            }
          }
        ]
      },
      "CardPaymentForexFee": {
        "description": "Forex fee charged on a cross-currency event. Already included in the event's `transactionAmount` — surfaced here so the embedder can show the cardholder how much of the charge was the forex fee.",
        "allOf": [
          {
            "$ref": "#/components/schemas/CardPaymentFee"
          },
          {
            "type": "object",
            "properties": {
              "amount": {
                "description": "The forex fee charged on this event, in the currency of the instrument the fee was applied to.",
                "allOf": [
                  {
                    "$ref": "#/components/schemas/CurrencyAmount"
                  }
                ]
              }
            }
          }
        ]
      },
      "CardPaymentFeeType": {
        "type": "string",
        "enum": [
          "PLATFORM_FEE",
          "FOREX_FEE"
        ]
      },
      "CardPaymentAuthorisationEvent": {
        "description": "An authorization lifecycle event — the merchant asked the bank for funds, or an existing hold was adjusted / released. No money moves until clearing. Used inside `CardPayment.events[]`; the parent card payment provides `cardPaymentId`, `card`, and `merchant` so this lean variant doesn't repeat them. For a standalone version with that context attached, see `CardPaymentAuthorisationEventDetail`.",
        "allOf": [
          {
            "$ref": "#/components/schemas/CardPaymentEvent"
          },
          {
            "type": "object",
            "required": [
              "id",
              "subtype",
              "timestamp"
            ],
            "properties": {
              "id": {
                "type": "string",
                "pattern": "^[0-9]+$",
                "example": "123456789"
              },
              "subtype": {
                "type": "string",
                "description": "Card-scheme network classification of the underlying transaction, representing the type of activity the authorization is for. Reversal-vs-original lives on the separate `reversal` field.",
                "enum": [
                  "sale_purchases",
                  "cash_withdrawals",
                  "sales_with_cashback",
                  "mail_or_telephone_orders",
                  "account_funding"
                ]
              },
              "reversal": {
                "type": "boolean",
                "description": "True when this event is a reversal of a prior authorization in the same lifecycle (e.g. merchant void, expiry, explicit cancellation). False for originals.",
                "example": false
              },
              "result": {
                "description": "Approved or declined by the issuer. Populated on originals; omitted on reversals.",
                "allOf": [
                  {
                    "$ref": "#/components/schemas/CardPaymentEventResult"
                  }
                ]
              },
              "authorisationCategory": {
                "description": "Pre-auth (provisional hold, will clear separately) or final auth (estimated amount equals final amount).",
                "allOf": [
                  {
                    "$ref": "#/components/schemas/AuthorisationCategory"
                  }
                ]
              },
              "authForwardingDetails": {
                "description": "When the card is configured for auth forwarding, the forwarding context for this event.",
                "allOf": [
                  {
                    "$ref": "#/components/schemas/CardPaymentAuthForwardingDetails"
                  }
                ]
              },
              "declineReason": {
                "description": "Present when `result` is `DECLINED`.",
                "allOf": [
                  {
                    "$ref": "#/components/schemas/CardPaymentDeclineReason"
                  }
                ]
              },
              "authRuleFailedReason": {
                "type": "string",
                "description": "The specific auth rule that caused the decline. Present when `declineReason` is `AUTH_RULE_CHECKS_FAILED`. Mirrors the legacy authorization webhook's `authRuleFailedReason`."
              },
              "cancellationReason": {
                "type": "string",
                "maxLength": 255,
                "description": "Free-text reason for an explicit cancellation of an authorization hold. Populated on `reversal: true` events driven by explicit cancellation rather than network reversal.",
                "example": "Cancelled at the customer's request"
              },
              "transactionAmount": {
                "description": "The amount for this event, in the merchant's currency (ISO 8583 DE 4).",
                "allOf": [
                  {
                    "$ref": "#/components/schemas/CurrencyAmount"
                  }
                ]
              },
              "billingAmount": {
                "description": "The amount applied to the card, in the card's currency (ISO 8583 DE 6).",
                "allOf": [
                  {
                    "$ref": "#/components/schemas/CurrencyAmount"
                  }
                ]
              },
              "forex": {
                "description": "Auth-time FX context — `exchangeRate` and `padding`. Populated on cross-currency authorizations.",
                "allOf": [
                  {
                    "$ref": "#/components/schemas/CardPaymentForex"
                  }
                ]
              },
              "userAmount": {
                "description": "Presentation-only amount to be shown to the cardholder in their app. The `userAmount` will only differ from the `billingAmount` if a `userCurrency` was set for the card during card creation.",
                "allOf": [
                  {
                    "$ref": "#/components/schemas/CurrencyAmount"
                  }
                ]
              },
              "userExchangeRate": {
                "description": "Rate applied to convert `transactionAmount` into `userAmount`. Presentation-only.",
                "allOf": [
                  {
                    "$ref": "#/components/schemas/ScaledAmount"
                  }
                ]
              },
              "authCode": {
                "type": "string",
                "description": "Issuer authorization code on this scheme message (ISO 8583 DE 38). Echoed by subsequent settlement, refund, OCT messages in the same lifecycle.",
                "example": "123456"
              },
              "fees": {
                "type": "array",
                "description": "Fees applied as part of this specific event (e.g. interchange on a settlement, forex markup on an authorization, chargeback fee on a dispute step).",
                "items": {
                  "$ref": "#/components/schemas/CardPaymentFee"
                }
              },
              "timestamp": {
                "type": "integer",
                "format": "int64",
                "description": "When this event occurred at the point-of-interaction, Epoch milliseconds.",
                "example": 1786118400000
              },
              "processedTimestamp": {
                "type": "integer",
                "format": "int64",
                "description": "When this event was processed by the platform, Epoch milliseconds.",
                "example": 1786118401250
              }
            }
          }
        ]
      },
      "CardPaymentSettlementState": {
        "type": "string",
        "description": "Processing state of a settlement event at the scheme.",
        "enum": [
          "PENDING",
          "COMPLETED"
        ]
      },
      "CardPaymentSettlementEvent": {
        "description": "A settlement event — money actually moves between the cardholder's account and the merchant, or back the other way. *Visa Financial Transaction 0220 · Mastercard First Presentment 1240.*",
        "allOf": [
          {
            "$ref": "#/components/schemas/CardPaymentEvent"
          },
          {
            "type": "object",
            "required": [
              "id",
              "subtype",
              "settlementState",
              "timestamp"
            ],
            "properties": {
              "id": {
                "type": "string",
                "pattern": "^[0-9]+$",
                "example": "123456789"
              },
              "subtype": {
                "type": "string",
                "description": "Card-scheme network classification of the underlying transaction being settled.",
                "enum": [
                  "sale_purchases",
                  "cash_withdrawals",
                  "sales_with_cashback",
                  "mail_or_telephone_orders",
                  "account_funding"
                ]
              },
              "reversal": {
                "type": "boolean",
                "description": "True when this event reverses a prior settlement; funds return to the card. False for originals.",
                "example": false
              },
              "settlementState": {
                "description": "Processing state of this settlement on the platform.",
                "allOf": [
                  {
                    "$ref": "#/components/schemas/CardPaymentSettlementState"
                  }
                ]
              },
              "transactionAmount": {
                "description": "The amount cleared, in the merchant's currency (ISO 8583 DE 4).",
                "allOf": [
                  {
                    "$ref": "#/components/schemas/CurrencyAmount"
                  }
                ]
              },
              "billingAmount": {
                "description": "The amount billed against the card, in the card's currency (ISO 8583 DE 6). May differ from any earlier authorization due to final amount and forex movement.",
                "allOf": [
                  {
                    "$ref": "#/components/schemas/CurrencyAmount"
                  }
                ]
              },
              "exchangeRate": {
                "description": "Forex rate applied at clearing time.",
                "allOf": [
                  {
                    "$ref": "#/components/schemas/ScaledAmount"
                  }
                ]
              },
              "userAmount": {
                "description": "Presentation-only amount to be shown to the cardholder in their app. The `userAmount` will only differ from the `billingAmount` if a `userCurrency` was set for the card during card creation.",
                "allOf": [
                  {
                    "$ref": "#/components/schemas/CurrencyAmount"
                  }
                ]
              },
              "userExchangeRate": {
                "description": "Rate applied to convert `transactionAmount` into `userAmount`. Presentation-only.",
                "allOf": [
                  {
                    "$ref": "#/components/schemas/ScaledAmount"
                  }
                ]
              },
              "authCode": {
                "type": "string",
                "description": "Issuer authorization code (ISO 8583 DE 38) echoed from the originating authorization.",
                "example": "123456"
              },
              "fees": {
                "type": "array",
                "description": "Fees applied as part of this specific event (e.g. interchange on a settlement, forex markup on an authorization, chargeback fee on a dispute step).",
                "items": {
                  "$ref": "#/components/schemas/CardPaymentFee"
                }
              },
              "timestamp": {
                "type": "integer",
                "format": "int64",
                "description": "When this settlement event occurred, Epoch milliseconds.",
                "example": 1786118400000
              },
              "processedTimestamp": {
                "type": "integer",
                "format": "int64",
                "description": "When this event was processed by the platform, Epoch milliseconds.",
                "example": 1786118401250
              }
            }
          }
        ]
      },
      "CardPaymentRefundEvent": {
        "description": "A refund credited to the card, tied to an earlier purchase.",
        "allOf": [
          {
            "$ref": "#/components/schemas/CardPaymentEvent"
          },
          {
            "type": "object",
            "required": [
              "id",
              "timestamp"
            ],
            "properties": {
              "id": {
                "type": "string",
                "pattern": "^[0-9]+$",
                "example": "123456789"
              },
              "reversal": {
                "type": "boolean",
                "description": "True when this event reverses a prior refund (money was returned to the cardholder and is now being clawed back). False for an original refund credit.",
                "example": false
              },
              "subtype": {
                "type": "string",
                "description": "Card-scheme network classification of the refund. Reversal-vs-original lives on the separate `reversal` field.",
                "enum": [
                  "purchase_refunds",
                  "purchase_refund_reversals"
                ]
              },
              "reasonCode": {
                "type": "string",
                "description": "Network reason code accompanying the event, when provided by the scheme."
              },
              "transactionAmount": {
                "description": "The amount credited / reversed, in the merchant's currency.",
                "allOf": [
                  {
                    "$ref": "#/components/schemas/CurrencyAmount"
                  }
                ]
              },
              "billingAmount": {
                "description": "The amount applied to the card, in the card's currency.",
                "allOf": [
                  {
                    "$ref": "#/components/schemas/CurrencyAmount"
                  }
                ]
              },
              "exchangeRate": {
                "description": "Forex rate applied to convert `transactionAmount` into `billingAmount`.",
                "allOf": [
                  {
                    "$ref": "#/components/schemas/ScaledAmount"
                  }
                ]
              },
              "userAmount": {
                "description": "Presentation-only amount to be shown to the cardholder in their app. The `userAmount` will only differ from the `billingAmount` if a `userCurrency` was set for the card during card creation.",
                "allOf": [
                  {
                    "$ref": "#/components/schemas/CurrencyAmount"
                  }
                ]
              },
              "userExchangeRate": {
                "description": "Rate applied to convert `transactionAmount` into `userAmount`. Presentation-only.",
                "allOf": [
                  {
                    "$ref": "#/components/schemas/ScaledAmount"
                  }
                ]
              },
              "authCode": {
                "type": "string",
                "description": "Issuer authorization code (ISO 8583 DE 38) echoed from the originating authorization.",
                "example": "123456"
              },
              "fees": {
                "type": "array",
                "description": "Fees applied as part of this specific event (e.g. interchange on a settlement, forex markup on an authorization, chargeback fee on a dispute step).",
                "items": {
                  "$ref": "#/components/schemas/CardPaymentFee"
                }
              },
              "timestamp": {
                "type": "integer",
                "format": "int64",
                "description": "When this event occurred, Epoch milliseconds.",
                "example": 1786118400000
              },
              "processedTimestamp": {
                "type": "integer",
                "format": "int64",
                "description": "When this event was processed by the platform, Epoch milliseconds.",
                "example": 1786118401250
              }
            }
          }
        ]
      },
      "CardPaymentOriginalCreditEvent": {
        "description": "A push credit to the card not tied to a prior purchase. *Visa Original Credit Transaction (OCT) · Mastercard MoneySend.*",
        "allOf": [
          {
            "$ref": "#/components/schemas/CardPaymentEvent"
          },
          {
            "type": "object",
            "required": [
              "id",
              "timestamp"
            ],
            "properties": {
              "id": {
                "type": "string",
                "pattern": "^[0-9]+$",
                "example": "123456789"
              },
              "reversal": {
                "type": "boolean",
                "description": "True when this event reverses a prior OCT (push credit being clawed back). False for an original push credit.",
                "example": false
              },
              "subtype": {
                "type": "string",
                "description": "Card-scheme network classification of the OCT. Reversal-vs-original lives on the separate `reversal` field.",
                "enum": [
                  "original_credit_transactions",
                  "original_credit_transaction_reversals"
                ]
              },
              "reasonCode": {
                "type": "string",
                "description": "Network reason code accompanying the event, when provided by the scheme."
              },
              "transactionAmount": {
                "description": "The amount credited / reversed, in the merchant's currency.",
                "allOf": [
                  {
                    "$ref": "#/components/schemas/CurrencyAmount"
                  }
                ]
              },
              "billingAmount": {
                "description": "The amount applied to the card, in the card's currency.",
                "allOf": [
                  {
                    "$ref": "#/components/schemas/CurrencyAmount"
                  }
                ]
              },
              "exchangeRate": {
                "description": "Forex rate applied to convert `transactionAmount` into `billingAmount`.",
                "allOf": [
                  {
                    "$ref": "#/components/schemas/ScaledAmount"
                  }
                ]
              },
              "userAmount": {
                "description": "Presentation-only amount to be shown to the cardholder in their app. The `userAmount` will only differ from the `billingAmount` if a `userCurrency` was set for the card during card creation.",
                "allOf": [
                  {
                    "$ref": "#/components/schemas/CurrencyAmount"
                  }
                ]
              },
              "userExchangeRate": {
                "description": "Rate applied to convert `transactionAmount` into `userAmount`. Presentation-only.",
                "allOf": [
                  {
                    "$ref": "#/components/schemas/ScaledAmount"
                  }
                ]
              },
              "authCode": {
                "type": "string",
                "description": "Issuer authorization code (ISO 8583 DE 38) echoed from the originating authorization.",
                "example": "123456"
              },
              "fees": {
                "type": "array",
                "description": "Fees applied as part of this specific event (e.g. interchange on a settlement, forex markup on an authorization, chargeback fee on a dispute step).",
                "items": {
                  "$ref": "#/components/schemas/CardPaymentFee"
                }
              },
              "timestamp": {
                "type": "integer",
                "format": "int64",
                "description": "When this event occurred, Epoch milliseconds.",
                "example": 1786118400000
              },
              "processedTimestamp": {
                "type": "integer",
                "format": "int64",
                "description": "When this event was processed by the platform, Epoch milliseconds.",
                "example": 1786118401250
              }
            }
          }
        ]
      },
      "CardPaymentEventType": {
        "type": "string",
        "description": "Type of event recorded against a CardPayment. The `reversal` flag on each event distinguishes a reversal from the original action.",
        "enum": [
          "AUTHORISATION",
          "SETTLEMENT",
          "REFUND",
          "ORIGINAL_CREDIT"
        ]
      },
      "CardPayment": {
        "type": "object",
        "description": "One card transaction's full lifecycle — authorization, settlement, refunds — as a single resource that the platform keeps up to date as scheme events arrive.\n\nDesigned for two audiences:\n  - **Building UI?** Read the top-level summary fields (`displayAmount`, `status`, `type`, `merchant`, `card`). They are platform-maintained — show them as-is. No need to understand auth-vs-clearing, reversals, or scheme messages. The debit/credit direction is implicit from `type` (purchases / cash withdrawals / account funding debit the card; refunds / original credits credit it). For the issuer authorization code, walk `events[]` — every event in the lifecycle carries it.\n  - **Need scheme-level detail?** Walk `events[]` for the full per-step audit trail — every authorization, clearing, reversal, and refund step — with original scheme amounts (merchant + card currency, with exchange rates), reason codes, and fees attached to the event that triggered them.\n\nEach card payment corresponds to one card-scheme lifecycle (Visa Transaction Identifier / Mastercard TLID). Related-but-separate transactions (refunds, tips, recurring follow-ups) are separate card payments linked via `relatedCardPaymentId` (direct parent).\n",
        "required": [
          "id",
          "type",
          "card",
          "merchant",
          "displayAmount",
          "status",
          "events",
          "creationTimestamp"
        ],
        "properties": {
          "id": {
            "type": "string",
            "pattern": "^[0-9]+$",
            "description": "Stable identifier across the entire payment lifecycle.",
            "example": "123456789"
          },
          "profileId": {
            "$ref": "#/components/schemas/ProfileId"
          },
          "type": {
            "description": "The high-level type of card payment. For finer-grained classification (e.g. distinguishing a sale-purchase from a sale with cashback), see the per-event `subtype` field.",
            "allOf": [
              {
                "$ref": "#/components/schemas/CardPaymentType"
              }
            ]
          },
          "card": {
            "description": "The managed card used for this payment.",
            "allOf": [
              {
                "$ref": "#/components/schemas/Card"
              }
            ]
          },
          "merchant": {
            "$ref": "#/components/schemas/Merchant"
          },
          "displayAmount": {
            "description": "Platform-maintained headline amount of the card payment, in the cardholder's preferred display currency (which matches the card billing currency unless a specific `userCurrency` was set when the card was created). The amount is derived from card payment events and can be displayed in your transaction activity UI as the amount of the card payment.\n\nAs a headline amount, it reflects the intended amount of the payment.\n  - In the case of a full reversal or cancellation and within-lifecycle dispute swings it stays stable. For example, an auth-50 → settle-50 → reverse-50 cycle still reads as 50 here, even though the net ledger impact is zero.\n  - In the case of a partial reversal it reflects the net amount, so the display amount of the card payment reflects the revised amount. For example, an auth-50 (displayAmount 50) → settle-40 with a release of the remaining auth of 10, displayAmount updated to 40.\n\nTo compute the actual net (for accounting), sum the amounts of your chosen type, from all the events, yourself.\n\nMagnitude is always positive. The debit/credit direction is implicit from `type` (purchases debit, refunds and OCTs credit). For the lifecycle phase, read `status`. For amounts in the merchant's currency (transaction currency) or the card's currency (if different from your preferred currency), read `events[]`.\n",
            "allOf": [
              {
                "$ref": "#/components/schemas/CurrencyAmount"
              }
            ]
          },
          "status": {
            "$ref": "#/components/schemas/CardPaymentStatus"
          },
          "relatedCardPaymentId": {
            "type": "string",
            "pattern": "^[0-9]+$",
            "description": "Direct parent linkage — id of the single prior card payment that this payment derives from. Set on:\n  - `REFUND` payments referring to the original purchase\n  - `ORIGINAL_CREDIT` payments referring to the prior purchase being credited\n  - Tip / add-on payments referring to the original ride / fare / service\n  - Installment / recurring payments referring to the initial setup transaction\n\nCorresponds to Visa's \"Original Transaction ID\" linkage and Mastercard's DE 105 sub-element 002 (Economically Related Transaction Identifier). Not used for messages that share a single lifecycle — those are events on the same card payment.\n",
            "example": "987654321"
          },
          "events": {
            "type": "array",
            "description": "Ordered event stream — every scheme message in this card payment's lifecycle. For headline display use `displayAmount`; walk this when you need scheme-level detail (per-event amounts, fees, reason codes, reversals).",
            "items": {
              "$ref": "#/components/schemas/CardPaymentEvent"
            }
          },
          "creationTimestamp": {
            "type": "integer",
            "format": "int64",
            "description": "When the first event for this payment was received, Epoch milliseconds.",
            "example": 1786118400000
          },
          "lastUpdatedTimestamp": {
            "type": "integer",
            "format": "int64",
            "description": "When the most recent event for this payment was received, Epoch milliseconds.",
            "example": 1786118401250
          }
        }
      },
      "SystemTransaction": {
        "type": "object",
        "required": [
          "id",
          "amount",
          "instrument",
          "status",
          "creationTimestamp"
        ],
        "description": "A system-generated transaction applied to an instrument by the platform (balance adjustments,\naccount closures, dispute outcomes, replacement balance transfers, etc.). Only surfaced\nthrough Transaction Activity.\n",
        "properties": {
          "id": {
            "type": "string",
            "pattern": "^[0-9]+$",
            "description": "The unique identifier of the system transaction.",
            "example": "123456789"
          },
          "subtype": {
            "$ref": "#/components/schemas/SystemTransactionSubtype"
          },
          "amount": {
            "description": "The transaction amount in the instrument's currency.",
            "allOf": [
              {
                "$ref": "#/components/schemas/CurrencyAmount"
              }
            ]
          },
          "instrument": {
            "description": "The instrument the transaction was applied to.",
            "allOf": [
              {
                "$ref": "#/components/schemas/InstrumentId"
              }
            ]
          },
          "status": {
            "$ref": "#/components/schemas/TransactionActivityStatus"
          },
          "reason": {
            "type": "string",
            "maxLength": 255,
            "description": "Operational reason or context for the system transaction.",
            "example": "Balance adjustment following a settlement correction"
          },
          "relatedTransactionId": {
            "type": "string",
            "pattern": "^[0-9]+$",
            "description": "A related transaction this system event corrects or compensates, if any.",
            "example": "987654321"
          },
          "creationTimestamp": {
            "type": "integer",
            "format": "int64",
            "example": 1786118400000
          },
          "lastUpdatedTimestamp": {
            "type": "integer",
            "format": "int64",
            "example": 1786118401250
          }
        }
      },
      "InstrumentTransactionActivityItem": {
        "type": "object",
        "required": [
          "id",
          "type",
          "status",
          "amount",
          "creationTimestamp"
        ],
        "description": "A transaction activity entry returned by the per-instrument transactions endpoints\n(e.g. `/managed_accounts/{id}/transactions`). The `instrument` is omitted because it is\nalready known from the path parameter.\n",
        "properties": {
          "id": {
            "type": "string",
            "pattern": "^[0-9]+$",
            "description": "The transaction identifier.",
            "example": "123456789"
          },
          "type": {
            "$ref": "#/components/schemas/TransactionActivityType"
          },
          "status": {
            "$ref": "#/components/schemas/TransactionActivityStatus"
          },
          "direction": {
            "$ref": "#/components/schemas/TransactionActivityDirection"
          },
          "amount": {
            "description": "The primary transaction amount in the instrument's currency.",
            "allOf": [
              {
                "$ref": "#/components/schemas/CurrencyAmount"
              }
            ]
          },
          "fee": {
            "description": "The fee linked to this transaction, if any.",
            "allOf": [
              {
                "$ref": "#/components/schemas/FeeSummary"
              }
            ]
          },
          "creationTimestamp": {
            "type": "integer",
            "format": "int64",
            "example": 1786118400000
          },
          "lastUpdatedTimestamp": {
            "type": "integer",
            "format": "int64",
            "example": 1786118401250
          },
          "transaction": {
            "description": "The full transaction object. Schema matches the value of `type`.",
            "oneOf": [
              {
                "$ref": "#/components/schemas/Transfer"
              },
              {
                "$ref": "#/components/schemas/Send"
              },
              {
                "$ref": "#/components/schemas/OutgoingWireTransfer"
              },
              {
                "$ref": "#/components/schemas/CorrespondentBankingOwt"
              },
              {
                "$ref": "#/components/schemas/IncomingWireTransfer"
              },
              {
                "$ref": "#/components/schemas/CardPayment"
              },
              {
                "$ref": "#/components/schemas/FeeTransaction"
              },
              {
                "$ref": "#/components/schemas/SystemTransaction"
              }
            ]
          }
        }
      },
      "InstrumentTransactionActivityList": {
        "type": "object",
        "description": "A paginated list of transaction activity entries scoped to a single instrument.",
        "properties": {
          "transactions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/InstrumentTransactionActivityItem"
            }
          },
          "count": {
            "type": "integer",
            "format": "int64",
            "description": "The total number of records matching the filter criteria.",
            "example": 42
          },
          "responseCount": {
            "type": "integer",
            "format": "int64",
            "example": 10
          }
        }
      },
      "ManufacturingState": {
        "type": "string",
        "description": "Information on the manufacturing of the physical card, as follows:\n  - REQUESTED: The upgrade of the card to physical has been requested.\n  - SENT_FOR_FULFILLMENT - The card has been sent for printing.\n  - DISPATCHED: The card has been manufactured and dispatched. You may receive a second DISPATCHED event when the manufacturer provides a tracking code.\n  - DELIVERED: The card has been received and activated by the recipient.\n",
        "enum": [
          "REQUESTED",
          "SENT_FOR_FULFILLMENT",
          "DISPATCHED",
          "DELIVERED"
        ]
      },
      "ManagedCard": {
        "required": [
          "externalHandle",
          "cardBrand",
          "cardLevelClassification",
          "creationTimestamp",
          "currency",
          "expiryPeriodMonths",
          "friendlyName",
          "id",
          "nameOnCard",
          "profileId",
          "renewalType",
          "type",
          "mode",
          "state",
          "cardNumberFirstSix",
          "cardNumberLastFour",
          "startMmyy",
          "expiryMmyy",
          "billingAddress",
          "digitalWallets"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "pattern": "^[0-9]+$",
            "description": "The unique identifier of the card.",
            "example": "234567890"
          },
          "profileId": {
            "$ref": "#/components/schemas/ProfileId"
          },
          "externalHandle": {
            "type": "string",
            "description": "A uniquely generated code used to identify a card.\n\nThis code is to be used instead of the sensitive card number in order to refer to a card when opening a support ticket.\n",
            "example": "7F3E2B1A9C"
          },
          "tag": {
            "$ref": "#/components/schemas/Tag"
          },
          "friendlyName": {
            "maxLength": 50,
            "minLength": 1,
            "type": "string",
            "description": "The friendly name given to the card.",
            "example": "Travel card"
          },
          "currency": {
            "$ref": "#/components/schemas/Currency"
          },
          "state": {
            "$ref": "#/components/schemas/ManagedInstrumentState"
          },
          "type": {
            "type": "string",
            "description": "The type of card:\n  - VIRTUAL: Not a printed or embedded card. The card can be used online or added to digital wallets.\n  - 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.\n",
            "enum": [
              "VIRTUAL",
              "PHYSICAL"
            ]
          },
          "cardBrand": {
            "type": "string",
            "description": "The card scheme, or brand of the card.",
            "enum": [
              "MASTERCARD",
              "VISA"
            ]
          },
          "cardNumber": {
            "description": "The full card number of the card.\n\nThis field is omitted when the card state is `NOT_ENABLED`.\n",
            "$ref": "#/components/schemas/SensitiveCardNumber"
          },
          "cvv": {
            "description": "The CVV of the card.\n\nThis field is omitted when the card state is `NOT_ENABLED`.\n",
            "$ref": "#/components/schemas/SensitiveCvv"
          },
          "cardNumberFirstSix": {
            "pattern": "^[0-9]{6}$",
            "type": "string",
            "description": "The first six digits of the card number.",
            "example": "453201"
          },
          "cardNumberLastFour": {
            "pattern": "^[0-9]{4}$",
            "type": "string",
            "description": "The last four digits of the card number.",
            "example": "0366"
          },
          "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.",
            "example": "Alex Smith"
          },
          "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.",
            "example": "Acme Ltd"
          },
          "startMmyy": {
            "maxLength": 4,
            "minLength": 4,
            "pattern": "^[0-9]*$",
            "type": "string",
            "description": "The start date of this card, in MMYY format.",
            "example": "0826"
          },
          "expiryMmyy": {
            "maxLength": 4,
            "minLength": 4,
            "type": "string",
            "description": "The end date of this card, in MMYY format.",
            "example": "0829"
          },
          "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.",
            "example": 36
          },
          "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.",
            "example": 1880236800000
          },
          "creationTimestamp": {
            "type": "integer",
            "format": "int64",
            "description": "The timestamp when the card was created, expressed in Epoch timestamp using millisecond precision.",
            "example": 1786118400000
          },
          "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,
            "example": "+447700900123"
          },
          "billingAddress": {
            "description": "The billing address set for the cardholder. This can be checked by the merchant during online purchases.",
            "allOf": [
              {
                "$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:\n\n- A prepaid mode card has its own balance and can have funds transferred to or from it.\n- 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.\n",
            "example": "PREPAID_MODE"
          },
          "externalData": {
            "$ref": "#/components/schemas/ExternalData"
          },
          "userId": {
            "allOf": [
              {
                "$ref": "#/components/schemas/UserId"
              }
            ],
            "description": "The Authorized 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."
          },
          "singleSpend": {
            "type": "boolean",
            "description": "Indicates if the card is configured for single-spend mode. When true, the card will be automatically blocked after the first successful transaction.",
            "example": false
          },
          "replacement": {
            "$ref": "#/components/schemas/ManagedCardReplacement"
          }
        },
        "discriminator": {
          "propertyName": "mode",
          "mapping": {
            "PREPAID_MODE": "#/components/schemas/PrepaidModeCard",
            "DEBIT_MODE": "#/components/schemas/DebitModeCard"
          }
        }
      },
      "PrepaidModeCard": {
        "allOf": [
          {
            "$ref": "#/components/schemas/ManagedCard"
          },
          {
            "type": "object",
            "properties": {
              "mode": {
                "type": "string",
                "enum": [
                  "PREPAID_MODE"
                ],
                "description": "The card has its own balance in its fixed currency."
              },
              "balances": {
                "$ref": "#/components/schemas/ManagedInstrumentBalance"
              }
            }
          }
        ]
      },
      "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"
      },
      "AvailableToSpend": {
        "type": "object",
        "properties": {
          "value": {
            "description": "The amount and currency that is available to spend, (for the given interval).",
            "allOf": [
              {
                "$ref": "#/components/schemas/CurrencyAmount"
              }
            ]
          },
          "interval": {
            "$ref": "#/components/schemas/SpendLimitInterval"
          }
        }
      },
      "DebitModeCard": {
        "allOf": [
          {
            "$ref": "#/components/schemas/ManagedCard"
          },
          {
            "type": "object",
            "required": [
              "parentManagedAccountId"
            ],
            "properties": {
              "mode": {
                "type": "string",
                "enum": [
                  "DEBIT_MODE"
                ],
                "description": "The card spends from its parent managed account and has no balance of its own."
              },
              "currency": {
                "description": "The currency of the parent managed account, which is used to bill card payments.",
                "allOf": [
                  {
                    "$ref": "#/components/schemas/Currency"
                  }
                ]
              },
              "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.",
                "example": "123456789"
              },
              "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"
                }
              }
            }
          }
        ]
      },
      "SensitiveCardNumber": {
        "type": "object",
        "description": "The full card number of the card.\n\nUnless you are PCI-DSS compliant and have opted to switch off Weavr's security model, the card number will be tokenized.\n\nTo show the full unredacted card number to your user, you need to embed the Card number UI Component in your application. This accepts the tokenized card number and shows the unredacted card number to the user on screen.\n\nIn addition, it is returned only when the current session is stepped-up.\n",
        "properties": {
          "value": {
            "maxLength": 16,
            "type": "string",
            "x-sensitive-attribute": {
              "type": "CARD_NUMBER",
              "lifetime": "PERMANENT"
            },
            "example": "4532015112830366"
          }
        }
      },
      "SensitiveCvv": {
        "type": "object",
        "description": "The CVV of the card.\n\nUnless you are PCI-DSS compliant and have opted to switch off Weavr's security model, the card's CVV will be tokenized.\n\nTo show the card's CVV to your user, you need to embed the CVV UI Component in your application. This accepts the tokenized CVV and shows the plain text CVV number to the user on screen.\n\nIn addition, it is returned only when the current session is stepped-up.\n",
        "properties": {
          "value": {
            "maxLength": 3,
            "type": "string",
            "x-sensitive-attribute": {
              "type": "CVV",
              "lifetime": "PERMANENT"
            },
            "example": "123"
          }
        }
      },
      "CardRenewalType": {
        "description": "Indicates how the card will be handled once it is close to expiring.\n  - RENEW: The card will be automatically renewed, keeping the same card number but with a new expiry date and CVV.\n  - NO_RENEW: Once the expiry date is reached, the card is destroyed.\n",
        "enum": [
          "RENEW",
          "NO_RENEW"
        ],
        "type": "string"
      },
      "BillingAddress": {
        "required": [
          "addressLine1",
          "city",
          "postCode",
          "country"
        ],
        "type": "object",
        "properties": {
          "addressLine1": {
            "minLength": 1,
            "maxLength": 150,
            "type": "string",
            "description": "The first line of the address.",
            "example": "1 High Street"
          },
          "addressLine2": {
            "maxLength": 150,
            "type": "string",
            "description": "The second line of the address.",
            "example": "Flat 2"
          },
          "city": {
            "maxLength": 50,
            "type": "string",
            "description": "The city of the address.",
            "example": "London"
          },
          "postCode": {
            "maxLength": 10,
            "pattern": "^[A-Za-z0-9 -]*$",
            "type": "string",
            "description": "The post code associated with the address.",
            "example": "W1A 1AA"
          },
          "state": {
            "maxLength": 50,
            "type": "string",
            "description": "The state of the address.",
            "example": "Greater London"
          },
          "country": {
            "maxLength": 2,
            "minLength": 2,
            "pattern": "^[A-Z]+$",
            "type": "string",
            "description": "The country of the address expressed in ISO 3166 alpha-2 format.",
            "example": "GB"
          }
        }
      },
      "BulkCardDelivery": {
        "type": "boolean",
        "description": "Bulk delivery is available for deliveryMethods REGISTERED_MAIL or COURIER.\nAll cards marked as bulk and ordered within the fulfillment center’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.\n",
        "example": true
      },
      "PhoneNumber": {
        "maxLength": 20,
        "minLength": 5,
        "pattern": "^\\+[0-9]+$",
        "type": "string",
        "example": "+447700900123"
      },
      "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",
            "example": "Alex"
          },
          "surname": {
            "maxLength": 100,
            "type": "string",
            "example": "Smith"
          },
          "addressLine1": {
            "maxLength": 50,
            "minLength": 1,
            "type": "string",
            "example": "1 High Street"
          },
          "addressLine2": {
            "maxLength": 50,
            "minLength": 1,
            "type": "string",
            "example": "Flat 2"
          },
          "city": {
            "maxLength": 50,
            "type": "string",
            "example": "London"
          },
          "postCode": {
            "maxLength": 10,
            "pattern": "^[A-Za-z0-9 -]*$",
            "type": "string",
            "example": "W1A 1AA"
          },
          "state": {
            "maxLength": 50,
            "type": "string",
            "example": "Greater London"
          },
          "country": {
            "maxLength": 2,
            "minLength": 2,
            "pattern": "^[A-Z]+$",
            "type": "string",
            "description": "Country of the identity in ISO 3166 alpha-2 format.",
            "example": "GB"
          },
          "contactNumber": {
            "allOf": [
              {
                "$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.\n\nDeliveries to a `US` address must use `COURIER`.\n",
        "enum": [
          "STANDARD_DELIVERY",
          "REGISTERED_MAIL",
          "COURIER",
          "FIRST_CLASS_MAIL"
        ]
      },
      "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.",
        "example": "JD0002231234567890"
      },
      "DeliveryTrackingMethod": {
        "type": "string",
        "description": "The delivery tracking method for tracking the physical card's delivery status.",
        "example": "ROYAL_MAIL"
      },
      "DeliveryTrackingUrl": {
        "type": "string",
        "description": "The delivery tracking URL for tracking the physical card's delivery status.",
        "example": "https://www.royalmail.com/track-your-item#/tracking-results/JD0002231234567890"
      },
      "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.",
            "example": "PRD_001"
          },
          "carrierType": {
            "type": "string",
            "example": "STANDARD"
          },
          "pendingActivation": {
            "type": "boolean",
            "description": "Indicates if the physical card is activated for physical usage such as with physical terminals.",
            "example": false
          },
          "pinBlocked": {
            "type": "boolean",
            "description": "Indicates if the physical card is blocked due to providing incorrect PINs.",
            "example": false
          },
          "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.\n  - DAMAGED: The physical card was damaged and cannot be used at a physical terminal.\n  - LOST_STOLEN: The physical card was either lost or stolen and cannot be used.\n  - EXPIRED: The physical card expired.\n",
                "enum": [
                  "DAMAGED",
                  "LOST_STOLEN",
                  "EXPIRED"
                ]
              },
              "replacementId": {
                "type": "string",
                "pattern": "^[0-9]+$",
                "description": "The unique identifier of the new card that replaces this card.",
                "example": "345678901"
              }
            }
          },
          "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",
            "example": "Acme Ltd"
          }
        }
      },
      "DigitalWallets": {
        "type": "object",
        "properties": {
          "pushProvisioningEnabled": {
            "type": "boolean",
            "description": "Indicates whether the card is enabled for push provisioning in a digital wallet.",
            "example": true
          },
          "walletsEnabled": {
            "type": "boolean",
            "description": "Indicates whether the card is enabled for tokenization in a digital wallet.",
            "example": true
          },
          "artworkReference": {
            "type": "string",
            "description": "The artwork reference that will be used if the card is enabled for tokenization in a digital wallet.",
            "example": "ART_001"
          }
        }
      },
      "ThreeDSecureAuthConfig": {
        "deprecated": true,
        "type": "object",
        "required": [
          "linkedUserId",
          "primaryChannel"
        ],
        "properties": {
          "linkedUserId": {
            "type": "string",
            "description": "The Authorized user whose authentication / billing details will be reflected on the card for verification purposes such as 3-D Secure.",
            "pattern": "^[0-9]+$",
            "deprecated": true,
            "example": "987654321"
          },
          "primaryChannel": {
            "type": "string",
            "description": "Primary Authentication Method",
            "enum": [
              "OTP_SMS",
              "BIOMETRICS",
              "TWILIO_AUTHY",
              "CORPORATE_SCA_API"
            ],
            "x-hidden-enum-values": [
              "CORPORATE_SCA_API"
            ]
          },
          "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,
              "example": "Alex Smith"
            },
            "value": {
              "type": "string",
              "minLength": 1,
              "maxLength": 100,
              "example": "INV-1042"
            }
          }
        },
        "uniqueItems": true,
        "maxItems": 10
      },
      "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",
            "example": "345678901"
          },
          "reason": {
            "description": "The reason why the card was replaced.\n  - DAMAGED: The physical card was damaged and cannot be used at a physical terminal.\n  - LOST_STOLEN: The physical card was either lost or stolen and cannot be used.\n  - EXPIRED: The card expired.\n  - COMPROMISED: The virtual card was compromised; the virtual card details have been exposed or accessed without authorization.\n",
            "type": "string",
            "enum": [
              "DAMAGED",
              "LOST_STOLEN",
              "EXPIRED",
              "COMPROMISED"
            ]
          }
        }
      },
      "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.",
            "example": "Travel card"
          },
          "nameOnCard": {
            "maxLength": 27,
            "minLength": 1,
            "pattern": "^[a-zA-Z0-9ßÀÁÂÃÄÅǍÆÇÈÉÊËÌÍÎÏÒÓÔÕÖØŠÙÚÛÜŸÝĄĆČĎĘĹĽŁŃŇÑŐŔŚȘȚŤŰŹŻŽàáâãäåǎæçèéêëìíîïòóôõöøšùúûüÿýąćčďęĺľłńňñőŕśșțťűźżž\\-^. '-]*$",
            "type": "string",
            "description": "The card holder's name for the card.\n\nThis may be verified by merchants when the card is used online. For Physical cards, this field will be printed on the card.\nThe maximum characters allowed will depend on the design chosen and will be provided to you by Weavr when setting up your plastic cards.\n",
            "example": "Alex Smith"
          },
          "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.",
            "example": "Acme Ltd"
          },
          "cardholderMobileNumber": {
            "description": "The mobile number including country code of the card holder.\n\nFor transactions that require a 3DS challenge, an SMS with a code will be sent on this number, to be entered during an online purchase.\n",
            "maxLength": 15,
            "minLength": 5,
            "pattern": "^\\+[0-9]+$",
            "type": "string",
            "x-internal": true,
            "example": "+447700900123"
          },
          "billingAddress": {
            "description": "The billing address set for the card holder. This may be verified by merchants when the card is used online.",
            "allOf": [
              {
                "$ref": "#/components/schemas/BillingAddress"
              }
            ]
          },
          "digitalWallets": {
            "description": "The Card Tokenization details",
            "allOf": [
              {
                "$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",
            "allOf": [
              {
                "$ref": "#/components/schemas/ThreeDSecureAuthConfig"
              }
            ],
            "x-internal": true
          },
          "mode": {
            "type": "string",
            "description": "The card can be created in prepaid mode or debit mode.\n\n- A prepaid mode card has its own balance and can have funds transferred to or from it.\n- 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.\n",
            "example": "PREPAID_MODE"
          },
          "externalData": {
            "$ref": "#/components/schemas/ExternalData"
          },
          "renewalType": {
            "$ref": "#/components/schemas/CardRenewalType"
          },
          "userId": {
            "allOf": [
              {
                "$ref": "#/components/schemas/UserId"
              }
            ],
            "description": "The Authorized 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."
          }
        }
      },
      "PrepaidModeCardRequest": {
        "allOf": [
          {
            "$ref": "#/components/schemas/ManagedCardRequest"
          },
          {
            "type": "object",
            "required": [
              "currency"
            ],
            "properties": {
              "mode": {
                "type": "string",
                "enum": [
                  "PREPAID_MODE"
                ],
                "description": "Must be `PREPAID_MODE`. The card has its own balance in the required currency."
              },
              "currency": {
                "$ref": "#/components/schemas/Currency"
              }
            }
          }
        ]
      },
      "DebitModeCardRequest": {
        "allOf": [
          {
            "$ref": "#/components/schemas/ManagedCardRequest"
          },
          {
            "type": "object",
            "required": [
              "parentManagedAccountId"
            ],
            "properties": {
              "mode": {
                "type": "string",
                "enum": [
                  "DEBIT_MODE"
                ],
                "description": "Must be `DEBIT_MODE`. The card spends from the required parent managed account and has no balance of its own."
              },
              "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.",
                "example": "123456789"
              },
              "userCurrency": {
                "$ref": "#/components/schemas/SupportedUserCurrency"
              }
            }
          }
        ]
      },
      "SystemManagedCard": {
        "required": [
          "externalHandle",
          "cardBrand",
          "cardLevelClassification",
          "creationTimestamp",
          "currency",
          "expiryPeriodMonths",
          "id",
          "nameOnCard",
          "profileId",
          "renewalType",
          "type",
          "mode",
          "state",
          "cardNumber",
          "cvv",
          "cardNumberFirstSix",
          "cardNumberLastFour",
          "startMmyy",
          "expiryMmyy",
          "billingAddress"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "pattern": "^[0-9]+$",
            "description": "The unique identifier of the card.",
            "example": "234567890"
          },
          "profileId": {
            "$ref": "#/components/schemas/ProfileId"
          },
          "externalHandle": {
            "type": "string",
            "description": "A uniquely generated code used to identify a card.\n\nThis code is to be used instead of the sensitive card number in order to refer to a card when opening a support ticket.\n",
            "example": "7F3E2B1A9C"
          },
          "tag": {
            "$ref": "#/components/schemas/Tag"
          },
          "currency": {
            "$ref": "#/components/schemas/Currency"
          },
          "state": {
            "$ref": "#/components/schemas/ManagedInstrumentState"
          },
          "type": {
            "type": "string",
            "description": "The type of card:\n  - VIRTUAL: Not a printed or embedded card. The card can be used online or added to digital wallets.\n  - 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.\n",
            "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.",
            "example": "453201"
          },
          "cardNumberLastFour": {
            "pattern": "^[0-9]{4}$",
            "type": "string",
            "description": "The last four digits of the card number.",
            "example": "0366"
          },
          "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.",
            "example": "Alex Smith"
          },
          "startMmyy": {
            "maxLength": 4,
            "minLength": 4,
            "pattern": "^[0-9]*$",
            "type": "string",
            "description": "The start date of this card, in MMYY format.",
            "example": "0826"
          },
          "expiryMmyy": {
            "maxLength": 4,
            "minLength": 4,
            "type": "string",
            "description": "The end date of this card, in MMYY format.",
            "example": "0829"
          },
          "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.",
            "example": 36
          },
          "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.",
            "example": 1880236800000
          },
          "creationTimestamp": {
            "type": "integer",
            "format": "int64",
            "description": "The timestamp when the card was created, expressed in Epoch timestamp using millisecond precision.",
            "example": 1786118400000
          },
          "billingAddress": {
            "description": "The billing address set for the cardholder. This can be checked by the merchant during online purchases.",
            "allOf": [
              {
                "$ref": "#/components/schemas/BillingAddress"
              }
            ]
          },
          "authForwardingDefaultTimeoutDecision": {
            "type": "string",
            "description": "Default decision for auth forwarding on timeout",
            "enum": [
              "APPROVE",
              "DECLINE"
            ]
          },
          "mode": {
            "type": "string",
            "description": "The mode with which this card was created:\n\n- A prepaid mode card has its own balance and can have funds transferred to or from it.\n- 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.\n",
            "example": "PREPAID_MODE"
          },
          "externalData": {
            "$ref": "#/components/schemas/ExternalData"
          },
          "spendActor": {
            "$ref": "#/components/schemas/SpendActor"
          }
        },
        "discriminator": {
          "propertyName": "mode",
          "mapping": {
            "PREPAID_MODE": "#/components/schemas/PrepaidModeSystemManagedCard",
            "DEBIT_MODE": "#/components/schemas/DebitModeSystemManagedCard"
          }
        }
      },
      "PrepaidModeSystemManagedCard": {
        "allOf": [
          {
            "$ref": "#/components/schemas/SystemManagedCard"
          },
          {
            "type": "object",
            "properties": {
              "balances": {
                "$ref": "#/components/schemas/ManagedInstrumentBalance"
              }
            }
          }
        ]
      },
      "DebitModeSystemManagedCard": {
        "allOf": [
          {
            "$ref": "#/components/schemas/SystemManagedCard"
          },
          {
            "type": "object",
            "properties": {
              "parentManagedAccountId": {
                "type": "integer",
                "format": "int64",
                "description": "The parent managed account of a debit mode card.",
                "example": 123456789
              },
              "availableToSpend": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/AvailableToSpend"
                }
              },
              "userCurrency": {
                "$ref": "#/components/schemas/SupportedUserCurrency"
              }
            }
          }
        ]
      },
      "SpendActor": {
        "type": "string",
        "description": "Indicates whether the card is operated by a system or a user.",
        "enum": [
          "SYSTEM",
          "USER"
        ]
      },
      "SystemManagedCardRequest": {
        "required": [
          "profileId",
          "nameOnCard",
          "billingAddress",
          "mode"
        ],
        "type": "object",
        "properties": {
          "profileId": {
            "$ref": "#/components/schemas/ProfileId"
          },
          "tag": {
            "$ref": "#/components/schemas/Tag"
          },
          "nameOnCard": {
            "maxLength": 27,
            "minLength": 1,
            "pattern": "^[a-zA-Z0-9ßÀÁÂÃÄÅǍÆÇÈÉÊËÌÍÎÏÒÓÔÕÖØŠÙÚÛÜŸÝĄĆČĎĘĹĽŁŃŇÑŐŔŚȘȚŤŰŹŻŽàáâãäåǎæçèéêëìíîïòóôõöøšùúûüÿýąćčďęĺľłńňñőŕśșțťűźżž\\-^. '-]*$",
            "type": "string",
            "description": "The card holder's name for the card.\n\nThis may be verified by merchants when the card is used online. For Physical cards, this field will be printed on the card.\nThe maximum characters allowed will depend on the design chosen and will be provided to you by Weavr when setting up your plastic cards.\n",
            "example": "Alex Smith"
          },
          "billingAddress": {
            "description": "The billing address set for the card holder. This may be verified by merchants when the card is used online.",
            "allOf": [
              {
                "$ref": "#/components/schemas/BillingAddress"
              }
            ]
          },
          "authForwardingDefaultTimeoutDecision": {
            "type": "string",
            "description": "Default decision for auth forwarding on timeout",
            "enum": [
              "APPROVE",
              "DECLINE"
            ]
          },
          "mode": {
            "type": "string",
            "description": "The card can be created in prepaid mode or debit mode.\n\n- A prepaid mode card has its own balance and can have funds transferred to or from it.\n- 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.\n",
            "example": "PREPAID_MODE"
          },
          "externalData": {
            "$ref": "#/components/schemas/ExternalData"
          }
        },
        "discriminator": {
          "propertyName": "mode",
          "mapping": {
            "PREPAID_MODE": "#/components/schemas/PrepaidModeSystemManagedCardRequest",
            "DEBIT_MODE": "#/components/schemas/DebitModeSystemManagedCardRequest"
          }
        }
      },
      "PrepaidModeSystemManagedCardRequest": {
        "allOf": [
          {
            "$ref": "#/components/schemas/SystemManagedCardRequest"
          },
          {
            "type": "object",
            "required": [
              "currency"
            ],
            "properties": {
              "currency": {
                "$ref": "#/components/schemas/Currency"
              }
            }
          }
        ]
      },
      "DebitModeSystemManagedCardRequest": {
        "allOf": [
          {
            "$ref": "#/components/schemas/SystemManagedCardRequest"
          },
          {
            "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.",
                "example": "123456789"
              },
              "userCurrency": {
                "$ref": "#/components/schemas/SupportedUserCurrency"
              }
            }
          }
        ]
      },
      "PhysicalCardActivationCode": {
        "pattern": "^[0-9]{1,6}$",
        "type": "string",
        "example": "123456"
      },
      "CardPaymentSubtype": {
        "type": "string",
        "description": "Scheme-network subtype that further classifies an event. Reversal-vs-original lives on the separate `reversal` field on each event.",
        "enum": [
          "sale_purchases",
          "cash_withdrawals",
          "sales_with_cashback",
          "mail_or_telephone_orders",
          "account_funding",
          "purchase_reversals",
          "cash_withdrawal_reversals",
          "purchase_refunds",
          "purchase_refund_reversals",
          "original_credit_transactions",
          "original_credit_transaction_reversals"
        ]
      },
      "CardPaymentList": {
        "type": "object",
        "description": "Paginated list of CardPayments.",
        "properties": {
          "cardPayments": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CardPayment"
            }
          },
          "count": {
            "type": "integer",
            "format": "int64",
            "example": 42
          },
          "responseCount": {
            "type": "integer",
            "format": "int64",
            "example": 10
          }
        }
      },
      "CardPaymentEventDetail": {
        "type": "object",
        "description": "Standalone card payment event — same four variants as `CardPaymentEvent`, but each row also carries the parent `CardPayment` context (`cardPaymentId`, `card`, `merchant`) so embedders can render an event-centric history feed without fetching each parent card payment.\n\nUsed as the item type of `GET /card_payment_events`. For the lean nested version (inside `CardPayment.events[]`), see `CardPaymentEvent`.\n",
        "required": [
          "type"
        ],
        "properties": {
          "type": {
            "$ref": "#/components/schemas/CardPaymentEventType"
          }
        },
        "discriminator": {
          "propertyName": "type",
          "mapping": {
            "AUTHORISATION": "#/components/schemas/CardPaymentAuthorisationEventDetail",
            "SETTLEMENT": "#/components/schemas/CardPaymentSettlementEventDetail",
            "REFUND": "#/components/schemas/CardPaymentRefundEventDetail",
            "ORIGINAL_CREDIT": "#/components/schemas/CardPaymentOriginalCreditEventDetail"
          }
        }
      },
      "CardPaymentEventContext": {
        "type": "object",
        "description": "Parent card-payment context attached to standalone (`*EventDetail`) variants so each event row returned by `GET /card_payment_events` is self-contained — no need to fetch the parent card payment separately to render a history entry.",
        "required": [
          "cardPaymentId",
          "card",
          "merchant"
        ],
        "properties": {
          "cardPaymentId": {
            "type": "string",
            "pattern": "^[0-9]+$",
            "description": "Id of the parent `CardPayment` this event belongs to.",
            "example": "123456789"
          },
          "card": {
            "$ref": "#/components/schemas/Card"
          },
          "merchant": {
            "$ref": "#/components/schemas/Merchant"
          }
        }
      },
      "CardPaymentAuthorisationEventDetail": {
        "description": "Authorization event with parent card-payment context — used by `GET /card_payment_events` so each row is self-contained.",
        "allOf": [
          {
            "$ref": "#/components/schemas/CardPaymentEventDetail"
          },
          {
            "$ref": "#/components/schemas/CardPaymentAuthorisationEvent"
          },
          {
            "$ref": "#/components/schemas/CardPaymentEventContext"
          }
        ]
      },
      "CardPaymentSettlementEventDetail": {
        "description": "Settlement event with parent card-payment context — used by `GET /card_payment_events` so each row is self-contained.",
        "allOf": [
          {
            "$ref": "#/components/schemas/CardPaymentEventDetail"
          },
          {
            "$ref": "#/components/schemas/CardPaymentSettlementEvent"
          },
          {
            "$ref": "#/components/schemas/CardPaymentEventContext"
          }
        ]
      },
      "CardPaymentRefundEventDetail": {
        "description": "Refund event with parent card-payment context — used by `GET /card_payment_events` so each row is self-contained.",
        "allOf": [
          {
            "$ref": "#/components/schemas/CardPaymentEventDetail"
          },
          {
            "$ref": "#/components/schemas/CardPaymentRefundEvent"
          },
          {
            "$ref": "#/components/schemas/CardPaymentEventContext"
          }
        ]
      },
      "CardPaymentOriginalCreditEventDetail": {
        "description": "Original-credit event with parent card-payment context — used by `GET /card_payment_events` so each row is self-contained.",
        "allOf": [
          {
            "$ref": "#/components/schemas/CardPaymentEventDetail"
          },
          {
            "$ref": "#/components/schemas/CardPaymentOriginalCreditEvent"
          },
          {
            "$ref": "#/components/schemas/CardPaymentEventContext"
          }
        ]
      },
      "CardPaymentEventList": {
        "type": "object",
        "description": "Paginated list of `CardPaymentEventDetail`.",
        "properties": {
          "events": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CardPaymentEventDetail"
            }
          },
          "count": {
            "type": "integer",
            "format": "int64",
            "example": 42
          },
          "responseCount": {
            "type": "integer",
            "format": "int64",
            "example": 10
          }
        }
      },
      "ProfileLevelSpendRules": {
        "allOf": [
          {
            "$ref": "#/components/schemas/CommonLevelSpendRules"
          },
          {
            "type": "object",
            "properties": {
              "authForwardingEnabled": {
                "type": "boolean",
                "description": "Indicates if auth forwarding is enabled on profile level",
                "example": false
              }
            }
          }
        ]
      },
      "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 minimum transaction amount is to be set.",
                "example": 100
              },
              "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.",
                "example": 50000
              }
            }
          }
        ]
      },
      "AllLevelSpendRules": {
        "type": "object",
        "properties": {
          "allowedMerchantCategories": {
            "deprecated": true,
            "type": "array",
            "maxItems": 200,
            "items": {
              "type": "string"
            },
            "description": "Allowlist 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": "Blocklist 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": "Allowlist 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": "Blocklist 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": "Allowlist 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": "Blocklist 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.",
            "example": true
          },
          "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.",
            "example": true
          },
          "allowECommerce": {
            "deprecated": true,
            "type": "boolean",
            "description": "Indicates if an online transaction is allowed on the card. This field is deprecated - use `cardLevelSpendRules.allowECommerce` instead.",
            "example": true
          },
          "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.",
            "example": true
          },
          "allowCreditAuthorisations": {
            "deprecated": true,
            "type": "boolean",
            "description": "Indicates whether the card can receive a credit transaction. This field is deprecated - use `cardLevelSpendRules.allowCreditAuthorisations` instead.",
            "example": true
          },
          "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 minimum transaction amount is to be set. This field is deprecated - use `cardLevelSpendRules.minTransactionAmount` instead.",
            "example": 100
          },
          "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.",
            "example": 50000
          },
          "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"
          }
        }
      },
      "SensitivePin": {
        "type": "object",
        "description": "The PIN used for in-person transactions done with physical cards.\n\nUnless you are PCI-DSS compliant and have opted to switch off Weavr's security model, the card's PIN will be tokenized.\n\nTo show the PIN to your user, you need to embed the Display Card PIN UI Component in your application. This accepts the tokenized PIN and shows the plain text PIN to the user on screen.\n",
        "required": [
          "value"
        ],
        "properties": {
          "value": {
            "minLength": 4,
            "maxLength": 24,
            "type": "string",
            "x-sensitive-attribute": {
              "type": "PIN",
              "lifetime": "TEMPORARY"
            },
            "example": "1234"
          }
        }
      },
      "ManagedCardPhysicalUpgradeBase": {
        "type": "object",
        "properties": {
          "productReference": {
            "type": "string",
            "description": "The product design reference to be used for this physical card.\n\nThis 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.\n",
            "example": "PRD_001"
          },
          "carrierType": {
            "type": "string",
            "description": "The carrier type to be used for this physical card.\n\nThis 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.\n",
            "example": "STANDARD"
          },
          "activationCode": {
            "allOf": [
              {
                "$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 depend on the chosen design and will be provided when your plastic cards are configured. This field is deprecated.",
            "deprecated": true,
            "example": "Acme Ltd"
          }
        }
      },
      "name": {
        "maxLength": 100,
        "type": "string",
        "example": "Alex"
      },
      "surname": {
        "maxLength": 100,
        "type": "string",
        "example": "Smith"
      },
      "IndividualCardDeliveryAddress": {
        "description": "The delivery address of the cardholder.",
        "allOf": [
          {
            "$ref": "#/components/schemas/DeliveryAddress"
          },
          {
            "type": "object",
            "properties": {
              "name": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/name"
                  }
                ],
                "description": "The cardholder's given name printed on the card carrier. A linked User's given name takes precedence."
              },
              "surname": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/surname"
                  }
                ],
                "description": "The cardholder's surname printed on the card carrier. A linked User's surname takes precedence."
              },
              "contactNumber": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/PhoneNumber"
                  }
                ],
                "description": "Required when `deliveryMethod` is `COURIER`. It isn't used for other delivery methods, even if supplied."
              }
            }
          }
        ]
      },
      "ManagedCardPhysicalUpgrade": {
        "allOf": [
          {
            "$ref": "#/components/schemas/ManagedCardPhysicalUpgradeBase"
          },
          {
            "type": "object",
            "required": [
              "deliveryAddress"
            ],
            "properties": {
              "deliveryMethod": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/DeliveryMethod"
                  }
                ],
                "description": "The delivery method for this individual card. If omitted, `STANDARD_DELIVERY` is used."
              },
              "deliveryAddress": {
                "$ref": "#/components/schemas/IndividualCardDeliveryAddress"
              },
              "bulkDelivery": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/BulkCardDelivery"
                  }
                ],
                "const": false,
                "default": false,
                "description": "Must be `false` or omitted for individual delivery."
              }
            }
          }
        ],
        "example": {
          "deliveryMethod": "FIRST_CLASS_MAIL",
          "bulkDelivery": false,
          "deliveryAddress": {
            "name": "Jane",
            "surname": "Doe",
            "addressLine1": "221B Baker Street",
            "city": "London",
            "postCode": "NW1 6XE",
            "country": "GB"
          },
          "pin": {
            "value": "<tokenised-pin>"
          }
        }
      },
      "BulkCardDeliveryAddress": {
        "description": "The delivery address for the processing location that the parcel is sent to.",
        "allOf": [
          {
            "$ref": "#/components/schemas/DeliveryAddress"
          },
          {
            "type": "object",
            "required": [
              "contactNumber"
            ],
            "properties": {
              "name": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/name"
                  }
                ],
                "description": "The parcel recipient's given name. This isn't printed on the individual card carriers."
              },
              "surname": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/surname"
                  }
                ],
                "description": "The parcel recipient's surname. This isn't printed on the individual card carriers."
              },
              "contactNumber": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/PhoneNumber"
                  }
                ],
                "description": "The parcel recipient's contact number, printed on the parcel and used by the courier to arrange delivery."
              }
            }
          }
        ]
      },
      "ManagedCardPhysicalUpgradeBulk": {
        "allOf": [
          {
            "$ref": "#/components/schemas/ManagedCardPhysicalUpgradeBase"
          },
          {
            "type": "object",
            "required": [
              "deliveryMethod",
              "deliveryAddress",
              "bulkDelivery"
            ],
            "properties": {
              "deliveryMethod": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/DeliveryMethod"
                  }
                ],
                "description": "The delivery method for the bulk parcel.",
                "enum": [
                  "REGISTERED_MAIL",
                  "COURIER"
                ]
              },
              "deliveryAddress": {
                "$ref": "#/components/schemas/BulkCardDeliveryAddress"
              },
              "bulkDelivery": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/BulkCardDelivery"
                  }
                ],
                "const": true,
                "description": "Must be `true` for bulk delivery."
              }
            }
          }
        ],
        "example": {
          "deliveryMethod": "COURIER",
          "bulkDelivery": true,
          "deliveryAddress": {
            "name": "Alex",
            "surname": "Ops-Manager",
            "addressLine1": "5 Canary Wharf",
            "city": "London",
            "postCode": "E14 5AB",
            "country": "GB",
            "contactNumber": "+447700900123"
          },
          "pin": {
            "value": "<tokenised-pin>"
          }
        }
      },
      "TransactionCancelRequest": {
        "required": [
          "id"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "pattern": "^[0-9]+$",
            "description": "The id of the transaction.",
            "example": "123456789"
          },
          "cancellationReason": {
            "$ref": "#/components/schemas/TransactionCancellationReason"
          }
        }
      },
      "TransactionBulkCancelRequest": {
        "required": [
          "cancellations"
        ],
        "type": "object",
        "properties": {
          "cancellations": {
            "type": "array",
            "description": "Contains the details of the transactions to be canceled.",
            "items": {
              "$ref": "#/components/schemas/TransactionCancelRequest"
            }
          }
        }
      },
      "TransactionCancelResponse": {
        "required": [
          "id",
          "state"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "pattern": "^[0-9]+$",
            "description": "The id of the transaction.",
            "example": "123456789"
          },
          "state": {
            "type": "string",
            "enum": [
              "SUCCESS",
              "ERROR"
            ]
          },
          "errorCode": {
            "type": "string",
            "description": "Indicates the reason why the cancel operation could not be executed.\nMay be included in the response if the state is `ERROR`.\n\n- `GENERIC`: A generic error has occurred.\n- `TRANSACTION_NOT_SCHEDULED`: The transaction is not in state `SCHEDULED`.\n- `FORBIDDEN`: The current user is not allowed to access this transaction.\n- `NOT_FOUND`: The transaction does not exist.\n",
            "enum": [
              "GENERIC",
              "TRANSACTION_NOT_SCHEDULED",
              "FORBIDDEN",
              "NOT_FOUND"
            ]
          }
        }
      },
      "TransactionBulkCancelResponse": {
        "required": [
          "cancellations"
        ],
        "type": "object",
        "properties": {
          "cancellations": {
            "type": "array",
            "description": "Contains the cancellation details for each of the transactions.",
            "items": {
              "$ref": "#/components/schemas/TransactionCancelResponse"
            }
          }
        }
      },
      "TransactionSingleCancelRequest": {
        "type": "object",
        "properties": {
          "cancellationReason": {
            "$ref": "#/components/schemas/TransactionCancellationReason"
          }
        }
      },
      "IncomingWireTransferList": {
        "type": "object",
        "description": "A paginated list of incoming wire transfers.",
        "properties": {
          "incomingWireTransfers": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/IncomingWireTransfer"
            }
          },
          "count": {
            "type": "integer",
            "format": "int64",
            "example": 42
          },
          "responseCount": {
            "type": "integer",
            "format": "int64",
            "example": 10
          }
        }
      },
      "SourceInstrumentType": {
        "type": "string",
        "enum": [
          "managed_accounts"
        ]
      },
      "OutgoingWireTransferUpdateBeneficiaryNameRequest": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "minLength": 1,
            "maxLength": 150,
            "description": "The new beneficiary name. Mutually exclusive with acceptVerifiedName. For FasterPayments/BACS: max 140 chars matching pattern ^[a-zA-Z0-9\\/\\-?:().,'+\\s#=!\"%&*<>;\\{@\\r\\n]*$. For IBAN: max 150 chars.",
            "example": "Alex Smith"
          },
          "acceptVerifiedName": {
            "type": "boolean",
            "description": "Set to true to accept the account name returned with a CLOSE_MATCH or EXACT_MATCH VoP/CoP result. Mutually exclusive with name.",
            "example": true
          }
        }
      },
      "OutgoingWireTransferUpdateBeneficiaryNameConflictSchemaErrorCode": {
        "type": "string",
        "enum": [
          "INVALID_STATE",
          "CONFLICT_BENEFICIARYID_NAME",
          "CONFLICT_EXTERNALACCOUNTID_NAME",
          "MODEL_CONSTRAINTS_VIOLATED",
          "NO_NAME_TO_ACCEPT"
        ]
      },
      "OutgoingWireTransferUpdateBeneficiaryNameConflict": {
        "type": "object",
        "properties": {
          "errorCode": {
            "$ref": "#/components/schemas/OutgoingWireTransferUpdateBeneficiaryNameConflictSchemaErrorCode"
          }
        }
      },
      "OutgoingWireTransferPaymentConfirmationConflictErrorCode": {
        "type": "string",
        "enum": [
          "TRANSFER_NOT_COMPLETED"
        ]
      },
      "OutgoingWireTransferPaymentConfirmationConflict": {
        "type": "object",
        "required": [
          "errorCode"
        ],
        "properties": {
          "errorCode": {
            "$ref": "#/components/schemas/OutgoingWireTransferPaymentConfirmationConflictErrorCode"
          }
        }
      },
      "CorrespondentBankingOwtCreateRequest": {
        "required": [
          "profileId",
          "sourceInstrument",
          "amount",
          "originator",
          "beneficiary",
          "purpose"
        ],
        "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]+$",
                "example": "123456789"
              }
            }
          },
          "amount": {
            "description": "The amount to transfer.",
            "allOf": [
              {
                "$ref": "#/components/schemas/CurrencyAmount"
              }
            ]
          },
          "originator": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/CorrespondentBankingIndividualOriginator"
              },
              {
                "$ref": "#/components/schemas/CorrespondentBankingBusinessOriginator"
              }
            ]
          },
          "beneficiary": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/CorrespondentBankingSEPABeneficiary"
              },
              {
                "$ref": "#/components/schemas/CorrespondentBankingRIXBeneficiary"
              },
              {
                "$ref": "#/components/schemas/CorrespondentBankingFasterPaymentsBeneficiary"
              }
            ]
          },
          "purpose": {
            "type": "string",
            "maxLength": 255,
            "description": "The purpose of the payment.",
            "example": "Invoice payment"
          },
          "description": {
            "maxLength": 35,
            "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:\n\n`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.\n\n`Faster Payments` <= `18` characters\n",
            "example": "Invoice 1042"
          },
          "externalData": {
            "type": "array",
            "description": "Additional external data as key-value pairs.",
            "items": {
              "$ref": "#/components/schemas/CorrespondentBankingExternalData"
            }
          },
          "scheduledTimestamp": {
            "$ref": "#/components/schemas/ScheduledTimestamp"
          }
        }
      },
      "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:\n\n`InstrumentDetailsBeneficiary` or `BankAccountDetailsBeneficiary` with `IBANDetails`: >= `1` character and <= `150` characters\n\n`BankAccountDetailsBeneficiary` with `FasterPaymentsBankDetailsOrBACSBankDetails`: >= `1` character and <= `140` characters with a pattern of `^[a-zA-Z0-9\\/\\-?:().,’+\\s#=!\"%&*<>;\\{@\\r\\n]*$`\n(please note that the `’` symbol is the unicode value U+2019 (right single quotation mark) and not the unicode value U+0027 (apostrophe))\n",
            "example": "Acme Ltd"
          }
        }
      },
      "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}$",
            "example": "GB"
          },
          "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",
            "example": "1990-01-01"
          },
          "fullName": {
            "type": "string",
            "description": "The person beneficiary name. The allowed length and pattern is dependent on the beneficiary details type:\n\n`InstrumentDetailsBeneficiary` or `BankAccountDetailsBeneficiary` with `IBANDetails`: >= `1` character and <= `150` characters\n\n`BankAccountDetailsBeneficiary` with `FasterPaymentsBankDetailsOrBACSBankDetails`: >= `1` character and <= `140` characters with a pattern of `^[a-zA-Z0-9\\/\\-?:().,’+\\s#=!\"%&*<>;\\{@\\r\\n]*$`\n(please note that the `’` symbol is the unicode value U+2019 (right single quotation mark) and not the unicode value U+0027 (apostrophe))\n",
            "example": "Alex Smith"
          }
        }
      },
      "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.",
            "example": "1 High Street, London W1A 1AA"
          },
          "bankName": {
            "type": "string",
            "description": "The beneficiary's bank name.",
            "example": "National Westminster Bank PLC"
          },
          "bankAddress": {
            "maxLength": 150,
            "minLength": 1,
            "type": "string",
            "description": "The beneficiary's bank address.",
            "example": "250 Bishopsgate, London EC2M 4AA"
          },
          "bankCountry": {
            "type": "string",
            "description": "The beneficiary's bank country in ISO 3166 alpha-2 format.",
            "maxLength": 2,
            "minLength": 2,
            "pattern": "^[A-Z]{2}$",
            "example": "GB"
          },
          "bankAccountDetails": {
            "description": "Details of the beneficiary bank account, depending on the type of transfer chosen.",
            "oneOf": [
              {
                "$ref": "#/components/schemas/IBANDetails"
              },
              {
                "$ref": "#/components/schemas/FasterPaymentsBankDetailsOrBACSBankDetails"
              }
            ]
          }
        }
      },
      "BasicBeneficiary": {
        "required": [
          "trustLevel",
          "beneficiaryInformation",
          "beneficiaryDetails"
        ],
        "type": "object",
        "properties": {
          "trustLevel": {
            "description": "The value that determines whether a Beneficiary is trusted or not.",
            "allOf": [
              {
                "$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 categorize a beneficiary for easier searching and filtering.",
            "type": "string",
            "maxLength": 150,
            "example": "Suppliers"
          },
          "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"
              }
            ]
          }
        }
      },
      "BeneficiaryBatchOperation": {
        "type": "string",
        "enum": [
          "CREATE",
          "REMOVE"
        ]
      },
      "BeneficiaryOperationBatchId": {
        "required": [
          "batchId",
          "operation"
        ],
        "type": "object",
        "properties": {
          "batchId": {
            "description": "The unique identifier of a Beneficiary.",
            "type": "string",
            "pattern": "^[0-9]+$",
            "example": "123456789"
          },
          "operation": {
            "description": "Describes the operation that has occurred on a beneficiary batch.",
            "allOf": [
              {
                "$ref": "#/components/schemas/BeneficiaryBatchOperation"
              }
            ]
          }
        },
        "example": {
          "batchId": "123456789",
          "operation": "CREATE"
        }
      },
      "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"
        ]
      },
      "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.",
                "example": "123456789"
              },
              "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"
              }
            }
          }
        ]
      },
      "BeneficiaryBatchState": {
        "type": "string",
        "enum": [
          "INITIALISED",
          "FAILED",
          "PENDING_CHALLENGE",
          "CHALLENGE_FAILED",
          "CHALLENGE_COMPLETED",
          "COMPLETED"
        ]
      },
      "BeneficiaryBatch": {
        "type": "object",
        "required": [
          "operationBatchId",
          "state"
        ],
        "properties": {
          "operationBatchId": {
            "$ref": "#/components/schemas/BeneficiaryOperationBatchId"
          },
          "tag": {
            "$ref": "#/components/schemas/Tag"
          },
          "state": {
            "$ref": "#/components/schemas/BeneficiaryBatchState"
          }
        }
      },
      "RbacRole": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "pattern": "^[0-9]+$",
            "example": "123456789"
          },
          "name": {
            "type": "string",
            "example": "Finance approver"
          },
          "description": {
            "type": "string",
            "example": "Can approve outgoing payments"
          }
        }
      },
      "TransactionActivityItem": {
        "type": "object",
        "required": [
          "id",
          "type",
          "status",
          "amount",
          "instrument",
          "creationTimestamp"
        ],
        "description": "A transaction activity entry returned by the cross-instrument `/transactions` endpoint.\nCommon fields are surfaced at the top level for easy filtering and sorting without inspecting\nthe nested `transaction`. The full transaction object (Transfer, Send, OWT, CBT, IWT, CardPayment,\nFeeTransaction, SystemTransaction) is available under `transaction` for detailed consumption.\n",
        "properties": {
          "id": {
            "type": "string",
            "pattern": "^[0-9]+$",
            "description": "The transaction identifier.",
            "example": "123456789"
          },
          "type": {
            "$ref": "#/components/schemas/TransactionActivityType"
          },
          "status": {
            "$ref": "#/components/schemas/TransactionActivityStatus"
          },
          "direction": {
            "$ref": "#/components/schemas/TransactionActivityDirection"
          },
          "amount": {
            "description": "The primary transaction amount in the instrument's currency.",
            "allOf": [
              {
                "$ref": "#/components/schemas/CurrencyAmount"
              }
            ]
          },
          "instrument": {
            "description": "The instrument this transaction belongs to.",
            "allOf": [
              {
                "$ref": "#/components/schemas/InstrumentId"
              }
            ]
          },
          "fee": {
            "description": "The fee linked to this transaction, if any.",
            "allOf": [
              {
                "$ref": "#/components/schemas/FeeSummary"
              }
            ]
          },
          "creationTimestamp": {
            "type": "integer",
            "format": "int64",
            "example": 1786118400000
          },
          "lastUpdatedTimestamp": {
            "type": "integer",
            "format": "int64",
            "example": 1786118401250
          },
          "transaction": {
            "description": "The full transaction object. Schema matches the value of `type`.",
            "oneOf": [
              {
                "$ref": "#/components/schemas/Transfer"
              },
              {
                "$ref": "#/components/schemas/Send"
              },
              {
                "$ref": "#/components/schemas/OutgoingWireTransfer"
              },
              {
                "$ref": "#/components/schemas/CorrespondentBankingOwt"
              },
              {
                "$ref": "#/components/schemas/IncomingWireTransfer"
              },
              {
                "$ref": "#/components/schemas/CardPayment"
              },
              {
                "$ref": "#/components/schemas/FeeTransaction"
              },
              {
                "$ref": "#/components/schemas/SystemTransaction"
              }
            ]
          }
        }
      },
      "TransactionActivityList": {
        "type": "object",
        "description": "A paginated list of transaction activity entries.",
        "properties": {
          "transactions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TransactionActivityItem"
            }
          },
          "count": {
            "type": "integer",
            "format": "int64",
            "description": "The total number of records matching the filter criteria.",
            "example": 42
          },
          "responseCount": {
            "type": "integer",
            "format": "int64",
            "example": 10
          }
        }
      },
      "CorporateKybFailureReason": {
        "type": "string",
        "enum": [
          "UNDEFINED_REQUIRED_INTERVENTION",
          "DOCUMENTS_UNSATISFACTORY",
          "SUPPLIED_DATA_AND_DOCUMENTS_MISMATCH",
          "LANGUAGE_IN_DOCUMENTS_UNSUPPORTED",
          "SELFIE_UNSATISFACTORY",
          "SELFIE_AND_DOCUMENTS_MISMATCH",
          "CORPORATE_DETAILS_UNSATISFACTORY",
          "BENEFICIARY_DETAILS_UNSATISFACTORY",
          "REPRESENTATIVE_DETAILS_UNSATISFACTORY",
          "OTHER",
          "ROOT_USER_UNMATCHED_TO_DIRECTOR_OR_REPRESENTATIVE",
          "UNSUPPORTED_COUNTRY",
          "EXPIRED_KYC_DOCUMENTS"
        ]
      },
      "CorporateKybEvent": {
        "type": "object",
        "properties": {
          "corporateId": {
            "type": "string",
            "pattern": "^[0-9]+$",
            "description": "Identifier of the corporate."
          },
          "corporateEmail": {
            "type": "string",
            "description": "Email address of the corporate's root user."
          },
          "status": {
            "deprecated": true,
            "allOf": [
              {
                "$ref": "#/components/schemas/KyiStatus"
              }
            ],
            "description": "Effective KYB status of the corporate. Deprecated in favor of `corporateKybStatus`."
          },
          "details": {
            "type": "array",
            "deprecated": true,
            "description": "Actions that may be required after a temporary rejection. Deprecated in favor of KYB run information.",
            "items": {
              "$ref": "#/components/schemas/CorporateKybFailureReason"
            }
          },
          "rejectionComment": {
            "type": "string",
            "description": "Reason shown to the user after a temporary rejection."
          },
          "ongoingStatus": {
            "deprecated": true,
            "allOf": [
              {
                "$ref": "#/components/schemas/KyiStatus"
              }
            ],
            "description": "Ongoing KYB status of the corporate. Deprecated in favor of `corporateKybStatus`."
          },
          "corporateKybStatus": {
            "allOf": [
              {
                "$ref": "#/components/schemas/CorporateKybStatusValue"
              }
            ],
            "description": "Whether the corporate can use financial services with its regulatory financial institution."
          },
          "kybRuns": {
            "type": "array",
            "description": "Latest KYB run for each regulatory financial institution.",
            "items": {
              "$ref": "#/components/schemas/KybRun"
            }
          }
        }
      },
      "CorporateBeneficiaryEventType": {
        "type": "string",
        "description": "The beneficiary field whose change triggered the event.",
        "enum": [
          "STATUS_UPDATED",
          "BENEFICIARY_TYPE_UPDATED",
          "FIRST_NAME_UPDATED",
          "MIDDLE_NAME_UPDATED",
          "LAST_NAME_UPDATED",
          "EMAIL_UPDATED"
        ]
      },
      "BeneficiaryType": {
        "type": "string",
        "enum": [
          "UBO",
          "DIRECTOR",
          "UNKNOWN",
          "SHAREHOLDER",
          "PARTNER",
          "OTHER_DIRECTOR"
        ]
      },
      "CorporateBeneficiaryInfo": {
        "type": "object",
        "description": "Details of the beneficiary at the time of the event.",
        "properties": {
          "type": {
            "allOf": [
              {
                "$ref": "#/components/schemas/BeneficiaryType"
              }
            ],
            "description": "The beneficiary's role in the corporate."
          },
          "firstName": {
            "type": "string",
            "description": "First name of the beneficiary.",
            "example": "Alex"
          },
          "middleName": {
            "type": "string",
            "description": "Middle name of the beneficiary.",
            "example": "Jordan"
          },
          "lastName": {
            "type": "string",
            "description": "Last name of the beneficiary.",
            "example": "Smith"
          },
          "email": {
            "type": "string",
            "description": "Email address of the beneficiary.",
            "example": "alex.smith@example.com"
          },
          "status": {
            "allOf": [
              {
                "$ref": "#/components/schemas/KyiStatus"
              }
            ],
            "description": "Effective KYB status of the beneficiary."
          },
          "ongoingKybStatus": {
            "allOf": [
              {
                "$ref": "#/components/schemas/KyiStatus"
              }
            ],
            "description": "Ongoing KYB status of the beneficiary."
          }
        }
      },
      "CorporateBeneficiaryEventDetails": {
        "type": "object",
        "description": "The corporate and beneficiary the event relates to.",
        "properties": {
          "corporateId": {
            "type": "string",
            "pattern": "^[0-9]+$",
            "description": "Identifier of the corporate the beneficiary belongs to.",
            "example": "123456789"
          },
          "corporateName": {
            "type": "string",
            "description": "Registered name of the corporate.",
            "example": "Acme Ltd"
          },
          "rootUserEmail": {
            "type": "string",
            "description": "Email address of the corporate's root user.",
            "example": "alex.smith@example.com"
          },
          "kybStatus": {
            "allOf": [
              {
                "$ref": "#/components/schemas/KyiStatus"
              }
            ],
            "description": "Status of the full company verification checks for the corporate."
          },
          "beneficiary": {
            "allOf": [
              {
                "$ref": "#/components/schemas/CorporateBeneficiaryInfo"
              }
            ],
            "description": "The beneficiary the event relates to."
          },
          "documentExpiryDate": {
            "type": "string",
            "pattern": "^[0-9]+$",
            "description": "When the beneficiary's identity document expires. Epoch timestamp using millisecond\nprecision.\n",
            "example": "1786118400000"
          },
          "identityRestrictionDate": {
            "type": "string",
            "pattern": "^[0-9]+$",
            "description": "When the corporate will be restricted if the beneficiary's verification is not brought\nup to date. Epoch timestamp using millisecond precision.\n",
            "example": "1786118400000"
          }
        }
      },
      "CorporateBeneficiaryEvent": {
        "type": "object",
        "description": "Sent on the `/corporates/kyb/beneficiaries/watch` webhook when the verification status or\ndetails of a corporate beneficiary change. A beneficiary is a director, UBO, shareholder,\nor partner whose own verification contributes to the corporate's KYB outcome.\n",
        "properties": {
          "event": {
            "type": "array",
            "description": "What changed on the beneficiary. Each entry names the field that triggered the event\nfollowed by the action that occurred.\n",
            "items": {
              "$ref": "#/components/schemas/CorporateBeneficiaryEventType"
            }
          },
          "eventDetails": {
            "type": "array",
            "description": "Reasons, if any, describing why the event occurred.",
            "items": {
              "$ref": "#/components/schemas/CorporateKybFailureReason"
            }
          },
          "additionalInformation": {
            "allOf": [
              {
                "$ref": "#/components/schemas/CorporateBeneficiaryEventDetails"
              }
            ],
            "description": "Context about the corporate and the beneficiary the event relates to."
          },
          "rejectionComment": {
            "type": "string",
            "description": "Reason shown to the user after a temporary rejection."
          }
        }
      },
      "IdentityLifecycleActor": {
        "type": "string",
        "description": "Who performed the activation or deactivation:\n  - `ADMIN`: Weavr, through the Admin API or Admin Portal.\n  - `INNOVATOR`: you, through the Innovator API or Embedder Portal.\n",
        "enum": [
          "ADMIN",
          "INNOVATOR"
        ]
      },
      "IdentityActivatedEvent": {
        "type": "object",
        "description": "Sent when a corporate or consumer identity is activated, restoring access to its\nmanaged accounts, cards, and outbound payments.\n",
        "required": [
          "actionDoneBy",
          "emailAddress"
        ],
        "properties": {
          "actionDoneBy": {
            "allOf": [
              {
                "$ref": "#/components/schemas/IdentityLifecycleActor"
              }
            ],
            "description": "Who activated the identity."
          },
          "emailAddress": {
            "type": "string",
            "description": "Email address of the identity's root user.",
            "example": "alex.smith@example.com"
          }
        }
      },
      "IdentityDeactivationReason": {
        "type": "string",
        "description": "Why an identity was deactivated:\n  - `ACCOUNT_REVIEW`: the identity is under review.\n  - `ACCOUNT_SECURITY`: deactivated in response to a security concern.\n  - `TEMPORARY`: a temporary deactivation the identity is expected to recover from.\n  - `ACCOUNT_CLOSURE`: the account is being closed.\n  - `ACCOUNT_ABANDONED`: the account was abandoned before it became usable.\n",
        "enum": [
          "ACCOUNT_REVIEW",
          "ACCOUNT_SECURITY",
          "TEMPORARY",
          "ACCOUNT_CLOSURE",
          "ACCOUNT_ABANDONED"
        ]
      },
      "IdentityDeactivatedEvent": {
        "type": "object",
        "description": "Sent when a corporate or consumer identity is deactivated. A deactivated identity cannot\nsign in, and its instruments stop accepting new transactions until it is activated again.\n",
        "required": [
          "actionDoneBy",
          "emailAddress",
          "reasonCode"
        ],
        "properties": {
          "actionDoneBy": {
            "allOf": [
              {
                "$ref": "#/components/schemas/IdentityLifecycleActor"
              }
            ],
            "description": "Who deactivated the identity."
          },
          "emailAddress": {
            "type": "string",
            "description": "Email address of the identity's root user.",
            "example": "alex.smith@example.com"
          },
          "reasonCode": {
            "allOf": [
              {
                "$ref": "#/components/schemas/IdentityDeactivationReason"
              }
            ],
            "description": "Why the identity was deactivated."
          }
        }
      },
      "ConsumerKycFailureReason": {
        "type": "string",
        "description": "Why a consumer's KYC check was rejected.",
        "enum": [
          "DOCUMENTS_UNSATISFACTORY",
          "SUPPLIED_DATA_AND_DOCUMENTS_MISMATCH",
          "LANGUAGE_IN_DOCUMENTS_UNSUPPORTED",
          "SELFIE_UNSATISFACTORY",
          "SELFIE_AND_DOCUMENTS_MISMATCH",
          "OTHER",
          "UNSUPPORTED_COUNTRY",
          "PEP_STATUS",
          "REJECTED_DUPLICATE",
          "EXPIRED_KYC_DOCUMENTS"
        ]
      },
      "ConsumerKycEvent": {
        "type": "object",
        "description": "Sent on the `/consumers/kyc/watch` webhook each time the KYC status of a consumer\nidentity changes.\n",
        "properties": {
          "consumerId": {
            "type": "string",
            "pattern": "^[0-9]+$",
            "description": "Identifier of the consumer.",
            "example": "123456789"
          },
          "consumerEmail": {
            "type": "string",
            "description": "Email address of the consumer's root user.",
            "example": "alex.smith@example.com"
          },
          "status": {
            "allOf": [
              {
                "$ref": "#/components/schemas/KyiStatus"
              }
            ],
            "description": "Effective KYC status of the consumer."
          },
          "details": {
            "type": "array",
            "description": "Actions that may be required to re-process KYC after a temporary rejection.",
            "items": {
              "$ref": "#/components/schemas/ConsumerKycFailureReason"
            }
          },
          "rejectionComment": {
            "type": "string",
            "description": "Reason shown to the user after a temporary rejection."
          },
          "kycLevel": {
            "allOf": [
              {
                "$ref": "#/components/schemas/KycLevel"
              }
            ],
            "description": "The KYC level the consumer has reached."
          },
          "ongoingStatus": {
            "allOf": [
              {
                "$ref": "#/components/schemas/KyiStatus"
              }
            ],
            "description": "Ongoing KYC status of the consumer."
          },
          "ongoingKycLevel": {
            "allOf": [
              {
                "$ref": "#/components/schemas/KycLevel"
              }
            ],
            "description": "The KYC level being assessed by the ongoing check."
          },
          "eventTimestamp": {
            "type": "string",
            "pattern": "^[0-9]+$",
            "description": "When the status changed. Epoch timestamp using millisecond precision.",
            "example": "1786118400000"
          }
        }
      },
      "AccountType": {
        "type": "string",
        "description": "An account can be of two types: Personal or Business.\n  - PERSONAL means that the account held at the external bank or PSP is registered under the ownership of a natural person or consumer identity;\n  - BUSINESS means that the account held at the external bank or PSP is registered under the ownership of a corporate entity.\n",
        "enum": [
          "BUSINESS",
          "PERSONAL"
        ]
      },
      "AccountNumberAndSortCode": {
        "required": [
          "accountNumber",
          "sortCode"
        ],
        "type": "object",
        "description": "Bank details",
        "properties": {
          "accountNumber": {
            "type": "string",
            "pattern": "^[0-9]{8}$",
            "description": "Account number",
            "example": "31926819"
          },
          "sortCode": {
            "type": "string",
            "pattern": "^[0-9]{6}$",
            "description": "Sort code",
            "example": "601613"
          },
          "secondaryReference": {
            "type": "string",
            "description": "Optional secondary reference for accounts without unique sort codes.",
            "example": "0012345678"
          }
        }
      },
      "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.",
            "example": "GB29NWBK60161331926819"
          },
          "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.",
            "example": "NWBKGB2L"
          }
        }
      },
      "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",
            "example": "Main GBP account"
          }
        }
      },
      "LinkedAccountState": {
        "type": "string",
        "description": "The state of the linked account:\n  - **PENDING_VERIFICATION**: The Linked Account is awaiting a decision and cannot be used yet.\n  - **ACTIVE**: The Linked Account is verified and active, ready to be used for self-to-self wire transfers.\n  - **BLOCKED**: The Linked Account is temporarily blocked, preventing any use of this external account in self-to-self wire transfers. Blocking is reversible.\n  - **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.\n  - **REJECTED**: The Linked Account failed verification and cannot be used for self-to-self wire transfers unless a new verification is completed in future.\nA Linked Account starts in the `PENDING_VERIFICATION` state and becomes `ACTIVE` once verified.\n",
        "enum": [
          "PENDING_VERIFICATION",
          "BLOCKED",
          "ACTIVE",
          "REJECTED",
          "REMOVED"
        ]
      },
      "LinkedAccount": {
        "required": [
          "id",
          "profileId",
          "name",
          "country",
          "state"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "The unique identifier of the linked account.",
            "pattern": "^[0-9]+$",
            "example": "123456789"
          },
          "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",
            "example": "Personal current account"
          },
          "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.\n",
            "example": "Alex Smith"
          },
          "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]+$",
            "example": "GB"
          },
          "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",
            "example": 1786118400000
          },
          "owner": {
            "$ref": "#/components/schemas/StringWrappedTypeId"
          }
        }
      },
      "UnknownSenderAccount": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "example": "Alex Smith"
          },
          "accountReference": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/Iban"
              },
              {
                "$ref": "#/components/schemas/AccountNumberAndSortCode"
              },
              {
                "$ref": "#/components/schemas/AccountDescriptor"
              }
            ]
          }
        }
      },
      "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 authorization is being performed",
            "example": "234567890"
          },
          "transactionId": {
            "type": "string",
            "pattern": "^[0-9]+$",
            "description": "The id of this transaction, for reference.",
            "example": "123456789"
          },
          "authorisationType": {
            "allOf": [
              {
                "$ref": "#/components/schemas/CardAuthorisationDetailsAuthorisationType"
              }
            ],
            "description": "The type of authorization (Debit or Credit)"
          },
          "sourceAmount": {
            "description": "The amount in the currency of the merchant.",
            "allOf": [
              {
                "$ref": "#/components/schemas/CurrencyAmount"
              }
            ]
          },
          "transactionAmount": {
            "allOf": [
              {
                "$ref": "#/components/schemas/CurrencyAmount"
              }
            ],
            "description": "The amount in the currency of the card."
          },
          "totalTransactionCost": {
            "allOf": [
              {
                "$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",
            "x-fieldValidation": "required",
            "example": 1786118400000
          },
          "merchantData": {
            "allOf": [
              {
                "$ref": "#/components/schemas/MerchantData"
              }
            ],
            "description": "Merchant related information"
          },
          "owner": {
            "allOf": [
              {
                "$ref": "#/components/schemas/IdentityId"
              }
            ],
            "description": "The owner of the card"
          },
          "cardholderPresent": {
            "allOf": [
              {
                "$ref": "#/components/schemas/CardHolderPresent"
              }
            ],
            "description": "Optional detail indicating if the card holder was present when the authorization occurred."
          },
          "cardPresent": {
            "type": "boolean",
            "description": "Optional detail indicating if the card was present when the authorization occurred.",
            "example": true
          },
          "authCode": {
            "maxLength": 6,
            "minLength": 1,
            "type": "string",
            "description": "The authorization code associated with this authorization.",
            "x-fieldValidation": "size(1,6)",
            "example": "123456"
          },
          "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.",
            "allOf": [
              {
                "$ref": "#/components/schemas/CurrencyAmount"
              }
            ]
          },
          "forexFee": {
            "description": "The forex fee, if set, that is included in the transactionAmount.",
            "allOf": [
              {
                "$ref": "#/components/schemas/CurrencyAmount"
              }
            ]
          },
          "mode": {
            "type": "string",
            "description": "The card can be created in prepaid mode or debit mode.\n\n- A prepaid mode card has its own balance and can have funds transferred to or from it.\n- 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.\n",
            "example": "PREPAID_MODE"
          },
          "transactionType": {
            "allOf": [
              {
                "$ref": "#/components/schemas/CardAuthorisationDetailsTransactionType"
              }
            ],
            "description": "The fine-grained transaction classification, e.g. ATM cash withdrawal, account funding transaction, original credit transaction."
          }
        },
        "discriminator": {
          "propertyName": "mode",
          "mapping": {
            "PREPAID_MODE": "#/components/schemas/PrepaidModeCardAuthorisationEvent",
            "DEBIT_MODE": "#/components/schemas/DebitModeCardAuthorisationEvent"
          }
        }
      },
      "PrepaidModeCardAuthorisationEvent": {
        "allOf": [
          {
            "$ref": "#/components/schemas/CardAuthorisationEvent"
          },
          {
            "type": "object",
            "required": [
              "currency"
            ],
            "properties": {
              "availableBalance": {
                "description": "The card available balance before this authorization is processed.",
                "allOf": [
                  {
                    "$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.",
                "example": "123456789"
              },
              "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"
                }
              }
            }
          }
        ]
      },
      "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 authorization has been made.",
            "x-fieldValidation": "required",
            "example": "Coffee Corner"
          },
          "merchantCategoryCode": {
            "type": "string",
            "description": "The merchant category code.",
            "example": "5812"
          },
          "merchantId": {
            "type": "string",
            "description": "The merchant ID.",
            "example": "MID123456"
          },
          "merchantDescription": {
            "type": "string",
            "description": "The merchant description",
            "example": "Coffee shop"
          },
          "merchantStreet": {
            "type": "string",
            "description": "The merchant street address (if available)",
            "example": "1 High Street"
          },
          "merchantCity": {
            "type": "string",
            "description": "The merchant city (if available)",
            "example": "London"
          },
          "merchantState": {
            "type": "string",
            "description": "The merchant state address (if available)",
            "example": "Greater London"
          },
          "merchantPostalCode": {
            "type": "string",
            "description": "The merchant postal code (if available)",
            "example": "W1A 1AA"
          },
          "merchantCountry": {
            "type": "string",
            "description": "The merchant country address",
            "example": "GB"
          },
          "merchantTelephone": {
            "type": "string",
            "description": "The merchant telephone number",
            "example": "+442079460000"
          },
          "merchantURL": {
            "type": "string",
            "description": "The merchant URL",
            "example": "https://www.coffeecorner.example"
          },
          "merchantNameOther": {
            "type": "string",
            "description": "The alternative merchant name",
            "example": "Coffee Corner Ltd"
          },
          "merchantNetworkId": {
            "type": "string",
            "description": "The merchant's network id",
            "example": "NET123456"
          },
          "merchantContact": {
            "type": "string",
            "description": "The merchant's contact (if available)",
            "example": "info@coffeecorner.example"
          }
        }
      },
      "CardHolderPresent": {
        "type": "string",
        "enum": [
          "PRESENT",
          "NOT_PRESENT",
          "PRESENCE_UNKNOWN"
        ]
      },
      "CardAuthorisationDetailsTransactionType": {
        "enum": [
          "SALE_PURCHASE",
          "MAIL_OR_TELEPHONE_ORDER",
          "CASH_WITHDRAWAL",
          "ORIGINAL_CREDIT_TRANSACTION",
          "ACCOUNT_FUNDING_TRANSACTION",
          "CASH_DISBURSEMENT",
          "PURCHASE_REFUND",
          "BALANCE_INQUIRY",
          "PIN_CHANGE",
          "PIN_UNBLOCK"
        ],
        "type": "string"
      },
      "ManagedCardsUpgradeToPhysicalEvent": {
        "type": "object",
        "description": "Sent on the `/managed_cards/physical_cards_upgrade/watch` webhook each time the\nfulfillment status (`physicalCardDetails.manufacturingState`) of a physical card changes.\n",
        "required": [
          "id",
          "physicalCardDetails",
          "upgradedTimestamp"
        ],
        "properties": {
          "id": {
            "allOf": [
              {
                "$ref": "#/components/schemas/InstrumentId"
              }
            ],
            "description": "The managed card the event relates to. `type` is always `managed_cards`.",
            "example": {
              "id": "123456789",
              "type": "managed_cards"
            }
          },
          "physicalCardDetails": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PhysicalCardDetails"
              }
            ],
            "description": "Snapshot of the card's physical details at the time of the event. `manufacturingState`\ncarries the new fulfillment status; `deliveryTrackingCode`, `deliveryTrackingMethod`, and\n`deliveryTrackingUrl` are populated once the manufacturer supplies them (from `DISPATCHED` onwards).\n"
          },
          "upgradedTimestamp": {
            "type": "string",
            "pattern": "^[0-9]+$",
            "description": "When the fulfillment status changed. Epoch timestamp using millisecond precision.",
            "example": "1729678800000"
          }
        }
      },
      "IbanState": {
        "type": "string",
        "description": "The state of the instrument indicating what it can and cannot do as follows:\n  - PENDING: The instrument is pending creation.\n  - ACTIVE: The instrument is in an active state and can be used in transactions.\n  - 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.\n  - REJECTED: The instrument was rejected from being created.\n  - DESTROYED: The instrument has been permanently destroyed. The `destroyReason` provides more information as to why it was destroyed.\n",
        "enum": [
          "PENDING",
          "ACTIVE",
          "BLOCKED",
          "REJECTED",
          "DESTROYED"
        ]
      },
      "IbanInstrumentState": {
        "required": [
          "state"
        ],
        "type": "object",
        "properties": {
          "state": {
            "$ref": "#/components/schemas/IbanState"
          },
          "destroyedReason": {
            "$ref": "#/components/schemas/DestroyedReason"
          }
        }
      },
      "IbanInstrument": {
        "required": [
          "id",
          "managedAccountId",
          "profileId",
          "incomingWireTransferProfileId",
          "friendlyName",
          "currency",
          "creationTimestamp",
          "state"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "pattern": "^[0-9]+$",
            "description": "The unique identifier of an Iban",
            "example": "123456789"
          },
          "managedAccountId": {
            "type": "string",
            "pattern": "^[0-9]+$",
            "description": "The unique identifier of the linked managed account",
            "example": "123456789"
          },
          "profileId": {
            "$ref": "#/components/schemas/ProfileId"
          },
          "incomingWireTransferProfileId": {
            "$ref": "#/components/schemas/ProfileId"
          },
          "tag": {
            "$ref": "#/components/schemas/Tag"
          },
          "friendlyName": {
            "minLength": 1,
            "maxLength": 50,
            "type": "string",
            "description": "The friendly name given to the iban.",
            "example": "Main GBP account"
          },
          "currency": {
            "$ref": "#/components/schemas/Currency"
          },
          "state": {
            "$ref": "#/components/schemas/IbanInstrumentState"
          },
          "creationTimestamp": {
            "type": "integer",
            "format": "int64",
            "description": "The time when the iban was created, expressed in Epoch timestamp using millisecond precision.",
            "example": 1786118400000
          },
          "bankAccountDetails": {
            "description": "A list of bank account details associated with the IBAN.\nMultiple 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.",
                  "example": "Alex Smith"
                },
                "beneficiaryBank": {
                  "type": "string",
                  "description": "The beneficiary bank name to be used when initiating a deposit onto the IBAN.",
                  "example": "National Westminster Bank PLC"
                },
                "beneficiaryBankAddress": {
                  "type": "string",
                  "description": "The beneficiary bank address to be used when initiating a deposit onto the IBAN.",
                  "example": "250 Bishopsgate, London EC2M 4AA"
                },
                "paymentReference": {
                  "type": "string",
                  "description": "A reference required by the partner bank to execute a deposit on the iban.\n\n\nIf provided, make sure that this is included as part of the wire transfer details when initiating a deposit.\n",
                  "example": "Invoice 1042"
                },
                "details": {
                  "description": "The bank details required to initiate a deposit on the managed account.\n\nThe details required to deposit on the IBAN vary depending on the wire transfer channel that will be used.\n",
                  "anyOf": [
                    {
                      "$ref": "#/components/schemas/IBANDetails"
                    },
                    {
                      "$ref": "#/components/schemas/FasterPaymentsBankDetailsOrBACSBankDetails"
                    },
                    {
                      "$ref": "#/components/schemas/SwiftBankDetails"
                    }
                  ]
                }
              }
            }
          }
        }
      },
      "IbanEventType": {
        "type": "string",
        "description": "What happened to the IBAN:\n  - `REQUESTED`: an IBAN was requested for the managed account and is awaiting allocation.\n  - `CREATED`: the IBAN was allocated and can receive funds.\n  - `UPDATED`: the IBAN's details changed.\n  - `REJECTED`: the allocation request was rejected.\n  - `BLOCKED`: the IBAN was blocked and cannot receive funds.\n  - `UNBLOCKED`: the IBAN was unblocked and can receive funds again.\n  - `DESTROYED`: the IBAN was permanently withdrawn. This is a final state.\n",
        "enum": [
          "CREATED",
          "UPDATED",
          "REQUESTED",
          "REJECTED",
          "BLOCKED",
          "UNBLOCKED",
          "DESTROYED"
        ]
      },
      "IbanEvent": {
        "type": "object",
        "description": "Sent on the `/ibans/watch` webhook each time an IBAN allocated to a managed account is\nissued or changes state.\n",
        "required": [
          "iban",
          "publishedTimestamp",
          "type"
        ],
        "properties": {
          "iban": {
            "allOf": [
              {
                "$ref": "#/components/schemas/IbanInstrument"
              }
            ],
            "description": "Snapshot of the IBAN at the time of the event."
          },
          "publishedTimestamp": {
            "type": "integer",
            "format": "int64",
            "description": "When the event was published. Epoch timestamp using millisecond precision.",
            "example": 1786118400000
          },
          "type": {
            "allOf": [
              {
                "$ref": "#/components/schemas/IbanEventType"
              }
            ],
            "description": "What happened to the IBAN."
          }
        }
      },
      "TransferType": {
        "enum": [
          "SEPA",
          "FASTER_PAYMENTS",
          "SWIFT",
          "BACS",
          "CHAPS",
          "RIX",
          "TARGET"
        ],
        "type": "string"
      },
      "BankAccountDetails": {
        "properties": {
          "accountNumber": {
            "type": "string",
            "example": "31926819"
          },
          "address": {
            "type": "string",
            "example": "1 High Street, London W1A 1AA"
          },
          "bankIdentifierCode": {
            "type": "string",
            "example": "NWBKGB2L"
          },
          "beneficiary": {
            "type": "string"
          },
          "beneficiaryBank": {
            "type": "string",
            "example": "National Westminster Bank PLC"
          },
          "iban": {
            "type": "string",
            "example": "GB29NWBK60161331926819"
          },
          "paymentReference": {
            "description": "A reference required by the partner bank to execute a load on this managed account.",
            "type": "string",
            "example": "Invoice 1042"
          },
          "sortCode": {
            "type": "string",
            "example": "601613"
          },
          "supportedDepositType": {
            "items": {
              "$ref": "#/components/schemas/TransferType"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "ManagedAccountEventAccount": {
        "description": "The managed account as carried on the event. Extends the managed account resource with the\nowning identity and, once the account has been issued, its bank account details.\n",
        "allOf": [
          {
            "$ref": "#/components/schemas/ManagedAccount"
          },
          {
            "type": "object",
            "properties": {
              "owner": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/StringWrappedTypeId"
                  }
                ],
                "description": "The identity that owns the managed account.",
                "example": {
                  "id": "123456789",
                  "type": "corporates"
                }
              },
              "active": {
                "type": "boolean",
                "description": "Whether the managed account can be transacted on.",
                "example": true
              },
              "bankAccountDetails": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/BankAccountDetails"
                  }
                ],
                "description": "The account's bank details. Present once the account has been issued."
              }
            }
          }
        ]
      },
      "ManagedAccountEventType": {
        "type": "string",
        "description": "What happened to the managed account:\n  - `REQUESTED`: creation was requested and is awaiting issuance.\n  - `CREATED`: the account was issued and can be transacted on.\n  - `UPDATED`: the account's details changed.\n  - `REJECTED`: the creation request was rejected.\n  - `BLOCKED`: the account was blocked and cannot transact.\n  - `UNBLOCKED`: the account was unblocked and can transact again.\n  - `DESTROYED`: the account was permanently closed. This is a final state.\n",
        "enum": [
          "CREATED",
          "UPDATED",
          "REQUESTED",
          "REJECTED",
          "BLOCKED",
          "UNBLOCKED",
          "DESTROYED"
        ]
      },
      "ManagedAccountEvent": {
        "type": "object",
        "description": "Sent on the `/managed_accounts/watch` webhook each time a managed account is created or\nchanges state.\n",
        "required": [
          "account",
          "publishedTimestamp",
          "type"
        ],
        "properties": {
          "account": {
            "allOf": [
              {
                "$ref": "#/components/schemas/ManagedAccountEventAccount"
              }
            ],
            "description": "Snapshot of the managed account at the time of the event."
          },
          "publishedTimestamp": {
            "type": "integer",
            "format": "int64",
            "description": "When the event was published. Epoch timestamp using millisecond precision.",
            "example": 1786118400000
          },
          "type": {
            "allOf": [
              {
                "$ref": "#/components/schemas/ManagedAccountEventType"
              }
            ],
            "description": "What happened to the managed account."
          }
        }
      },
      "ManagedAccountDepositState": {
        "type": "string",
        "description": "Where the deposit has reached:\n  - `PENDING`: the deposit is being processed and funds are not yet available.\n  - `COMPLETED`: the funds have been credited to the managed account. This is a final state.\n  - `REJECTED`: the deposit was rejected and no funds were credited. This is a final state.\n",
        "enum": [
          "PENDING",
          "COMPLETED",
          "REJECTED"
        ]
      },
      "ManagedAccountDepositEvent": {
        "type": "object",
        "description": "Sent on the `/managed_accounts/deposits/watch` webhook when an incoming wire transfer is\nreceived into a managed account.\n",
        "required": [
          "id",
          "owner",
          "transactionAmount",
          "transactionId",
          "transactionTimestamp"
        ],
        "properties": {
          "id": {
            "allOf": [
              {
                "$ref": "#/components/schemas/InstrumentId"
              }
            ],
            "description": "The managed account the deposit was received into. `type` is always `managed_accounts`.",
            "example": {
              "id": "123456789",
              "type": "managed_accounts"
            }
          },
          "owner": {
            "allOf": [
              {
                "$ref": "#/components/schemas/StringWrappedTypeId"
              }
            ],
            "description": "The identity that owns the managed account.",
            "example": {
              "id": "123456789",
              "type": "corporates"
            }
          },
          "transactionId": {
            "type": "string",
            "pattern": "^[0-9]+$",
            "description": "The unique identifier of the transaction, for reference.",
            "example": "123456789"
          },
          "transactionAmount": {
            "allOf": [
              {
                "$ref": "#/components/schemas/CurrencyAmount"
              }
            ],
            "description": "The amount deposited, in the currency of the managed account."
          },
          "transactionFee": {
            "allOf": [
              {
                "$ref": "#/components/schemas/CurrencyAmount"
              }
            ],
            "description": "Any fee taken from the incoming wire transfer."
          },
          "transactionTimestamp": {
            "type": "integer",
            "format": "int64",
            "description": "When the deposit was processed. Epoch timestamp using millisecond precision.",
            "example": 1786118400000
          },
          "state": {
            "allOf": [
              {
                "$ref": "#/components/schemas/ManagedAccountDepositState"
              }
            ],
            "description": "Where the deposit has reached."
          },
          "paymentNetwork": {
            "allOf": [
              {
                "$ref": "#/components/schemas/TransferType"
              }
            ],
            "description": "The payment system the incoming wire transfer was processed through."
          },
          "emailAddress": {
            "type": "string",
            "description": "Email address of the user who effected the incoming wire transfer.",
            "example": "alex.smith@example.com"
          },
          "senderName": {
            "type": "string",
            "description": "Name of the sender, as supplied by the sending bank.",
            "example": "Acme Ltd"
          },
          "senderIban": {
            "type": "string",
            "description": "IBAN the funds were sent from. Present for SEPA and SWIFT transfers.",
            "example": "MT48MALT011000012345MTLCAST001S"
          },
          "senderSortCode": {
            "type": "string",
            "description": "Sort code the funds were sent from. Present for Faster Payments, BACS, and CHAPS transfers.",
            "example": "123456"
          },
          "senderAccountNumber": {
            "type": "string",
            "description": "Account number the funds were sent from. Present for Faster Payments, BACS, and CHAPS transfers.",
            "example": "31926819"
          },
          "senderAccountDescriptor": {
            "type": "string",
            "description": "Free-form description of the sender's account, where the sending bank supplies one instead of structured details."
          },
          "senderReference": {
            "type": "string",
            "description": "A reference supplied by the sender when creating the payment.",
            "example": "Invoice 1042"
          }
        }
      },
      "ManagedCardStateChangeEventType": {
        "type": "string",
        "description": "What happened to the card:\n  - `ACTIVATED`: the card was activated and can be transacted on.\n  - `BLOCKED`: the card was blocked and will decline authorizations.\n  - `UNBLOCKED`: the card was unblocked and can be transacted on again.\n  - `DESTROYED`: the card was permanently destroyed. This is a final state.\n",
        "enum": [
          "ACTIVATED",
          "BLOCKED",
          "UNBLOCKED",
          "DESTROYED"
        ]
      },
      "CardType": {
        "enum": [
          "VIRTUAL",
          "PHYSICAL"
        ],
        "type": "string"
      },
      "ManagedCardStateChangeEvent": {
        "type": "object",
        "description": "Sent on the `/managed_cards/state_change/watch` webhook each time a managed card is\nactivated, blocked, unblocked, or destroyed.\n",
        "required": [
          "id",
          "timestamp",
          "eventType",
          "cardType",
          "renewalType"
        ],
        "properties": {
          "id": {
            "allOf": [
              {
                "$ref": "#/components/schemas/InstrumentId"
              }
            ],
            "description": "The managed card the event relates to. `type` is always `managed_cards`.",
            "example": {
              "id": "123456789",
              "type": "managed_cards"
            }
          },
          "timestamp": {
            "type": "integer",
            "format": "int64",
            "description": "When the state changed. Epoch timestamp using millisecond precision.",
            "example": 1786118400000
          },
          "eventType": {
            "allOf": [
              {
                "$ref": "#/components/schemas/ManagedCardStateChangeEventType"
              }
            ],
            "description": "What happened to the card."
          },
          "state": {
            "allOf": [
              {
                "$ref": "#/components/schemas/ManagedInstrumentState"
              }
            ],
            "description": "The card's state after the change, with `blockedReason` or `destroyedReason` set when\nthe card was blocked or destroyed.\n"
          },
          "cardType": {
            "allOf": [
              {
                "$ref": "#/components/schemas/CardType"
              }
            ],
            "description": "Whether the card is virtual or physical."
          },
          "renewalType": {
            "allOf": [
              {
                "$ref": "#/components/schemas/CardRenewalType"
              }
            ],
            "description": "How the card will be handled as it approaches expiry."
          }
        }
      },
      "CardAdjustmentDetailsAdjustmentType": {
        "enum": [
          "DEFAULT_ADJUSTMENT",
          "LOST_STOLEN_REPLACEMENT_BALANCE_TRANSFER"
        ],
        "type": "string"
      },
      "PrepaidModeDetails": {
        "type": "object",
        "description": "Balance context for a card created in prepaid mode, which holds its own balance.",
        "properties": {
          "availableBalance": {
            "allOf": [
              {
                "$ref": "#/components/schemas/CurrencyAmount"
              }
            ],
            "description": "The card's available balance after the transaction was processed."
          }
        }
      },
      "DebitModeAvailableToSpend": {
        "type": "object",
        "description": "Remaining spendable amount for one spend limit interval.",
        "properties": {
          "value": {
            "allOf": [
              {
                "$ref": "#/components/schemas/CurrencyAmount"
              }
            ],
            "description": "The amount still available to spend, in the currency of the card."
          },
          "interval": {
            "allOf": [
              {
                "$ref": "#/components/schemas/SpendLimitInterval"
              }
            ],
            "description": "The interval the remaining amount applies to."
          }
        }
      },
      "DebitModeDetails": {
        "type": "object",
        "description": "Balance context for a card created in debit mode, which draws on its parent managed account\nup to a configurable spend limit.\n",
        "properties": {
          "parentManagedAccountId": {
            "type": "string",
            "pattern": "^[0-9]+$",
            "description": "The managed account holding the funds the card draws on.",
            "example": "123456789"
          },
          "availableToSpend": {
            "type": "array",
            "description": "How much of the parent managed account's funds the card can still spend after this\ntransaction, one entry per configured spend limit interval.\n",
            "items": {
              "$ref": "#/components/schemas/DebitModeAvailableToSpend"
            }
          }
        }
      },
      "ManagedCardModeDetails": {
        "type": "object",
        "description": "Balance context for the card, carrying whichever set of details matches the mode the card\nwas created in. Exactly one of the two is populated.\n",
        "properties": {
          "prepaidModeDetails": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PrepaidModeDetails"
              }
            ],
            "description": "Populated when the card was created in prepaid mode."
          },
          "debitModeDetails": {
            "allOf": [
              {
                "$ref": "#/components/schemas/DebitModeDetails"
              }
            ],
            "description": "Populated when the card was created in debit mode."
          }
        }
      },
      "ManagedCardAdjustmentEvent": {
        "type": "object",
        "description": "Sent on the `/managed_cards/adjustments/watch` webhook when a card's balance is adjusted\noutside the normal authorization and settlement flow.\n",
        "required": [
          "id",
          "owner",
          "adjustmentType",
          "adjustmentAmount",
          "transactionId",
          "transactionTimestamp"
        ],
        "properties": {
          "id": {
            "allOf": [
              {
                "$ref": "#/components/schemas/InstrumentId"
              }
            ],
            "description": "The managed card that was adjusted. `type` is always `managed_cards`.",
            "example": {
              "id": "123456789",
              "type": "managed_cards"
            }
          },
          "owner": {
            "allOf": [
              {
                "$ref": "#/components/schemas/StringWrappedTypeId"
              }
            ],
            "description": "The identity that owns the card.",
            "example": {
              "id": "123456789",
              "type": "corporates"
            }
          },
          "transactionId": {
            "type": "string",
            "pattern": "^[0-9]+$",
            "description": "The unique identifier of the transaction, for reference.",
            "example": "123456789"
          },
          "adjustmentType": {
            "allOf": [
              {
                "$ref": "#/components/schemas/CardAdjustmentDetailsAdjustmentType"
              }
            ],
            "description": "Why the adjustment was made. `LOST_STOLEN_REPLACEMENT_BALANCE_TRANSFER` moves the\nremaining balance of a lost or stolen card onto its replacement.\n"
          },
          "adjustmentAmount": {
            "allOf": [
              {
                "$ref": "#/components/schemas/CurrencyAmount"
              }
            ],
            "description": "The amount adjusted, in the currency of the card."
          },
          "transactionTimestamp": {
            "type": "integer",
            "format": "int64",
            "description": "When the adjustment was processed. Epoch timestamp using millisecond precision.",
            "example": 1786118400000
          },
          "availableBalance": {
            "allOf": [
              {
                "$ref": "#/components/schemas/CurrencyAmount"
              }
            ],
            "description": "The card's available balance after the adjustment. Prepaid mode only."
          },
          "details": {
            "allOf": [
              {
                "$ref": "#/components/schemas/ManagedCardModeDetails"
              }
            ],
            "description": "Mode-specific balance context for the card the adjustment applied to."
          }
        }
      },
      "ManagedCardPaymentEvent": {
        "type": "object",
        "description": "Sent on the `/managed_cards/payments/watch` webhook each time a card payment is created or\nupdated. Unlike the per-event-type card webhooks (authorization, settlement, adjustment, ...),\nthis carries the full current state of the `CardPayment` aggregate, including its complete\n`events[]` history — so a single subscription can track the overall card payment without\nalso subscribing to the per-event-type webhooks.\n",
        "required": [
          "eventType",
          "cardPayment"
        ],
        "properties": {
          "eventType": {
            "description": "The type of the event that triggered this notification. Combine with the `reversal` flag on the trailing entry of `cardPayment.events[]` to distinguish a reversal from the original action.",
            "allOf": [
              {
                "$ref": "#/components/schemas/CardPaymentEventType"
              }
            ]
          },
          "cardPayment": {
            "description": "Current state of the card payment. Identical in shape to the response of `GET /card_payments/{id}`.",
            "allOf": [
              {
                "$ref": "#/components/schemas/CardPayment"
              }
            ]
          }
        }
      },
      "ManagedCardExpiryEventType": {
        "type": "string",
        "description": "Where the card is in its expiry cycle:\n  - `CARD_ABOUT_TO_EXPIRE`: the card is approaching its expiry date.\n  - `CARD_EXPIRED`: the card has expired and will decline authorizations.\n  - `CARD_RENEWED`: the card was renewed and a new expiry date applies.\n",
        "enum": [
          "CARD_ABOUT_TO_EXPIRE",
          "CARD_EXPIRED",
          "CARD_RENEWED"
        ]
      },
      "ManagedCardExpiryEvent": {
        "type": "object",
        "description": "Sent on the `/managed_cards/expiries/watch` webhook as a managed card approaches expiry,\nexpires, or is renewed.\n",
        "required": [
          "id",
          "eventType",
          "state",
          "cardType",
          "renewalType"
        ],
        "properties": {
          "id": {
            "allOf": [
              {
                "$ref": "#/components/schemas/InstrumentId"
              }
            ],
            "description": "The managed card the event relates to. `type` is always `managed_cards`.",
            "example": {
              "id": "123456789",
              "type": "managed_cards"
            }
          },
          "eventType": {
            "allOf": [
              {
                "$ref": "#/components/schemas/ManagedCardExpiryEventType"
              }
            ],
            "description": "Where the card is in its expiry cycle."
          },
          "state": {
            "allOf": [
              {
                "$ref": "#/components/schemas/ManagedInstrumentState"
              }
            ],
            "description": "The card's state at the time of the event."
          },
          "cardType": {
            "allOf": [
              {
                "$ref": "#/components/schemas/CardType"
              }
            ],
            "description": "Whether the card is virtual or physical."
          },
          "expiryMmyy": {
            "type": "string",
            "pattern": "^[0-9]{4}$",
            "description": "The card's expiry date, in MMYY format.",
            "example": "1028"
          },
          "renewalType": {
            "allOf": [
              {
                "$ref": "#/components/schemas/CardRenewalType"
              }
            ],
            "description": "How the card will be handled as it approaches expiry."
          },
          "renewalTimestamp": {
            "type": "integer",
            "format": "int64",
            "description": "When the card will be renewed. Epoch timestamp using millisecond precision. Present when\n`renewalType` schedules an automatic renewal.\n",
            "example": 1786118400000
          }
        }
      },
      "ManagedCardReplacementEventType": {
        "type": "string",
        "description": "How the card was replaced:\n  - `VIRTUAL_REPLACEMENT`: a new virtual card was issued.\n  - `PHYSICAL_REPLACEMENT`: a new physical card was issued and sent for fulfillment.\n",
        "enum": [
          "VIRTUAL_REPLACEMENT",
          "PHYSICAL_REPLACEMENT"
        ]
      },
      "ReplacementType": {
        "type": "string",
        "enum": [
          "DAMAGED",
          "LOST_STOLEN",
          "RENEW",
          "COMPROMISED"
        ]
      },
      "ManagedCardReplacementEvent": {
        "type": "object",
        "description": "Sent on the `/managed_cards/replacement/watch` webhook when a managed card is replaced,\neither virtually or physically.\n",
        "required": [
          "eventType",
          "id",
          "replacementReason",
          "replacementTimestamp"
        ],
        "properties": {
          "eventType": {
            "allOf": [
              {
                "$ref": "#/components/schemas/ManagedCardReplacementEventType"
              }
            ],
            "description": "Whether the card was replaced virtually or physically."
          },
          "id": {
            "allOf": [
              {
                "$ref": "#/components/schemas/InstrumentId"
              }
            ],
            "description": "The managed card that was replaced. `type` is always `managed_cards`.",
            "example": {
              "id": "123456789",
              "type": "managed_cards"
            }
          },
          "replacementId": {
            "allOf": [
              {
                "$ref": "#/components/schemas/InstrumentId"
              }
            ],
            "description": "The card issued as the replacement. `type` is always `managed_cards`.",
            "example": {
              "id": "234567890",
              "type": "managed_cards"
            }
          },
          "replacementReason": {
            "allOf": [
              {
                "$ref": "#/components/schemas/ReplacementType"
              }
            ],
            "description": "Why the card was replaced."
          },
          "replacementTimestamp": {
            "type": "integer",
            "format": "int64",
            "description": "When the card was replaced. Epoch timestamp using millisecond precision.",
            "example": 1786118400000
          },
          "userId": {
            "allOf": [
              {
                "$ref": "#/components/schemas/UserId"
              }
            ],
            "description": "The user the replaced card belonged to."
          }
        }
      },
      "TransferEventType": {
        "type": "string",
        "description": "The state the transfer has reached:\n  - `SCHEDULED`: the transfer is scheduled for a future date.\n  - `PENDING`: the transfer is being processed.\n  - `COMPLETED`: the funds have moved. This is a final state.\n  - `FAILED`: the transfer could not be completed. `conflict` says why. This is a final state.\n  - `CANCELLED`: a scheduled transfer was canceled before execution. This is a final state.\n",
        "enum": [
          "PENDING",
          "COMPLETED",
          "FAILED",
          "SCHEDULED",
          "CANCELLED"
        ]
      },
      "CreateTransferConflictErrorCode": {
        "enum": [
          "NO_ERROR",
          "PROFILE_INACTIVE",
          "MODEL_CONSTRAINTS_VIOLATED",
          "DENIED_BY_INTERCEPTOR",
          "DENIED_BY_INSTRUMENT",
          "DENIED_BY_FOREX_TRADE",
          "CURRENCY_MISMATCH",
          "INSUFFICIENT_FUNDS",
          "SYSTEM_ERROR",
          "SOURCE_NOT_FOUND",
          "DESTINATION_NOT_FOUND",
          "FEE_NOT_CONFIGURED_FOR_CURRENCY",
          "DESTINATION_LIMIT_EXCEEDED",
          "TRANSFER_BETWEEN_INSTRUMENTS_UNSUPPORTED",
          "SOURCE_INSTRUMENT_BLOCKED",
          "DESTINATION_INSTRUMENT_BLOCKED",
          "SOURCE_IS_NOT_BALANCE_OWNER",
          "DESTINATION_IS_NOT_BALANCE_OWNER",
          "INVALID_AMOUNT",
          "SOURCE_INSTRUMENT_DESTROYED",
          "DESTINATION_INSTRUMENT_DESTROYED",
          "SOURCE_AND_DESTINATION_MUST_BE_DIFFERENT",
          "SCHEDULED_TIMESTAMP_INVALID"
        ],
        "type": "string"
      },
      "TransferEventTransfer": {
        "description": "The transfer as carried on the event. Extends the transfer resource with the conflict code\nexplaining a failure.\n",
        "allOf": [
          {
            "$ref": "#/components/schemas/Transfer"
          },
          {
            "type": "object",
            "properties": {
              "conflict": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/CreateTransferConflictErrorCode"
                  }
                ],
                "description": "Why the transfer failed. Present when `eventType` is `FAILED`."
              }
            }
          }
        ]
      },
      "TransferEvent": {
        "type": "object",
        "description": "Sent on the `/transfers/watch` webhook each time a transfer between two of an identity's own\ninstruments changes state.\n",
        "required": [
          "eventType",
          "transfer",
          "publishedTimestamp"
        ],
        "properties": {
          "eventType": {
            "allOf": [
              {
                "$ref": "#/components/schemas/TransferEventType"
              }
            ],
            "description": "The state the transfer has reached."
          },
          "transfer": {
            "allOf": [
              {
                "$ref": "#/components/schemas/TransferEventTransfer"
              }
            ],
            "description": "Snapshot of the transfer at the time of the event."
          },
          "publishedTimestamp": {
            "type": "integer",
            "format": "int64",
            "description": "When the event was published. Epoch timestamp using millisecond precision.",
            "example": 1786118400000
          }
        }
      },
      "SendEventType": {
        "type": "string",
        "description": "The state the send has reached:\n  - `SCHEDULED`: the send is scheduled for a future date.\n  - `PENDING_CHALLENGE`: the send is awaiting Strong Customer Authentication.\n  - `PENDING`: the send is being processed.\n  - `COMPLETED`: the funds have moved. This is a final state.\n  - `FAILED`: the send could not be completed. `conflict` says why. This is a final state.\n  - `INVALID`: the send was rejected as invalid. `conflict` says why. This is a final state.\n  - `CANCELLED`: the send was canceled before execution. This is a final state.\n",
        "enum": [
          "PENDING",
          "COMPLETED",
          "FAILED",
          "PENDING_CHALLENGE",
          "INVALID",
          "SCHEDULED",
          "CANCELLED"
        ]
      },
      "SendConflictErrorCode": {
        "type": "string",
        "description": "Why a send could not be completed.",
        "enum": [
          "NO_ERROR",
          "PROFILE_INACTIVE",
          "PROFILE_NOT_FOUND",
          "MODEL_CONSTRAINTS_VIOLATED",
          "DENIED_BY_INTERCEPTOR",
          "DENIED_BY_INSTRUMENT",
          "DENIED_BY_FOREX_TRADE",
          "CURRENCY_MISMATCH",
          "SOURCE_NOT_FOUND",
          "DESTINATION_NOT_FOUND",
          "FEE_NOT_CONFIGURED_FOR_CURRENCY",
          "DESTINATION_LIMIT_EXCEEDED",
          "SEND_TO_INSTRUMENT_UNSUPPORTED",
          "INSUFFICIENT_FUNDS",
          "SOURCE_INSTRUMENT_BLOCKED",
          "DESTINATION_INSTRUMENT_BLOCKED",
          "INVALID_AMOUNT",
          "IDENTITY_KYC_LEVEL_STEPUP_REQUIRED",
          "SCHEDULED_TIMESTAMP_INVALID"
        ]
      },
      "SendEventSend": {
        "description": "The send as carried on the event. Extends the send resource with the beneficiary, the\nconflict code explaining a failure, and the cancellation and execution timestamps.\n",
        "allOf": [
          {
            "$ref": "#/components/schemas/Send"
          },
          {
            "type": "object",
            "properties": {
              "beneficiaryId": {
                "type": "string",
                "pattern": "^[0-9]+$",
                "description": "The trusted payee the send was made to, when one was used.",
                "example": "123456789"
              },
              "conflict": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/SendConflictErrorCode"
                  }
                ],
                "description": "Why the send failed. Present when `eventType` is `FAILED` or `INVALID`."
              },
              "cancellationReason": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/TransactionCancellationReason"
                  }
                ],
                "description": "Why the send was canceled. Present when `eventType` is `CANCELLED`."
              },
              "executionTimestamp": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/ExecutionTimestamp"
                  }
                ],
                "description": "When the send was executed."
              }
            }
          }
        ]
      },
      "SendEvent": {
        "type": "object",
        "description": "Sent on the `/send/watch` webhook each time a send to another identity within the same\nprogramme changes state.\n",
        "required": [
          "eventType",
          "send",
          "publishedTimestamp"
        ],
        "properties": {
          "eventType": {
            "allOf": [
              {
                "$ref": "#/components/schemas/SendEventType"
              }
            ],
            "description": "The state the send has reached."
          },
          "send": {
            "allOf": [
              {
                "$ref": "#/components/schemas/SendEventSend"
              }
            ],
            "description": "Snapshot of the send at the time of the event."
          },
          "publishedTimestamp": {
            "type": "integer",
            "format": "int64",
            "description": "When the event was published. Epoch timestamp using millisecond precision.",
            "example": 1786118400000
          }
        }
      },
      "OutgoingWireTransferConflictErrorCode": {
        "type": "string",
        "description": "Why an outgoing wire transfer could not be submitted.",
        "enum": [
          "NO_ERROR",
          "PROFILE_INACTIVE",
          "PROFILE_NOT_FOUND",
          "MODEL_CONSTRAINTS_VIOLATED",
          "DENIED_BY_INTERCEPTOR",
          "DENIED_BY_INSTRUMENT",
          "UNSUPPORTED_CURRENCY",
          "CURRENCY_MISMATCH",
          "INVALID_AMOUNT",
          "INSUFFICIENT_FUNDS",
          "SOURCE_NOT_FOUND",
          "SOURCE_INSTRUMENT_BLOCKED",
          "SOURCE_INSTRUMENT_DESTROYED",
          "SOURCE_HAS_NO_ACCESS_INSTRUMENT",
          "FEE_NOT_CONFIGURED_FOR_CURRENCY",
          "TYPE_NOT_SUPPORTED_BY_PROFILE",
          "IDENTITY_KYC_LEVEL_STEPUP_REQUIRED",
          "BENEFICIARY_NOT_FOUND",
          "BENEFICIARY_TYPE_INVALID",
          "BENEFICIARY_BANK_DETAILS_INVALID",
          "DESTINATION_ACCOUNT_TYPE_INVALID",
          "EXTERNAL_DESTINATION_ACCOUNT_NOT_FOUND",
          "SCHEDULED_TIMESTAMP_INVALID",
          "PROVIDER_ERROR"
        ]
      },
      "OutgoingWireTransferEventTransfer": {
        "description": "The outgoing wire transfer as carried on the event. Extends the outgoing wire transfer\nresource with the trusted payee or external account it was sent to, and the conflict code\nexplaining a rejection.\n",
        "allOf": [
          {
            "$ref": "#/components/schemas/OutgoingWireTransfer"
          },
          {
            "type": "object",
            "properties": {
              "beneficiaryId": {
                "type": "string",
                "pattern": "^[0-9]+$",
                "description": "The trusted payee the transfer was sent to, when one was used.",
                "example": "123456789"
              },
              "externalAccountId": {
                "type": "string",
                "pattern": "^[0-9]+$",
                "description": "The external account the transfer was sent to, when one was used.",
                "example": "123456789"
              },
              "conflict": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/OutgoingWireTransferConflictErrorCode"
                  }
                ],
                "description": "Why the transfer could not be submitted. Present when `eventType` is `REJECTED`,\n`FAILED`, or `INVALID`.\n"
              }
            }
          }
        ]
      },
      "OutgoingWireTransferEventType": {
        "type": "string",
        "description": "The state the outgoing wire transfer has reached:\n  - `SCHEDULED`: the transfer is scheduled for a future date.\n  - `PENDING_CHALLENGE`: the transfer is awaiting Strong Customer Authentication.\n  - `PENDING_CONFIRMATION`: the transfer is awaiting confirmation.\n  - `SUBMITTED`: the transfer has been submitted to the payment network.\n  - `APPROVED`: the transfer passed validation and will be sent.\n  - `COMPLETED`: the funds have left the account. This is a final state.\n  - `REJECTED`: the transfer was rejected before submission. `conflict` says why.\n  - `FAILED`: the transfer could not be completed. `conflict` says why.\n  - `RETURNED`: the funds were returned by the receiving bank.\n  - `INVALID`: the transfer was rejected as invalid. `conflict` says why.\n  - `CANCELLED`: the transfer was canceled before execution. This is a final state.\n",
        "enum": [
          "PENDING_CHALLENGE",
          "PENDING_CONFIRMATION",
          "SCHEDULED",
          "SUBMITTED",
          "APPROVED",
          "COMPLETED",
          "REJECTED",
          "FAILED",
          "RETURNED",
          "INVALID",
          "CANCELLED"
        ]
      },
      "OutgoingWireTransferEvent": {
        "type": "object",
        "description": "Sent on the `/outgoing_wire_transfers/watch` webhook each time an outgoing wire transfer\nmoves through its lifecycle.\n",
        "required": [
          "owner",
          "transfer",
          "eventType",
          "publishedTimestamp"
        ],
        "properties": {
          "owner": {
            "allOf": [
              {
                "$ref": "#/components/schemas/StringWrappedTypeId"
              }
            ],
            "description": "The identity that made the transfer.",
            "example": {
              "id": "123456789",
              "type": "corporates"
            }
          },
          "transfer": {
            "allOf": [
              {
                "$ref": "#/components/schemas/OutgoingWireTransferEventTransfer"
              }
            ],
            "description": "Snapshot of the outgoing wire transfer at the time of the event."
          },
          "eventType": {
            "allOf": [
              {
                "$ref": "#/components/schemas/OutgoingWireTransferEventType"
              }
            ],
            "description": "The state the transfer has reached."
          },
          "publishedTimestamp": {
            "type": "integer",
            "format": "int64",
            "description": "When the event was published. Epoch timestamp using millisecond precision.",
            "example": 1786118400000
          }
        }
      },
      "ManualTransactionEvent": {
        "type": "object",
        "description": "Sent on the `/manual_transactions/watch` webhook when Weavr manually credits or debits an\ninstrument — for example to correct a processing error or settle a dispute.\n",
        "required": [
          "targetInstrument",
          "transactionId",
          "transactionTimestamp"
        ],
        "properties": {
          "transactionId": {
            "type": "string",
            "pattern": "^[0-9]+$",
            "description": "The unique identifier of the transaction, for reference.",
            "example": "123456789"
          },
          "targetInstrument": {
            "allOf": [
              {
                "$ref": "#/components/schemas/InstrumentId"
              }
            ],
            "description": "The instrument the manual transaction was performed on.",
            "example": {
              "id": "123456789",
              "type": "managed_accounts"
            }
          },
          "owner": {
            "allOf": [
              {
                "$ref": "#/components/schemas/StringWrappedTypeId"
              }
            ],
            "description": "The identity that owns the instrument.",
            "example": {
              "id": "123456789",
              "type": "corporates"
            }
          },
          "availableBalanceAdjustment": {
            "type": "integer",
            "format": "int64",
            "description": "The amount credited to or debited from the instrument's available balance, scaled to the\nlowest denomination of the instrument's currency.\n",
            "example": 1250
          },
          "actualBalanceAdjustment": {
            "type": "integer",
            "format": "int64",
            "description": "The amount credited to or debited from the instrument's actual balance, scaled to the\nlowest denomination of the instrument's currency.\n",
            "example": 1250
          },
          "transactionTimestamp": {
            "type": "integer",
            "format": "int64",
            "description": "When the transaction was processed. Epoch timestamp using millisecond precision.",
            "example": 1786118400000
          }
        }
      },
      "FeeType": {
        "type": "string",
        "enum": [
          "DEPOSIT",
          "WITHDRAWAL",
          "PURCHASE",
          "REFUND",
          "ATM_WITHDRAWAL",
          "CHARGEBACK",
          "TRANSFER",
          "SEND",
          "OWT",
          "CUSTOM",
          "OTHER"
        ]
      },
      "ChargeFeeEventDetails": {
        "type": "object",
        "description": "The fee that was charged and the instrument it was taken from.",
        "required": [
          "id",
          "feeType",
          "source"
        ],
        "properties": {
          "id": {
            "type": "string",
            "pattern": "^[0-9]+$",
            "description": "The unique identifier of the fee charge, for reference.",
            "example": "123456789"
          },
          "feeType": {
            "allOf": [
              {
                "$ref": "#/components/schemas/FeeType"
              }
            ],
            "description": "The kind of fee that was charged."
          },
          "feeSubType": {
            "maxLength": 50,
            "type": "string",
            "description": "A finer classification of the fee, where one applies.",
            "example": "PRINTED_STATEMENT"
          },
          "note": {
            "type": "string",
            "description": "A note recorded against the transaction and shown as an additional field on statements."
          },
          "source": {
            "allOf": [
              {
                "$ref": "#/components/schemas/InstrumentId"
              }
            ],
            "description": "The instrument the fee was taken from.",
            "example": {
              "id": "123456789",
              "type": "managed_accounts"
            }
          },
          "profileId": {
            "allOf": [
              {
                "$ref": "#/components/schemas/ProfileId"
              }
            ],
            "description": "The profile the fee was charged under."
          }
        }
      },
      "ChargeFeeEventType": {
        "type": "string",
        "description": "The state the fee charge has reached:\n  - `COMPLETED`: the fee was charged. This is a final state.\n",
        "enum": [
          "COMPLETED"
        ]
      },
      "ChargeFeeEvent": {
        "type": "object",
        "description": "Sent on the `/fees/watch` webhook when a fee is charged to an instrument.\n",
        "required": [
          "chargeFee",
          "publishedTimestamp",
          "type"
        ],
        "properties": {
          "chargeFee": {
            "allOf": [
              {
                "$ref": "#/components/schemas/ChargeFeeEventDetails"
              }
            ],
            "description": "The fee that was charged."
          },
          "publishedTimestamp": {
            "type": "integer",
            "format": "int64",
            "description": "When the event was published. Epoch timestamp using millisecond precision.",
            "example": 1786118400000
          },
          "type": {
            "allOf": [
              {
                "$ref": "#/components/schemas/ChargeFeeEventType"
              }
            ],
            "description": "The state the fee charge has reached."
          }
        }
      },
      "AuthenticationEventStatus": {
        "type": "string",
        "description": "The outcome of an authentication attempt:\n  - `VERIFIED`: the attempt succeeded.\n  - `DECLINED`: the attempt was rejected.\n  - `EXPIRED`: the attempt was not completed in time.\n",
        "enum": [
          "VERIFIED",
          "DECLINED",
          "EXPIRED"
        ]
      },
      "LoginEvent": {
        "type": "object",
        "description": "Sent on the `/login/watch` webhook each time a sign-in is attempted, whether it succeeds or\nnot. Use it to drive your own audit trail or to alert users to unrecognized sign-ins.\n",
        "required": [
          "credential",
          "type",
          "status",
          "publishedTimestamp"
        ],
        "properties": {
          "credential": {
            "allOf": [
              {
                "$ref": "#/components/schemas/CredentialId"
              }
            ],
            "description": "The credential the sign-in was attempted against."
          },
          "identity": {
            "allOf": [
              {
                "$ref": "#/components/schemas/StringWrappedTypeId"
              }
            ],
            "description": "The identity the credential belongs to.",
            "example": {
              "id": "123456789",
              "type": "corporates"
            }
          },
          "type": {
            "type": "string",
            "description": "How the user signed in, by password or by token.",
            "example": "PASSWORD"
          },
          "status": {
            "allOf": [
              {
                "$ref": "#/components/schemas/AuthenticationEventStatus"
              }
            ],
            "description": "The outcome of the sign-in attempt."
          },
          "publishedTimestamp": {
            "type": "integer",
            "format": "int64",
            "description": "When the event was published. Epoch timestamp using millisecond precision.",
            "example": 1786118400000
          }
        }
      },
      "StepUpEvent": {
        "type": "object",
        "description": "Sent on the `/stepup/watch` webhook when a step-up authentication challenge is resolved.\nA stepped-up token is required for operations that need Strong Customer Authentication.\n",
        "required": [
          "credential",
          "identity",
          "challengeId",
          "type",
          "status",
          "publishedTimestamp"
        ],
        "properties": {
          "credential": {
            "allOf": [
              {
                "$ref": "#/components/schemas/CredentialId"
              }
            ],
            "description": "The credential that was stepped up."
          },
          "identity": {
            "allOf": [
              {
                "$ref": "#/components/schemas/StringWrappedTypeId"
              }
            ],
            "description": "The identity the credential belongs to.",
            "example": {
              "id": "123456789",
              "type": "corporates"
            }
          },
          "challengeId": {
            "type": "string",
            "pattern": "^[0-9]+$",
            "description": "The challenge that was resolved.",
            "example": "123456789"
          },
          "type": {
            "type": "string",
            "description": "The authentication factor the challenge was issued against.",
            "example": "OTP"
          },
          "status": {
            "allOf": [
              {
                "$ref": "#/components/schemas/AuthenticationEventStatus"
              }
            ],
            "description": "The outcome of the challenge."
          },
          "authToken": {
            "type": "string",
            "description": "The stepped-up token, present when `status` is `VERIFIED`. Treat it as a credential:\nit authorizes operations that require Strong Customer Authentication.\n"
          },
          "publishedTimestamp": {
            "type": "integer",
            "format": "int64",
            "description": "When the event was published. Epoch timestamp using millisecond precision.",
            "example": 1786118400000
          }
        }
      },
      "AuthenticationFactorEnrollmentStatus": {
        "type": "string",
        "description": "Whether the authentication factor is usable:\n  - `ACTIVE`: the factor is enrolled and can be challenged.\n  - `INACTIVE`: the factor has been removed and can no longer be challenged.\n",
        "enum": [
          "ACTIVE",
          "INACTIVE"
        ]
      },
      "AuthenticationFactorEnrollmentEvent": {
        "type": "object",
        "description": "Sent on the `/authentication_factors/watch` webhook when a user's authentication factor is\nenrolled or removed.\n",
        "required": [
          "credentialId",
          "type",
          "status",
          "publishedTimestamp"
        ],
        "properties": {
          "credentialId": {
            "allOf": [
              {
                "$ref": "#/components/schemas/CredentialId"
              }
            ],
            "description": "The credential the factor belongs to."
          },
          "type": {
            "type": "string",
            "description": "The authentication factor that was enrolled or removed.",
            "example": "OTP"
          },
          "status": {
            "allOf": [
              {
                "$ref": "#/components/schemas/AuthenticationFactorEnrollmentStatus"
              }
            ],
            "description": "Whether the factor is now usable."
          },
          "publishedTimestamp": {
            "type": "integer",
            "format": "int64",
            "description": "When the event was published. Epoch timestamp using millisecond precision.",
            "example": 1786118400000
          }
        }
      },
      "BeneficiaryBatchEventType": {
        "type": "string",
        "description": "The state the batch has reached:\n  - `INITIALISED`: the batch was accepted and is awaiting a challenge.\n  - `PENDING_CHALLENGE`: a Strong Customer Authentication challenge has been issued.\n  - `CHALLENGE_COMPLETED`: the challenge succeeded and the batch has been applied. This is a final state.\n  - `CHALLENGE_FAILED`: the challenge was not completed, so the batch was not applied. This is a final state.\n  - `FAILED`: the batch could not be processed. This is a final state.\n",
        "enum": [
          "INITIALISED",
          "PENDING_CHALLENGE",
          "CHALLENGE_COMPLETED",
          "CHALLENGE_FAILED",
          "FAILED"
        ]
      },
      "BeneficiaryBatchEvent": {
        "type": "object",
        "description": "Sent on the `/beneficiaries/batch/watch` webhook as a batch of trusted payee operations\nmoves through verification. Payees added in a batch only become usable once the batch\nreaches `CHALLENGE_COMPLETED`.\n",
        "required": [
          "id",
          "operation",
          "eventType",
          "beneficiaries",
          "publishedTimestamp"
        ],
        "properties": {
          "id": {
            "type": "string",
            "pattern": "^[0-9]+$",
            "description": "The unique identifier of the batch.",
            "example": "123456789"
          },
          "operation": {
            "allOf": [
              {
                "$ref": "#/components/schemas/BeneficiaryBatchOperation"
              }
            ],
            "description": "What the batch does to the payees it contains."
          },
          "tag": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Tag"
              }
            ],
            "description": "The tag supplied when the batch was created."
          },
          "eventType": {
            "allOf": [
              {
                "$ref": "#/components/schemas/BeneficiaryBatchEventType"
              }
            ],
            "description": "The state the batch has reached."
          },
          "beneficiaries": {
            "type": "array",
            "description": "The payees the batch operated on, as they stand after the event.",
            "items": {
              "$ref": "#/components/schemas/Beneficiary"
            }
          },
          "publishedTimestamp": {
            "type": "integer",
            "format": "int64",
            "description": "When the event was published. Epoch timestamp using millisecond precision.",
            "example": 1786118400000
          }
        }
      },
      "BulkProcessProgressStatus": {
        "type": "string",
        "enum": [
          "RUNNING",
          "PARTIALLY_COMPLETED",
          "COMPLETED",
          "FAILED",
          "PAUSED",
          "CANCELLED"
        ]
      },
      "BulkProcessProgressEvent": {
        "type": "object",
        "properties": {
          "bulkId": {
            "description": "The bulk id of the bulk process",
            "type": "string",
            "example": "123456789"
          },
          "status": {
            "description": "`RUNNING`  : the execution of the bulk process is in progress.\n\n`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\n\n`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\n\n`FAILED` : none of the operations of the bulk process have executed. This is a final state for the bulk process\n",
            "$ref": "#/components/schemas/BulkProcessProgressStatus"
          },
          "submittedItemsCount": {
            "description": "The number of bulk operations in the bulk process",
            "type": "integer",
            "example": 10
          },
          "operationStatusCounts": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/BulkProcessOperationStatusCounts"
            }
          }
        }
      }
    },
    "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.",
                  "allOf": [
                    {
                      "$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.",
                  "allOf": [
                    {
                      "$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.",
                  "allOf": [
                    {
                      "$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.",
                  "allOf": [
                    {
                      "$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 authorization 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.",
                  "example": "Alex"
                },
                "surname": {
                  "minLength": 1,
                  "maxLength": 50,
                  "type": "string",
                  "description": "The last name of the user.",
                  "example": "Smith"
                },
                "email": {
                  "$ref": "#/components/schemas/Email"
                },
                "mobile": {
                  "$ref": "#/components/schemas/Mobile"
                },
                "dateOfBirth": {
                  "description": "Date of birth of the authorized user.",
                  "allOf": [
                    {
                      "$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"
                },
                "roles": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/UserPredefinedRole"
                  },
                  "description": "Optional roles to assign to the user. For a full description of the permissions associated with each role, see our product documentation."
                }
              }
            }
          }
        }
      },
      "BulkProcessExecute": {
        "required": true,
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/BulkProcessExecute"
            }
          }
        }
      },
      "UserCreateBulkRequest": {
        "required": true,
        "content": {
          "application/json": {
            "schema": {
              "type": "array",
              "minItems": 1,
              "maxItems": 10000,
              "items": {
                "type": "object",
                "required": [
                  "requestBody"
                ],
                "properties": {
                  "requestBody": {
                    "type": "object",
                    "required": [
                      "email",
                      "name",
                      "surname"
                    ],
                    "properties": {
                      "name": {
                        "minLength": 1,
                        "maxLength": 50,
                        "type": "string",
                        "description": "The first name of the user.",
                        "example": "Alex"
                      },
                      "surname": {
                        "minLength": 1,
                        "maxLength": 50,
                        "type": "string",
                        "description": "The last name of the user.",
                        "example": "Smith"
                      },
                      "email": {
                        "$ref": "#/components/schemas/Email"
                      },
                      "mobile": {
                        "$ref": "#/components/schemas/Mobile"
                      },
                      "dateOfBirth": {
                        "description": "Date of birth of the authorized user.",
                        "allOf": [
                          {
                            "$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"
                      },
                      "roles": {
                        "type": "array",
                        "items": {
                          "$ref": "#/components/schemas/UserPredefinedRole"
                        },
                        "description": "Optional roles to assign to the user. For a full description of the permissions associated with each role, see our product documentation."
                      }
                    }
                  }
                }
              }
            }
          }
        }
      },
      "BulkUserInviteRequest": {
        "required": true,
        "content": {
          "application/json": {
            "schema": {
              "type": "array",
              "minItems": 1,
              "maxItems": 10000,
              "items": {
                "type": "object",
                "required": [
                  "pathParams"
                ],
                "properties": {
                  "pathParams": {
                    "type": "object",
                    "required": [
                      "_user_id_"
                    ],
                    "properties": {
                      "_user_id_": {
                        "$ref": "#/components/schemas/UserId"
                      }
                    }
                  }
                }
              }
            }
          }
        }
      },
      "BulkManagedCardPathRequest": {
        "required": true,
        "content": {
          "application/json": {
            "schema": {
              "type": "array",
              "minItems": 1,
              "maxItems": 10000,
              "items": {
                "$ref": "#/components/schemas/BulkManagedCardPathOperation"
              }
            }
          }
        }
      },
      "BulkManagedCardSpendRulesRequest": {
        "required": true,
        "content": {
          "application/json": {
            "schema": {
              "type": "array",
              "minItems": 1,
              "maxItems": 10000,
              "items": {
                "$ref": "#/components/schemas/BulkManagedCardSpendRulesOperation"
              }
            }
          }
        }
      },
      "BulkTransferCreateRequest": {
        "required": true,
        "content": {
          "application/json": {
            "schema": {
              "type": "array",
              "minItems": 1,
              "maxItems": 10000,
              "items": {
                "$ref": "#/components/schemas/BulkTransferCreateOperation"
              }
            }
          }
        }
      },
      "BulkSendCreateRequest": {
        "required": true,
        "content": {
          "application/json": {
            "schema": {
              "type": "array",
              "minItems": 1,
              "maxItems": 10000,
              "items": {
                "$ref": "#/components/schemas/BulkSendCreateOperation"
              }
            }
          }
        }
      },
      "BulkOutgoingWireTransferCreateRequest": {
        "required": true,
        "content": {
          "application/json": {
            "schema": {
              "type": "array",
              "minItems": 1,
              "maxItems": 10000,
              "items": {
                "$ref": "#/components/schemas/BulkOutgoingWireTransferCreateOperation"
              }
            }
          }
        }
      },
      "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 authorized user.",
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Date"
                    }
                  ]
                },
                "tag": {
                  "$ref": "#/components/schemas/Tag"
                },
                "locale": {
                  "$ref": "#/components/schemas/UserLocale"
                },
                "brand": {
                  "$ref": "#/components/schemas/Brand"
                },
                "roles": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/UserPredefinedRole"
                  },
                  "description": "Optional roles to assign to the user. This uses overwrite behavior - roles included in this list will be assigned, and roles not included will be unassigned. Users cannot update their own roles. For a full description of the permissions associated to each role, see our product documentation."
                }
              }
            }
          }
        }
      },
      "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"
                },
                "mobile": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Mobile"
                    }
                  ],
                  "description": "Optional mobile number for the user. If provided, the user's mobile is set/replaced as part of consuming the invite. The new number is left unverified — it must be enrolled afterwards."
                }
              }
            }
          }
        }
      },
      "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.\n\nRoot users need to verify their email address and mobile number, as well as complete KYC as part of the Corporate's due diligence process.\n",
                  "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.",
                      "allOf": [
                        {
                          "$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 authorized user.",
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Date"
                    }
                  ]
                },
                "resetMobileCounter": {
                  "type": "boolean"
                },
                "userTag": {
                  "description": "The tag to be assigned to the root user.",
                  "allOf": [
                    {
                      "$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"
                }
              }
            }
          }
        }
      },
      "CorporateKybEntitySubmissionRequest": {
        "required": true,
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/CorporateKybEntitySubmission"
            }
          }
        }
      },
      "CorporateKybProfileSubmissionRequest": {
        "required": true,
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/CorporateKybProfileSubmission"
            }
          }
        }
      },
      "CorporateKybDocumentUploadRequest": {
        "required": true,
        "content": {
          "multipart/form-data": {
            "schema": {
              "$ref": "#/components/schemas/CorporateKybDocumentForm"
            }
          }
        }
      },
      "ChargeFeeRequest": {
        "required": true,
        "content": {
          "application/json": {
            "schema": {
              "description": "The custom fee to be charged to the consumer/corporate.",
              "allOf": [
                {
                  "$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.\n\nRoot users need to verify their email address and mobile number, as well as complete KYC, as part of the Consumer's due diligence process.\n",
                  "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.",
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/Date"
                        }
                      ]
                    },
                    "occupation": {
                      "$ref": "#/components/schemas/Occupation"
                    },
                    "address": {
                      "description": "Address of the consumer root user.",
                      "allOf": [
                        {
                          "$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.\"",
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/Nationality"
                        }
                      ]
                    },
                    "tag": {
                      "description": "Tag to be assigned to the consumer root user.",
                      "allOf": [
                        {
                          "$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.",
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Date"
                    }
                  ]
                },
                "address": {
                  "description": "Address of the consumer root user.",
                  "allOf": [
                    {
                      "$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.",
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Nationality"
                    }
                  ]
                },
                "resetMobileCounter": {
                  "type": "boolean"
                },
                "userTag": {
                  "description": "The tag to be assigned to the root user.",
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/Tag"
                    }
                  ]
                },
                "locale": {
                  "$ref": "#/components/schemas/UserLocale"
                },
                "brand": {
                  "$ref": "#/components/schemas/Brand"
                }
              }
            }
          }
        }
      },
      "ConsumerKycLevelRequest": {
        "content": {
          "application/json": {
            "schema": {
              "type": "object",
              "properties": {
                "kycLevel": {
                  "allOf": [
                    {
                      "$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"
                      }
                    }
                  }
                }
              }
            }
          }
        }
      },
      "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"
                },
                "lowBalanceThreshold": {
                  "$ref": "#/components/schemas/AccountLowBalanceThreshold"
                }
              }
            }
          }
        },
        "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."
                },
                "lowBalanceThreshold": {
                  "$ref": "#/components/schemas/AccountLowBalanceThreshold"
                },
                "clearLowBalanceThreshold": {
                  "type": "boolean",
                  "description": "When true, clears the configured low balance threshold on the account. Ignored if lowBalanceThreshold is also provided."
                }
              }
            }
          }
        }
      },
      "SystemManagedCardRequest": {
        "required": true,
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/SystemManagedCardRequest"
            }
          }
        }
      },
      "SystemManagedCardUpdateRequest": {
        "required": true,
        "content": {
          "application/json": {
            "schema": {
              "type": "object",
              "properties": {
                "tag": {
                  "$ref": "#/components/schemas/Tag"
                },
                "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."
                },
                "billingAddress": {
                  "description": "The billing address of the card. Merchants may request the billing address to be checked for online purchases.",
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/BillingAddress"
                    }
                  ]
                },
                "authForwardingDefaultTimeoutDecision": {
                  "type": "string",
                  "description": "Default decision for auth forwarding on timeout",
                  "enum": [
                    "APPROVE",
                    "DECLINE"
                  ]
                },
                "externalData": {
                  "$ref": "#/components/schemas/ExternalData"
                }
              }
            }
          }
        }
      },
      "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.\n\nThis may be verified by merchants when the card is used online. For Physical cards, this field will be printed on the card.\nThe maximum characters allowed will depend on the design chosen and will be provided to you by Weavr when setting up your plastic cards.\n"
                },
                "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.",
                  "x-internal": true
                },
                "billingAddress": {
                  "description": "The billing address of the card holder. Merchants may request the billing address to be checked for online purchases.",
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/BillingAddress"
                    }
                  ]
                },
                "deliveryAddress": {
                  "description": "The delivery address set for the card holder. This is only applicable for physical cards.",
                  "allOf": [
                    {
                      "$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",
                  "x-internal": true
                },
                "externalData": {
                  "$ref": "#/components/schemas/ExternalData"
                },
                "bulkDelivery": {
                  "$ref": "#/components/schemas/BulkCardDelivery"
                },
                "activationCode": {
                  "allOf": [
                    {
                      "$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.\n\nThis 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.\n"
                },
                "carrierType": {
                  "type": "string",
                  "description": "The carrier type to be used for this physical card.\n\nThis 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.\n"
                },
                "renewalType": {
                  "$ref": "#/components/schemas/CardRenewalType"
                },
                "userId": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/UserId"
                    }
                  ],
                  "description": "The Authorized 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": {
              "$ref": "#/components/schemas/ManagedCardPhysicalUpgrade"
            }
          }
        }
      },
      "ManagedCardPhysicalUpgradeBulkRequest": {
        "required": true,
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/ManagedCardPhysicalUpgradeBulk"
            }
          }
        }
      },
      "ManagedCardPhysicalActivateRequest": {
        "required": true,
        "content": {
          "application/json": {
            "schema": {
              "type": "object",
              "properties": {
                "activationCode": {
                  "allOf": [
                    {
                      "$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": {
                  "allOf": [
                    {
                      "$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": {
                  "allOf": [
                    {
                      "$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.",
                  "allOf": [
                    {
                      "$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.",
                  "allOf": [
                    {
                      "$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).",
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/CurrencyAmount"
                    }
                  ]
                },
                "scheduledTimestamp": {
                  "$ref": "#/components/schemas/ScheduledTimestamp"
                }
              }
            },
            "example": {
              "profileId": "10001",
              "tag": "invoice-2026-0042",
              "source": {
                "type": "managed_accounts",
                "id": "123456789"
              },
              "destination": {
                "type": "managed_accounts",
                "id": "987654321"
              },
              "destinationAmount": {
                "currency": "GBP",
                "amount": 1250
              },
              "description": "Invoice 2026-0042"
            }
          }
        }
      },
      "TransactionBulkCancelRequest": {
        "required": true,
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/TransactionBulkCancelRequest"
            }
          }
        }
      },
      "SendCreateRequest": {
        "required": true,
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/SendCreateRequest"
            }
          }
        }
      },
      "TransactionSingleCancelRequest": {
        "required": false,
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/TransactionSingleCancelRequest"
            }
          }
        }
      },
      "OutgoingWireTransferCreateRequest": {
        "required": true,
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/OutgoingWireTransferCreateRequest"
            }
          }
        }
      },
      "CorrespondentBankingOwtCreateRequest": {
        "required": true,
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/CorrespondentBankingOwtCreateRequest"
            }
          }
        }
      },
      "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": {
      "Error": {
        "description": "Error",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/Error"
            }
          }
        }
      },
      "LoginWithPasswordResponse": {
        "description": "Success",
        "headers": {
          "request-ref": {
            "$ref": "#/components/headers/request-ref"
          }
        },
        "content": {
          "application/json": {
            "schema": {
              "type": "object",
              "properties": {
                "token": {
                  "type": "string",
                  "description": "An authorization token (valid for 5 minutes from last activity) identifying the user to be used in the `access_token` authorization header for secured operations.",
                  "x-sensitive-attribute": {
                    "type": "NONE",
                    "lifetime": "MASKED"
                  }
                },
                "tokenType": {
                  "$ref": "#/components/schemas/TokenType",
                  "example": "AUTH"
                },
                "identity": {
                  "description": "The identity to which the logged-in user belongs to.",
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/IdentityId"
                    }
                  ]
                },
                "credentials": {
                  "description": "The unique identifier for the logged-in user.",
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/CredentialId"
                    }
                  ]
                }
              }
            }
          }
        },
        "links": {
          "createAccessToken": {
            "operationId": "requestAccessToken",
            "description": "Exchange the returned auth token for an identity-scoped access token."
          }
        }
      },
      "BadRequestError": {
        "description": "The request is malformed or fails field validation. Correct the request before retrying.",
        "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.",
                  "example": "One or more request fields are invalid."
                },
                "syntaxErrors": {
                  "$ref": "#/components/schemas/SyntaxError"
                }
              }
            },
            "example": {
              "message": "One or more request fields are invalid.",
              "syntaxErrors": {
                "invalidFields": [
                  {
                    "fieldName": "destinationAmount.amount",
                    "error": "RANGE",
                    "params": [
                      "1",
                      "100000000"
                    ]
                  }
                ]
              }
            }
          }
        }
      },
      "Unauthorized": {
        "description": "Authentication failed because a required credential is missing, invalid, or expired. Obtain a valid credential before retrying.",
        "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 authorization token required to initiate the _passwordUpdate_ operation.",
                  "x-sensitive-attribute": {
                    "type": "NONE",
                    "lifetime": "MASKED"
                  }
                }
              }
            }
          }
        }
      },
      "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": "The caller has exceeded an API rate limit. Wait until the limit resets before retrying.",
        "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": "The request failed because of an unexpected server error. Retrying may succeed; use the request-ref when contacting support.",
        "headers": {
          "request-ref": {
            "$ref": "#/components/headers/request-ref"
          }
        }
      },
      "ServiceUnavailable": {
        "description": "The service is temporarily unavailable. Retry later; use the request-ref when contacting support.",
        "headers": {
          "request-ref": {
            "$ref": "#/components/headers/request-ref"
          }
        }
      },
      "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"
                  ]
                }
              }
            }
          }
        }
      },
      "LoginWithIamResponse": {
        "description": "Success",
        "headers": {
          "request-ref": {
            "$ref": "#/components/headers/request-ref"
          }
        },
        "content": {
          "application/json": {
            "schema": {
              "type": "object",
              "properties": {
                "url": {
                  "type": "string"
                }
              }
            }
          }
        }
      },
      "Forbidden": {
        "description": "Authentication succeeded, but the caller does not have permission to perform this operation.",
        "headers": {
          "request-ref": {
            "$ref": "#/components/headers/request-ref"
          }
        },
        "content": {
          "application/json": {
            "schema": {
              "type": "object",
              "properties": {
                "errorCode": {
                  "type": "string",
                  "enum": [
                    "INSUFFICIENT_PERMISSIONS"
                  ]
                }
              }
            },
            "example": {
              "errorCode": "INSUFFICIENT_PERMISSIONS"
            }
          }
        }
      },
      "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"
                  ]
                }
              }
            }
          }
        }
      },
      "NoContent": {
        "description": "Success - No Content.",
        "headers": {
          "request-ref": {
            "$ref": "#/components/headers/request-ref"
          }
        }
      },
      "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 authorization token to be used in the Authorization header for secured operations.",
                  "x-sensitive-attribute": {
                    "type": "NONE",
                    "lifetime": "MASKED"
                  }
                }
              }
            }
          }
        }
      },
      "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"
                  ]
                },
                "errors": {
                  "type": "array",
                  "description": "Every complexity rule the submitted password failed, so all failures can be surfaced at once. Populated only for `PASSWORD_TOO_SHORT`, `PASSWORD_TOO_LONG` and `PASSWORD_TOO_SIMPLE`; empty for the profile-resolution errors `UNRESOLVED_IDENTITY` and `PASSWORD_PROFILE_NOT_CONFIGURED_FOR_CREDENTIAL_TYPE`.",
                  "items": {
                    "$ref": "#/components/schemas/PasswordValidateComplexityIssue"
                  }
                }
              }
            }
          }
        }
      },
      "NotFound": {
        "description": "No resource matching the supplied identifier exists or is visible to the caller.",
        "headers": {
          "request-ref": {
            "$ref": "#/components/headers/request-ref"
          }
        },
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/Error"
            },
            "example": {
              "code": "NOT_FOUND",
              "message": "The requested resource could not be found."
            }
          }
        }
      },
      "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"
                  ]
                }
              }
            }
          }
        }
      },
      "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:\n  * `STATE_INVALID` - The operation no longer requires additional verification, it was either canceled or completed.\n  * `CHANNEL_NOT_SUPPORTED` - The channel selected cannot be used to verify this type of operation.\n  * `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.\n  * `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).\n  * `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.\n",
                  "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",
                  "x-sensitive-attribute": {
                    "type": "NONE",
                    "lifetime": "MASKED"
                  }
                },
                "identity": {
                  "description": "The identity to which the logged-in user belongs to.",
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/IdentityId"
                    }
                  ]
                },
                "credentials": {
                  "description": "The unique identifier for the logged-in user.",
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/CredentialId"
                    }
                  ]
                },
                "status": {
                  "type": "string",
                  "description": "The token status, as follows:\n  - STANDARD: it is a standard token. \n  - STEPPED_UP: it is a stepped up token.\n",
                  "enum": [
                    "STANDARD",
                    "STEPPED_UP"
                  ]
                }
              }
            }
          }
        }
      },
      "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"
                }
              }
            }
          }
        }
      },
      "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"
                  ]
                }
              }
            }
          }
        }
      },
      "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"
            }
          }
        }
      },
      "BulkProcessResponse": {
        "description": "Success",
        "headers": {
          "request-ref": {
            "$ref": "#/components/headers/request-ref"
          }
        },
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/SubmitBulkProcessResponse"
            }
          }
        }
      },
      "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",
                    "ROLE_NOT_FOUND",
                    "CANNOT_MODIFY_OWN_ROLES",
                    "ADMIN_ROLE_REMOVAL_NOT_ALLOWED"
                  ]
                }
              }
            }
          }
        }
      },
      "UserIdentitiesGetResponse": {
        "description": "Success",
        "headers": {
          "request-ref": {
            "$ref": "#/components/headers/request-ref"
          }
        },
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/UserIdentitiesGetResponseSchema"
            }
          }
        }
      },
      "UserIdentitiesConflict": {
        "description": "Conflict",
        "content": {
          "application/json": {
            "schema": {
              "type": "object",
              "properties": {
                "errorCode": {
                  "type": "string",
                  "enum": [
                    "IDENTITY_TYPE_NOT_SUPPORTED"
                  ]
                }
              }
            }
          }
        }
      },
      "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",
                    "INVALID_PASSWORD"
                  ]
                }
              }
            }
          }
        }
      },
      "UserLinkConflict": {
        "description": "Conflict",
        "content": {
          "application/json": {
            "schema": {
              "type": "object",
              "properties": {
                "errorCode": {
                  "type": "string",
                  "enum": [
                    "USER_ALREADY_LINKED_TO_IDENTITY",
                    "CREDENTIAL_NOT_FOUND",
                    "KYB_MISSING",
                    "PROFILE_MISMATCH",
                    "EMAIL_DOMAIN_NOT_ALLOWED"
                  ]
                }
              }
            }
          }
        }
      },
      "CorporateResponse": {
        "description": "Success",
        "headers": {
          "request-ref": {
            "$ref": "#/components/headers/request-ref"
          }
        },
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/Corporate"
            }
          }
        }
      },
      "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",
                    "COMPANY_NOT_FOUND",
                    "COMPANY_LOOKUP_FAILED",
                    "CURRENCY_UNSUPPORTED",
                    "FEE_GROUP_INVALID",
                    "COUNTRY_INVALID",
                    "MOBILE_OR_COUNTRY_CODE_INVALID",
                    "COUNTRY_UNSUPPORTED",
                    "ROOT_USER_INACTIVE",
                    "ROOT_EMAIL_NOT_VERIFIED",
                    "PROFILE_MISMATCH",
                    "COMPANY_TYPE_UNSUPPORTED",
                    "EMAIL_DOMAIN_NOT_ALLOWED"
                  ]
                }
              }
            }
          }
        }
      },
      "CorporateUpdateConflict": {
        "description": "Conflict",
        "content": {
          "application/json": {
            "schema": {
              "type": "object",
              "properties": {
                "errorCode": {
                  "type": "string",
                  "enum": [
                    "FEE_GROUP_INVALID",
                    "COUNTRY_INVALID",
                    "COUNTRY_UNSUPPORTED",
                    "MOBILE_NO_CHANGE_LIMIT_EXCEEDED",
                    "TOO_FREQUENT_EMAIL_CHANGES",
                    "EMAIL_DOMAIN_NOT_ALLOWED",
                    "MOBILE_CHANGE_NOT_ALLOWED",
                    "UNSUPPORTED_CURRENCY"
                  ]
                }
              }
            }
          }
        }
      },
      "EmailVerificationConflict": {
        "description": "Conflict",
        "content": {
          "application/json": {
            "schema": {
              "type": "object",
              "properties": {
                "errorCode": {
                  "type": "string",
                  "enum": [
                    "EMAIL_NOT_FOUND",
                    "ALREADY_VERIFIED"
                  ]
                }
              }
            }
          }
        }
      },
      "VerifyConflict": {
        "description": "Conflict",
        "content": {
          "application/json": {
            "schema": {
              "type": "object",
              "properties": {
                "errorCode": {
                  "type": "string",
                  "enum": [
                    "VERIFICATION_CODE_INVALID"
                  ]
                }
              }
            }
          }
        }
      },
      "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.",
                  "deprecated": true,
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/KyiStatus"
                    }
                  ]
                },
                "ongoingKybStatus": {
                  "description": "The ongoing due diligence status of the logged-in corporate user.",
                  "deprecated": true,
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/KyiStatus"
                    }
                  ]
                },
                "corporateKybStatus": {
                  "description": "Whether the corporate may use financial services.",
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/CorporateKybStatusValue"
                    }
                  ]
                },
                "kybRuns": {
                  "type": "array",
                  "description": "Every KYB run the corporate has been through.",
                  "items": {
                    "$ref": "#/components/schemas/KybRun"
                  }
                }
              }
            }
          }
        }
      },
      "CorporateKybEntityGetResponse": {
        "description": "Success",
        "headers": {
          "request-ref": {
            "$ref": "#/components/headers/request-ref"
          }
        },
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/CorporateKybEntityResponseSchema"
            }
          }
        }
      },
      "CorporateKybProfileGetResponse": {
        "description": "Success",
        "headers": {
          "request-ref": {
            "$ref": "#/components/headers/request-ref"
          }
        },
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/CorporateKybProfileResponseSchema"
            }
          }
        }
      },
      "CorporateKybDocumentsGetResponse": {
        "description": "Success",
        "headers": {
          "request-ref": {
            "$ref": "#/components/headers/request-ref"
          }
        },
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/CorporateKybDocumentList"
            }
          }
        }
      },
      "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"
                  ]
                }
              }
            }
          }
        }
      },
      "FeeTransactionListResponse": {
        "description": "Success",
        "headers": {
          "request-ref": {
            "$ref": "#/components/headers/request-ref"
          }
        },
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/FeeTransactionList"
            }
          }
        }
      },
      "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"
                  ]
                }
              }
            }
          }
        }
      },
      "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.",
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/KyiStatus"
                    }
                  ]
                },
                "kycLevel": {
                  "description": "The customer's level of due diligence.",
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/KycLevel"
                    }
                  ]
                },
                "ongoingFullDueDiligence": {
                  "description": "The status of the ongoing Due Diligence process for the consumer",
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/KyiStatus"
                    }
                  ]
                },
                "ongoingKycLevel": {
                  "description": "The level of due diligence of the ongoing KYC process.",
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/KycLevel"
                    }
                  ]
                }
              }
            }
          }
        }
      },
      "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 initialize the KYC UI Component."
                },
                "kycLevel": {
                  "allOf": [
                    {
                      "$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"
                  ]
                }
              }
            }
          }
        }
      },
      "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"
                }
              }
            }
          }
        }
      },
      "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",
                    "INSUFFICIENT_PERMISSIONS"
                  ]
                }
              }
            }
          }
        }
      },
      "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",
                    "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"
                  ]
                }
              }
            }
          }
        }
      },
      "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"
              }
            }
          }
        }
      },
      "InstrumentStatementJsonResponse": {
        "description": "Success",
        "headers": {
          "request-ref": {
            "$ref": "#/components/headers/request-ref"
          }
        },
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/StatementResponse"
            }
          },
          "application/pdf": {
            "schema": {
              "type": "string",
              "format": "binary"
            }
          }
        }
      },
      "InstrumentStatementPdfResponse": {
        "description": "The generated PDF statement",
        "headers": {
          "request-ref": {
            "$ref": "#/components/headers/request-ref"
          }
        },
        "content": {
          "application/pdf": {
            "schema": {
              "type": "string",
              "format": "binary"
            }
          }
        }
      },
      "InstrumentTransactionActivityListResponse": {
        "description": "Success",
        "headers": {
          "request-ref": {
            "$ref": "#/components/headers/request-ref"
          }
        },
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/InstrumentTransactionActivityList"
            }
          }
        }
      },
      "InstrumentTransactionActivityResponse": {
        "description": "Success",
        "headers": {
          "request-ref": {
            "$ref": "#/components/headers/request-ref"
          }
        },
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/InstrumentTransactionActivityItem"
            }
          }
        }
      },
      "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"
                  ]
                }
              }
            }
          }
        }
      },
      "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"
                }
              }
            }
          }
        }
      },
      "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",
                    "PROFILE_TYPE_MISMATCH"
                  ]
                }
              }
            }
          }
        }
      },
      "SystemManagedCardPageResponse": {
        "description": "Success",
        "headers": {
          "request-ref": {
            "$ref": "#/components/headers/request-ref"
          }
        },
        "content": {
          "application/json": {
            "schema": {
              "type": "object",
              "properties": {
                "cards": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/SystemManagedCard"
                  }
                },
                "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"
                }
              }
            }
          }
        }
      },
      "SystemManagedCardResponse": {
        "description": "Success",
        "headers": {
          "request-ref": {
            "$ref": "#/components/headers/request-ref"
          }
        },
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/SystemManagedCard"
            }
          }
        }
      },
      "SystemManagedCardConflict": {
        "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",
                    "AUTH_FORWARDING_NOT_ENABLED",
                    "RENEWAL_TYPE_NOT_SUPPORTED_BY_PROFILE",
                    "USER_CURRENCY_NOT_ENABLED",
                    "USER_CURRENCY_NOT_SUPPORTED_BY_PROFILE",
                    "USER_CURRENCY_SAME_AS_BASE_CURRENCY",
                    "SYSTEM_CARDS_NOT_ALLOWED_FOR_IDENTITY",
                    "PROFILE_TYPE_MISMATCH"
                  ]
                }
              }
            }
          }
        }
      },
      "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",
                    "CANNOT_REASSIGN_ACTIVE_CARD"
                  ]
                }
              }
            }
          }
        }
      },
      "ManagedCardResponse": {
        "description": "Success",
        "headers": {
          "request-ref": {
            "$ref": "#/components/headers/request-ref"
          }
        },
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/ManagedCard"
            }
          }
        }
      },
      "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"
              }
            }
          }
        }
      },
      "CardPaymentListResponse": {
        "description": "Success",
        "headers": {
          "request-ref": {
            "$ref": "#/components/headers/request-ref"
          }
        },
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/CardPaymentList"
            }
          }
        }
      },
      "CardPaymentResponse": {
        "description": "Success",
        "headers": {
          "request-ref": {
            "$ref": "#/components/headers/request-ref"
          }
        },
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/CardPayment"
            }
          }
        }
      },
      "CardPaymentEventListResponse": {
        "description": "Success",
        "headers": {
          "request-ref": {
            "$ref": "#/components/headers/request-ref"
          }
        },
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/CardPaymentEventList"
            }
          }
        }
      },
      "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",
                    "INSTRUMENT_NOT_ENABLED",
                    "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"
                  ]
                }
              }
            }
          }
        }
      },
      "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"
                }
              }
            }
          }
        }
      },
      "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"
                  ]
                }
              }
            }
          }
        }
      },
      "TransactionBulkCancelResponse": {
        "description": "Success",
        "headers": {
          "request-ref": {
            "$ref": "#/components/headers/request-ref"
          }
        },
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/TransactionBulkCancelResponse"
            }
          }
        }
      },
      "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"
                }
              }
            }
          }
        }
      },
      "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"
                  ]
                }
              }
            }
          }
        }
      },
      "SendCancelConflict": {
        "description": "Conflict",
        "content": {
          "application/json": {
            "schema": {
              "type": "object",
              "properties": {
                "errorCode": {
                  "type": "string",
                  "enum": [
                    "INVALID_STATE"
                  ]
                }
              }
            }
          }
        }
      },
      "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"
                  ]
                }
              }
            }
          }
        }
      },
      "IncomingWireTransferListResponse": {
        "description": "Success",
        "headers": {
          "request-ref": {
            "$ref": "#/components/headers/request-ref"
          }
        },
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/IncomingWireTransferList"
            }
          }
        }
      },
      "IncomingWireTransferResponse": {
        "description": "Success",
        "headers": {
          "request-ref": {
            "$ref": "#/components/headers/request-ref"
          }
        },
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/IncomingWireTransfer"
            }
          }
        }
      },
      "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"
                }
              }
            }
          }
        }
      },
      "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",
                    "EXTERNAL_DESTINATION_ACCOUNT_NOT_FOUND",
                    "PURPOSE_OF_PAYMENT_REQUIRED"
                  ]
                }
              }
            }
          }
        }
      },
      "OutgoingWireTransferUpdateBeneficiaryNameConflict": {
        "description": "Update beneficiary name conflict",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/OutgoingWireTransferUpdateBeneficiaryNameConflict"
            }
          }
        }
      },
      "OutgoingWireTransferPaymentConfirmationConflict": {
        "description": "The outgoing wire transfer exists but is not in a state for which a payment confirmation can be produced.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/OutgoingWireTransferPaymentConfirmationConflict"
            }
          }
        }
      },
      "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:\n  * `STATE_INVALID` - The transaction no longer requires additional verification, it was either canceled or completed.\n  * `CHANNEL_NOT_SUPPORTED` - The channel selected cannot be used to verify this type of transaction.\n  * `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.\n  * `SCA_EXEMPTION_APPLIED` - The transaction no longer requires additional verification, it was proceeded via PSD2 Regulation low value SCA exemption, it is either canceled or completed.\n",
                  "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"
                  ]
                }
              }
            }
          }
        }
      },
      "CorrespondentBankingOwtsResponse": {
        "description": "Success",
        "headers": {
          "request-ref": {
            "$ref": "#/components/headers/request-ref"
          }
        },
        "content": {
          "application/json": {
            "schema": {
              "type": "object",
              "properties": {
                "transfer": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/CorrespondentBankingOwt"
                  }
                },
                "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"
                }
              }
            }
          }
        }
      },
      "CorrespondentBankingOwtResponse": {
        "description": "Success",
        "headers": {
          "request-ref": {
            "$ref": "#/components/headers/request-ref"
          }
        },
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/CorrespondentBankingOwt"
            }
          }
        }
      },
      "CorrespondentBankingOwtCreateConflict": {
        "description": "Conflict",
        "content": {
          "application/json": {
            "schema": {
              "type": "object",
              "properties": {
                "errorCode": {
                  "type": "string",
                  "enum": [
                    "PROFILE_INACTIVE",
                    "MODEL_CONSTRAINTS_VIOLATED",
                    "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",
                    "PROFILE_NOT_FOUND",
                    "SCHEDULED_TIMESTAMP_INVALID",
                    "BENEFICIARY_BANK_DETAILS_INVALID",
                    "ORIGINATOR_DETAILS_INVALID"
                  ]
                }
              }
            }
          }
        }
      },
      "CorrespondentBankingOwtCancelConflict": {
        "description": "Conflict",
        "content": {
          "application/json": {
            "schema": {
              "type": "object",
              "properties": {
                "errorCode": {
                  "type": "string",
                  "enum": [
                    "INVALID_STATE"
                  ]
                }
              }
            }
          }
        }
      },
      "CorrespondentBankingOwtConfirmConflict": {
        "description": "Conflict",
        "content": {
          "application/json": {
            "schema": {
              "type": "object",
              "properties": {
                "errorCode": {
                  "type": "string",
                  "enum": [
                    "INVALID_STATE"
                  ]
                }
              }
            }
          }
        }
      },
      "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"
                }
              }
            }
          }
        }
      },
      "BeneficiaryBatchResponse": {
        "description": "Success",
        "headers": {
          "request-ref": {
            "$ref": "#/components/headers/request-ref"
          }
        },
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/BeneficiaryBatch"
            }
          }
        }
      },
      "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:\n  * `STATE_INVALID` - The operation no longer requires additional verification, it was either canceled or completed.\n  * `CHANNEL_NOT_SUPPORTED` - The channel selected cannot be used to verify this type of operation.\n  * `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.\n",
                  "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"
                  ]
                }
              }
            }
          }
        }
      },
      "TransactionActivityListResponse": {
        "description": "Success",
        "headers": {
          "request-ref": {
            "$ref": "#/components/headers/request-ref"
          }
        },
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/TransactionActivityList"
            }
          }
        }
      }
    },
    "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`\nThe first number (20) is the limit that has been exceeded.\nThe 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 3,600 seconds (one hour).\n",
        "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"
        }
      }
    },
    "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",
          "example": "transfer-2026-08-07-001"
        }
      },
      "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,
        "description": "The push channel used to deliver the SCA challenge.",
        "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"
        },
        "example": "987654321"
      },
      "authFactorsPushChannel": {
        "name": "channel",
        "in": "path",
        "required": true,
        "description": "The push channel used for the authentication factor.",
        "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",
          "example": 0
        }
      },
      "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",
          "example": 25
        }
      },
      "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"
        },
        "example": "alex@example.com"
      },
      "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,
        "description": "Filter by the bulk process status.",
        "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,
        "description": "Return bulk process operations at or after this sequence number.",
        "schema": {
          "type": "integer",
          "format": "int64"
        }
      },
      "bulkProcessOperationStatus": {
        "name": "status",
        "in": "query",
        "required": false,
        "description": "Filter by the bulk process operation status.",
        "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"
        }
      },
      "corporateIdPath": {
        "name": "corporateId",
        "in": "path",
        "required": true,
        "description": "The unique identifier of the corporate the KYB submission belongs to.",
        "schema": {
          "type": "string",
          "maxLength": 100,
          "pattern": "^[0-9]+$",
          "example": "123456789"
        }
      },
      "creationTimestampFrom": {
        "name": "creationTimestampFrom",
        "in": "query",
        "required": false,
        "description": "Filter for transactions created after this timestamp. Epoch timestamp using millisecond precision.",
        "schema": {
          "type": "integer",
          "format": "int64"
        }
      },
      "creationTimestampTo": {
        "name": "creationTimestampTo",
        "in": "query",
        "required": false,
        "description": "Filter for transactions created before this timestamp. Epoch timestamp using millisecond precision.",
        "schema": {
          "type": "integer",
          "format": "int64"
        }
      },
      "sortOrder": {
        "name": "sortOrder",
        "in": "query",
        "required": false,
        "description": "Sort order for the results:\n  - ASC: Ascending order, oldest first.\n  - DESC: Descending order, most recent first.\n",
        "schema": {
          "type": "string",
          "enum": [
            "ASC",
            "DESC"
          ]
        }
      },
      "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"
        },
        "example": "10001"
      },
      "friendlyName": {
        "name": "friendlyName",
        "in": "query",
        "required": false,
        "description": "Filter by the managed account/card friendly name. Leave out to fetch all managed accounts/card.\n\nThe exact name must be provided, as wildcards are not supported.\n",
        "schema": {
          "minLength": 1,
          "maxLength": 50,
          "type": "string"
        }
      },
      "state": {
        "name": "state",
        "in": "query",
        "required": false,
        "description": "Filter by one or more current instrument states. When multiple values are\nprovided, instruments matching any of the states are returned:\n  - `ACTIVE`: The instrument can be used in transactions.\n  - `BLOCKED`: The instrument is temporarily blocked and cannot be used.\n  - `DESTROYED`: The instrument has been permanently destroyed.\n  - `NOT_ENABLED`: The instrument cannot be used because its linked user\n    has not completed the required verification steps.\n\nLeave this parameter out to return instruments in any state.\n",
        "schema": {
          "type": "array",
          "uniqueItems": true,
          "items": {
            "$ref": "#/components/schemas/InstrumentState"
          }
        }
      },
      "state_blockedReason": {
        "name": "state.blockedReason",
        "in": "query",
        "required": false,
        "description": "Filter blocked instruments by one or more reasons they were blocked. When\nmultiple values are provided, instruments matching any of the reasons are\nreturned. This filter applies only to instruments whose `state` is\n`BLOCKED`.\n\nLeave this parameter out to return blocked instruments regardless of the\nreason.\n",
        "schema": {
          "type": "array",
          "uniqueItems": true,
          "items": {
            "$ref": "#/components/schemas/BlockedReason"
          }
        }
      },
      "state_destroyedReason": {
        "name": "state.destroyedReason",
        "in": "query",
        "required": false,
        "description": "Filter destroyed instruments by one or more reasons they were destroyed.\nWhen multiple values are provided, instruments matching any of the reasons\nare returned. This filter applies only to instruments whose `state` is\n`DESTROYED`.\n\nLeave this parameter out to return destroyed instruments regardless of the\nreason.\n",
        "schema": {
          "type": "array",
          "uniqueItems": true,
          "items": {
            "$ref": "#/components/schemas/DestroyedReason"
          }
        }
      },
      "currency": {
        "name": "currency",
        "in": "query",
        "required": false,
        "description": "Filter by the managed account/card currency.\n\nCurrencies are expressed as an ISO 4217 code. Leave out to fetch all managed accounts/card.\n",
        "schema": {
          "$ref": "#/components/schemas/Currency"
        },
        "example": "GBP"
      },
      "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",
          "example": 1767225600000
        }
      },
      "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",
          "example": 1769903999999
        }
      },
      "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`.\n\nThe default response type (`application/json`) will be returned if specified incorrectly or not specified.\n",
        "required": false,
        "schema": {
          "type": "string",
          "enum": [
            "application/json",
            "text/csv",
            "application/pdf"
          ],
          "example": "application/json"
        }
      },
      "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.\n  - ASC: Ascending order, oldest transactions first.\n  - DESC: Descending order, most recent transactions first.\n\nIf not specified, the transactions will be returned in descending order.\n",
        "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.\n\nReturns only the entries which contain fund movements.\n",
        "schema": {
          "type": "boolean"
        }
      },
      "singleEntryPerTransaction": {
        "name": "singleEntryPerTransaction",
        "in": "query",
        "required": false,
        "description": "Returns transactions that span multiple movements as a single entry.\nOnly includes transactions that have been completed.\nDefaults to true for PDF statements, false otherwise.\nNote: due to the fact that only completed transactions are included, some\ntransactions that are in progress and have modified the balance of the instrument\nwill not be shown, which could lead to seemingly inconsistent balance being displayed.\n",
        "schema": {
          "type": "boolean"
        }
      },
      "statementTransactionType": {
        "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/StatementTransactionType"
          }
        }
      },
      "apiVersion": {
        "name": "x-api-version",
        "in": "header",
        "description": "Opts the call in to the latest version of the endpoint. Set to `LATEST` to be routed to the newest implementation; omit to retain the default routing for your tenant.\n",
        "required": false,
        "schema": {
          "type": "string",
          "enum": [
            "LATEST"
          ]
        }
      },
      "statementResponseLimit": {
        "name": "limit",
        "in": "query",
        "required": false,
        "description": "The maximum number of statement entries to return. Limit is capped at 500.",
        "schema": {
          "maximum": 500,
          "minimum": 1,
          "type": "integer",
          "format": "int32"
        }
      },
      "startPeriod": {
        "name": "startPeriod",
        "in": "query",
        "required": false,
        "description": "Start of the statement period. Epoch timestamp using millisecond precision.",
        "schema": {
          "type": "integer",
          "format": "int64"
        }
      },
      "endPeriod": {
        "name": "endPeriod",
        "in": "query",
        "required": false,
        "description": "End of the statement period. Epoch timestamp using millisecond precision.",
        "schema": {
          "type": "integer",
          "format": "int64"
        }
      },
      "statementSortOrder": {
        "name": "sortOrder",
        "in": "query",
        "required": false,
        "description": "Sort order for the results:\n  - ASC: Ascending order, oldest first (default for statements).\n  - DESC: Descending order, most recent first.\n",
        "schema": {
          "$ref": "#/components/schemas/InstrumentStatementSortOrder"
        }
      },
      "statementResponseTransactionType": {
        "name": "transaction.type",
        "in": "query",
        "required": false,
        "description": "Filter statement entries by one or more transaction types.",
        "schema": {
          "type": "array",
          "uniqueItems": true,
          "items": {
            "$ref": "#/components/schemas/StatementResponseEntryTransactionType"
          }
        }
      },
      "statementResponseExecutingAccessInstrumentId": {
        "name": "executingAccessInstrument.id",
        "in": "query",
        "required": false,
        "description": "Filter statement entries by the ID of the access instrument that initiated the transaction.",
        "schema": {
          "type": "string",
          "pattern": "^[0-9]+$"
        }
      },
      "statementResponseExecutingAccessInstrumentType": {
        "name": "executingAccessInstrument.type",
        "in": "query",
        "required": false,
        "description": "Filter statement entries by the type of access instrument that initiated the transaction (managed cards or IBANs).",
        "schema": {
          "type": "array",
          "uniqueItems": true,
          "items": {
            "$ref": "#/components/schemas/AccessInstrumentType"
          }
        }
      },
      "statementPdfStartPeriod": {
        "name": "startPeriod",
        "in": "query",
        "required": false,
        "description": "First day of the statement period, inclusive, as a date in the format `yyyy-MM-dd`.\n\nInterpreted as local midnight in `timezone`. Defaults to one month before `endPeriod`.\n",
        "schema": {
          "type": "string",
          "format": "date",
          "example": "2026-08-01"
        }
      },
      "statementPdfEndPeriod": {
        "name": "endPeriod",
        "in": "query",
        "required": false,
        "description": "Last day of the statement period, inclusive, as a date in the format `yyyy-MM-dd`.\n\nInterpreted as local midnight in `timezone`, so the period ends at the final moment of this day in that timezone. Defaults to today in `timezone`. The period must not exceed 12 months.\n",
        "schema": {
          "type": "string",
          "format": "date",
          "example": "2026-08-31"
        }
      },
      "statementPdfTimezone": {
        "name": "timezone",
        "in": "query",
        "required": false,
        "description": "IANA timezone used to render every date and time on the PDF, and to resolve `startPeriod` and `endPeriod` to local midnight. Defaults to `UTC`.\n\nOnly IANA timezone names are accepted, for example `Europe/Rome` or `America/New_York`. Fixed offsets such as `+02:00` or `GMT+2` are rejected, because they carry no daylight-saving rules and would render incorrect times across a transition.\n",
        "schema": {
          "type": "string",
          "example": "Europe/Rome"
        }
      },
      "transactionActivityType": {
        "name": "type",
        "in": "query",
        "required": false,
        "description": "Filter by one or more transaction activity types.",
        "schema": {
          "type": "array",
          "items": {
            "$ref": "#/components/schemas/TransactionActivityType"
          }
        }
      },
      "transactionActivityStatus": {
        "name": "status",
        "in": "query",
        "required": false,
        "description": "Filter by one or more normalized transaction statuses.",
        "schema": {
          "type": "array",
          "items": {
            "$ref": "#/components/schemas/TransactionActivityStatus"
          }
        }
      },
      "transactionActivityDirection": {
        "name": "direction",
        "in": "query",
        "required": false,
        "description": "Filter by transaction direction (CREDIT or DEBIT).",
        "schema": {
          "$ref": "#/components/schemas/TransactionActivityDirection"
        }
      },
      "lastUpdatedTimestampFrom": {
        "name": "lastUpdatedTimestampFrom",
        "in": "query",
        "required": false,
        "description": "Filter for transactions last updated after this timestamp. Useful for pulling recently changed transactions. Epoch timestamp using millisecond precision.",
        "schema": {
          "type": "integer",
          "format": "int64"
        }
      },
      "lastUpdatedTimestampTo": {
        "name": "lastUpdatedTimestampTo",
        "in": "query",
        "required": false,
        "description": "Filter for transactions last updated before this timestamp. Epoch timestamp using millisecond precision.",
        "schema": {
          "type": "integer",
          "format": "int64"
        }
      },
      "transactionActivitySortBy": {
        "name": "sortBy",
        "in": "query",
        "required": false,
        "description": "The field to sort transaction activity results by. Defaults to `creationTimestamp`.",
        "schema": {
          "$ref": "#/components/schemas/TransactionActivitySortBy"
        }
      },
      "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"
        }
      },
      "cardPaymentCardId": {
        "name": "cardId",
        "in": "query",
        "required": false,
        "description": "Filter by the managed card the payment belongs to.",
        "schema": {
          "type": "string",
          "pattern": "^[0-9]+$"
        }
      },
      "cardPaymentStatus": {
        "name": "status",
        "in": "query",
        "required": false,
        "explode": false,
        "description": "Filter by one or more card payment statuses.",
        "schema": {
          "type": "array",
          "items": {
            "$ref": "#/components/schemas/CardPaymentStatus"
          }
        }
      },
      "cardPaymentType": {
        "name": "type",
        "in": "query",
        "required": false,
        "explode": false,
        "description": "Filter by one or more card payment types.",
        "schema": {
          "type": "array",
          "items": {
            "$ref": "#/components/schemas/CardPaymentType"
          }
        }
      },
      "cardPaymentSubtype": {
        "name": "subtype",
        "in": "query",
        "required": false,
        "explode": false,
        "description": "Filter by one or more event subtypes (joined against the events timeline).",
        "schema": {
          "type": "array",
          "items": {
            "$ref": "#/components/schemas/CardPaymentSubtype"
          }
        }
      },
      "cardPaymentMerchantName": {
        "name": "merchantName",
        "in": "query",
        "required": false,
        "description": "Partial, case-insensitive match against merchant name.",
        "schema": {
          "type": "string"
        }
      },
      "cardPaymentAmountFrom": {
        "name": "amountFrom",
        "in": "query",
        "required": false,
        "description": "Filter for `displayAmount.amount >= amountFrom`.",
        "schema": {
          "type": "integer",
          "format": "int64"
        }
      },
      "cardPaymentAmountTo": {
        "name": "amountTo",
        "in": "query",
        "required": false,
        "description": "Filter for `displayAmount.amount <= amountTo`.",
        "schema": {
          "type": "integer",
          "format": "int64"
        }
      },
      "cardPaymentRelatedCardPaymentId": {
        "name": "relatedCardPaymentId",
        "in": "query",
        "required": false,
        "description": "Filter for card payments related to the given parent id.",
        "schema": {
          "type": "string",
          "pattern": "^[0-9]+$"
        }
      },
      "cardPaymentCreationTimestampFrom": {
        "name": "creationTimestampFrom",
        "in": "query",
        "required": false,
        "description": "Filter for card payments created at or after this epoch timestamp in milliseconds.",
        "schema": {
          "type": "integer",
          "format": "int64"
        }
      },
      "cardPaymentCreationTimestampTo": {
        "name": "creationTimestampTo",
        "in": "query",
        "required": false,
        "description": "Filter for card payments created before this epoch timestamp in milliseconds.",
        "schema": {
          "type": "integer",
          "format": "int64"
        }
      },
      "cardPaymentLastUpdatedTimestampFrom": {
        "name": "lastUpdatedTimestampFrom",
        "in": "query",
        "required": false,
        "description": "Filter for card payments updated at or after this epoch timestamp in milliseconds.",
        "schema": {
          "type": "integer",
          "format": "int64"
        }
      },
      "cardPaymentLastUpdatedTimestampTo": {
        "name": "lastUpdatedTimestampTo",
        "in": "query",
        "required": false,
        "description": "Filter for card payments updated before this epoch timestamp in milliseconds.",
        "schema": {
          "type": "integer",
          "format": "int64"
        }
      },
      "cardPaymentSortOrder": {
        "name": "sortOrder",
        "in": "query",
        "required": false,
        "description": "Sort order on `creationTimestamp`. ASC = oldest first.",
        "schema": {
          "type": "string",
          "enum": [
            "ASC",
            "DESC"
          ]
        }
      },
      "cardPaymentId": {
        "name": "id",
        "in": "path",
        "required": true,
        "description": "The unique identifier of a card payment.",
        "schema": {
          "type": "string",
          "pattern": "^[0-9]+$"
        }
      },
      "cardPaymentEventCardPaymentId": {
        "name": "cardPaymentId",
        "in": "query",
        "required": false,
        "description": "Filter events to a single card payment.",
        "schema": {
          "type": "string",
          "pattern": "^[0-9]+$"
        }
      },
      "cardPaymentEventCardId": {
        "name": "cardId",
        "in": "query",
        "required": false,
        "description": "Filter events to those on a single managed card.",
        "schema": {
          "type": "string",
          "pattern": "^[0-9]+$"
        }
      },
      "cardPaymentEventType": {
        "name": "type",
        "in": "query",
        "required": false,
        "explode": false,
        "description": "Filter by one or more event types.",
        "schema": {
          "type": "array",
          "items": {
            "$ref": "#/components/schemas/CardPaymentEventType"
          }
        }
      },
      "cardPaymentEventSubtype": {
        "name": "subtype",
        "in": "query",
        "required": false,
        "explode": false,
        "description": "Filter events by one or more network subtypes.",
        "schema": {
          "type": "array",
          "items": {
            "$ref": "#/components/schemas/CardPaymentSubtype"
          }
        }
      },
      "cardPaymentEventReversal": {
        "name": "reversal",
        "in": "query",
        "required": false,
        "description": "Filter events by reversal flag.",
        "schema": {
          "type": "boolean"
        }
      },
      "cardPaymentEventTimestampFrom": {
        "name": "timestampFrom",
        "in": "query",
        "required": false,
        "description": "Filter for card payment events at or after this epoch timestamp in milliseconds.",
        "schema": {
          "type": "integer",
          "format": "int64"
        }
      },
      "cardPaymentEventTimestampTo": {
        "name": "timestampTo",
        "in": "query",
        "required": false,
        "description": "Filter for card payment events before this epoch timestamp in milliseconds.",
        "schema": {
          "type": "integer",
          "format": "int64"
        }
      },
      "cardPaymentEventSortOrder": {
        "name": "sortOrder",
        "in": "query",
        "required": false,
        "description": "Sort order on event timestamp. ASC = oldest first (default DESC).",
        "schema": {
          "type": "string",
          "enum": [
            "ASC",
            "DESC"
          ]
        }
      },
      "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"
        }
      },
      "iwtState": {
        "name": "state",
        "in": "query",
        "required": false,
        "description": "Filter incoming wire transfers by state.",
        "schema": {
          "type": "array",
          "items": {
            "$ref": "#/components/schemas/IncomingWireTransferMultiState"
          }
        }
      },
      "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"
          }
        }
      },
      "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"
        }
      },
      "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"
        }
      },
      "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",
          "example": "req-7f3e2b1a"
        }
      }
    }
  },
  "x-tagGroups": [
    {
      "name": "Customers",
      "tags": [
        "Corporates",
        "Consumers",
        "Authorised signatories",
        "Trusted payees"
      ]
    },
    {
      "name": "Users & authentication",
      "tags": [
        "Setup",
        "Authentication factors",
        "Sign-in",
        "Access tokens",
        "Step-up challenges",
        "Confirmation challenges",
        "Roles"
      ]
    },
    {
      "name": "Instruments",
      "tags": [
        "Managed accounts",
        "Managed cards",
        "System-managed cards"
      ]
    },
    {
      "name": "Funds management",
      "tags": [
        "Transfers",
        "Transaction activity"
      ]
    },
    {
      "name": "External payments",
      "tags": [
        "Incoming wire transfers",
        "Outgoing wire transfers",
        "Correspondent bank transfers"
      ]
    },
    {
      "name": "Card payments",
      "tags": [
        "Card payments",
        "Spend controls"
      ]
    },
    {
      "name": "In-platform payments",
      "tags": [
        "Sends",
        "Fees"
      ]
    },
    {
      "name": "Bulk operations",
      "tags": [
        "Operations",
        "Manage"
      ]
    }
  ]
}