---
openapi: 3.0.3
info:
  title: Cybrid Identity API
  termsOfService: https://www.cybrid.xyz/tos
  description: "# Cybrid API documentation\n\nWelcome to Cybrid, an all-in-one crypto
    platform that enables you to easily **build** and **launch** white-label crypto
    products or services.\n\nIn these documents, you'll find details on how our REST
    API operates and generally how our platform functions.\n\nIf you're looking for
    our UI SDK Widgets for Web or Mobile (iOS/Android), generated API clients, or
    demo applications, head over to our [Github repo](https://github.com/Cybrid-app).\n\n\U0001F4A1
    We recommend bookmarking the [Cybrid LinkTree](https://linktr.ee/cybridtechnologies)
    which contains many helpful links to platform resources.\n\n## Getting Started\n\nThis
    is Cybrid's public interactive API documentation, which allows you to fully test
    our APIs. If you'd like to use a different tool to exercise our APIs, you can
    download the [Open API 3.0 yaml](https://bank.sandbox.cybrid.app/api/schema/v1/swagger.yaml)
    for import.\n\nIf you're new to our APIs and the Cybrid Platform, follow the below
    guides to get set up and familiar with the platform:\n\n1. [Introduction](https://docs.cybrid.xyz/docs/introduction)\n2.
    [Platform Overview](https://docs.cybrid.xyz/docs/platform-overview)\n3. [Testing
    with Hosted Web Demo App](https://docs.cybrid.xyz/docs/hosted-demo-app)\n\nIn
    [Getting Started in the Cybrid Sandbox](https://docs.cybrid.xyz/docs/cybrid-sandbox),
    we walk you through how to use the [Cybrid Sandbox](https://id.sandbox.cybrid.app/)
    to create a test bank and generate API keys. In [Getting Ready for Trading](https://docs.cybrid.xyz/docs/trade-process),
    we walk through creating customers, customer identities, accounts, as well as
    executing quotes and trades.\n\n## Working with the Cybrid Platform\n\nThere are
    three primary ways you can interact with the Cybrid platform:\n\n1. Directly via
    our RESTful API (this documentation)\n2. Using our API clients available in a
    variety of languages ([Angular](https://github.com/Cybrid-app/cybrid-api-bank-angular),
    [Java](https://github.com/Cybrid-app/cybrid-api-bank-java), [Kotlin](https://github.com/Cybrid-app/cybrid-api-bank-kotlin),
    [Python](https://github.com/Cybrid-app/cybrid-api-bank-python), [Ruby](https://github.com/Cybrid-app/cybrid-api-bank-ruby),
    [Swift](https://github.com/Cybrid-app/cybrid-api-bank-swift) or [Typescript](https://github.com/Cybrid-app/cybrid-api-bank-typescript))\n3.
    Integrating a platform specific SDK ([Web](https://github.com/Cybrid-app/cybrid-sdk-web),
    [Android](https://github.com/Cybrid-app/cybrid-sdk-android), [iOS](https://github.com/Cybrid-app/cybrid-sdk-ios))\n\nOur
    complete set of APIs allows you to manage resources across three distinct areas:
    your `Organization`, your `Banks` and your `Identities`. For most of your testing
    and interaction you'll be using the `Bank` API, which is where the majority of
    APIs reside.\n\n*The complete set of APIs can be found on the following pages:*\n\n|
    API                                                              | Description
    \                                                |\n|------------------------------------------------------------------|-------------------------------------------------------------|\n|
    [Organization API](https://organization.sandbox.cybrid.app/api/schema/swagger-ui)
    \  | APIs to manage organizations                                |\n| [Bank API](https://bank.sandbox.cybrid.app/api/schema/swagger-ui)
    \                  | APIs to manage banks (and all downstream customer activity)
    |\n| [Identities API](https://id.sandbox.cybrid.app/api/schema/swagger-ui)                       |
    APIs to manage organization and bank identities             |\n\nFor questions
    please contact [Support](mailto:support@cybrid.xyz) at any time for assistance,
    or contact the [Product Team](mailto:product@cybrid.xyz) for product suggestions.\n\n##
    Authenticating with the API\n\nThe Cybrid Platform uses OAuth 2.0 Bearer Tokens
    to authenticate requests to the platform. Credentials to create `Organization`
    and `Bank` tokens can be generated via the [Cybrid Sandbox](https://id.sandbox.cybrid.app).
    Access tokens can be generated for a `Customer` as well via the [Cybrid IdP](https://id.sandbox.cybrid.app)
    as well.\n\nAn `Organization` access token applies broadly to the whole Organization
    and all of its `Banks`, whereas, a `Bank` access token is specific to an individual
    Bank. `Customer` tokens, similarly, are scoped to a specific customer in a bank.\n\nBoth
    `Organization` and `Bank` tokens can be created using the OAuth Client Credential
    Grant flow. Each Organization and Bank has its own unique `Client ID` and `Secret`
    that allows for machine-to-machine authentication.\n\nA `Bank` can then generate
    `Customer` access tokens via API using our [Identities API](https://id.sandbox.cybrid.app/api/schema/swagger-ui).\n\n<font
    color=\"orange\">**⚠️ Never share your Client ID or Secret publicly or in your
    source code repository.**</font>\n\nYour `Client ID` and `Secret` can be exchanged
    for a time-limited `Bearer Token` by interacting with the Cybrid Identity Provider
    or through interacting with the **Authorize** button in this document.\n\nThe
    following curl command can be used to quickly generate a `Bearer Token` for use
    in testing the API or demo applications.\n\n```\n# Example request when using
    Bank credentials\ncurl -X POST https://id.sandbox.cybrid.app/oauth/token -d '{\n
    \   \"grant_type\": \"client_credentials\",\n    \"client_id\": \"<Your Client
    ID>\",\n    \"client_secret\": \"<Your Secret>\",\n    \"scope\": \"banks:read
    banks:write bank_applications:read bank_applications:write bank_applications:execute
    accounts:read accounts:write accounts:execute counterparties:read counterparties:pii:read
    counterparties:write counterparties:execute customers:read customers:pii:read
    customers:write customers:execute prices:read quotes:execute quotes:read trades:execute
    trades:read transactions:read transfers:execute transfers:read transfers:write
    external_bank_accounts:read external_bank_accounts:pii:read external_bank_accounts:write
    external_bank_accounts:execute external_wallets:read external_wallets:write external_wallets:execute
    workflows:read workflows:execute deposit_addresses:read deposit_addresses:write
    deposit_addresses:execute deposit_bank_accounts:read deposit_bank_accounts:write
    deposit_bank_accounts:execute invoices:read invoices:write invoices:execute identity_verifications:read
    identity_verifications:pii:read identity_verifications:write identity_verifications:execute
    persona_sessions:execute sardine_sessions:execute plans:execute plans:read executions:execute
    executions:read files:read files:pii:read files:execute\"\n  }' -H \"Content-Type:
    application/json\"\n\n# When using Organization credentials set `scope` to 'organizations:read
    organizations:write organization_applications:read organization_applications:write
    organization_applications:execute banks:read banks:write banks:execute bank_applications:read
    bank_applications:write bank_applications:execute users:read users:write users:execute
    counterparties:read counterparties:pii:read customers:read customers:pii:read
    accounts:read accounts:write prices:read quotes:execute quotes:read trades:execute
    trades:read transactions:read transfers:read transfers:write transfers:execute
    external_bank_accounts:read external_bank_accounts:pii:read external_bank_accounts:write
    external_wallets:read external_wallets:write workflows:read deposit_addresses:read
    deposit_addresses:write deposit_bank_accounts:read deposit_bank_accounts:write
    deposit_bank_accounts:execute invoices:read subscriptions:read subscriptions:write
    subscriptions:execute subscription_events:read subscription_events:execute identity_verifications:read
    identity_verifications:pii:read identity_verifications:execute persona_sessions:execute
    sardine_sessions:execute plans:execute plans:read executions:execute executions:read
    files:read files:pii:read files:execute'\n```\n<font color=\"orange\">**⚠️ Note:
    The above curl will create a bearer token with full scope access. Delete scopes
    if you'd like to restrict access.**</font>\n\n## Authentication Scopes\n\nThe
    Cybrid platform supports the use of scopes to control the level of access a token
    is limited to. Scopes do not grant access to resources; instead, they provide
    limits, in support of the least privilege principal.\n\nThe following scopes are
    available on the platform and can be requested when generating either an Organization,
    Bank or Customer token. Generally speaking, the _Read_ scope is required to read
    and list resources, the _Write_ scope is required to update a resource and the
    _Execute_ scope is required to create a resource.\n\n| Resource              |
    Read scope (Token Type)                                    | Write scope (Token
    Type)                      | Execute scope (Token Type)                       |\n|-----------------------|------------------------------------------------------------|-----------------------------------------------|--------------------------------------------------|\n|
    Account               | accounts:read (Organization, Bank, Customer)               |
    \                                              | accounts:execute (Bank, Customer)
    \               |\n| Bank                  | banks:read (Organization, Bank)                            |
    banks:write (Organization, Bank)              | banks:execute (Organization)                     |\n|
    Customer              | customers:read (Organization, Bank, Customer)              |
    customers:write (Bank, Customer)              | customers:execute (Bank)                         |\n|
    Counterparty          | counterparties:read (Organization, Bank, Customer)         |
    counterparties:write (Bank, Customer)         | counterparties:execute (Bank)
    \                   |\n| Deposit Address       | deposit_addresses:read (Organization,
    Bank, Customer)      | deposit_addresses:write (Bank, Customer)      | deposit_addresses:execute
    (Bank, Customer)       |\n| External Bank Account | external_bank_accounts:read
    (Organization, Bank, Customer) | external_bank_accounts:write (Bank, Customer)
    | external_bank_accounts:execute (Bank, Customer)  |\n| External Wallet       |
    external_wallet:read (Organization, Bank, Customer)        |                                               |
    external_wallet:execute (Bank, Customer)         |\n| Organization          |
    organizations:read (Organization)                          | organizations:write
    (Organization)            |                                                  |\n|
    User                  | users:read (Organization)                                  |
    \                                              | users:execute (Organization)
    \                    |\n| Price                 | prices:read (Bank, Customer)
    \                              |                                               |
    \                                                 |\n| Quote                 |
    quotes:read (Organization, Bank, Customer)                 |                                               |
    quotes:execute (Organization, Bank, Customer)    |\n| Trade                 |
    trades:read (Organization, Bank, Customer)                 |                                               |
    trades:execute (Organization, Bank, Customer)    |\n| Transfer              |
    transfers:read (Organization, Bank, Customer)              |                                               |
    transfers:execute (Organization, Bank, Customer) |\n| Workflow              |
    workflows:read (Organization, Bank, Customer)              |                                               |
    workflows:execute (Bank, Customer)               |\n| Invoice               |
    invoices:read (Organization, Bank, Customer)               | invoices:write (Bank,
    Customer)               | invoices:execute (Bank, Customer)                |\n\n##
    Available Endpoints\n\nThe available APIs for the [Identity](https://id.sandbox.cybrid.app/api/schema/swagger-ui),
    [Organization](https://organization.sandbox.cybrid.app/api/schema/swagger-ui)
    and [Bank](https://bank.sandbox.cybrid.app/api/schema/swagger-ui) API services
    are listed below:\n\n| API Service  | Model                | API Endpoint Path
    \             | Description                                                                                       |\n|--------------|----------------------|--------------------------------|---------------------------------------------------------------------------------------------------|\n|
    Identity     | Bank                 | /api/bank_applications         | Create
    and list banks                                                                             |\n|
    Identity     | CustomerToken        | /api/customer_tokens           | Create
    customer JWT access tokens                                                                 |\n|
    Identity     | Organization         | /api/organization_applications | Create
    and list organizations                                                                     |\n|
    Identity     | Organization         | /api/users                     | Create
    and list organization users                                                                |\n|
    Organization | Organization         | /api/organizations             | APIs to
    retrieve and update organization name                                                     |\n|
    Bank         | Account              | /api/accounts                  | Create
    and list accounts, which hold a specific asset for a customers                             |\n|
    Bank         | Asset                | /api/assets                    | Get a list
    of assets supported by the platform (ex: BTC, ETH)                                     |\n|
    Bank         | Bank                 | /api/banks                     | Create,
    update and list banks, the parent to customers, accounts, etc                             |\n|
    Bank         | Customer             | /api/customers                 | Create
    and list customers                                                                         |\n|
    Bank         | Counterparty         | /api/counterparties            | Create
    and list counterparties                                                                    |\n|
    Bank         | DepositAddress       | /api/deposit_addresses         | Create,
    get and list deposit addresses                                                            |\n|
    Bank         | ExternalBankAccount  | /api/external_bank_accounts    | Create,
    get and list external bank accounts, which connect customer bank accounts to the
    platform |\n| Bank         | ExternalWallet       | /api/external_wallets          |
    Create, get, list and delete external wallets, which connect customer wallets
    to the platform     |\n| Bank         | IdentityVerification | /api/identity_verifications
    \   | Create and list identity verifications, which are performed on customers
    for KYC                  |\n| Bank         | Invoice              | /api/invoices
    \                 | Create, get, cancel and list invoices                                                             |\n|
    Bank         | PaymentInstruction   | /api/payment_instructions      | Create,
    get and list payment instructions for invoices                                            |\n|
    Bank         | Price                | /api/prices                    | Get the
    current prices for assets on the platform                                                 |\n|
    Bank         | Quote                | /api/quotes                    | Create
    and list quotes, which are required to execute trades                                      |\n|
    Bank         | Symbol               | /api/symbols                   | Get a list
    of symbols supported for trade (ex: BTC-USD)                                           |\n|
    Bank         | Trade                | /api/trades                    | Create
    and list trades, which buy or sell cryptocurrency                                          |\n|
    Bank         | Transfer             | /api/transfers                 | Create,
    get and list transfers (e.g., funding, book)                                              |\n|
    Bank         | Workflow             | /api/workflows                 | Create,
    get and list workflows                                                                    |\n\n##
    Understanding Object Models & Endpoints\n\n**Organizations**\n\nAn `Organization`
    is meant to represent the organization partnering with Cybrid to use our platform.\n\nAn
    `Organization` typically does not directly interact with `customers`. Instead,
    an Organization has one or more `banks`, which encompass the financial service
    offerings of the platform.\n\n**Banks**\n\nA `Bank` is owned by an `Organization`
    and can be thought of as an environment or container for `customers` and product
    offerings. Banks are created in either `Sandbox` or `Production` mode, where `Sandbox`
    is the environment that you would test, prototype and build in prior to moving
    to `Production`.\n\nAn `Organization` can have multiple `banks`, in either `Sandbox`
    or `Production` environments. A `Sandbox Bank` will be backed by stubbed data
    and process flows. For instance, funding source transfer processes as well as
    trades will be simulated rather than performed, however asset prices are representative
    of real-world values. You have an unlimited amount of simulated fiat currency
    for testing purposes.\n\n**Customers**\n\n`Customers` represent your banking users
    on the platform. At present, we offer support for `Individuals` as Customers.\n\n`Customers`
    must be verified (i.e., KYC'd) in our system before they can play any part on
    the platform, which means they must have an associated and a passing `Identity
    Verification`. See the Identity Verifications section for more details on how
    a customer can be verified.\n\n`Customers` must also have an `Account` to be able
    to transact, in the desired asset class. See the Accounts APIs for more details
    on setting up accounts for the customer.\n"
  version: v0.129.1074
  contact:
    name: Cybrid Support
    email: support@cybrid.app
  license:
    name: Apache-2.0
    url: https://www.apache.org/licenses/LICENSE-2.0.html
paths:
  "/api/bank_applications":
    post:
      summary: Create bank application
      tags:
      - Bank Applications
      operationId: createBankApplication
      description: |-
        Creates a bank OAuth2 application.

        Required scope: **bank_applications:execute**
      security:
      - BearerAuth: []
        oauth2:
        - bank_applications:execute
      parameters: []
      responses:
        '201':
          description: bank application created
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/ApplicationWithSecret"
        '422':
          description: Unprocessable Content
          content:
            application/json:
              examples:
                invalid_parameter:
                  value:
                    status: 422
                    error_message: Validation failed
                    message_code: invalid_parameter
              schema:
                "$ref": "#/components/schemas/ErrorResponse"
      requestBody:
        content:
          application/json:
            schema:
              "$ref": "#/components/schemas/PostBankApplication"
        required: true
    get:
      summary: List bank applications
      tags:
      - Bank Applications
      operationId: listBankApplications
      description: |-
        Retrieve a list of bank OAuth2 applications.

        Required scope: **banks:read**
      security:
      - BearerAuth: []
        oauth2:
        - banks:read
      parameters:
      - name: page
        in: query
        required: false
        schema:
          "$ref": "#/components/schemas/ListRequestPage"
        description: The page index to retrieve.
      - name: per_page
        in: query
        required: false
        schema:
          "$ref": "#/components/schemas/ListRequestPerPage"
        description: The number of entities per page to return.
      - name: bank_guid
        in: query
        required: false
        description: Bank guid to list applications for.
        schema:
          type: string
      responses:
        '200':
          description: list bank applications
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/ApplicationList"
  "/api/bank_applications/{client_id}":
    delete:
      summary: Delete bank application
      tags:
      - Bank Applications
      operationId: deleteBankApplication
      description: 'Deletes an application.Required scope: **bank_applications:execute**'
      security:
      - BearerAuth: []
        oauth2:
        - bank_applications:execute
      parameters:
      - name: client_id
        in: path
        required: true
        description: Identifier for the application.
        schema:
          type: string
      responses:
        '204':
          description: Application discarded
        '403':
          description: Invalid scope
          content:
            application/json:
              examples:
                invalid_scope:
                  value:
                    status: 403
                    error_message: 'Invalid scopes. Required: bank_applications:execute'
                    message_code: invalid_scopes
              schema:
                "$ref": "#/components/schemas/ErrorResponse"
        '404':
          description: application not found
          content:
            application/json:
              examples:
                not_found:
                  value:
                    status: 404
                    error_message: application not found
                    message_code: not_found
              schema:
                "$ref": "#/components/schemas/ErrorResponse"
        '401':
          description: Unauthorized - Authentication failed
          content:
            application/json:
              examples:
                malformed_auth_header:
                  value:
                    status: 401
                    error_message: Authorization header is malformed.
                    message_code: authentication_malformed
              schema:
                "$ref": "#/components/schemas/ErrorResponse"
    get:
      summary: Get bank application
      tags:
      - Bank Applications
      operationId: getBankApplication
      description: |-
        Retrieves a bank application.

        Required scope: **bank_applications:read**
      security:
      - BearerAuth: []
        oauth2:
        - bank_applications:read
      parameters:
      - name: client_id
        in: path
        required: true
        description: Identifier for the application.
        schema:
          type: string
      responses:
        '200':
          description: bank application found
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/Application"
        '401':
          description: Unauthorized
          content:
            application/json:
              examples:
                unauthorized:
                  value:
                    status: 401
                    error_message: Unauthorized
                    message_code: unauthorized
              schema:
                "$ref": "#/components/schemas/ErrorResponse"
        '403':
          description: Forbidden
          content:
            application/json:
              examples:
                forbidden:
                  value:
                    status: 403
                    error_message: Forbidden
                    message_code: forbidden
              schema:
                "$ref": "#/components/schemas/ErrorResponse"
        '404':
          description: Not Found
          content:
            application/json:
              examples:
                not_found:
                  value:
                    status: 404
                    error_message: Record not found
                    message_code: not_found
              schema:
                "$ref": "#/components/schemas/ErrorResponse"
    patch:
      summary: Update bank application
      tags:
      - Bank Applications
      operationId: updateBankApplication
      description: |-
        Updates a bank application.

        Required scope: **bank_applications:write**
      security:
      - BearerAuth: []
        oauth2:
        - bank_applications:write
      parameters:
      - name: client_id
        in: path
        required: true
        description: Identifier for the application.
        schema:
          type: string
      responses:
        '200':
          description: bank application updated
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/Application"
        '401':
          description: Unauthorized
          content:
            application/json:
              examples:
                unauthorized:
                  value:
                    status: 401
                    error_message: Unauthorized
                    message_code: unauthorized
              schema:
                "$ref": "#/components/schemas/ErrorResponse"
        '403':
          description: Forbidden
          content:
            application/json:
              examples:
                forbidden:
                  value:
                    status: 403
                    error_message: Forbidden
                    message_code: forbidden
              schema:
                "$ref": "#/components/schemas/ErrorResponse"
        '404':
          description: Not Found
          content:
            application/json:
              examples:
                not_found:
                  value:
                    status: 404
                    error_message: Record not found
                    message_code: not_found
              schema:
                "$ref": "#/components/schemas/ErrorResponse"
        '422':
          description: Unprocessable Content
          content:
            application/json:
              examples:
                invalid_parameter:
                  value:
                    status: 422
                    error_message: Validation failed
                    message_code: invalid_parameter
              schema:
                "$ref": "#/components/schemas/ErrorResponse"
      requestBody:
        content:
          application/json:
            schema:
              "$ref": "#/components/schemas/PatchApplication"
        required: true
  "/api/customer_tokens":
    post:
      summary: Create customer access token
      tags:
      - Customer Tokens
      operationId: createCustomerToken
      description: |-
        Creates a customer JWT access token.

        Required scopes: **customers:write** and **customers:read**
      security:
      - BearerAuth: []
        oauth2:
        - customers:write
      parameters: []
      responses:
        '201':
          description: Customer token created
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/CustomerToken"
        '401':
          description: Unauthorized
          content:
            application/json:
              examples:
                invalid_subject:
                  value:
                    status: 401
                    error_message: 'Invalid Subject type. Required: bank'
                    message_code: invalid_subject
                invalid_signature:
                  value:
                    status: 401
                    error_message: Signature verification raised
                    message_code: authentication_failed
                invalid_audience:
                  value:
                    status: 401
                    error_message: Invalid audience
                    message_code: authentication_failed
                invalid_issuer:
                  value:
                    status: 401
                    error_message: Invalid issuer
                    message_code: authentication_failed
                expired_signature:
                  value:
                    status: 401
                    error_message: Signature has expired
                    message_code: authentication_failed
                unauthorized:
                  value:
                    status: 401
                    error_message: Unauthorized
                    message_code: unauthorized
              schema:
                "$ref": "#/components/schemas/ErrorResponse"
        '403':
          description: Forbidden
          content:
            application/json:
              examples:
                invalid_scope:
                  value:
                    status: 403
                    error_message: 'Invalid scopes. Required: customers:write'
                    message_code: invalid_scopes
                forbidden:
                  value:
                    status: 403
                    error_message: Forbidden
                    message_code: forbidden
              schema:
                "$ref": "#/components/schemas/ErrorResponse"
        '422':
          description: Unprocessable Content
          content:
            application/json:
              examples:
                no_customer:
                  value:
                    status: 422
                    error_message: Unknown customer
                    message_code: no_customer
              schema:
                "$ref": "#/components/schemas/ErrorResponse"
      requestBody:
        content:
          application/json:
            schema:
              "$ref": "#/components/schemas/PostCustomerToken"
        required: true
  "/api/organization_applications":
    post:
      summary: Create organization application
      tags:
      - Organization Applications
      operationId: createOrganizationApplication
      description: |-
        Create an organization OAuth2 application.

        Required scope: **organization_applications:execute**
      security:
      - BearerAuth: []
        oauth2:
        - organization_applications:execute
      parameters: []
      responses:
        '201':
          description: organization application created
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/ApplicationWithSecret"
        '422':
          description: Unprocessable Content
          content:
            application/json:
              examples:
                invalid_parameter:
                  value:
                    status: 422
                    error_message: Validation failed
                    message_code: invalid_parameter
              schema:
                "$ref": "#/components/schemas/ErrorResponse"
      requestBody:
        content:
          application/json:
            schema:
              "$ref": "#/components/schemas/PostOrganizationApplication"
        required: true
    get:
      summary: List organization applications
      tags:
      - Organization Applications
      operationId: listOrganizationApplications
      description: |-
        Retrieve a list of organization OAuth2 applications.

        Required scope: **organizations:read**
      security:
      - BearerAuth: []
        oauth2:
        - organizations:read
      parameters:
      - name: page
        in: query
        required: false
        schema:
          "$ref": "#/components/schemas/ListRequestPage"
        description: The page index to retrieve.
      - name: per_page
        in: query
        required: false
        schema:
          "$ref": "#/components/schemas/ListRequestPerPage"
        description: The number of entities per page to return.
      responses:
        '200':
          description: list organization applications
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/ApplicationList"
  "/api/organization_applications/{client_id}":
    delete:
      summary: Delete organization application
      tags:
      - Organization Applications
      operationId: deleteOrganizationApplication
      description: 'Deletes an application.Required scope: **organization_applications:execute**'
      security:
      - BearerAuth: []
        oauth2:
        - organization_applications:execute
      parameters:
      - name: client_id
        in: path
        required: true
        description: Identifier for the application.
        schema:
          type: string
      responses:
        '204':
          description: Application discarded
        '401':
          description: Unauthorized - Authentication failed
          content:
            application/json:
              examples:
                malformed_auth_header:
                  value:
                    status: 401
                    error_message: Authorization header is malformed.
                    message_code: authentication_malformed
              schema:
                "$ref": "#/components/schemas/ErrorResponse"
        '403':
          description: Invalid scope
          content:
            application/json:
              examples:
                invalid_scope:
                  value:
                    status: 403
                    error_message: 'Invalid scopes. Required: organization_applications:execute'
                    message_code: invalid_scopes
              schema:
                "$ref": "#/components/schemas/ErrorResponse"
        '404':
          description: application not found
          content:
            application/json:
              examples:
                not_found:
                  value:
                    status: 404
                    error_message: application not found
                    message_code: not_found
              schema:
                "$ref": "#/components/schemas/ErrorResponse"
    get:
      summary: Get organization application
      tags:
      - Organization Applications
      operationId: getOrganizationApplication
      description: |-
        Retrieves an organization application.

        Required scope: **organization_applications:read**
      security:
      - BearerAuth: []
        oauth2:
        - organization_applications:read
      parameters:
      - name: client_id
        in: path
        required: true
        description: Identifier for the application.
        schema:
          type: string
      responses:
        '200':
          description: organization application found
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/Application"
        '401':
          description: Unauthorized
          content:
            application/json:
              examples:
                malformed_auth_header:
                  value:
                    status: 401
                    error_message: Authorization header is malformed.
                    message_code: authentication_malformed
                unauthorized:
                  value:
                    status: 401
                    error_message: Unauthorized
                    message_code: unauthorized
              schema:
                "$ref": "#/components/schemas/ErrorResponse"
        '403':
          description: Forbidden
          content:
            application/json:
              examples:
                invalid_scope:
                  value:
                    status: 403
                    error_message: 'Invalid scopes. Required: organization_applications:read'
                    message_code: invalid_scopes
                forbidden:
                  value:
                    status: 403
                    error_message: Forbidden
                    message_code: forbidden
              schema:
                "$ref": "#/components/schemas/ErrorResponse"
        '404':
          description: Not Found
          content:
            application/json:
              examples:
                not_found:
                  value:
                    status: 404
                    error_message: Record not found
                    message_code: not_found
              schema:
                "$ref": "#/components/schemas/ErrorResponse"
    patch:
      summary: Update organization application
      tags:
      - Organization Applications
      operationId: updateOrganizationApplication
      description: |-
        Updates an organization application.

        Required scope: **organization_applications:write**
      security:
      - BearerAuth: []
        oauth2:
        - organization_applications:write
      parameters:
      - name: client_id
        in: path
        required: true
        description: Identifier for the application.
        schema:
          type: string
      responses:
        '200':
          description: organization application updated
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/Application"
        '401':
          description: Unauthorized
          content:
            application/json:
              examples:
                malformed_auth_header:
                  value:
                    status: 401
                    error_message: Authorization header is malformed.
                    message_code: authentication_malformed
                unauthorized:
                  value:
                    status: 401
                    error_message: Unauthorized
                    message_code: unauthorized
              schema:
                "$ref": "#/components/schemas/ErrorResponse"
        '403':
          description: Forbidden
          content:
            application/json:
              examples:
                invalid_scope:
                  value:
                    status: 403
                    error_message: 'Invalid scopes. Required: organization_applications:write'
                    message_code: invalid_scopes
                forbidden:
                  value:
                    status: 403
                    error_message: Forbidden
                    message_code: forbidden
              schema:
                "$ref": "#/components/schemas/ErrorResponse"
        '404':
          description: Not Found
          content:
            application/json:
              examples:
                not_found:
                  value:
                    status: 404
                    error_message: Record not found
                    message_code: not_found
              schema:
                "$ref": "#/components/schemas/ErrorResponse"
        '422':
          description: Unprocessable Content
          content:
            application/json:
              examples:
                invalid_parameter:
                  value:
                    status: 422
                    error_message: Validation failed
                    message_code: invalid_parameter
              schema:
                "$ref": "#/components/schemas/ErrorResponse"
      requestBody:
        content:
          application/json:
            schema:
              "$ref": "#/components/schemas/PatchApplication"
        required: true
  "/api/users":
    post:
      summary: Create user
      tags:
      - Users
      operationId: createUser
      description: "Creates a user.\n\n"
      security:
      - BearerAuth: []
        oauth2:
        - users:execute
      parameters: []
      responses:
        '201':
          description: User created with custom scopes
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/User"
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/ErrorResponse"
              examples:
                data_exists:
                  value:
                    status: 409
                    error_message: User is already active
                    message_code: data_exists
        '403':
          description: Forbidden
          content:
            application/json:
              examples:
                invalid_subject:
                  value:
                    status: 403
                    error_message: Cannot create self
                    message_code: invalid_subject
              schema:
                "$ref": "#/components/schemas/ErrorResponse"
      requestBody:
        content:
          application/json:
            schema:
              "$ref": "#/components/schemas/PostUser"
        required: true
    get:
      summary: List users
      tags:
      - Users
      operationId: listUser
      description: |-
        Retrieve a list users.

        Required scope: **users:read**
      security:
      - BearerAuth: []
        oauth2:
        - users:read
      parameters:
      - name: page
        in: query
        required: false
        schema:
          "$ref": "#/components/schemas/ListRequestPage"
        description: The page index to retrieve.
      - name: per_page
        in: query
        required: false
        schema:
          "$ref": "#/components/schemas/ListRequestPerPage"
        description: The number of entities per page to return.
      - name: guid
        in: query
        required: false
        description: Comma separated guids to list users for.
        schema:
          type: string
      responses:
        '200':
          description: list users
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/UserList"
  "/api/users/{user_guid}":
    delete:
      summary: Disable User
      tags:
      - Users
      operationId: disableUser
      description: |-
        Disables a user. User is not deleted.

        Required scope: **users:execute**
      security:
      - BearerAuth: []
        oauth2:
        - users:execute
      parameters:
      - name: user_guid
        in: path
        required: true
        description: Identifier for the user.
        schema:
          type: string
      responses:
        '204':
          description: User disabled
        '401':
          description: Unauthorized - Authentication failed
          content:
            application/json:
              examples:
                malformed_auth_header:
                  value:
                    status: 401
                    error_message: Authorization header is malformed.
                    message_code: authentication_malformed
              schema:
                "$ref": "#/components/schemas/ErrorResponse"
        '403':
          description: Forbidden
          content:
            application/json:
              examples:
                invalid_scope:
                  value:
                    status: 403
                    error_message: 'Invalid scopes. Required: users:execute'
                    message_code: invalid_scopes
                invalid_subject:
                  value:
                    status: 403
                    error_message: Cannot delete self
                    message_code: invalid_subject
              schema:
                "$ref": "#/components/schemas/ErrorResponse"
        '404':
          description: user not found
          content:
            application/json:
              examples:
                not_found:
                  value:
                    status: 404
                    error_message: user not found
                    message_code: not_found
              schema:
                "$ref": "#/components/schemas/ErrorResponse"
    get:
      summary: Get User
      tags:
      - Users
      operationId: getUser
      description: |-
        Retrieves a user.

        Required scope: **users:read**
      security:
      - BearerAuth: []
        oauth2:
        - users:read
      parameters:
      - name: user_guid
        in: path
        required: true
        description: Identifier for the user.
        schema:
          type: string
      responses:
        '200':
          description: user found
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/User"
        '401':
          description: Unauthorized - Authentication failed
          content:
            application/json:
              examples:
                malformed_auth_header:
                  value:
                    status: 401
                    error_message: Authorization header is malformed.
                    message_code: authentication_malformed
              schema:
                "$ref": "#/components/schemas/ErrorResponse"
        '403':
          description: Invalid scope
          content:
            application/json:
              examples:
                invalid_scope:
                  value:
                    status: 403
                    error_message: 'Invalid scopes. Required: users:read'
                    message_code: invalid_scopes
              schema:
                "$ref": "#/components/schemas/ErrorResponse"
        '404':
          description: user not found
          content:
            application/json:
              examples:
                not_found:
                  value:
                    status: 404
                    error_message: user not found
                    message_code: not_found
              schema:
                "$ref": "#/components/schemas/ErrorResponse"
    patch:
      summary: Update User
      tags:
      - Users
      operationId: updateUser
      description: |-
        Updates a user's allowed scopes.

        Required scope: **users:write**
      security:
      - BearerAuth: []
        oauth2:
        - users:write
      parameters:
      - name: user_guid
        in: path
        required: true
        description: Identifier for the user.
        schema:
          type: string
      responses:
        '200':
          description: user updated
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/User"
        '401':
          description: Unauthorized - Authentication failed
          content:
            application/json:
              examples:
                malformed_auth_header:
                  value:
                    status: 401
                    error_message: Authorization header is malformed.
                    message_code: authentication_malformed
              schema:
                "$ref": "#/components/schemas/ErrorResponse"
        '403':
          description: Forbidden
          content:
            application/json:
              examples:
                invalid_scope:
                  value:
                    status: 403
                    error_message: 'Invalid scopes. Required: users:write'
                    message_code: invalid_scopes
                invalid_subject:
                  value:
                    status: 403
                    error_message: Cannot update self
                    message_code: invalid_subject
              schema:
                "$ref": "#/components/schemas/ErrorResponse"
        '404':
          description: user not found
          content:
            application/json:
              examples:
                not_found:
                  value:
                    status: 404
                    error_message: user not found
                    message_code: not_found
              schema:
                "$ref": "#/components/schemas/ErrorResponse"
        '422':
          description: Unprocessable Content
          content:
            application/json:
              examples:
                invalid_scopes_1:
                  value:
                    status: 422
                    error_message: Missing required scopes
                    message_code: invalid_scopes
                invalid_scopes_2:
                  value:
                    status: 422
                    error_message: Invalid scopes provided
                    message_code: invalid_scopes
              schema:
                "$ref": "#/components/schemas/ErrorResponse"
      requestBody:
        content:
          application/json:
            schema:
              "$ref": "#/components/schemas/PatchUser"
        required: true
components:
  securitySchemes:
    oauth2:
      type: oauth2
      flows:
        clientCredentials:
          tokenUrl: https://id.sandbox.cybrid.app/oauth/token
          scopes:
            organizations:write: organizations write
            organizations:read: organizations read
            organization_applications:read: organization_applications read
            organization_applications:write: organization_applications write
            organization_applications:execute: organization_applications execute
            banks:write: banks write
            banks:read: banks read
            bank_applications:read: bank_applications read
            bank_applications:write: bank_applications write
            bank_applications:execute: bank_applications execute
            users:read: users read
            users:execute: users execute
            customers:write: customers write
            customers:read: customers read
            subscriptions:read: subscriptions read
            subscriptions:write: subscriptions write
            subscriptions:execute: subscriptions execute
            subscription_events:read: subscription_events read
            subscription_events:execute: subscription_events execute
    BearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT
  schemas:
    Application:
      type: object
      properties:
        name:
          type: string
          description: Name provided for the OAuth2 application.
        client_id:
          type: string
          description: The OAuth2 application's client ID.
        scopes:
          type: array
          items:
            type: string
            enum:
            - accounts:execute
            - accounts:read
            - accounts:write
            - bank_applications:execute
            - bank_applications:read
            - bank_applications:write
            - banks:execute
            - banks:read
            - banks:write
            - counterparties:execute
            - counterparties:pii:read
            - counterparties:read
            - counterparties:write
            - customers:execute
            - customers:pii:read
            - customers:read
            - customers:write
            - deposit_addresses:execute
            - deposit_addresses:read
            - deposit_addresses:write
            - deposit_bank_accounts:execute
            - deposit_bank_accounts:read
            - deposit_bank_accounts:write
            - executions:execute
            - executions:read
            - external_bank_accounts:execute
            - external_bank_accounts:pii:read
            - external_bank_accounts:read
            - external_bank_accounts:write
            - external_wallets:execute
            - external_wallets:read
            - external_wallets:write
            - files:execute
            - files:pii:read
            - files:read
            - identity_verifications:execute
            - identity_verifications:pii:read
            - identity_verifications:read
            - identity_verifications:write
            - invoices:execute
            - invoices:read
            - invoices:write
            - organization_applications:execute
            - organization_applications:read
            - organization_applications:write
            - organizations:read
            - organizations:write
            - persona_sessions:execute
            - plans:execute
            - plans:read
            - prices:read
            - quotes:execute
            - quotes:read
            - sardine_sessions:execute
            - subscription_events:execute
            - subscription_events:read
            - subscriptions:execute
            - subscriptions:read
            - subscriptions:write
            - trades:execute
            - trades:read
            - transactions:read
            - transfers:execute
            - transfers:read
            - transfers:write
            - users:execute
            - users:read
            - users:write
            - workflows:execute
            - workflows:read
          description: List of the scopes granted to the OAuth2 application.
        ip_allowlist:
          type: array
          items:
            type: string
          description: List of IPv4 addresses or CIDR ranges that are allowlisted
            for API access.
        created_at:
          type: string
          format: date-time
          description: ISO8601 datetime the record was created at.
        updated_at:
          type: string
          format: date-time
          description: ISO8601 datetime the record was last updated at.
      required:
      - name
      - client_id
      - scopes
      - ip_allowlist
      - created_at
    ApplicationWithSecret:
      allOf:
      - "$ref": "#/components/schemas/Application"
      - type: object
        properties:
          secret:
            description: The OAuth2 application's secret.
            type: string
        required:
        - secret
    ApplicationList:
      type: object
      properties:
        total:
          description: The total number of records available.
          type: integer
          minimum: 0
        page:
          description: The page index to retrieve.
          type: integer
          minimum: 0
        per_page:
          description: The number of entities per page to return.
          type: integer
          minimum: 1
        objects:
          type: array
          items:
            "$ref": "#/components/schemas/Application"
      required:
      - total
      - page
      - per_page
      - objects
    ListRequestPage:
      description: The page index to retrieve.
      type: integer
      minimum: 0
    ListRequestPerPage:
      description: The number of entities per page to return.
      type: integer
      minimum: 1
      maximum: 100
    CustomerToken:
      type: object
      properties:
        access_token:
          type: string
          description: The JWT access token for the customer.
    User:
      type: object
      properties:
        guid:
          type: string
          description: Auto-generated unique identifier for the user.
          minLength: 32
          maxLength: 32
        username:
          type: string
          description: The user's username.
          minLength: 1
          maxLength: 128
        email:
          type: string
          description: The user's email address.
          minLength: 1
          maxLength: 254
        allowed_scopes:
          type: array
          items:
            type: string
            enum:
            - organizations:read
            - organizations:write
            - organization_applications:read
            - organization_applications:write
            - organization_applications:execute
            - banks:read
            - banks:write
            - banks:execute
            - bank_applications:read
            - bank_applications:write
            - bank_applications:execute
            - users:read
            - users:write
            - users:execute
            - accounts:read
            - accounts:write
            - accounts:execute
            - counterparties:read
            - counterparties:pii:read
            - counterparties:write
            - counterparties:execute
            - customers:read
            - customers:pii:read
            - customers:write
            - customers:execute
            - prices:read
            - quotes:execute
            - quotes:read
            - trades:execute
            - trades:read
            - transactions:read
            - transfers:execute
            - transfers:read
            - transfers:write
            - external_bank_accounts:read
            - external_bank_accounts:pii:read
            - external_bank_accounts:write
            - external_bank_accounts:execute
            - external_wallets:read
            - external_wallets:write
            - external_wallets:execute
            - workflows:read
            - workflows:execute
            - deposit_addresses:read
            - deposit_addresses:write
            - deposit_addresses:execute
            - deposit_bank_accounts:read
            - deposit_bank_accounts:write
            - deposit_bank_accounts:execute
            - invoices:read
            - invoices:write
            - invoices:execute
            - subscriptions:read
            - subscriptions:write
            - subscriptions:execute
            - subscription_events:read
            - subscription_events:execute
            - identity_verifications:read
            - identity_verifications:pii:read
            - identity_verifications:write
            - identity_verifications:execute
            - persona_sessions:execute
            - sardine_sessions:execute
            - plans:execute
            - plans:read
            - executions:execute
            - executions:read
            - files:read
            - files:pii:read
            - files:execute
            - openid
            - profile
            - email
          description: The list of scopes that the user is allowed to request.
          nullable: true
          uniqueItems: true
        invite_url:
          type: string
          description: The invitation URL for the user. Only present for newly created
            users.
          nullable: true
          format: uri
        created_at:
          type: string
          format: date-time
          description: ISO8601 datetime the record was created at.
        updated_at:
          type: string
          format: date-time
          description: ISO8601 datetime the record was last updated at.
    UserList:
      type: object
      properties:
        total:
          description: The total number of records available.
          type: integer
          minimum: 0
        page:
          description: The page index to retrieve.
          type: integer
          minimum: 0
        per_page:
          description: The number of entities per page to return.
          type: integer
          minimum: 1
        objects:
          type: array
          items:
            "$ref": "#/components/schemas/User"
      required:
      - total
      - page
      - per_page
      - objects
    PostBankApplication:
      type: object
      description: Request body for bank application creation.
      properties:
        name:
          type: string
          description: Name for the bank application.
          minLength: 1
          maxLength: 128
        bank_guid:
          type: string
          description: Bank guid the application is associated to.
          minLength: 32
          maxLength: 32
        ip_allowlist:
          type: array
          description: List of public IPv4 addresses or CIDR ranges to allowlist for
            API access.
          items:
            type: string
      required:
      - name
    PostOrganizationApplication:
      type: object
      description: Request body for organization application creation.
      properties:
        name:
          type: string
          description: Name for the organization application.
          minLength: 1
          maxLength: 128
        ip_allowlist:
          type: array
          description: List of public IPv4 addresses or CIDR ranges to allowlist for
            API access.
          items:
            type: string
      required:
      - name
    PostCustomerToken:
      type: object
      description: Request body for customer token creation.
      properties:
        customer_guid:
          type: string
          description: Customer guid the access token is being generated for.
          minLength: 32
          maxLength: 32
        scopes:
          type: array
          description: List of the scopes requested for the access token.
          items:
            type: string
            enum:
            - counterparties:read
            - counterparties:pii:read
            - counterparties:write
            - counterparties:execute
            - customers:read
            - customers:pii:read
            - customers:write
            - accounts:read
            - accounts:write
            - accounts:execute
            - prices:read
            - quotes:read
            - quotes:execute
            - trades:read
            - trades:execute
            - transactions:read
            - transfers:read
            - transfers:write
            - transfers:execute
            - external_bank_accounts:read
            - external_bank_accounts:pii:read
            - external_bank_accounts:write
            - external_bank_accounts:execute
            - external_wallets:read
            - external_wallets:write
            - external_wallets:execute
            - workflows:read
            - workflows:execute
            - deposit_addresses:read
            - deposit_addresses:write
            - deposit_addresses:execute
            - deposit_bank_accounts:read
            - deposit_bank_accounts:write
            - deposit_bank_accounts:execute
            - invoices:read
            - invoices:write
            - invoices:execute
            - identity_verifications:read
            - identity_verifications:pii:read
            - identity_verifications:write
            - identity_verifications:execute
            - persona_sessions:execute
            - sardine_sessions:execute
            - plans:execute
            - plans:read
            - executions:execute
            - executions:read
          minItems: 1
          uniqueItems: true
      required:
      - customer_guid
      - scopes
    PostUser:
      type: object
      description: Request body for user creation.
      properties:
        email:
          type: string
          description: The email address associated with the user.
          minLength: 1
          maxLength: 254
        allowed_scopes:
          type: array
          description: List of scopes that the user is allowed to request.
          items:
            type: string
            enum:
            - organizations:read
            - organizations:write
            - organization_applications:read
            - organization_applications:write
            - organization_applications:execute
            - banks:read
            - banks:write
            - banks:execute
            - bank_applications:read
            - bank_applications:write
            - bank_applications:execute
            - users:read
            - users:write
            - users:execute
            - accounts:read
            - accounts:write
            - accounts:execute
            - counterparties:read
            - counterparties:pii:read
            - counterparties:write
            - counterparties:execute
            - customers:read
            - customers:pii:read
            - customers:write
            - customers:execute
            - prices:read
            - quotes:execute
            - quotes:read
            - trades:execute
            - trades:read
            - transactions:read
            - transfers:execute
            - transfers:read
            - transfers:write
            - external_bank_accounts:read
            - external_bank_accounts:pii:read
            - external_bank_accounts:write
            - external_bank_accounts:execute
            - external_wallets:read
            - external_wallets:write
            - external_wallets:execute
            - workflows:read
            - workflows:execute
            - deposit_addresses:read
            - deposit_addresses:write
            - deposit_addresses:execute
            - deposit_bank_accounts:read
            - deposit_bank_accounts:write
            - deposit_bank_accounts:execute
            - invoices:read
            - invoices:write
            - invoices:execute
            - subscriptions:read
            - subscriptions:write
            - subscriptions:execute
            - subscription_events:read
            - subscription_events:execute
            - identity_verifications:read
            - identity_verifications:pii:read
            - identity_verifications:write
            - identity_verifications:execute
            - persona_sessions:execute
            - sardine_sessions:execute
            - plans:execute
            - plans:read
            - executions:execute
            - executions:read
            - files:read
            - files:pii:read
            - files:execute
            - openid
            - profile
            - email
          nullable: true
          minItems: 1
          uniqueItems: true
      required:
      - email
    PatchApplication:
      type: object
      description: Request body for application update.
      properties:
        name:
          type: string
          description: Name for the application.
          minLength: 1
          maxLength: 128
        ip_allowlist:
          type: array
          description: List of public IPv4 addresses or CIDR ranges to allowlist for
            API access. Provide [] to clear the allowlist; omit to leave unchanged.
          items:
            type: string
    PatchUser:
      type: object
      description: Request body for user update.
      properties:
        allowed_scopes:
          type: array
          description: List of scopes that the user is allowed to request.
          items:
            type: string
            enum:
            - organizations:read
            - organizations:write
            - organization_applications:read
            - organization_applications:write
            - organization_applications:execute
            - banks:read
            - banks:write
            - banks:execute
            - bank_applications:read
            - bank_applications:write
            - bank_applications:execute
            - users:read
            - users:write
            - users:execute
            - accounts:read
            - accounts:write
            - accounts:execute
            - counterparties:read
            - counterparties:pii:read
            - counterparties:write
            - counterparties:execute
            - customers:read
            - customers:pii:read
            - customers:write
            - customers:execute
            - prices:read
            - quotes:execute
            - quotes:read
            - trades:execute
            - trades:read
            - transactions:read
            - transfers:execute
            - transfers:read
            - transfers:write
            - external_bank_accounts:read
            - external_bank_accounts:pii:read
            - external_bank_accounts:write
            - external_bank_accounts:execute
            - external_wallets:read
            - external_wallets:write
            - external_wallets:execute
            - workflows:read
            - workflows:execute
            - deposit_addresses:read
            - deposit_addresses:write
            - deposit_addresses:execute
            - deposit_bank_accounts:read
            - deposit_bank_accounts:write
            - deposit_bank_accounts:execute
            - invoices:read
            - invoices:write
            - invoices:execute
            - subscriptions:read
            - subscriptions:write
            - subscriptions:execute
            - subscription_events:read
            - subscription_events:execute
            - identity_verifications:read
            - identity_verifications:pii:read
            - identity_verifications:write
            - identity_verifications:execute
            - persona_sessions:execute
            - sardine_sessions:execute
            - plans:execute
            - plans:read
            - executions:execute
            - executions:read
            - files:read
            - files:pii:read
            - files:execute
            - openid
            - profile
            - email
          minItems: 1
          uniqueItems: true
      required:
      - allowed_scopes
    ErrorResponse:
      type: object
      properties:
        status:
          description: Status code for Http Request
          type: integer
        error_message:
          description: Error message
          type: string
        message_code:
          description: Message code for Error
          type: string
      required:
      - status
      - error_message
      - message_code
servers:
- url: https://id.sandbox.cybrid.app
  description: Sandbox environment is for public use and uses simulated money movement
- url: https://id.production.cybrid.app
  description: Production environment is for public use and uses real money movement
