openapi: 3.0.0
info:
  title: Fireblocks API
  description: |
    Fireblocks provides a suite of applications to manage digital asset operations and a complete development platform to build your business on the blockchain.

    - Visit our website for more information: [Fireblocks Website](https://fireblocks.com)
    - Visit our developer docs: [Fireblocks DevPortal](https://developers.fireblocks.com)
  version: 1.6.2
  contact:
    email: developers@fireblocks.com
servers:
  - url: https://api.fireblocks.io/v1
    description: Fireblocks Production Environment Base URL
  - url: https://sandbox-api.fireblocks.io/v1
    description: Fireblocks Sandbox Environment Base URL
paths:
  /admin_quorum:
    put:
      x-internal: true
      operationId: setAdminQuorumThreshold
      summary: Update admin quorum threshold
      description: Update admin quorum threshold
      tags:
        - Admin Quorum
      x-rate-limit-category: write
      x-readme:
        code-samples:
          - language: python
            code: result = fireblocks.set_admin_quorum_threshold(adminQuorumThreshold)
            name: Fireblocks SDK Python example (Legacy)
          - language: javascript
            code: const result = await fireblocks.setAdminQuorumThreshold(adminQuorumThreshold)
            name: Fireblocks SDK Javascript example
      parameters:
        - $ref: '#/components/parameters/X-Idempotency-Key'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SetAdminQuorumThresholdRequest'
      responses:
        '202':
          description: OK
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SetAdminQuorumThresholdResponse'
        default:
          $ref: '#/components/responses/Error'
  /management/api_users:
    get:
      operationId: getApiUsers
      summary: Get API Keys
      description: |-
        List all API keys in your workspace.
        - Please note that this endpoint is available only for API keys with Admin/Non Signing Admin permissions.
        Endpoint Permission: Admin, Non-Signing Admin.
      tags:
        - Api User
      x-rate-limit-category: query
      x-readme:
        code-samples:
          - language: javascript
            code: const apiUsers = await fireblocks.getApiUsers();
            name: Fireblocks SDK Javascript example
          - language: python
            code: apiUsers = fireblocks.get_api_users()
            name: Fireblocks SDK Python example (Legacy)
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<GetAPIUsersResponse>> = fireblocks.apiUser.getApiUsers();'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<GetAPIUsersResponse>> response = fireblocks.apiUser().getApiUsers();
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.api_user.get_api_users();
            name: Fireblocks SDK Python example
      responses:
        '200':
          description: got api users
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetAPIUsersResponse'
        '401':
          description: Unauthorized. Missing / invalid JWT token in Authorization header.
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '403':
          description: Lacking permissions.
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        5XX:
          description: Internal error.
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        default:
          $ref: '#/components/responses/Error'
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<GetAPIUsersResponse>> = fireblocks.apiUser.getApiUsers();'
        - lang: Java
          source: CompletableFuture<ApiResponse<GetAPIUsersResponse>> response = fireblocks.apiUser().getApiUsers();
        - lang: Python
          source: response = fireblocks.api_user.get_api_users();
    post:
      operationId: createApiUser
      summary: Create API Key
      description: |-
        Create a new API key in your workspace.
        Learn more about Fireblocks API Keys management in the following [guide](https://developers.fireblocks.com/docs/manage-api-keys).
        Endpoint Permission: Admin, Non-Signing Admin.
      tags:
        - Api User
      x-rate-limit-category: write
      x-readme:
        code-samples:
          - language: javascript
            code: const res = await fireblocks.createApiUser(name, role, csrForNewUser, coSignerType, isFirstUser);
            name: Fireblocks SDK Javascript example
          - language: python
            code: res = fireblocks.create_api_user(name, role, csr_pem, co_signer_setup, co_signer_setup_is_first_user)
            name: Fireblocks SDK Python example (Legacy)
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<void>> = fireblocks.apiUser.createApiUser(apiUserApiCreateApiUserRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<Void>> response = fireblocks.apiUser().createApiUser(createAPIUser, idempotencyKey);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.api_user.create_api_user(create_a_p_i_user, idempotency_key);
            name: Fireblocks SDK Python example
      parameters:
        - $ref: '#/components/parameters/X-Idempotency-Key'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateAPIUser'
      responses:
        '200':
          description: User creation approval request has been sent
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
        '400':
          description: bad request
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
        '401':
          description: Unauthorized. Missing / invalid JWT token in Authorization header.
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '403':
          description: Lacking permissions.
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        5XX:
          description: Internal error.
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        default:
          $ref: '#/components/responses/Error'
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<void>> = fireblocks.apiUser.createApiUser(apiUserApiCreateApiUserRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<Void>> response = fireblocks.apiUser().createApiUser(createAPIUser, idempotencyKey);
        - lang: Python
          source: response = fireblocks.api_user.create_api_user(create_a_p_i_user, idempotency_key);
  /management/api_users/{userId}/pairing_token:
    post:
      operationId: issueApiUserPairingToken
      summary: Issue API user pairing token
      description: |-
        Issues a device pairing token for the given user and returns the user's info along with the token.
        - The API user must be in PENDING_ACTIVATION status. If the user is already set up (enabled), the request is rejected with a 409 Conflict.
        - Please note that this endpoint is available only for API keys with Owner/Admin/Non Signing Admin permissions.
        Endpoint Permission: Owner, Admin, Non-Signing Admin.
      tags:
        - Api User
      x-rate-limit-category: write
      parameters:
        - in: path
          name: userId
          required: true
          description: The ID of the api user
          schema:
            type: string
        - $ref: '#/components/parameters/X-Idempotency-Key'
      responses:
        '201':
          description: Pairing token issued
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IssueApiUserPairingTokenResponse'
        '401':
          description: Unauthorized. Missing / invalid JWT token in Authorization header.
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorSchema'
        '403':
          description: Lacking permissions.
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorSchema'
        '404':
          description: API user not found for the given userId.
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorSchema'
        '409':
          description: Conflict. The API user is not in PENDING_ACTIVATION status (e.g. already set up / enabled).
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorSchema'
        5XX:
          description: Internal error.
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorSchema'
        default:
          $ref: '#/components/responses/Error'
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<IssueApiUserPairingTokenResponse>> = fireblocks.apiUser.issueApiUserPairingToken(apiUserApiIssueApiUserPairingTokenRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<IssueApiUserPairingTokenResponse>> response = fireblocks.apiUser().issueApiUserPairingToken(userId, idempotencyKey);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.api_user.issue_api_user_pairing_token(user_id, idempotency_key);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<IssueApiUserPairingTokenResponse>> = fireblocks.apiUser.issueApiUserPairingToken(apiUserApiIssueApiUserPairingTokenRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<IssueApiUserPairingTokenResponse>> response = fireblocks.apiUser().issueApiUserPairingToken(userId, idempotencyKey);
        - lang: Python
          source: response = fireblocks.api_user.issue_api_user_pairing_token(user_id, idempotency_key);
  /management/audit_logs:
    get:
      summary: Get audit logs
      description: |-
        Retrieve audit log events for the workspace with optional filtering, date range, sorting, and cursor-based pagination.

        Filters within the same field are combined as OR (e.g. category=Administration&category=Security returns events in either category). Filters across different fields are combined as AND.

        **Deprecated parameters:** `timePeriod` and `cursor` remain functional for backward compatibility but new integrations should use `startTime`/`endTime` and `pageCursor` instead.

        Endpoint Permission: Admin, Non-Signing Admin, Auditor, Security Admin, Security Auditor.
      tags:
        - Audit Logs
      x-rate-limit-category: query
      parameters:
        - in: query
          name: startTime
          required: false
          description: Start of date range as epoch time in milliseconds. Takes precedence over timePeriod when provided. Must be no more than 1 year before the current time.
          schema:
            type: integer
        - in: query
          name: endTime
          required: false
          description: End of date range as epoch time in milliseconds. Must be after startTime. Defaults to now when omitted.
          schema:
            type: integer
        - in: query
          name: timePeriod
          required: false
          deprecated: true
          description: Deprecated. Use startTime/endTime instead. Ignored when startTime is provided. Defaults to DAY when neither timePeriod nor startTime is supplied.
          schema:
            type: string
            enum:
              - DAY
              - WEEK
        - in: query
          name: category
          required: false
          description: Filter by event category. Repeat the parameter for multiple values (OR logic within field).
          schema:
            type: array
            items:
              type: string
        - in: query
          name: subject
          required: false
          description: Filter by event subject. Repeat the parameter for multiple values.
          schema:
            type: array
            items:
              type: string
        - in: query
          name: event
          required: false
          description: Filter by event type. Repeat the parameter for multiple values.
          schema:
            type: array
            items:
              type: string
        - in: query
          name: user
          required: false
          description: Filter by user name. Repeat the parameter for multiple values.
          schema:
            type: array
            items:
              type: string
        - in: query
          name: userId
          required: false
          description: Filter by user ID. Repeat the parameter for multiple values.
          schema:
            type: array
            items:
              type: string
        - in: query
          name: order
          required: false
          description: Sort direction. Defaults to DESC.
          schema:
            type: string
            enum:
              - ASC
              - DESC
            default: DESC
        - in: query
          name: pageSize
          required: false
          description: Number of results per page. Maximum 500. Defaults to 200.
          schema:
            type: integer
            minimum: 1
            maximum: 500
            default: 200
        - in: query
          name: pageCursor
          required: false
          description: Cursor returned from the previous response to fetch the next page.
          schema:
            type: string
        - in: query
          name: cursor
          required: false
          deprecated: true
          description: Deprecated. Use pageCursor instead.
          schema:
            type: string
      responses:
        '200':
          description: Audit log events matching the requested filters and date range
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetAuditLogsResponse'
        '400':
          $ref: '#/components/responses/Error'
        '403':
          $ref: '#/components/responses/Error'
        default:
          $ref: '#/components/responses/Error'
      operationId: getAuditLogs
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<GetAuditLogsResponse>> = fireblocks.auditLogs.getAuditLogs(auditLogsApiGetAuditLogsRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<GetAuditLogsResponse>> response = fireblocks.auditLogs().getAuditLogs(startTime, endTime, timePeriod, category, subject, event, user, userId, order, pageSize, pageCursor, cursor);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.audit_logs.get_audit_logs(start_time, end_time, time_period, category, subject, event, user, user_id, order, page_size, page_cursor, cursor);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<GetAuditLogsResponse>> = fireblocks.auditLogs.getAuditLogs(auditLogsApiGetAuditLogsRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<GetAuditLogsResponse>> response = fireblocks.auditLogs().getAuditLogs(startTime, endTime, timePeriod, category, subject, event, user, userId, order, pageSize, pageCursor, cursor);
        - lang: Python
          source: response = fireblocks.audit_logs.get_audit_logs(start_time, end_time, time_period, category, subject, event, user, user_id, order, page_size, page_cursor, cursor);
  /assets:
    get:
      operationId: listAssets
      summary: List assets
      description: |
        Retrieves a paginated list of all assets supported by Fireblocks in your workspace

        **Note:** We will continue to support and display the legacy ID (API ID). Since not all Fireblocks services fully support the new Assets UUID, please use only the legacy ID until further notice.
      tags:
        - Blockchains & assets
      x-rate-limit-category: external_query
      x-readme:
        code-samples:
          - language: python
            code: assets = fireblocks.listAssets(filters)
            name: Fireblocks SDK Python example (Legacy)
          - language: javascript
            code: const assets = await fireblocks.listAssets(filters);
            name: Fireblocks SDK Javascript example
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<ListAssetsResponse>> = fireblocks.blockchainsAssets.listAssets(blockchainsAssetsApiListAssetsRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<ListAssetsResponse>> response = fireblocks.blockchainsAssets().listAssets(blockchainId, assetClass, symbol, scope, deprecated, ids, pageCursor, pageSize, idempotencyKey);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.blockchains_&_assets.list_assets(blockchain_id, asset_class, symbol, scope, deprecated, ids, page_cursor, page_size, idempotency_key);
            name: Fireblocks SDK Python example
      parameters:
        - name: blockchainId
          required: false
          in: query
          description: Blockchain id of the assets
          schema:
            type: string
          example: 0f672204-a28b-464a-b318-a387abd3d3c7
        - name: assetClass
          required: false
          in: query
          description: Assets class
          schema:
            $ref: '#/components/schemas/AssetClass'
        - name: symbol
          required: false
          in: query
          description: Assets onchain symbol
          schema:
            minLength: 1
            type: string
          example: ETH
        - name: scope
          required: false
          in: query
          description: Scope of the assets
          schema:
            $ref: '#/components/schemas/AssetScope'
        - name: deprecated
          required: false
          in: query
          description: Are assets deprecated
          schema:
            type: boolean
          example: false
        - name: ids
          required: false
          in: query
          description: A list of asset IDs (max 100)
          schema:
            type: array
            items:
              type: string
          example:
            - 3ed32525-70df-45c8-bae3-e69ab56dc095
            - 3a3b5f06-61e7-44f0-9962-4425b55795ff
            - SHANI5_B75VRLGX_MUPA
        - name: pageCursor
          required: false
          in: query
          description: Next page cursor to fetch
          schema:
            type: string
          example: MjAyMy0xMi0xMyAyMDozNjowOC4zMDI=:MTEwMA==
        - name: pageSize
          required: false
          in: query
          description: Items per page
          schema:
            minimum: 100
            maximum: 1000
            default: 500
            type: number
          example: 500
        - $ref: '#/components/parameters/X-Idempotency-Key'
      responses:
        '200':
          description: List of assets
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListAssetsResponse'
        '500':
          description: Error occurred while listing assets
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AssetInternalServerErrorResponse'
        default:
          $ref: '#/components/responses/Error'
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<ListAssetsResponse>> = fireblocks.blockchainsAssets.listAssets(blockchainsAssetsApiListAssetsRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<ListAssetsResponse>> response = fireblocks.blockchainsAssets().listAssets(blockchainId, assetClass, symbol, scope, deprecated, ids, pageCursor, pageSize, idempotencyKey);
        - lang: Python
          source: response = fireblocks.blockchains_&_assets.list_assets(blockchain_id, asset_class, symbol, scope, deprecated, ids, page_cursor, page_size, idempotency_key);
    post:
      operationId: registerNewAsset
      summary: Register an asset
      description: |
        Register a new asset to a workspace and return the newly created asset's details. Currently supported chains are:
        - EVM based chains
        - Stellar
        - Algorand
        - TRON
        - NEAR
        - Solana
        - Sui
        - TON
      tags:
        - Blockchains & assets
      x-rate-limit-category: high_compute
      x-readme:
        code-samples:
          - language: python
            code: supportedAssets = fireblocks.register_new_asset(blockchainId, address, symbol)
            name: Fireblocks SDK Python example (Legacy)
          - language: javascript
            code: const supportedAssets = await fireblocks.registerNewAsset(blockchainId, address, symbol);
            name: Fireblocks SDK Javascript example
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<AssetResponse>> = fireblocks.blockchainsAssets.registerNewAsset(blockchainsAssetsApiRegisterNewAssetRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<AssetResponse>> response = fireblocks.blockchainsAssets().registerNewAsset(registerNewAssetRequest, idempotencyKey);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.blockchains_&_assets.register_new_asset(register_new_asset_request, idempotency_key);
            name: Fireblocks SDK Python example
      parameters:
        - $ref: '#/components/parameters/X-Idempotency-Key'
      responses:
        '200':
          description: A new asset has been created successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AssetResponse'
        '400':
          description: |
            - Listing an asset on the requested blockchain is not supported. Error code: 1000

            - The asset address is invalid. Error code: 1003

            - Self serve listing an asset on the requested blockchain is currently not supported, please contact support. Error code: 1004

            - Blockchain is deprecated. Error code: 1006

            - The asset's standard is not supported. Error code: 1007

            - Unable to get expected metadata: decimals | name | symbol. Error code: 1010
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AssetBadRequestErrorResponse'
        '403':
          description: |
            - The asset creation quota reached. Error code: 1005

            - Tenant is not allowed to create testnet assets. Error code: 1008

            - Tenant is not allowed to create mainnet assets. Error code: 1009
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AssetForbiddenErrorResponse'
        '404':
          description: |
            - Invalid address, could not get asset information. Error code 1003
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TokenInfoNotFoundErrorResponse'
        '409':
          description: |
            - The asset is already supported globally. Error code: 1001

            - The asset has already been added to this workspace. Error code: 1002
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AssetConflictErrorResponse'
        '500':
          description: Failed to create asset
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AssetInternalServerErrorResponse'
        default:
          $ref: '#/components/responses/Error'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RegisterNewAssetRequest'
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<AssetResponse>> = fireblocks.blockchainsAssets.registerNewAsset(blockchainsAssetsApiRegisterNewAssetRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<AssetResponse>> response = fireblocks.blockchainsAssets().registerNewAsset(registerNewAssetRequest, idempotencyKey);
        - lang: Python
          source: response = fireblocks.blockchains_&_assets.register_new_asset(register_new_asset_request, idempotency_key);
  /assets/{id}:
    get:
      operationId: getAsset
      summary: Get an asset
      description: |
        Returns an asset by ID or legacyID.

        **Note**:

          - We will continue displaying and supporting the legacy ID (API ID). Since not all Fireblocks services fully support the new Assets UUID, please use only the legacy ID until further notice.
      tags:
        - Blockchains & assets
      x-rate-limit-category: external_query
      x-readme:
        code-samples:
          - language: python
            code: asset = fireblocks.getAssetById(assetId)
            name: Fireblocks SDK Python example (Legacy)
          - language: javascript
            code: const asset = await fireblocks.getAssetById(assetId);
            name: Fireblocks SDK Javascript example
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<Asset>> = fireblocks.blockchainsAssets.getAsset(blockchainsAssetsApiGetAssetRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<Asset>> response = fireblocks.blockchainsAssets().getAsset(id, idempotencyKey);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.blockchains_&_assets.get_asset(id, idempotency_key);
            name: Fireblocks SDK Python example
      parameters:
        - name: id
          in: path
          required: true
          description: The ID or legacyId of the asset
          schema:
            type: string
            x-fb-entity: asset
          example: ETH
        - $ref: '#/components/parameters/X-Idempotency-Key'
      responses:
        '200':
          description: Asset with requested identification
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Asset'
        '404':
          description: |
            - Asset with specified ID or legacy ID is not found. Error code 1504
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AssetNotFoundErrorResponse'
        '500':
          description: Error occurred while getting an asset
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AssetInternalServerErrorResponse'
        default:
          $ref: '#/components/responses/Error'
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<Asset>> = fireblocks.blockchainsAssets.getAsset(blockchainsAssetsApiGetAssetRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<Asset>> response = fireblocks.blockchainsAssets().getAsset(id, idempotencyKey);
        - lang: Python
          source: response = fireblocks.blockchains_&_assets.get_asset(id, idempotency_key);
    patch:
      operationId: updateAssetUserMetadata
      summary: Update the user’s metadata for an asset
      description: |-
        Update the user’s metadata for an asset.

        Endpoint Permission: Owner, Admin, Non-Signing Admin, NCW Admin, Signer, Editor.
      tags:
        - Blockchains & assets
      x-rate-limit-category: write
      x-readme:
        code-samples:
          - language: python
            code: asset = fireblocks.update_asset_user_metadata(asset_id, update_asset_user_metadata_request)
            name: Fireblocks SDK Python example (Legacy)
          - language: javascript
            code: const asset = await fireblocks.updateAssetUserMetadata(assetId, updateAssetUserMetadataRequest);
            name: Fireblocks SDK Javascript example
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<Asset>> = fireblocks.blockchainsAssets.updateAssetUserMetadata(blockchainsAssetsApiUpdateAssetUserMetadataRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<Asset>> response = fireblocks.blockchainsAssets().updateAssetUserMetadata(id, updateAssetUserMetadataRequest, idempotencyKey);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.blockchains_&_assets.update_asset_user_metadata(id, update_asset_user_metadata_request, idempotency_key);
            name: Fireblocks SDK Python example
      parameters:
        - name: id
          in: path
          required: true
          description: The ID or legacyId of the asset
          schema:
            type: string
            x-fb-entity: asset
          example: ETH
        - $ref: '#/components/parameters/X-Idempotency-Key'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateAssetUserMetadataRequest'
      responses:
        '200':
          description: Updated asset user metadata
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Asset'
        '404':
          description: |
            - Asset with specified ID or legacy ID is not found. Error code 1504
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AssetNotFoundErrorResponse'
        '500':
          description: Error occurred while updating asset user metadata
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AssetInternalServerErrorResponse'
        default:
          $ref: '#/components/responses/Error'
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<Asset>> = fireblocks.blockchainsAssets.updateAssetUserMetadata(blockchainsAssetsApiUpdateAssetUserMetadataRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<Asset>> response = fireblocks.blockchainsAssets().updateAssetUserMetadata(id, updateAssetUserMetadataRequest, idempotencyKey);
        - lang: Python
          source: response = fireblocks.blockchains_&_assets.update_asset_user_metadata(id, update_asset_user_metadata_request, idempotency_key);
  /assets/prices/{id}:
    post:
      operationId: setAssetPrice
      summary: Set asset price
      description: |
        Set asset price for the given asset id. Returns the asset price response.
      tags:
        - Blockchains & assets
      x-rate-limit-category: write
      x-readme:
        code-samples:
          - language: python
            code: supportedAssets = fireblocks.set_asset_price(id, currency, price)
            name: Fireblocks SDK Python example (Legacy)
          - language: javascript
            code: const supportedAssets = await fireblocks.setAssetPrice(id, currency, price);
            name: Fireblocks SDK Javascript example
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<AssetPriceResponse>> = fireblocks.blockchainsAssets.setAssetPrice(blockchainsAssetsApiSetAssetPriceRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<AssetPriceResponse>> response = fireblocks.blockchainsAssets().setAssetPrice(id, setAssetPriceRequest, idempotencyKey);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.blockchains_&_assets.set_asset_price(id, set_asset_price_request, idempotency_key);
            name: Fireblocks SDK Python example
      parameters:
        - name: id
          in: path
          required: true
          description: The ID of the asset
          schema:
            type: string
          example: ETH
        - $ref: '#/components/parameters/X-Idempotency-Key'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SetAssetPriceRequest'
      responses:
        '200':
          description: Asset price has been set successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AssetPriceResponse'
        '403':
          description: |
            - Tenant is not allowed to set rate. Error code: 1002.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AssetPriceForbiddenErrorResponse'
        '404':
          description: |
            - Currency not found. Error code 1001
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AssetPriceNotFoundErrorResponse'
        default:
          $ref: '#/components/responses/Error'
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<AssetPriceResponse>> = fireblocks.blockchainsAssets.setAssetPrice(blockchainsAssetsApiSetAssetPriceRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<AssetPriceResponse>> response = fireblocks.blockchainsAssets().setAssetPrice(id, setAssetPriceRequest, idempotencyKey);
        - lang: Python
          source: response = fireblocks.blockchains_&_assets.set_asset_price(id, set_asset_price_request, idempotency_key);
  /blockchains:
    get:
      operationId: listBlockchains
      summary: List blockchains
      description: |
        Returns all blockchains supported by Fireblocks.
      tags:
        - Blockchains & assets
      x-rate-limit-category: external_query
      x-readme:
        code-samples:
          - language: python
            code: blockchains = fireblocks.listBlockchains(filters)
            name: Fireblocks SDK Python example (Legacy)
          - language: javascript
            code: const blockchains = await fireblocks.listBlockchains(filters);
            name: Fireblocks SDK Javascript example
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<ListBlockchainsResponse>> = fireblocks.blockchainsAssets.listBlockchains(blockchainsAssetsApiListBlockchainsRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<ListBlockchainsResponse>> response = fireblocks.blockchainsAssets().listBlockchains(protocol, deprecated, test, ids, pageCursor, pageSize);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.blockchains_&_assets.list_blockchains(protocol, deprecated, test, ids, page_cursor, page_size);
            name: Fireblocks SDK Python example
      parameters:
        - name: protocol
          required: false
          in: query
          description: Blockchain protocol
          schema:
            type: string
          example: SOL
        - name: deprecated
          required: false
          in: query
          description: Is blockchain deprecated
          schema:
            type: boolean
          example: false
        - name: test
          required: false
          in: query
          description: Is test blockchain
          schema:
            type: boolean
          example: false
        - name: ids
          required: false
          in: query
          description: A list of blockchain IDs (max 100)
          schema:
            type: array
            items:
              type: string
          example:
            - 3ed32525-70df-45c8-bae3-e69ab56dc095
            - 3a3b5f06-61e7-44f0-9962-4425b55795ff
            - MANTRA
        - name: pageCursor
          required: false
          in: query
          description: Page cursor to fetch
          schema:
            type: string
          example: MjAyMy0xMi0xMyAyMDozNjowOC4zMDI=:MTEwMA==
        - name: pageSize
          required: false
          in: query
          description: Items per page (max 500)
          schema:
            minimum: 1
            maximum: 500
            default: 500
            type: number
          example: 500
      responses:
        '200':
          description: List of supported blockchains
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListBlockchainsResponse'
        '500':
          description: Error occurred while listing blockchains
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AssetInternalServerErrorResponse'
        default:
          $ref: '#/components/responses/Error'
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<ListBlockchainsResponse>> = fireblocks.blockchainsAssets.listBlockchains(blockchainsAssetsApiListBlockchainsRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<ListBlockchainsResponse>> response = fireblocks.blockchainsAssets().listBlockchains(protocol, deprecated, test, ids, pageCursor, pageSize);
        - lang: Python
          source: response = fireblocks.blockchains_&_assets.list_blockchains(protocol, deprecated, test, ids, page_cursor, page_size);
  /blockchains/{id}:
    get:
      operationId: getBlockchain
      summary: Get a Blockchain by ID
      x-rate-limit-category: external_query
      description: |
        Returns a blockchain by ID or legacyID.
      tags:
        - Blockchains & assets
      x-readme:
        code-samples:
          - language: python
            code: blockchain = fireblocks.getBlockchainById(blockchainId)
            name: Fireblocks SDK Python example (Legacy)
          - language: javascript
            code: const blockchain = await fireblocks.getBlockchainById(blockchainId);
            name: Fireblocks SDK Javascript example
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<BlockchainResponse>> = fireblocks.blockchainsAssets.getBlockchain(blockchainsAssetsApiGetBlockchainRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<BlockchainResponse>> response = fireblocks.blockchainsAssets().getBlockchain(id);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.blockchains_&_assets.get_blockchain(id);
            name: Fireblocks SDK Python example
      parameters:
        - name: id
          in: path
          required: true
          description: The ID or legacyId of the blockchain
          schema:
            type: string
          example: ETH
      responses:
        '200':
          description: Blockchain with requested identification
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BlockchainResponse'
        '404':
          description: |
            - Blockchain with specified ID or legacy ID is not found. Error code 1505
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BlockchainNotFoundErrorResponse'
        '500':
          description: Error occurred while getting an blockchain
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AssetInternalServerErrorResponse'
        default:
          $ref: '#/components/responses/Error'
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<BlockchainResponse>> = fireblocks.blockchainsAssets.getBlockchain(blockchainsAssetsApiGetBlockchainRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<BlockchainResponse>> response = fireblocks.blockchainsAssets().getBlockchain(id);
        - lang: Python
          source: response = fireblocks.blockchains_&_assets.get_blockchain(id);
  /supported_assets:
    get:
      summary: List assets (Legacy)
      description: |
        **This legacy endpoint has not been deprecated but it should not be used in your operations. Instead, use the new [List assets](https://developers.fireblocks.com/reference/listassets) endpoint for better performance and to retrieve more detailed asset information.**

        Retrieves all assets supported by Fireblocks in your workspace.

        **Endpoint Permissions:** Admin, Non-Signing Admin, Signer, Approver, Editor.
      tags:
        - Blockchains & assets
      x-rate-limit-category: external_query
      x-readme:
        code-samples:
          - language: python
            code: supportedAssets = fireblocks.get_supported_assets()
            name: Fireblocks SDK Python example (Legacy)
          - language: javascript
            code: const supportedAssets = await fireblocks.getSupportedAssets();
            name: Fireblocks SDK Javascript example
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<GetSupportedAssetsResponse>> = fireblocks.blockchainsAssets.getSupportedAssets();'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<List<AssetTypeResponse>>> response = fireblocks.blockchainsAssets().getSupportedAssets();
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.blockchains_&_assets.get_supported_assets();
            name: Fireblocks SDK Python example
      responses:
        '200':
          description: A Transaction object
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetSupportedAssetsResponse'
        default:
          $ref: '#/components/responses/Error'
      operationId: getSupportedAssets
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<GetSupportedAssetsResponse>> = fireblocks.blockchainsAssets.getSupportedAssets();'
        - lang: Java
          source: CompletableFuture<ApiResponse<List<AssetTypeResponse>>> response = fireblocks.blockchainsAssets().getSupportedAssets();
        - lang: Python
          source: response = fireblocks.blockchains_&_assets.get_supported_assets();
  /address_registry/legal_entities/{address}:
    get:
      operationId: getLegalEntityForAddress
      summary: Look up legal entity by blockchain address
      description: Returns legal entity information for the given blockchain address (LEI data availability, LEI identifier, Travel Rule providers, contact email, and related fields — see response schema). URL-encode `{address}` when required.
      parameters:
        - name: address
          in: path
          required: true
          schema:
            type: string
            example: '0x742d35cc6634c0532925a3b844bc9e7595f0beb0'
          description: Blockchain address to look up
      responses:
        '200':
          description: Legal entity found
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AddressRegistryLegalEntity'
        '400':
          description: Bad request — either request validation (path `{address}` empty or whitespace-only after trim, e.g. encoded spaces only; numeric code 4100), or the authenticated workspace is not opted in to the address registry (numeric code 2140). The `message` field describes the failure; use `code` to distinguish.
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AddressRegistryError'
        '404':
          description: Not found (error code 2142) — unresolved address, no legal entity for a resolved address, or the same not-found outcome in other cases.
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AddressRegistryError'
        default:
          $ref: '#/components/responses/Error'
      tags:
        - Compliance
      x-rate-limit-category: high_compute
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<AddressRegistryLegalEntity>> = fireblocks.compliance.getLegalEntityForAddress(complianceApiGetLegalEntityForAddressRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<AddressRegistryLegalEntity>> response = fireblocks.compliance().getLegalEntityForAddress(address);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.compliance.get_legal_entity_for_address(address);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<AddressRegistryLegalEntity>> = fireblocks.compliance.getLegalEntityForAddress(complianceApiGetLegalEntityForAddressRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<AddressRegistryLegalEntity>> response = fireblocks.compliance().getLegalEntityForAddress(address);
        - lang: Python
          source: response = fireblocks.compliance.get_legal_entity_for_address(address);
  /address_registry/tenant:
    get:
      operationId: getAddressRegistryTenantParticipationStatus
      summary: Get address registry participation status for the authenticated workspace
      description: Returns whether the workspace is `OPTED_IN` or `OPTED_OUT` of the address registry.
      responses:
        '200':
          description: Participation status in the response body
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AddressRegistryTenantRegistryResponse'
        default:
          $ref: '#/components/responses/Error'
      tags:
        - Compliance
      x-rate-limit-category: read
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<AddressRegistryTenantRegistryResponse>> = fireblocks.compliance.getAddressRegistryTenantParticipationStatus();'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<AddressRegistryTenantRegistryResponse>> response = fireblocks.compliance().getAddressRegistryTenantParticipationStatus();
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.compliance.get_address_registry_tenant_participation_status();
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<AddressRegistryTenantRegistryResponse>> = fireblocks.compliance.getAddressRegistryTenantParticipationStatus();'
        - lang: Java
          source: CompletableFuture<ApiResponse<AddressRegistryTenantRegistryResponse>> response = fireblocks.compliance().getAddressRegistryTenantParticipationStatus();
        - lang: Python
          source: response = fireblocks.compliance.get_address_registry_tenant_participation_status();
    post:
      operationId: optInAddressRegistryTenant
      summary: Opt the workspace in to the address registry
      description: Opts the workspace in. No request body. Response uses the same JSON shape as GET; status is OPTED_IN.
      parameters:
        - $ref: '#/components/parameters/X-Idempotency-Key'
      responses:
        '200':
          description: Success; response body includes status OPTED_IN
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AddressRegistryTenantRegistryResponse'
        default:
          $ref: '#/components/responses/Error'
      tags:
        - Compliance
      x-rate-limit-category: write
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<AddressRegistryTenantRegistryResponse>> = fireblocks.compliance.optInAddressRegistryTenant(complianceApiOptInAddressRegistryTenantRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<AddressRegistryTenantRegistryResponse>> response = fireblocks.compliance().optInAddressRegistryTenant(idempotencyKey);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.compliance.opt_in_address_registry_tenant(idempotency_key);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<AddressRegistryTenantRegistryResponse>> = fireblocks.compliance.optInAddressRegistryTenant(complianceApiOptInAddressRegistryTenantRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<AddressRegistryTenantRegistryResponse>> response = fireblocks.compliance().optInAddressRegistryTenant(idempotencyKey);
        - lang: Python
          source: response = fireblocks.compliance.opt_in_address_registry_tenant(idempotency_key);
    delete:
      operationId: optOutAddressRegistryTenant
      summary: Opt the workspace out of the address registry
      description: Opts the workspace out. No request body. Response uses the same JSON shape as GET; status is OPTED_OUT.
      responses:
        '200':
          description: Success; response body includes status OPTED_OUT
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AddressRegistryTenantRegistryResponse'
        default:
          $ref: '#/components/responses/Error'
      tags:
        - Compliance
      x-rate-limit-category: write
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<AddressRegistryTenantRegistryResponse>> = fireblocks.compliance.optOutAddressRegistryTenant();'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<AddressRegistryTenantRegistryResponse>> response = fireblocks.compliance().optOutAddressRegistryTenant();
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.compliance.opt_out_address_registry_tenant();
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<AddressRegistryTenantRegistryResponse>> = fireblocks.compliance.optOutAddressRegistryTenant();'
        - lang: Java
          source: CompletableFuture<ApiResponse<AddressRegistryTenantRegistryResponse>> response = fireblocks.compliance().optOutAddressRegistryTenant();
        - lang: Python
          source: response = fireblocks.compliance.opt_out_address_registry_tenant();
  /address_registry/vaults:
    get:
      operationId: listAddressRegistryVaultOptOuts
      summary: List vault-level address registry opt-outs (paginated)
      description: Lists vault accounts that are opted out of the address registry for this workspace. Pagination uses `next` and `prev` cursors from the response. If `pageSize` is omitted, **50** items are returned per page; allowed range is **1–100** per request.
      parameters:
        - name: pageCursor
          in: query
          required: false
          schema:
            type: string
            example: eyJvZmZzZXQiOjAsInBhZ2VTaXplIjoxMH0
          description: Opaque cursor from a previous response (`next` or `prev`). Omit for the first page.
        - name: pageSize
          in: query
          required: false
          description: Page size. Default **50** if omitted; must be between **1** and **100**.
          schema:
            type: integer
            format: int32
            minimum: 1
            maximum: 100
            default: 50
            example: 50
        - name: order
          in: query
          required: false
          description: Sort direction by vault account id. Omit for ascending; use the enum value for descending.
          schema:
            $ref: '#/components/schemas/AddressRegistryVaultListOrder'
      responses:
        '200':
          description: Page of vault opt-out rows
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AddressRegistryListVaultOptOutsResponse'
        '400':
          description: Validation error (e.g. invalid or malformed pageCursor)
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AddressRegistryError'
        default:
          $ref: '#/components/responses/Error'
      tags:
        - Compliance
      x-rate-limit-category: read
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<AddressRegistryListVaultOptOutsResponse>> = fireblocks.compliance.listAddressRegistryVaultOptOuts(complianceApiListAddressRegistryVaultOptOutsRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<AddressRegistryListVaultOptOutsResponse>> response = fireblocks.compliance().listAddressRegistryVaultOptOuts(pageCursor, pageSize, order);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.compliance.list_address_registry_vault_opt_outs(page_cursor, page_size, order);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<AddressRegistryListVaultOptOutsResponse>> = fireblocks.compliance.listAddressRegistryVaultOptOuts(complianceApiListAddressRegistryVaultOptOutsRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<AddressRegistryListVaultOptOutsResponse>> response = fireblocks.compliance().listAddressRegistryVaultOptOuts(pageCursor, pageSize, order);
        - lang: Python
          source: response = fireblocks.compliance.list_address_registry_vault_opt_outs(page_cursor, page_size, order);
    post:
      operationId: addAddressRegistryVaultOptOuts
      summary: Add vault accounts to the address registry opt-out list
      description: Adds one or more vault account ids to the workspace opt-out list for the address registry.
      parameters:
        - $ref: '#/components/parameters/X-Idempotency-Key'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AddressRegistryAddVaultOptOutsRequest'
      responses:
        '200':
          description: Opt-outs recorded; response body includes `acceptedCount`.
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AddressRegistryAddVaultOptOutsResponse'
        '400':
          description: Validation error (e.g. empty list or invalid vault ids)
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AddressRegistryError'
        default:
          $ref: '#/components/responses/Error'
      tags:
        - Compliance
      x-rate-limit-category: write
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<AddressRegistryAddVaultOptOutsResponse>> = fireblocks.compliance.addAddressRegistryVaultOptOuts(complianceApiAddAddressRegistryVaultOptOutsRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<AddressRegistryAddVaultOptOutsResponse>> response = fireblocks.compliance().addAddressRegistryVaultOptOuts(addressRegistryAddVaultOptOutsRequest, idempotencyKey);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.compliance.add_address_registry_vault_opt_outs(address_registry_add_vault_opt_outs_request, idempotency_key);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<AddressRegistryAddVaultOptOutsResponse>> = fireblocks.compliance.addAddressRegistryVaultOptOuts(complianceApiAddAddressRegistryVaultOptOutsRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<AddressRegistryAddVaultOptOutsResponse>> response = fireblocks.compliance().addAddressRegistryVaultOptOuts(addressRegistryAddVaultOptOutsRequest, idempotencyKey);
        - lang: Python
          source: response = fireblocks.compliance.add_address_registry_vault_opt_outs(address_registry_add_vault_opt_outs_request, idempotency_key);
    delete:
      operationId: removeAllAddressRegistryVaultOptOuts
      summary: Remove all vault-level address registry opt-outs for the workspace
      description: Removes all vault accounts from the workspace opt-out list.
      responses:
        '200':
          description: All opt-outs cleared; response body includes `removedCount`.
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AddressRegistryRemoveAllVaultOptOutsResponse'
        default:
          $ref: '#/components/responses/Error'
      tags:
        - Compliance
      x-rate-limit-category: write
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<AddressRegistryRemoveAllVaultOptOutsResponse>> = fireblocks.compliance.removeAllAddressRegistryVaultOptOuts();'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<AddressRegistryRemoveAllVaultOptOutsResponse>> response = fireblocks.compliance().removeAllAddressRegistryVaultOptOuts();
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.compliance.remove_all_address_registry_vault_opt_outs();
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<AddressRegistryRemoveAllVaultOptOutsResponse>> = fireblocks.compliance.removeAllAddressRegistryVaultOptOuts();'
        - lang: Java
          source: CompletableFuture<ApiResponse<AddressRegistryRemoveAllVaultOptOutsResponse>> response = fireblocks.compliance().removeAllAddressRegistryVaultOptOuts();
        - lang: Python
          source: response = fireblocks.compliance.remove_all_address_registry_vault_opt_outs();
  /address_registry/vaults/{vaultAccountId}:
    get:
      operationId: getAddressRegistryVaultOptOut
      summary: Get whether a vault account is opted out of the address registry
      description: Returns whether this vault account is on the workspace opt-out list (`optedOut` true or false). List, add, and clear-all are available on `/v1/address_registry/vaults`; this path reads or removes one vault.
      parameters:
        - name: vaultAccountId
          in: path
          required: true
          schema:
            type: integer
            format: int32
            minimum: 0
            example: 10001
          description: Vault account id (non-negative integer).
      responses:
        '200':
          description: Current opt-out flag for the vault
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AddressRegistryGetVaultOptOutResponse'
        '400':
          description: Invalid path parameter (e.g. negative or out-of-range vault account id)
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AddressRegistryError'
        default:
          $ref: '#/components/responses/Error'
      tags:
        - Compliance
      x-rate-limit-category: read
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<AddressRegistryGetVaultOptOutResponse>> = fireblocks.compliance.getAddressRegistryVaultOptOut(complianceApiGetAddressRegistryVaultOptOutRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<AddressRegistryGetVaultOptOutResponse>> response = fireblocks.compliance().getAddressRegistryVaultOptOut(vaultAccountId);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.compliance.get_address_registry_vault_opt_out(vault_account_id);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<AddressRegistryGetVaultOptOutResponse>> = fireblocks.compliance.getAddressRegistryVaultOptOut(complianceApiGetAddressRegistryVaultOptOutRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<AddressRegistryGetVaultOptOutResponse>> response = fireblocks.compliance().getAddressRegistryVaultOptOut(vaultAccountId);
        - lang: Python
          source: response = fireblocks.compliance.get_address_registry_vault_opt_out(vault_account_id);
    delete:
      operationId: removeAddressRegistryVaultOptOut
      summary: Remove a single vault account from the address registry opt-out list
      description: Removes this vault account id from the workspace opt-out list if it is present; otherwise the call still succeeds. Response body matches GET (`optedOut` is `false` after success). To clear the whole list, use `DELETE /v1/address_registry/vaults`.
      parameters:
        - name: vaultAccountId
          in: path
          required: true
          schema:
            type: integer
            format: int32
            minimum: 0
            example: 10001
          description: Vault account id (non-negative integer).
      responses:
        '200':
          description: Success; `optedOut` is false (list entry removed if it existed)
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AddressRegistryRemoveVaultOptOutResponse'
        '400':
          description: Invalid path parameter (e.g. negative or out-of-range vault account id)
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AddressRegistryError'
        default:
          $ref: '#/components/responses/Error'
      tags:
        - Compliance
      x-rate-limit-category: write
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<AddressRegistryRemoveVaultOptOutResponse>> = fireblocks.compliance.removeAddressRegistryVaultOptOut(complianceApiRemoveAddressRegistryVaultOptOutRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<AddressRegistryRemoveVaultOptOutResponse>> response = fireblocks.compliance().removeAddressRegistryVaultOptOut(vaultAccountId);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.compliance.remove_address_registry_vault_opt_out(vault_account_id);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<AddressRegistryRemoveVaultOptOutResponse>> = fireblocks.compliance.removeAddressRegistryVaultOptOut(complianceApiRemoveAddressRegistryVaultOptOutRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<AddressRegistryRemoveVaultOptOutResponse>> response = fireblocks.compliance().removeAddressRegistryVaultOptOut(vaultAccountId);
        - lang: Python
          source: response = fireblocks.compliance.remove_address_registry_vault_opt_out(vault_account_id);
  /counterparty_groups:
    get:
      operationId: listCounterpartyGroups
      summary: List counterparty groups
      description: |
        Returns a paginated list of counterparty groups.

        **Endpoint Permissions:** Admin, Non-Signing Admin, Viewer.
      tags:
        - Compliance
      x-rate-limit-category: query
      parameters:
        - in: query
          name: pageCursor
          required: false
          description: Cursor of the required page
          schema:
            type: string
        - in: query
          name: pageSize
          required: false
          description: Maximum number of items in the page
          schema:
            type: integer
            minimum: 1
            maximum: 100
            default: 50
      responses:
        '200':
          description: A paginated list of counterparty groups
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CounterpartyGroupsPaginatedResponse'
        default:
          $ref: '#/components/responses/Error'
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<CounterpartyGroupsPaginatedResponse>> = fireblocks.compliance.listCounterpartyGroups(complianceApiListCounterpartyGroupsRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<CounterpartyGroupsPaginatedResponse>> response = fireblocks.compliance().listCounterpartyGroups(pageCursor, pageSize);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.compliance.list_counterparty_groups(page_cursor, page_size);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<CounterpartyGroupsPaginatedResponse>> = fireblocks.compliance.listCounterpartyGroups(complianceApiListCounterpartyGroupsRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<CounterpartyGroupsPaginatedResponse>> response = fireblocks.compliance().listCounterpartyGroups(pageCursor, pageSize);
        - lang: Python
          source: response = fireblocks.compliance.list_counterparty_groups(page_cursor, page_size);
    post:
      operationId: createCounterpartyGroup
      summary: Create a counterparty group
      description: |
        Creates a new counterparty group.

        **Endpoint Permissions:** Admin, Non-Signing Admin.
      tags:
        - Compliance
      x-rate-limit-category: write
      parameters:
        - $ref: '#/components/parameters/X-Idempotency-Key'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateCounterpartyGroupRequest'
      responses:
        '201':
          description: Counterparty group created successfully
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CounterpartyGroup'
        default:
          $ref: '#/components/responses/Error'
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<CounterpartyGroup>> = fireblocks.compliance.createCounterpartyGroup(complianceApiCreateCounterpartyGroupRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<CounterpartyGroup>> response = fireblocks.compliance().createCounterpartyGroup(createCounterpartyGroupRequest, idempotencyKey);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.compliance.create_counterparty_group(create_counterparty_group_request, idempotency_key);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<CounterpartyGroup>> = fireblocks.compliance.createCounterpartyGroup(complianceApiCreateCounterpartyGroupRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<CounterpartyGroup>> response = fireblocks.compliance().createCounterpartyGroup(createCounterpartyGroupRequest, idempotencyKey);
        - lang: Python
          source: response = fireblocks.compliance.create_counterparty_group(create_counterparty_group_request, idempotency_key);
  /counterparty_groups/{groupId}:
    get:
      operationId: getCounterpartyGroup
      summary: Get a counterparty group
      description: |
        Returns the details of a specific counterparty group.

        **Endpoint Permissions:** Admin, Non-Signing Admin, Viewer.
      tags:
        - Compliance
      x-rate-limit-category: read
      parameters:
        - in: path
          name: groupId
          required: true
          description: The unique identifier of the counterparty group
          schema:
            type: string
            format: uuid
      responses:
        '200':
          description: A counterparty group object
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CounterpartyGroup'
        '404':
          description: Counterparty group not found
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorSchema'
        default:
          $ref: '#/components/responses/Error'
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<CounterpartyGroup>> = fireblocks.compliance.getCounterpartyGroup(complianceApiGetCounterpartyGroupRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<CounterpartyGroup>> response = fireblocks.compliance().getCounterpartyGroup(groupId);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.compliance.get_counterparty_group(group_id);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<CounterpartyGroup>> = fireblocks.compliance.getCounterpartyGroup(complianceApiGetCounterpartyGroupRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<CounterpartyGroup>> response = fireblocks.compliance().getCounterpartyGroup(groupId);
        - lang: Python
          source: response = fireblocks.compliance.get_counterparty_group(group_id);
    patch:
      operationId: updateCounterpartyGroup
      summary: Update a counterparty group
      description: |
        Updates an existing counterparty group.

        **Endpoint Permissions:** Admin, Non-Signing Admin.
      tags:
        - Compliance
      x-rate-limit-category: write
      parameters:
        - in: path
          name: groupId
          required: true
          description: The unique identifier of the counterparty group
          schema:
            type: string
            format: uuid
        - $ref: '#/components/parameters/X-Idempotency-Key'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateCounterpartyGroupRequest'
      responses:
        '200':
          description: Counterparty group updated successfully
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CounterpartyGroup'
        '404':
          description: Counterparty group not found
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorSchema'
        default:
          $ref: '#/components/responses/Error'
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<CounterpartyGroup>> = fireblocks.compliance.updateCounterpartyGroup(complianceApiUpdateCounterpartyGroupRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<CounterpartyGroup>> response = fireblocks.compliance().updateCounterpartyGroup(updateCounterpartyGroupRequest, groupId, idempotencyKey);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.compliance.update_counterparty_group(update_counterparty_group_request, group_id, idempotency_key);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<CounterpartyGroup>> = fireblocks.compliance.updateCounterpartyGroup(complianceApiUpdateCounterpartyGroupRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<CounterpartyGroup>> response = fireblocks.compliance().updateCounterpartyGroup(updateCounterpartyGroupRequest, groupId, idempotencyKey);
        - lang: Python
          source: response = fireblocks.compliance.update_counterparty_group(update_counterparty_group_request, group_id, idempotency_key);
    delete:
      operationId: deleteCounterpartyGroup
      summary: Delete a counterparty group
      description: |
        Permanently deletes a counterparty group.

        **Endpoint Permissions:** Admin, Non-Signing Admin.
      tags:
        - Compliance
      x-rate-limit-category: write
      parameters:
        - in: path
          name: groupId
          required: true
          description: The unique identifier of the counterparty group
          schema:
            type: string
            format: uuid
      responses:
        '204':
          description: Counterparty group deleted successfully
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
        '404':
          description: Counterparty group not found
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorSchema'
        default:
          $ref: '#/components/responses/Error'
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<void>> = fireblocks.compliance.deleteCounterpartyGroup(complianceApiDeleteCounterpartyGroupRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<Void>> response = fireblocks.compliance().deleteCounterpartyGroup(groupId);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.compliance.delete_counterparty_group(group_id);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<void>> = fireblocks.compliance.deleteCounterpartyGroup(complianceApiDeleteCounterpartyGroupRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<Void>> response = fireblocks.compliance().deleteCounterpartyGroup(groupId);
        - lang: Python
          source: response = fireblocks.compliance.delete_counterparty_group(group_id);
  /legal_entities:
    post:
      operationId: registerLegalEntity
      summary: Register a new legal entity
      description: |-
        Registers a new legal entity for the workspace using its LEI (Legal Entity Identifier) code. The LEI is validated against the GLEIF registry. Each workspace can register multiple legal entities.
        Endpoint Permission: Admin, Non-Signing Admin.
      tags:
        - Compliance
      x-rate-limit-category: write
      parameters:
        - $ref: '#/components/parameters/X-Idempotency-Key'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RegisterLegalEntityRequest'
      responses:
        '201':
          description: Legal entity registered successfully
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LegalEntityRegistration'
        '400':
          description: Invalid LEI or request parameters
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorSchema'
        '404':
          description: LEI not found in the GLEIF registry
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorSchema'
        '409':
          description: A legal entity with this LEI is already registered for the workspace
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorSchema'
        '500':
          description: Internal Server Error
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorSchema'
        default:
          $ref: '#/components/responses/Error'
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<LegalEntityRegistration>> = fireblocks.compliance.registerLegalEntity(complianceApiRegisterLegalEntityRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<LegalEntityRegistration>> response = fireblocks.compliance().registerLegalEntity(registerLegalEntityRequest, idempotencyKey);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.compliance.register_legal_entity(register_legal_entity_request, idempotency_key);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<LegalEntityRegistration>> = fireblocks.compliance.registerLegalEntity(complianceApiRegisterLegalEntityRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<LegalEntityRegistration>> response = fireblocks.compliance().registerLegalEntity(registerLegalEntityRequest, idempotencyKey);
        - lang: Python
          source: response = fireblocks.compliance.register_legal_entity(register_legal_entity_request, idempotency_key);
    get:
      operationId: listLegalEntities
      summary: List legal entities (Paginated)
      description: |-
        Returns legal entity registrations for the workspace with cursor-based pagination.
        If query parameter vaultAccountId is used it returns the legal entity registration associated with a specific vault account. If no explicit mapping exists for the vault, the workspace default legal entity is returned. Returns an empty response if neither a vault mapping nor a default legal entity is configured.
        Endpoint Permission: Admin, Non-Signing Admin, Signer, Approver, Editor, Viewer.
      tags:
        - Compliance
      x-rate-limit-category: query
      parameters:
        - in: query
          name: vaultAccountId
          required: false
          description: The ID of the vault account. When provided, returns the legal entity associated with that vault account and pagination parameters are ignored.
          schema:
            type: string
            format: numeric
            x-fb-entity: vault_account
        - in: query
          name: pageCursor
          required: false
          description: Cursor string returned in `next` or `prev` of a previous response. Ignored when `vaultAccountId` is provided.
          schema:
            type: string
        - in: query
          name: pageSize
          required: false
          description: Maximum number of registrations to return. Ignored when `vaultAccountId` is provided.
          schema:
            type: integer
            minimum: 1
            maximum: 100
            default: 50
      responses:
        '200':
          description: A paginated list of legal entity registrations. When `vaultAccountId` is provided, `data` contains at most one item.
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListLegalEntitiesResponse'
        default:
          $ref: '#/components/responses/Error'
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<ListLegalEntitiesResponse>> = fireblocks.compliance.listLegalEntities(complianceApiListLegalEntitiesRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<ListLegalEntitiesResponse>> response = fireblocks.compliance().listLegalEntities(vaultAccountId, pageCursor, pageSize);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.compliance.list_legal_entities(vault_account_id, page_cursor, page_size);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<ListLegalEntitiesResponse>> = fireblocks.compliance.listLegalEntities(complianceApiListLegalEntitiesRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<ListLegalEntitiesResponse>> response = fireblocks.compliance().listLegalEntities(vaultAccountId, pageCursor, pageSize);
        - lang: Python
          source: response = fireblocks.compliance.list_legal_entities(vault_account_id, page_cursor, page_size);
  /legal_entities/{legalEntityId}:
    get:
      operationId: getLegalEntity
      summary: Get a legal entity
      description: |-
        Returns details of a specific legal entity registration, including GLEIF data when available.
        Endpoint Permission: Admin, Non-Signing Admin, Signer, Approver, Editor, Viewer.
      tags:
        - Compliance
      x-rate-limit-category: read
      parameters:
        - in: path
          name: legalEntityId
          required: true
          description: The unique ID of the legal entity registration
          schema:
            type: string
            format: uuid
      responses:
        '200':
          description: Legal entity registration details
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LegalEntityRegistration'
        '404':
          description: Legal entity registration not found
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorSchema'
        default:
          $ref: '#/components/responses/Error'
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<LegalEntityRegistration>> = fireblocks.compliance.getLegalEntity(complianceApiGetLegalEntityRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<LegalEntityRegistration>> response = fireblocks.compliance().getLegalEntity(legalEntityId);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.compliance.get_legal_entity(legal_entity_id);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<LegalEntityRegistration>> = fireblocks.compliance.getLegalEntity(complianceApiGetLegalEntityRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<LegalEntityRegistration>> response = fireblocks.compliance().getLegalEntity(legalEntityId);
        - lang: Python
          source: response = fireblocks.compliance.get_legal_entity(legal_entity_id);
    put:
      operationId: updateLegalEntity
      summary: Update legal entity
      description: |-
        Updates the status of a legal entity registration. Setting isDefault to true marks the registration as the workspace default, which is applied to vault accounts that have no explicit legal entity mapping.
        Endpoint Permission: Admin, Non-Signing Admin.
      tags:
        - Compliance
      x-rate-limit-category: write
      parameters:
        - in: path
          name: legalEntityId
          required: true
          description: The unique ID of the legal entity registration
          schema:
            type: string
            format: uuid
        - $ref: '#/components/parameters/X-Idempotency-Key'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateLegalEntityRequest'
      responses:
        '200':
          description: Updated legal entity registration
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LegalEntityRegistration'
        '400':
          description: Registration is not in APPROVED status
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorSchema'
        '404':
          description: Legal entity registration not found
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorSchema'
        default:
          $ref: '#/components/responses/Error'
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<LegalEntityRegistration>> = fireblocks.compliance.updateLegalEntity(complianceApiUpdateLegalEntityRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<LegalEntityRegistration>> response = fireblocks.compliance().updateLegalEntity(updateLegalEntityRequest, legalEntityId, idempotencyKey);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.compliance.update_legal_entity(update_legal_entity_request, legal_entity_id, idempotency_key);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<LegalEntityRegistration>> = fireblocks.compliance.updateLegalEntity(complianceApiUpdateLegalEntityRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<LegalEntityRegistration>> response = fireblocks.compliance().updateLegalEntity(updateLegalEntityRequest, legalEntityId, idempotencyKey);
        - lang: Python
          source: response = fireblocks.compliance.update_legal_entity(update_legal_entity_request, legal_entity_id, idempotency_key);
    delete:
      operationId: deleteLegalEntity
      summary: Delete a legal entity
      description: 'Delete a legal entity will change the status of a legal entity registration to REVOKED. Endpoint Permission: Admin, Non-Signing Admin.'
      tags:
        - Compliance
      x-rate-limit-category: write
      parameters:
        - in: path
          name: legalEntityId
          required: true
          description: The unique ID of the legal entity registration to delete
          schema:
            type: string
            format: uuid
      responses:
        '204':
          description: Legal entity deleted successfully
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
        '400':
          description: Legal entity registration is not in deletable status (PENDING or APPROVED)
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorSchema'
        '404':
          description: Legal entity registration not found
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorSchema'
        default:
          $ref: '#/components/responses/Error'
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<void>> = fireblocks.compliance.deleteLegalEntity(complianceApiDeleteLegalEntityRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<Void>> response = fireblocks.compliance().deleteLegalEntity(legalEntityId);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.compliance.delete_legal_entity(legal_entity_id);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<void>> = fireblocks.compliance.deleteLegalEntity(complianceApiDeleteLegalEntityRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<Void>> response = fireblocks.compliance().deleteLegalEntity(legalEntityId);
        - lang: Python
          source: response = fireblocks.compliance.delete_legal_entity(legal_entity_id);
  /legal_entities/{legalEntityId}/vaults:
    post:
      operationId: assignVaultsToLegalEntity
      summary: Assign vault accounts to a legal entity
      description: |-
        Assigns one or more vault accounts to a specific legal entity registration. Explicitly mapped vault accounts take precedence over the workspace default legal entity.
        Endpoint Permission: Admin, Non-Signing Admin.
      tags:
        - Compliance
      x-rate-limit-category: write
      parameters:
        - in: path
          name: legalEntityId
          required: true
          description: The unique ID of the legal entity registration
          schema:
            type: string
            format: uuid
        - $ref: '#/components/parameters/X-Idempotency-Key'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AssignVaultsToLegalEntityRequest'
      responses:
        '201':
          description: Vault accounts assigned successfully
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AssignVaultsToLegalEntityResponse'
        '404':
          description: Legal entity registration not found
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorSchema'
        default:
          $ref: '#/components/responses/Error'
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<AssignVaultsToLegalEntityResponse>> = fireblocks.compliance.assignVaultsToLegalEntity(complianceApiAssignVaultsToLegalEntityRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<AssignVaultsToLegalEntityResponse>> response = fireblocks.compliance().assignVaultsToLegalEntity(assignVaultsToLegalEntityRequest, legalEntityId, idempotencyKey);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.compliance.assign_vaults_to_legal_entity(assign_vaults_to_legal_entity_request, legal_entity_id, idempotency_key);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<AssignVaultsToLegalEntityResponse>> = fireblocks.compliance.assignVaultsToLegalEntity(complianceApiAssignVaultsToLegalEntityRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<AssignVaultsToLegalEntityResponse>> response = fireblocks.compliance().assignVaultsToLegalEntity(assignVaultsToLegalEntityRequest, legalEntityId, idempotencyKey);
        - lang: Python
          source: response = fireblocks.compliance.assign_vaults_to_legal_entity(assign_vaults_to_legal_entity_request, legal_entity_id, idempotency_key);
    get:
      operationId: listVaultsForLegalEntity
      summary: List vault accounts for a legal entity (Paginated)
      description: |-
        Returns vault account IDs explicitly assigned to a specific legal entity registration, with cursor-based pagination.
        Endpoint Permission: Admin, Non-Signing Admin, Signer, Approver, Editor, Viewer.
      tags:
        - Compliance
      x-rate-limit-category: read
      parameters:
        - in: path
          name: legalEntityId
          required: true
          description: The unique ID of the legal entity registration
          schema:
            type: string
            format: uuid
        - in: query
          name: pageCursor
          required: false
          description: Cursor string returned in `next` or `prev` of a previous response
          schema:
            type: string
        - in: query
          name: pageSize
          required: false
          description: Maximum number of registrations to return
          schema:
            type: integer
            minimum: 1
            maximum: 100
            default: 50
      responses:
        '200':
          description: Paginated list of vault account IDs assigned to the legal entity
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListVaultsForRegistrationResponse'
        '404':
          description: Legal entity registration not found
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorSchema'
        default:
          $ref: '#/components/responses/Error'
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<ListVaultsForRegistrationResponse>> = fireblocks.compliance.listVaultsForLegalEntity(complianceApiListVaultsForLegalEntityRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<ListVaultsForRegistrationResponse>> response = fireblocks.compliance().listVaultsForLegalEntity(legalEntityId, pageCursor, pageSize);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.compliance.list_vaults_for_legal_entity(legal_entity_id, page_cursor, page_size);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<ListVaultsForRegistrationResponse>> = fireblocks.compliance.listVaultsForLegalEntity(complianceApiListVaultsForLegalEntityRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<ListVaultsForRegistrationResponse>> response = fireblocks.compliance().listVaultsForLegalEntity(legalEntityId, pageCursor, pageSize);
        - lang: Python
          source: response = fireblocks.compliance.list_vaults_for_legal_entity(legal_entity_id, page_cursor, page_size);
  /screening/aml/policy_configuration:
    get:
      operationId: getAmlScreeningConfiguration
      summary: Get AML Screening Policy Configuration
      description: Retrieves the configuration for Travel Rule screening policy.
      parameters: []
      responses:
        '200':
          description: Screening policy configuration retrieved successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ScreeningConfigurationsRequest'
      tags:
        - Compliance Screening Configuration
      x-rate-limit-category: query
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<ScreeningConfigurationsRequest>> = fireblocks.complianceScreeningConfiguration.getAmlScreeningConfiguration();'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<ScreeningConfigurationsRequest>> response = fireblocks.complianceScreeningConfiguration().getAmlScreeningConfiguration();
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.compliance_screening_configuration.get_aml_screening_configuration();
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<ScreeningConfigurationsRequest>> = fireblocks.complianceScreeningConfiguration.getAmlScreeningConfiguration();'
        - lang: Java
          source: CompletableFuture<ApiResponse<ScreeningConfigurationsRequest>> response = fireblocks.complianceScreeningConfiguration().getAmlScreeningConfiguration();
        - lang: Python
          source: response = fireblocks.compliance_screening_configuration.get_aml_screening_configuration();
    put:
      operationId: updateAmlScreeningConfiguration
      summary: Update AML Configuration
      description: Updates bypass screening, inbound delay, or outbound delay configurations for AML.
      parameters:
        - $ref: '#/components/parameters/X-Idempotency-Key'
      responses:
        '200':
          description: Configuration updated successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ScreeningConfigurationsRequest'
      tags:
        - Compliance
      x-rate-limit-category: write
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<ScreeningConfigurationsRequest>> = fireblocks.compliance.updateAmlScreeningConfiguration(complianceApiUpdateAmlScreeningConfigurationRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<ScreeningConfigurationsRequest>> response = fireblocks.compliance().updateAmlScreeningConfiguration(idempotencyKey);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.compliance.update_aml_screening_configuration(idempotency_key);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<ScreeningConfigurationsRequest>> = fireblocks.compliance.updateAmlScreeningConfiguration(complianceApiUpdateAmlScreeningConfigurationRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<ScreeningConfigurationsRequest>> response = fireblocks.compliance().updateAmlScreeningConfiguration(idempotencyKey);
        - lang: Python
          source: response = fireblocks.compliance.update_aml_screening_configuration(idempotency_key);
  /screening/aml/post_screening_policy:
    get:
      operationId: getAmlPostScreeningPolicy
      summary: AML - View Post-Screening Policy
      description: Get the post-screening policy for AML.
      parameters: []
      responses:
        '200':
          description: Post-screening policy retrieved successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ScreeningPolicyResponse'
      tags:
        - Compliance
      x-rate-limit-category: query
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<ScreeningPolicyResponse>> = fireblocks.compliance.getAmlPostScreeningPolicy();'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<ScreeningPolicyResponse>> response = fireblocks.compliance().getAmlPostScreeningPolicy();
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.compliance.get_aml_post_screening_policy();
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<ScreeningPolicyResponse>> = fireblocks.compliance.getAmlPostScreeningPolicy();'
        - lang: Java
          source: CompletableFuture<ApiResponse<ScreeningPolicyResponse>> response = fireblocks.compliance().getAmlPostScreeningPolicy();
        - lang: Python
          source: response = fireblocks.compliance.get_aml_post_screening_policy();
  /screening/aml/screening_policy:
    get:
      operationId: getAmlScreeningPolicy
      summary: AML - View Screening Policy
      description: Get the screening policy for AML.
      parameters: []
      responses:
        '200':
          description: Screening policy retrieved successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ScreeningProviderRulesConfigurationResponse'
      tags:
        - Compliance
      x-rate-limit-category: query
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<ScreeningProviderRulesConfigurationResponse>> = fireblocks.compliance.getAmlScreeningPolicy();'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<ScreeningProviderRulesConfigurationResponse>> response = fireblocks.compliance().getAmlScreeningPolicy();
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.compliance.get_aml_screening_policy();
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<ScreeningProviderRulesConfigurationResponse>> = fireblocks.compliance.getAmlScreeningPolicy();'
        - lang: Java
          source: CompletableFuture<ApiResponse<ScreeningProviderRulesConfigurationResponse>> response = fireblocks.compliance().getAmlScreeningPolicy();
        - lang: Python
          source: response = fireblocks.compliance.get_aml_screening_policy();
  /screening/aml/verdict/manual:
    post:
      operationId: setAmlVerdict
      summary: Set AML Verdict (BYORK Super Light)
      description: Set AML verdict for incoming transactions when **BYORK Super Light** (Manual Screening Verdict) is enabled. This endpoint is for Super Light only. For **BYORK Light**, use POST /screening/byork/verdict instead. When Super Light is retired, this endpoint will be deprecated; use the BYORK Light verdict API for new integrations.
      parameters:
        - $ref: '#/components/parameters/X-Idempotency-Key'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AmlVerdictManualRequest'
      responses:
        '200':
          description: AML verdict set successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AmlVerdictManualResponse'
        '400':
          description: Feature not enabled for tenant.
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorSchema'
        '425':
          description: Too Early - transaction not yet in pending screening.
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorSchema'
        '500':
          description: Internal server error.
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorSchema'
        default:
          $ref: '#/components/responses/Error'
      tags:
        - Compliance
      x-rate-limit-category: write
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<AmlVerdictManualResponse>> = fireblocks.compliance.setAmlVerdict(complianceApiSetAmlVerdictRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<AmlVerdictManualResponse>> response = fireblocks.compliance().setAmlVerdict(amlVerdictManualRequest, idempotencyKey);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.compliance.set_aml_verdict(aml_verdict_manual_request, idempotency_key);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<AmlVerdictManualResponse>> = fireblocks.compliance.setAmlVerdict(complianceApiSetAmlVerdictRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<AmlVerdictManualResponse>> response = fireblocks.compliance().setAmlVerdict(amlVerdictManualRequest, idempotencyKey);
        - lang: Python
          source: response = fireblocks.compliance.set_aml_verdict(aml_verdict_manual_request, idempotency_key);
  /screening/ars/config/activate:
    post:
      operationId: activateArsConfig
      summary: Activate ARS (Address Registry Screening)
      description: Activates ARS (Address Registry Screening) for the authenticated tenant (sets config.active to true). Once activated, ARS screening applies to matching transactions.
      parameters:
        - $ref: '#/components/parameters/X-Idempotency-Key'
      responses:
        '200':
          description: ARS configuration activated.
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ArsConfigResponse'
        '400':
          description: Tenant not opted-in for address registry.
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorSchema'
        default:
          $ref: '#/components/responses/Error'
      tags:
        - Compliance
      x-rate-limit-category: write
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<ArsConfigResponse>> = fireblocks.compliance.activateArsConfig(complianceApiActivateArsConfigRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<ArsConfigResponse>> response = fireblocks.compliance().activateArsConfig(idempotencyKey);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.compliance.activate_ars_config(idempotency_key);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<ArsConfigResponse>> = fireblocks.compliance.activateArsConfig(complianceApiActivateArsConfigRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<ArsConfigResponse>> response = fireblocks.compliance().activateArsConfig(idempotencyKey);
        - lang: Python
          source: response = fireblocks.compliance.activate_ars_config(idempotency_key);
  /screening/ars/config/deactivate:
    post:
      operationId: deactivateArsConfig
      summary: Deactivate ARS (Address Registry Screening)
      description: Deactivates ARS (Address Registry Screening) for the authenticated tenant (sets config.active to false). Once deactivated, ARS screening no longer applies until activated again.
      parameters:
        - $ref: '#/components/parameters/X-Idempotency-Key'
      responses:
        '200':
          description: ARS configuration deactivated.
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ArsConfigResponse'
        '400':
          description: Tenant not opted-in for address registry.
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorSchema'
        default:
          $ref: '#/components/responses/Error'
      tags:
        - Compliance
      x-rate-limit-category: write
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<ArsConfigResponse>> = fireblocks.compliance.deactivateArsConfig(complianceApiDeactivateArsConfigRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<ArsConfigResponse>> response = fireblocks.compliance().deactivateArsConfig(idempotencyKey);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.compliance.deactivate_ars_config(idempotency_key);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<ArsConfigResponse>> = fireblocks.compliance.deactivateArsConfig(complianceApiDeactivateArsConfigRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<ArsConfigResponse>> response = fireblocks.compliance().deactivateArsConfig(idempotencyKey);
        - lang: Python
          source: response = fireblocks.compliance.deactivate_ars_config(idempotency_key);
  /screening/byork/config:
    get:
      operationId: getByorkConfig
      summary: Get BYORK Light configuration
      description: Retrieves BYORK Light configuration for the authenticated tenant (timeouts, active flag, allowed timeout ranges). Returns default config when none exists. Requires BYORK Light to be enabled for the tenant.
      responses:
        '200':
          description: BYORK configuration (or default).
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ByorkConfigResponse'
        '400':
          description: BYORK Light not enabled for tenant.
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorSchema'
        default:
          $ref: '#/components/responses/Error'
      tags:
        - Compliance
      x-rate-limit-category: read
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<ByorkConfigResponse>> = fireblocks.compliance.getByorkConfig();'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<ByorkConfigResponse>> response = fireblocks.compliance().getByorkConfig();
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.compliance.get_byork_config();
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<ByorkConfigResponse>> = fireblocks.compliance.getByorkConfig();'
        - lang: Java
          source: CompletableFuture<ApiResponse<ByorkConfigResponse>> response = fireblocks.compliance().getByorkConfig();
        - lang: Python
          source: response = fireblocks.compliance.get_byork_config();
  /screening/byork/config/activate:
    post:
      operationId: activateByorkConfig
      summary: Activate BYORK Light
      description: Activates BYORK Light for the authenticated tenant (sets config.active to true). Once activated, BYORK screening applies to matching transactions. Requires BYORK Light to be enabled for the tenant (contact your CSM to enable).
      parameters:
        - $ref: '#/components/parameters/X-Idempotency-Key'
      responses:
        '200':
          description: BYORK configuration activated.
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ByorkConfigResponse'
        '400':
          description: BYORK Light not enabled for tenant.
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorSchema'
        default:
          $ref: '#/components/responses/Error'
      tags:
        - Compliance
      x-rate-limit-category: write
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<ByorkConfigResponse>> = fireblocks.compliance.activateByorkConfig(complianceApiActivateByorkConfigRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<ByorkConfigResponse>> response = fireblocks.compliance().activateByorkConfig(idempotencyKey);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.compliance.activate_byork_config(idempotency_key);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<ByorkConfigResponse>> = fireblocks.compliance.activateByorkConfig(complianceApiActivateByorkConfigRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<ByorkConfigResponse>> response = fireblocks.compliance().activateByorkConfig(idempotencyKey);
        - lang: Python
          source: response = fireblocks.compliance.activate_byork_config(idempotency_key);
  /screening/byork/config/deactivate:
    post:
      operationId: deactivateByorkConfig
      summary: Deactivate BYORK Light
      description: Deactivates BYORK Light for the authenticated tenant (sets config.active to false). Once deactivated, BYORK screening no longer applies until activated again. Requires BYORK Light to be enabled for the tenant (contact your CSM to enable).
      parameters:
        - $ref: '#/components/parameters/X-Idempotency-Key'
      responses:
        '200':
          description: BYORK configuration deactivated.
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ByorkConfigResponse'
        '400':
          description: BYORK Light not enabled for tenant.
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorSchema'
        default:
          $ref: '#/components/responses/Error'
      tags:
        - Compliance
      x-rate-limit-category: write
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<ByorkConfigResponse>> = fireblocks.compliance.deactivateByorkConfig(complianceApiDeactivateByorkConfigRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<ByorkConfigResponse>> response = fireblocks.compliance().deactivateByorkConfig(idempotencyKey);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.compliance.deactivate_byork_config(idempotency_key);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<ByorkConfigResponse>> = fireblocks.compliance.deactivateByorkConfig(complianceApiDeactivateByorkConfigRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<ByorkConfigResponse>> response = fireblocks.compliance().deactivateByorkConfig(idempotencyKey);
        - lang: Python
          source: response = fireblocks.compliance.deactivate_byork_config(idempotency_key);
  /screening/byork/config/timeouts:
    put:
      operationId: setByorkTimeouts
      summary: Set BYORK Light timeouts
      description: Updates timeout values for BYORK wait-for-response (incoming and/or outgoing). At least one of incomingTimeoutSeconds or outgoingTimeoutSeconds is required. Values must be within the ranges returned in GET config (timeoutRangeIncoming for incomingTimeoutSeconds, timeoutRangeOutgoing for outgoingTimeoutSeconds). Requires BYORK Light to be enabled for the tenant (contact your CSM to enable).
      parameters:
        - $ref: '#/components/parameters/X-Idempotency-Key'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ByorkSetTimeoutsRequest'
      responses:
        '200':
          description: Timeouts updated.
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ByorkConfigResponse'
        '400':
          description: BYORK Light not enabled, or timeout value out of range, or missing both timeouts.
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorSchema'
        default:
          $ref: '#/components/responses/Error'
      tags:
        - Compliance
      x-rate-limit-category: write
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<ByorkConfigResponse>> = fireblocks.compliance.setByorkTimeouts(complianceApiSetByorkTimeoutsRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<ByorkConfigResponse>> response = fireblocks.compliance().setByorkTimeouts(byorkSetTimeoutsRequest, idempotencyKey);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.compliance.set_byork_timeouts(byork_set_timeouts_request, idempotency_key);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<ByorkConfigResponse>> = fireblocks.compliance.setByorkTimeouts(complianceApiSetByorkTimeoutsRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<ByorkConfigResponse>> response = fireblocks.compliance().setByorkTimeouts(byorkSetTimeoutsRequest, idempotencyKey);
        - lang: Python
          source: response = fireblocks.compliance.set_byork_timeouts(byork_set_timeouts_request, idempotency_key);
  /screening/byork/verdict:
    get:
      operationId: getByorkVerdict
      summary: Get BYORK Light verdict
      description: Returns the current BYORK verdict and status for a transaction. Status can be PRE_ACCEPTED, PENDING, RECEIVED (verdict is final but processing not yet complete), or COMPLETED. Requires BYORK Light to be enabled for the tenant. Returns 404 if no BYORK verdict is found for the transaction.
      parameters:
        - name: txId
          in: query
          required: true
          schema:
            type: string
            example: 550e8400-e29b-41d4-a716-446655440000
          description: Transaction ID
      responses:
        '200':
          description: Current verdict and status.
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetByorkVerdictResponse'
        '400':
          description: BYORK Light not enabled for tenant or txId missing.
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorSchema'
        '404':
          description: No BYORK verdict found for this transaction.
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorSchema'
        '500':
          description: Internal server error.
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorSchema'
        default:
          $ref: '#/components/responses/Error'
      tags:
        - Compliance
      x-rate-limit-category: read
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<GetByorkVerdictResponse>> = fireblocks.compliance.getByorkVerdict(complianceApiGetByorkVerdictRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<GetByorkVerdictResponse>> response = fireblocks.compliance().getByorkVerdict(txId);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.compliance.get_byork_verdict(tx_id);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<GetByorkVerdictResponse>> = fireblocks.compliance.getByorkVerdict(complianceApiGetByorkVerdictRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<GetByorkVerdictResponse>> response = fireblocks.compliance().getByorkVerdict(txId);
        - lang: Python
          source: response = fireblocks.compliance.get_byork_verdict(tx_id);
    post:
      operationId: setByorkVerdict
      summary: Set BYORK Light verdict
      description: Submit verdict (ACCEPT or REJECT) for a transaction in the BYORK Light flow. If the transaction is awaiting your decision, the verdict is applied immediately (response status COMPLETED). If processing has not yet reached that point, the verdict is stored and applied when it does (response status PRE_ACCEPTED). Requires BYORK Light to be enabled for the tenant.
      parameters:
        - $ref: '#/components/parameters/X-Idempotency-Key'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ByorkVerdictRequest'
      responses:
        '200':
          description: Verdict applied (COMPLETED) or pre-accepted (PRE_ACCEPTED).
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ByorkVerdictResponse'
        '400':
          description: BYORK Light not enabled for tenant or invalid verdict.
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorSchema'
        '409':
          description: BYORK decision already final, screening already completed, or state inconsistent.
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorSchema'
        '425':
          description: Too Early - transaction not found (screening not started yet).
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorSchema'
        '500':
          description: Internal server error.
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorSchema'
        default:
          $ref: '#/components/responses/Error'
      tags:
        - Compliance
      x-rate-limit-category: write
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<ByorkVerdictResponse>> = fireblocks.compliance.setByorkVerdict(complianceApiSetByorkVerdictRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<ByorkVerdictResponse>> response = fireblocks.compliance().setByorkVerdict(byorkVerdictRequest, idempotencyKey);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.compliance.set_byork_verdict(byork_verdict_request, idempotency_key);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<ByorkVerdictResponse>> = fireblocks.compliance.setByorkVerdict(complianceApiSetByorkVerdictRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<ByorkVerdictResponse>> response = fireblocks.compliance().setByorkVerdict(byorkVerdictRequest, idempotencyKey);
        - lang: Python
          source: response = fireblocks.compliance.set_byork_verdict(byork_verdict_request, idempotency_key);
  /screening/configurations:
    put:
      operationId: updateScreeningConfiguration
      summary: Tenant - Screening Configuration
      x-rate-limit-category: write
      description: Update tenant screening configuration.
      parameters:
        - $ref: '#/components/parameters/X-Idempotency-Key'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ScreeningUpdateConfigurations'
      responses:
        '200':
          description: Tenant Screening configuration updated successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ScreeningUpdateConfigurations'
      tags:
        - Compliance
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<ScreeningUpdateConfigurations>> = fireblocks.compliance.updateScreeningConfiguration(complianceApiUpdateScreeningConfigurationRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<ScreeningUpdateConfigurations>> response = fireblocks.compliance().updateScreeningConfiguration(screeningUpdateConfigurations, idempotencyKey);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.compliance.update_screening_configuration(screening_update_configurations, idempotency_key);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<ScreeningUpdateConfigurations>> = fireblocks.compliance.updateScreeningConfiguration(complianceApiUpdateScreeningConfigurationRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<ScreeningUpdateConfigurations>> response = fireblocks.compliance().updateScreeningConfiguration(screeningUpdateConfigurations, idempotencyKey);
        - lang: Python
          source: response = fireblocks.compliance.update_screening_configuration(screening_update_configurations, idempotency_key);
  /screening/transaction/{txId}:
    get:
      operationId: getScreeningFullDetails
      summary: Provides all the compliance details for the given screened transaction.
      description: Provides all the compliance details for the given screened transaction.
      parameters:
        - in: path
          name: txId
          required: true
          description: Fireblocks transaction ID of the screened transaction
          example: 550e8400-e29b-41d4-a716-446655440000
          schema:
            type: string
      responses:
        '200':
          description: A compliance object
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ComplianceResultFullPayload'
        default:
          $ref: '#/components/responses/Error'
      tags:
        - Compliance
      x-rate-limit-category: query
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<ComplianceResultFullPayload>> = fireblocks.compliance.getScreeningFullDetails(complianceApiGetScreeningFullDetailsRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<ComplianceResultFullPayload>> response = fireblocks.compliance().getScreeningFullDetails(txId);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.compliance.get_screening_full_details(tx_id);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<ComplianceResultFullPayload>> = fireblocks.compliance.getScreeningFullDetails(complianceApiGetScreeningFullDetailsRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<ComplianceResultFullPayload>> response = fireblocks.compliance().getScreeningFullDetails(txId);
        - lang: Python
          source: response = fireblocks.compliance.get_screening_full_details(tx_id);
  /screening/transaction/{txId}/bypass_screening_policy:
    post:
      operationId: retryRejectedTransactionBypassScreeningChecks
      summary: Bypass Screening Policy
      description: Triggers a new transaction, with the API user as the initiator, bypassing the screening policy checks. This endpoint is restricted to Admin API users and is only applicable to outgoing transactions.
      parameters:
        - in: path
          name: txId
          required: true
          description: The transaction id that was rejected by screening checks
          example: 550e8400-e29b-41d4-a716-446655440000
          schema:
            type: string
        - $ref: '#/components/parameters/X-Idempotency-Key'
      responses:
        '201':
          description: A transaction object
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreateTransactionResponse'
        default:
          $ref: '#/components/responses/Error'
      tags:
        - Compliance
      x-rate-limit-category: write
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<CreateTransactionResponse>> = fireblocks.compliance.retryRejectedTransactionBypassScreeningChecks(complianceApiRetryRejectedTransactionBypassScreeningChecksRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<CreateTransactionResponse>> response = fireblocks.compliance().retryRejectedTransactionBypassScreeningChecks(txId, idempotencyKey);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.compliance.retry_rejected_transaction_bypass_screening_checks(tx_id, idempotency_key);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<CreateTransactionResponse>> = fireblocks.compliance.retryRejectedTransactionBypassScreeningChecks(complianceApiRetryRejectedTransactionBypassScreeningChecksRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<CreateTransactionResponse>> response = fireblocks.compliance().retryRejectedTransactionBypassScreeningChecks(txId, idempotencyKey);
        - lang: Python
          source: response = fireblocks.compliance.retry_rejected_transaction_bypass_screening_checks(tx_id, idempotency_key);
  /screening/travel_rule/policy_configuration:
    get:
      operationId: getScreeningConfiguration
      summary: Get Travel Rule Screening Policy Configuration
      description: Retrieves the configuration for Travel Rule screening policy.
      parameters: []
      responses:
        '200':
          description: Screening policy configuration retrieved successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ScreeningConfigurationsRequest'
      tags:
        - Compliance Screening Configuration
      x-rate-limit-category: write
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<ScreeningConfigurationsRequest>> = fireblocks.complianceScreeningConfiguration.getScreeningConfiguration();'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<ScreeningConfigurationsRequest>> response = fireblocks.complianceScreeningConfiguration().getScreeningConfiguration();
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.compliance_screening_configuration.get_screening_configuration();
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<ScreeningConfigurationsRequest>> = fireblocks.complianceScreeningConfiguration.getScreeningConfiguration();'
        - lang: Java
          source: CompletableFuture<ApiResponse<ScreeningConfigurationsRequest>> response = fireblocks.complianceScreeningConfiguration().getScreeningConfiguration();
        - lang: Python
          source: response = fireblocks.compliance_screening_configuration.get_screening_configuration();
    put:
      operationId: updateTravelRuleConfig
      summary: Update Travel Rule Configuration
      x-rate-limit-category: write
      description: Updates bypass screening, inbound delay, or outbound delay configurations for Travel Rule.
      parameters:
        - $ref: '#/components/parameters/X-Idempotency-Key'
      responses:
        '200':
          description: Configuration updated successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ScreeningConfigurationsRequest'
      tags:
        - Compliance
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<ScreeningConfigurationsRequest>> = fireblocks.compliance.updateTravelRuleConfig(complianceApiUpdateTravelRuleConfigRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<ScreeningConfigurationsRequest>> response = fireblocks.compliance().updateTravelRuleConfig(idempotencyKey);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.compliance.update_travel_rule_config(idempotency_key);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<ScreeningConfigurationsRequest>> = fireblocks.compliance.updateTravelRuleConfig(complianceApiUpdateTravelRuleConfigRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<ScreeningConfigurationsRequest>> response = fireblocks.compliance().updateTravelRuleConfig(idempotencyKey);
        - lang: Python
          source: response = fireblocks.compliance.update_travel_rule_config(idempotency_key);
  /screening/travel_rule/post_screening_policy:
    get:
      operationId: getPostScreeningPolicy
      summary: Travel Rule - View Post-Screening Policy
      description: Get the post-screening policy for Travel Rule.
      parameters: []
      responses:
        '200':
          description: Post-screening policy retrieved successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ScreeningPolicyResponse'
      tags:
        - Compliance
      x-rate-limit-category: query
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<ScreeningPolicyResponse>> = fireblocks.compliance.getPostScreeningPolicy();'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<ScreeningPolicyResponse>> response = fireblocks.compliance().getPostScreeningPolicy();
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.compliance.get_post_screening_policy();
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<ScreeningPolicyResponse>> = fireblocks.compliance.getPostScreeningPolicy();'
        - lang: Java
          source: CompletableFuture<ApiResponse<ScreeningPolicyResponse>> response = fireblocks.compliance().getPostScreeningPolicy();
        - lang: Python
          source: response = fireblocks.compliance.get_post_screening_policy();
  /screening/travel_rule/screening_policy:
    get:
      operationId: getScreeningPolicy
      summary: Travel Rule - View Screening Policy
      description: Get the screening policy for Travel Rule.
      parameters: []
      responses:
        '200':
          description: Screening policy retrieved successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ScreeningProviderRulesConfigurationResponse'
      tags:
        - Compliance
      x-rate-limit-category: query
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<ScreeningProviderRulesConfigurationResponse>> = fireblocks.compliance.getScreeningPolicy();'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<ScreeningProviderRulesConfigurationResponse>> response = fireblocks.compliance().getScreeningPolicy();
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.compliance.get_screening_policy();
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<ScreeningProviderRulesConfigurationResponse>> = fireblocks.compliance.getScreeningPolicy();'
        - lang: Java
          source: CompletableFuture<ApiResponse<ScreeningProviderRulesConfigurationResponse>> response = fireblocks.compliance().getScreeningPolicy();
        - lang: Python
          source: response = fireblocks.compliance.get_screening_policy();
  /connected_accounts:
    get:
      summary: Get connected accounts
      description: |
        Returns all connected accounts.

        **Note:** This endpoint is currently in beta and might be subject to changes.
      tags:
        - Connected Accounts (Beta)
      x-rate-limit-category: query
      parameters:
        - name: mainAccounts
          in: query
          required: false
          description: Whether to include only main accounts in the response.
          schema:
            type: boolean
            default: false
        - name: pageSize
          in: query
          required: false
          description: Page size for pagination.
          schema:
            type: integer
            minimum: 1
            maximum: 100
        - name: pageCursor
          in: query
          required: false
          description: Page cursor for pagination.
          schema:
            type: string
      operationId: getConnectedAccounts
      responses:
        '200':
          description: Get accounts response
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ConnectedAccountsResponse'
        default:
          $ref: '#/components/responses/Error'
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<ConnectedAccountsResponse>> = fireblocks.connectedAccountsBeta.getConnectedAccounts(connectedAccountsBetaApiGetConnectedAccountsRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<ConnectedAccountsResponse>> response = fireblocks.connectedAccountsBeta().getConnectedAccounts(mainAccounts, pageSize, pageCursor);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.connected_accounts_beta.get_connected_accounts(main_accounts, page_size, page_cursor);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<ConnectedAccountsResponse>> = fireblocks.connectedAccountsBeta.getConnectedAccounts(connectedAccountsBetaApiGetConnectedAccountsRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<ConnectedAccountsResponse>> response = fireblocks.connectedAccountsBeta().getConnectedAccounts(mainAccounts, pageSize, pageCursor);
        - lang: Python
          source: response = fireblocks.connected_accounts_beta.get_connected_accounts(main_accounts, page_size, page_cursor);
    post:
      summary: Add a connected account
      description: |
        Creates a new connected account for the authenticated tenant.

        The `creds` field must be a Base64-encoded RSA-encrypted credential blob.
        Use `GET /exchange_accounts/credentials_public_key` to retrieve the public key for encryption.

        The `providerType` is derived server-side from the `providerId` — callers do not supply it.

        Endpoint Permission: Editor, Admin, Non-Signing Admin.

        **Note:** This endpoint is currently in beta and might be subject to changes.
      tags:
        - Connected Accounts (Beta)
      x-rate-limit-category: write
      operationId: addConnectedAccount
      parameters:
        - $ref: '#/components/parameters/X-Idempotency-Key'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AddConnectedAccountRequest'
      responses:
        '201':
          description: Account created (or pending approval).
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AddConnectedAccountResponse'
        '400':
          description: Bad request — invalid field or provider constraints violated.
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ConnectedAccountErrorResponse'
        '401':
          description: Unauthorized. Missing / invalid JWT token, or insufficient role (Editor or higher required).
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ConnectedAccountErrorResponse'
        '403':
          description: Feature not enabled for this tenant.
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ConnectedAccountErrorResponse'
        '404':
          description: mainAccountId not found.
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ConnectedAccountErrorResponse'
        '422':
          description: Invalid credentials.
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ConnectedAccountErrorResponse'
        default:
          $ref: '#/components/responses/Error'
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<AddConnectedAccountResponse>> = fireblocks.connectedAccountsBeta.addConnectedAccount(connectedAccountsBetaApiAddConnectedAccountRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<AddConnectedAccountResponse>> response = fireblocks.connectedAccountsBeta().addConnectedAccount(addConnectedAccountRequest, idempotencyKey);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.connected_accounts_beta.add_connected_account(add_connected_account_request, idempotency_key);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<AddConnectedAccountResponse>> = fireblocks.connectedAccountsBeta.addConnectedAccount(connectedAccountsBetaApiAddConnectedAccountRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<AddConnectedAccountResponse>> response = fireblocks.connectedAccountsBeta().addConnectedAccount(addConnectedAccountRequest, idempotencyKey);
        - lang: Python
          source: response = fireblocks.connected_accounts_beta.add_connected_account(add_connected_account_request, idempotency_key);
  /connected_accounts/{accountId}:
    get:
      tags:
        - Connected Accounts (Beta)
      x-rate-limit-category: read
      parameters:
        - name: accountId
          in: path
          required: true
          description: The ID of the account to fetch.
          schema:
            type: string
            minLength: 1
      summary: Get connected account
      description: |
        Retrieve detailed information about a specific connected account by ID.

        **Note:** This endpoint is currently in beta and might be subject to changes.
      operationId: getConnectedAccount
      responses:
        '200':
          description: Account response
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ConnectedSingleAccountResponse'
        default:
          $ref: '#/components/responses/Error'
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<ConnectedSingleAccountResponse>> = fireblocks.connectedAccountsBeta.getConnectedAccount(connectedAccountsBetaApiGetConnectedAccountRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<ConnectedSingleAccountResponse>> response = fireblocks.connectedAccountsBeta().getConnectedAccount(accountId);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.connected_accounts_beta.get_connected_account(account_id);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<ConnectedSingleAccountResponse>> = fireblocks.connectedAccountsBeta.getConnectedAccount(connectedAccountsBetaApiGetConnectedAccountRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<ConnectedSingleAccountResponse>> response = fireblocks.connectedAccountsBeta().getConnectedAccount(accountId);
        - lang: Python
          source: response = fireblocks.connected_accounts_beta.get_connected_account(account_id);
    delete:
      tags:
        - Connected Accounts (Beta)
      x-rate-limit-category: write
      summary: Disconnect connected account
      description: |
        Disconnect a connected account by ID.

        **Note**:
        - This endpoint is currently in beta and might be subject to changes.
      parameters:
        - name: accountId
          in: path
          required: true
          description: The ID of the account to disconnect.
          schema:
            type: string
            minLength: 1
      operationId: disconnectConnectedAccount
      responses:
        '204':
          description: Account disconnected successfully
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
        default:
          $ref: '#/components/responses/Error'
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<void>> = fireblocks.connectedAccountsBeta.disconnectConnectedAccount(connectedAccountsBetaApiDisconnectConnectedAccountRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<Void>> response = fireblocks.connectedAccountsBeta().disconnectConnectedAccount(accountId);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.connected_accounts_beta.disconnect_connected_account(account_id);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<void>> = fireblocks.connectedAccountsBeta.disconnectConnectedAccount(connectedAccountsBetaApiDisconnectConnectedAccountRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<Void>> response = fireblocks.connectedAccountsBeta().disconnectConnectedAccount(accountId);
        - lang: Python
          source: response = fireblocks.connected_accounts_beta.disconnect_connected_account(account_id);
  /connected_accounts/{accountId}/allowlist:
    get:
      summary: Get allowlist for connected account
      description: |
        Retrieves the address allowlist for a specified connected account.

        **Note:** This endpoint is currently in beta and might be subject to changes. Currently supports CoinbaseExchange/Binance accounts only.
      tags:
        - Connected Accounts (Beta)
      x-rate-limit-category: query
      parameters:
        - name: accountId
          in: path
          required: true
          description: The connected account identifier
          schema:
            type: string
        - name: status
          in: query
          required: false
          description: Filter by allowlist entry status
          schema:
            $ref: '#/components/schemas/AllowlistEntryStatus'
        - name: assetId
          in: query
          required: false
          description: |
            Filter by Fireblocks asset ID.

            See [List assets](https://developers.fireblocks.com/reference/listassets) for the canonical list of Fireblocks asset IDs.
          schema:
            type: string
        - name: networkId
          in: query
          required: false
          description: |
            Filter by Fireblocks network ID.

            See [List blockchains](https://developers.fireblocks.com/reference/listblockchains) for the canonical list of Fireblocks blockchain identifiers.
          schema:
            type: string
        - name: address
          in: query
          required: false
          description: Filter by specific address
          schema:
            type: string
        - name: pageCursor
          in: query
          required: false
          description: Pagination cursor for next page
          schema:
            type: string
        - name: pageSize
          in: query
          required: false
          description: Maximum number of entries to return
          schema:
            type: integer
            minimum: 1
            maximum: 1000
        - name: sortBy
          in: query
          required: false
          description: Field to sort results by.
          schema:
            type: string
            default: addedAt
            enum:
              - addedAt
              - lastSyncedAt
        - name: order
          in: query
          required: false
          description: Sort order (ASC or DESC).
          schema:
            type: string
            default: DESC
            example: ASC
            enum:
              - ASC
              - DESC
      operationId: getConnectedAccountAllowlist
      responses:
        '200':
          description: Allowlist entries response
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AllowlistResponse'
        '404':
          description: Connected account not found
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ConnectedAccountErrorResponse'
        default:
          $ref: '#/components/responses/Error'
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<AllowlistResponse>> = fireblocks.connectedAccountsBeta.getConnectedAccountAllowlist(connectedAccountsBetaApiGetConnectedAccountAllowlistRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<AllowlistResponse>> response = fireblocks.connectedAccountsBeta().getConnectedAccountAllowlist(accountId, status, assetId, networkId, address, pageCursor, pageSize, sortBy, order);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.connected_accounts_beta.get_connected_account_allowlist(account_id, status, asset_id, network_id, address, page_cursor, page_size, sort_by, order);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<AllowlistResponse>> = fireblocks.connectedAccountsBeta.getConnectedAccountAllowlist(connectedAccountsBetaApiGetConnectedAccountAllowlistRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<AllowlistResponse>> response = fireblocks.connectedAccountsBeta().getConnectedAccountAllowlist(accountId, status, assetId, networkId, address, pageCursor, pageSize, sortBy, order);
        - lang: Python
          source: response = fireblocks.connected_accounts_beta.get_connected_account_allowlist(account_id, status, asset_id, network_id, address, page_cursor, page_size, sort_by, order);
  /connected_accounts/{accountId}/allowlist/{allowlistId}:
    get:
      summary: Get a single allowlist entry for a connected account
      description: |
        Retrieves a single allowlist entry by its Fireblocks identifier for a specified connected account.

        **Note:** This endpoint is currently in beta and might be subject to changes. Currently supports CoinbaseExchange/Binance accounts only.
      tags:
        - Connected Accounts (Beta)
      x-rate-limit-category: query
      parameters:
        - name: accountId
          in: path
          required: true
          description: The connected account identifier
          schema:
            type: string
        - name: allowlistId
          in: path
          required: true
          description: The Fireblocks allowlist entry identifier
          schema:
            type: string
      operationId: getConnectedAccountAllowlistEntry
      responses:
        '200':
          description: Allowlist entry response
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AllowlistEntryResponse'
        '404':
          description: Connected account or allowlist entry not found
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ConnectedAccountErrorResponse'
        default:
          $ref: '#/components/responses/Error'
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<AllowlistEntryResponse>> = fireblocks.connectedAccountsBeta.getConnectedAccountAllowlistEntry(connectedAccountsBetaApiGetConnectedAccountAllowlistEntryRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<AllowlistEntryResponse>> response = fireblocks.connectedAccountsBeta().getConnectedAccountAllowlistEntry(accountId, allowlistId);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.connected_accounts_beta.get_connected_account_allowlist_entry(account_id, allowlist_id);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<AllowlistEntryResponse>> = fireblocks.connectedAccountsBeta.getConnectedAccountAllowlistEntry(connectedAccountsBetaApiGetConnectedAccountAllowlistEntryRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<AllowlistEntryResponse>> response = fireblocks.connectedAccountsBeta().getConnectedAccountAllowlistEntry(accountId, allowlistId);
        - lang: Python
          source: response = fireblocks.connected_accounts_beta.get_connected_account_allowlist_entry(account_id, allowlist_id);
  /connected_accounts/{accountId}/allowlist/sync:
    post:
      summary: Sync allowlist for connected account
      description: |
        Triggers an on-demand sync from the exchange, bypassing the cache and fetching live data immediately.

        **Rate limit:** 1 request per minute per connected account.

        **Note:** This endpoint is currently in beta and might be subject to changes. Currently supports CoinbaseExchange/Binance accounts only.
      tags:
        - Connected Accounts (Beta)
      x-rate-limit-category: async
      parameters:
        - $ref: '#/components/parameters/X-Idempotency-Key'
        - name: accountId
          in: path
          required: true
          description: The connected account identifier
          schema:
            type: string
      operationId: syncConnectedAccountAllowlist
      responses:
        '202':
          description: Sync request accepted and processing
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
        default:
          $ref: '#/components/responses/Error'
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<void>> = fireblocks.connectedAccountsBeta.syncConnectedAccountAllowlist(connectedAccountsBetaApiSyncConnectedAccountAllowlistRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<Void>> response = fireblocks.connectedAccountsBeta().syncConnectedAccountAllowlist(accountId, idempotencyKey);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.connected_accounts_beta.sync_connected_account_allowlist(account_id, idempotency_key);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<void>> = fireblocks.connectedAccountsBeta.syncConnectedAccountAllowlist(connectedAccountsBetaApiSyncConnectedAccountAllowlistRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<Void>> response = fireblocks.connectedAccountsBeta().syncConnectedAccountAllowlist(accountId, idempotencyKey);
        - lang: Python
          source: response = fireblocks.connected_accounts_beta.sync_connected_account_allowlist(account_id, idempotency_key);
  /connected_accounts/{accountId}/balances:
    get:
      summary: Get balances for an account
      description: |
        Retrieve current asset balances for a specific connected account as a flat list (one row per `assetId`, `balanceType`).

        **Note:** This endpoint is currently in beta and might be subject to changes.
      tags:
        - Connected Accounts (Beta)
      x-rate-limit-category: query
      parameters:
        - name: accountId
          in: path
          required: true
          description: The ID of the account to fetch balances for.
          schema:
            type: string
            minLength: 1
        - name: pageSize
          in: query
          required: false
          description: Page size for pagination.
          schema:
            type: integer
            minimum: 1
            maximum: 1000
        - name: pageCursor
          in: query
          required: false
          description: Page cursor for pagination.
          schema:
            type: string
      operationId: getConnectedAccountBalances
      responses:
        '200':
          description: Account balances response
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ConnectedAccountBalancesResponse'
        default:
          $ref: '#/components/responses/Error'
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<ConnectedAccountBalancesResponse>> = fireblocks.connectedAccountsBeta.getConnectedAccountBalances(connectedAccountsBetaApiGetConnectedAccountBalancesRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<ConnectedAccountBalancesResponse>> response = fireblocks.connectedAccountsBeta().getConnectedAccountBalances(accountId, pageSize, pageCursor);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.connected_accounts_beta.get_connected_account_balances(account_id, page_size, page_cursor);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<ConnectedAccountBalancesResponse>> = fireblocks.connectedAccountsBeta.getConnectedAccountBalances(connectedAccountsBetaApiGetConnectedAccountBalancesRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<ConnectedAccountBalancesResponse>> response = fireblocks.connectedAccountsBeta().getConnectedAccountBalances(accountId, pageSize, pageCursor);
        - lang: Python
          source: response = fireblocks.connected_accounts_beta.get_connected_account_balances(account_id, page_size, page_cursor);
  /connected_accounts/{accountId}/manifest/capabilities/trading/pairs:
    get:
      summary: Get supported trading pairs for an account
      description: |
        Retrieve all asset trading pairs supported by a specific connected account, including the pair type (`quote`, `market`, `onOffRamp`).

        **Note:** This endpoint is currently in beta and might be subject to changes.
      tags:
        - Connected Accounts (Beta)
      x-rate-limit-category: query
      parameters:
        - name: accountId
          in: path
          required: true
          description: The ID of the account to fetch supported pairs for.
          schema:
            type: string
            minLength: 1
        - name: pageSize
          in: query
          required: false
          description: Page size for pagination.
          schema:
            type: integer
            default: 100
            minimum: 1
            maximum: 100
        - name: pageCursor
          in: query
          required: false
          description: Page cursor for pagination.
          schema:
            type: string
      operationId: getConnectedAccountTradingPairs
      responses:
        '200':
          description: Supported pairs response
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ConnectedAccountTradingPairsResponse'
        default:
          $ref: '#/components/responses/Error'
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<ConnectedAccountTradingPairsResponse>> = fireblocks.connectedAccountsBeta.getConnectedAccountTradingPairs(connectedAccountsBetaApiGetConnectedAccountTradingPairsRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<ConnectedAccountTradingPairsResponse>> response = fireblocks.connectedAccountsBeta().getConnectedAccountTradingPairs(accountId, pageSize, pageCursor);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.connected_accounts_beta.get_connected_account_trading_pairs(account_id, page_size, page_cursor);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<ConnectedAccountTradingPairsResponse>> = fireblocks.connectedAccountsBeta.getConnectedAccountTradingPairs(connectedAccountsBetaApiGetConnectedAccountTradingPairsRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<ConnectedAccountTradingPairsResponse>> response = fireblocks.connectedAccountsBeta().getConnectedAccountTradingPairs(accountId, pageSize, pageCursor);
        - lang: Python
          source: response = fireblocks.connected_accounts_beta.get_connected_account_trading_pairs(account_id, page_size, page_cursor);
  /connected_accounts/{accountId}/rates:
    get:
      summary: Get exchange rates for an account
      description: |
        Retrieve current exchange rates for converting between specific assets in a connected account.

        **Note:** This endpoint is currently in beta and might be subject to changes.
      tags:
        - Connected Accounts (Beta)
      x-rate-limit-category: read
      parameters:
        - name: accountId
          in: path
          required: true
          description: The ID of the account to fetch rates for.
          schema:
            type: string
            minLength: 1
        - name: baseAssetId
          in: query
          required: true
          description: The ID of the asset to fetch rates for.
          schema:
            type: string
            minLength: 1
        - name: quoteAssetId
          in: query
          required: true
          description: The ID of the asset to get the rates nominally.
          schema:
            type: string
            minLength: 1
      operationId: getConnectedAccountRates
      responses:
        '200':
          description: Rates response
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ConnectedAccountRateResponse'
        default:
          $ref: '#/components/responses/Error'
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<ConnectedAccountRateResponse>> = fireblocks.connectedAccountsBeta.getConnectedAccountRates(connectedAccountsBetaApiGetConnectedAccountRatesRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<ConnectedAccountRateResponse>> response = fireblocks.connectedAccountsBeta().getConnectedAccountRates(accountId, baseAssetId, quoteAssetId);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.connected_accounts_beta.get_connected_account_rates(account_id, base_asset_id, quote_asset_id);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<ConnectedAccountRateResponse>> = fireblocks.connectedAccountsBeta.getConnectedAccountRates(connectedAccountsBetaApiGetConnectedAccountRatesRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<ConnectedAccountRateResponse>> response = fireblocks.connectedAccountsBeta().getConnectedAccountRates(accountId, baseAssetId, quoteAssetId);
        - lang: Python
          source: response = fireblocks.connected_accounts_beta.get_connected_account_rates(account_id, base_asset_id, quote_asset_id);
  /connected_accounts/{accountId}/rename:
    post:
      tags:
        - Connected Accounts (Beta)
      x-rate-limit-category: write
      summary: Rename Connected Account
      description: |
        Rename a connected account by account ID.

        **Note:** This endpoint is currently in beta and might be subject to changes.
      operationId: renameConnectedAccount
      parameters:
        - name: accountId
          in: path
          required: true
          description: The unique identifier of the connected account
          schema:
            type: string
            minLength: 1
        - $ref: '#/components/parameters/X-Idempotency-Key'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RenameConnectedAccountRequest'
      responses:
        '200':
          description: Successfully renamed connected account.
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RenameConnectedAccountResponse'
        '400':
          description: Bad request. Missing tenantId, accountId, or accountName.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ConnectedAccountErrorResponse'
        '401':
          description: Unauthorized. Missing / invalid JWT token in Authorization header.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ConnectedAccountErrorResponse'
        '403':
          description: Failed to rename connected account.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ConnectedAccountErrorResponse'
        '404':
          description: Connected account not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ConnectedAccountErrorResponse'
        '409':
          description: Conflict. Account name is already in use by another account.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ConnectedAccountErrorResponse'
        default:
          $ref: '#/components/responses/Error'
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<RenameConnectedAccountResponse>> = fireblocks.connectedAccountsBeta.renameConnectedAccount(connectedAccountsBetaApiRenameConnectedAccountRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<RenameConnectedAccountResponse>> response = fireblocks.connectedAccountsBeta().renameConnectedAccount(renameConnectedAccountRequest, accountId, idempotencyKey);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.connected_accounts_beta.rename_connected_account(rename_connected_account_request, account_id, idempotency_key);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<RenameConnectedAccountResponse>> = fireblocks.connectedAccountsBeta.renameConnectedAccount(connectedAccountsBetaApiRenameConnectedAccountRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<RenameConnectedAccountResponse>> response = fireblocks.connectedAccountsBeta().renameConnectedAccount(renameConnectedAccountRequest, accountId, idempotencyKey);
        - lang: Python
          source: response = fireblocks.connected_accounts_beta.rename_connected_account(rename_connected_account_request, account_id, idempotency_key);
  /management/users:
    get:
      operationId: getConsoleUsers
      summary: Get console users
      description: |-
        Get console users for your workspace.
        - Please note that this endpoint is available only for API keys with Admin/Non Signing Admin permissions.
        Endpoint Permission: Admin, Non-Signing Admin.
      tags:
        - Console User
      x-rate-limit-category: query
      x-readme:
        code-samples:
          - language: javascript
            code: const consoleUsers = await fireblocks.getConsoleUsers();
            name: Fireblocks SDK Javascript example
          - language: python
            code: consoleUsers = fireblocks.get_console_users()
            name: Fireblocks SDK Python example (Legacy)
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<GetConsoleUsersResponse>> = fireblocks.consoleUser.getConsoleUsers();'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<GetConsoleUsersResponse>> response = fireblocks.consoleUser().getConsoleUsers();
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.console_user.get_console_users();
            name: Fireblocks SDK Python example
      responses:
        '200':
          description: got console users
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetConsoleUsersResponse'
        '401':
          description: Unauthorized. Missing / invalid JWT token in Authorization header.
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '403':
          description: Lacking permissions.
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        5XX:
          description: Internal error.
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        default:
          $ref: '#/components/responses/Error'
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<GetConsoleUsersResponse>> = fireblocks.consoleUser.getConsoleUsers();'
        - lang: Java
          source: CompletableFuture<ApiResponse<GetConsoleUsersResponse>> response = fireblocks.consoleUser().getConsoleUsers();
        - lang: Python
          source: response = fireblocks.console_user.get_console_users();
    post:
      operationId: createConsoleUser
      summary: Create console user
      description: |-
        Create console users in your workspace
        - Please note that this endpoint is available only for API keys with Admin/Non Signing Admin permissions.
        Learn more about Fireblocks Users management in the following [guide](https://developers.fireblocks.com/docs/manage-users).
        Endpoint Permission: Admin, Non-Signing Admin.
      tags:
        - Console User
      x-rate-limit-category: write
      x-readme:
        code-samples:
          - language: javascript
            code: const res = await fireblocks.createConsoleUser(firstName, lastName, email, role);
            name: Fireblocks SDK Javascript example
          - language: python
            code: res = fireblocks.create_console_user(first_name, last_name, email, role)
            name: Fireblocks SDK Python example (Legacy)
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<void>> = fireblocks.consoleUser.createConsoleUser(consoleUserApiCreateConsoleUserRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<Void>> response = fireblocks.consoleUser().createConsoleUser(createConsoleUser, idempotencyKey);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.console_user.create_console_user(create_console_user, idempotency_key);
            name: Fireblocks SDK Python example
      parameters:
        - $ref: '#/components/parameters/X-Idempotency-Key'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateConsoleUser'
      responses:
        '200':
          description: User creation approval request has been sent
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
        '400':
          description: bad request
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
        '401':
          description: Unauthorized. Missing / invalid JWT token in Authorization header.
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '403':
          description: Lacking permissions.
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        5XX:
          description: Internal error.
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        default:
          $ref: '#/components/responses/Error'
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<void>> = fireblocks.consoleUser.createConsoleUser(consoleUserApiCreateConsoleUserRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<Void>> response = fireblocks.consoleUser().createConsoleUser(createConsoleUser, idempotencyKey);
        - lang: Python
          source: response = fireblocks.console_user.create_console_user(create_console_user, idempotency_key);
  /contract_interactions/base_asset_id/{baseAssetId}/contract_address/{contractAddress}/decode:
    post:
      operationId: decodeContractData
      summary: Decode a function call data, error, or event log
      x-rate-limit-category: read
      description: Decode a function call data, error, or event log from a deployed contract by blockchain native asset id and contract address.
      parameters:
        - $ref: '#/components/parameters/X-Idempotency-Key'
        - name: contractAddress
          required: true
          in: path
          description: The contract's onchain address
          example: '0xC2c4e1Db41F0bB97996D0eD0542D2170d146FB66'
          schema:
            type: string
        - name: baseAssetId
          required: true
          in: path
          description: The blockchain native asset identifier
          example: ETH
          schema:
            type: string
      x-readme:
        code-samples:
          - language: javascript
            code: |-
              const payload = {
                "data": "0xcd21db4f000000000000000000000000000000000000000000000000000000006790c645",
                "dataType": "ERROR"
              } const decodeResponse = await fireblocks.decodeContractData(baseAssetId, contractAddress, payload);
            name: Fireblocks SDK Javascript example
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<ContractDataDecodedResponse>> = fireblocks.contractInteractions.decodeContractData(contractInteractionsApiDecodeContractDataRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<ContractDataDecodedResponse>> response = fireblocks.contractInteractions().decodeContractData(contractDataDecodeRequest, contractAddress, baseAssetId, idempotencyKey);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.contract_interactions.decode_contract_data(contract_data_decode_request, contract_address, base_asset_id, idempotency_key);
            name: Fireblocks SDK Python example
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ContractDataDecodeRequest'
      responses:
        '200':
          description: Decoded data retrieved successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ContractDataDecodedResponse'
        '400':
          description: Bad request, invalid input data or parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ContractDataDecodeError'
        default:
          $ref: '#/components/responses/Error'
      tags:
        - Contract Interactions
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<ContractDataDecodedResponse>> = fireblocks.contractInteractions.decodeContractData(contractInteractionsApiDecodeContractDataRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<ContractDataDecodedResponse>> response = fireblocks.contractInteractions().decodeContractData(contractDataDecodeRequest, contractAddress, baseAssetId, idempotencyKey);
        - lang: Python
          source: response = fireblocks.contract_interactions.decode_contract_data(contract_data_decode_request, contract_address, base_asset_id, idempotency_key);
  /contract_interactions/base_asset_id/{baseAssetId}/contract_address/{contractAddress}/functions:
    get:
      operationId: getDeployedContractAbi
      summary: Return deployed contract's ABI
      x-rate-limit-category: read
      description: |-
        Return deployed contract's ABI by blockchain native asset id and contract address.
        Endpoint Permission: Admin, Non-Signing Admin, Signer, Approver, Editor, and Viewer.
      parameters:
        - $ref: '#/components/parameters/X-Idempotency-Key'
        - name: contractAddress
          required: true
          in: path
          description: The contract's onchain address
          example: '0xC2c4e1Db41F0bB97996D0eD0542D2170d146FB66'
          schema:
            type: string
        - name: baseAssetId
          description: The blockchain base assetId
          required: true
          in: path
          example: ETH
          schema:
            type: string
      x-readme:
        code-samples:
          - language: python
            code: deployed_contract_abi = fireblocks.get_contracts_abi(base_asset_id, contract_address)
            name: Fireblocks SDK Python example (Legacy)
          - language: javascript
            code: const deployedContractAbi = await fireblocks.getContractAbi(baseAssetId, contractAddress);
            name: Fireblocks SDK Javascript example
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<ContractAbiResponseDto>> = fireblocks.contractInteractions.getDeployedContractAbi(contractInteractionsApiGetDeployedContractAbiRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<ContractAbiResponseDto>> response = fireblocks.contractInteractions().getDeployedContractAbi(contractAddress, baseAssetId, idempotencyKey);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.contract_interactions.get_deployed_contract_abi(contract_address, base_asset_id, idempotency_key);
            name: Fireblocks SDK Python example
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ContractAbiResponseDto'
        default:
          $ref: '#/components/responses/Error'
      tags:
        - Contract Interactions
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<ContractAbiResponseDto>> = fireblocks.contractInteractions.getDeployedContractAbi(contractInteractionsApiGetDeployedContractAbiRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<ContractAbiResponseDto>> response = fireblocks.contractInteractions().getDeployedContractAbi(contractAddress, baseAssetId, idempotencyKey);
        - lang: Python
          source: response = fireblocks.contract_interactions.get_deployed_contract_abi(contract_address, base_asset_id, idempotency_key);
  /contract_interactions/base_asset_id/{baseAssetId}/contract_address/{contractAddress}/functions/read:
    post:
      operationId: readCallFunction
      summary: Call a read function on a deployed contract
      description: Call a read function on a deployed contract by blockchain native asset id and contract address
      parameters:
        - $ref: '#/components/parameters/X-Idempotency-Key'
        - name: contractAddress
          required: true
          in: path
          description: The contract's onchain address
          example: '0xC2c4e1Db41F0bB97996D0eD0542D2170d146FB66'
          schema:
            type: string
        - name: baseAssetId
          required: true
          in: path
          schema:
            type: string
      x-readme:
        code-samples:
          - language: python
            code: read_response = fireblocks.read_contract_call_function(base_asset_id, contract_address, payload)
            name: Fireblocks SDK Python example (Legacy)
          - language: javascript
            code: const readResponse= await fireblocks.readContractCallFunction(baseAssetId, contractAddress, payload);
            name: Fireblocks SDK Javascript example
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<ParameterWithValueList>> = fireblocks.contractInteractions.readCallFunction(contractInteractionsApiReadCallFunctionRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<List<ParameterWithValue>>> response = fireblocks.contractInteractions().readCallFunction(readCallFunctionDto, contractAddress, baseAssetId, idempotencyKey);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.contract_interactions.read_call_function(read_call_function_dto, contract_address, base_asset_id, idempotency_key);
            name: Fireblocks SDK Python example
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ReadCallFunctionDto'
      responses:
        '200':
          description: Read Call Retrieved Successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ParameterWithValueList'
        default:
          $ref: '#/components/responses/Error'
      tags:
        - Contract Interactions
      x-rate-limit-category: read
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<ParameterWithValueList>> = fireblocks.contractInteractions.readCallFunction(contractInteractionsApiReadCallFunctionRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<List<ParameterWithValue>>> response = fireblocks.contractInteractions().readCallFunction(readCallFunctionDto, contractAddress, baseAssetId, idempotencyKey);
        - lang: Python
          source: response = fireblocks.contract_interactions.read_call_function(read_call_function_dto, contract_address, base_asset_id, idempotency_key);
  /contract_interactions/base_asset_id/{baseAssetId}/contract_address/{contractAddress}/functions/write:
    post:
      operationId: writeCallFunction
      summary: Call a write function on a deployed contract
      description: Call a write function on a deployed contract by blockchain native asset id and contract address. This creates an onchain transaction, thus it is an async operation. It returns a transaction id that can be polled for status check
      parameters:
        - $ref: '#/components/parameters/X-Idempotency-Key'
        - name: contractAddress
          required: true
          in: path
          description: The contract's onchain address
          example: '0xC2c4e1Db41F0bB97996D0eD0542D2170d146FB66'
          schema:
            type: string
        - name: baseAssetId
          required: true
          in: path
          schema:
            type: string
      x-readme:
        code-samples:
          - language: python
            code: write_function_response = fireblocks.write_contract_call_function(base_asset_id, contract_address, payload)
            name: Fireblocks SDK Python example (Legacy)
          - language: javascript
            code: const writeFunctionResponse = await fireblocks.writeContractCallFunction(baseAssetId, contractAddress, payload);
            name: Fireblocks SDK Javascript example
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<WriteCallFunctionResponseDto>> = fireblocks.contractInteractions.writeCallFunction(contractInteractionsApiWriteCallFunctionRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<WriteCallFunctionResponseDto>> response = fireblocks.contractInteractions().writeCallFunction(writeCallFunctionDto, contractAddress, baseAssetId, idempotencyKey);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.contract_interactions.write_call_function(write_call_function_dto, contract_address, base_asset_id, idempotency_key);
            name: Fireblocks SDK Python example
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/WriteCallFunctionDto'
      responses:
        '202':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WriteCallFunctionResponseDto'
        default:
          $ref: '#/components/responses/Error'
      tags:
        - Contract Interactions
      x-rate-limit-category: async
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<WriteCallFunctionResponseDto>> = fireblocks.contractInteractions.writeCallFunction(contractInteractionsApiWriteCallFunctionRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<WriteCallFunctionResponseDto>> response = fireblocks.contractInteractions().writeCallFunction(writeCallFunctionDto, contractAddress, baseAssetId, idempotencyKey);
        - lang: Python
          source: response = fireblocks.contract_interactions.write_call_function(write_call_function_dto, contract_address, base_asset_id, idempotency_key);
  /contract_interactions/base_asset_id/{baseAssetId}/tx_hash/{txHash}:
    get:
      operationId: getContractAddress
      summary: Get contract address by transaction hash
      x-rate-limit-category: read
      description: Retrieve the contract address by blockchain native asset ID and transaction hash
      parameters:
        - $ref: '#/components/parameters/X-Idempotency-Key'
        - name: baseAssetId
          required: true
          in: path
          description: The blockchain base assetId
          example: ETH_TEST3
          schema:
            type: string
        - name: txHash
          required: true
          in: path
          description: The transaction hash
          example: '0x3b015ca0518c55d7bff4e3f5aa5d0431705771553ba8a95cf20e34cb597f57f6'
          schema:
            type: string
      x-readme:
        code-samples:
          - language: python
            code: contract_address = fireblocks.get_contract_address(base_asset_id, tx_hash)
            name: Fireblocks SDK Python example (Legacy)
          - language: javascript
            code: const contractAddress = await fireblocks.getContractAddress(baseAssetId, txHash);
            name: Fireblocks SDK Javascript example
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<ContractAddressResponse>> = fireblocks.contractInteractions.getContractAddress(contractInteractionsApiGetContractAddressRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<ContractAddressResponse>> response = fireblocks.contractInteractions().getContractAddress(baseAssetId, txHash, idempotencyKey);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.contract_interactions.get_contract_address(base_asset_id, tx_hash, idempotency_key);
            name: Fireblocks SDK Python example
      responses:
        '200':
          description: Retrieved The Contract Address Successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ContractAddressResponse'
        default:
          $ref: '#/components/responses/Error'
      tags:
        - Contract Interactions
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<ContractAddressResponse>> = fireblocks.contractInteractions.getContractAddress(contractInteractionsApiGetContractAddressRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<ContractAddressResponse>> response = fireblocks.contractInteractions().getContractAddress(baseAssetId, txHash, idempotencyKey);
        - lang: Python
          source: response = fireblocks.contract_interactions.get_contract_address(base_asset_id, tx_hash, idempotency_key);
  /contract_interactions/base_asset_id/{baseAssetId}/tx_hash/{txHash}/receipt:
    get:
      operationId: getTransactionReceipt
      summary: Get transaction receipt
      x-rate-limit-category: read
      description: |-
        Retrieve the transaction receipt by blockchain native asset ID and transaction hash
        > **Note** > This functionality is exclusively available for EVM (Ethereum Virtual Machine) compatible chains. 
        Endpoint Permission: Admin, Non-Signing Admin, Signer, Approver, Editor, and Viewer.
      parameters:
        - name: baseAssetId
          required: true
          in: path
          description: The blockchain base assetId
          example: ETH_TEST6
          schema:
            type: string
        - name: txHash
          required: true
          in: path
          description: The transaction hash
          example: '0x3b015ca0518c55d7bff4e3f5aa5d0431705771553ba8a95cf20e34cb597f57f6'
          schema:
            type: string
      x-readme:
        code-samples:
          - language: python
            code: transaction_receipt = fireblocks.get_transaction_receipt(base_asset_id, tx_hash)
            name: Fireblocks SDK Python example (Legacy)
          - language: javascript
            code: const transactionReceipt = await fireblocks.getTransactionReceipt(baseAssetId, txHash);
            name: Fireblocks SDK Javascript example
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<TransactionReceiptResponse>> = fireblocks.contractInteractions.getTransactionReceipt(contractInteractionsApiGetTransactionReceiptRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<TransactionReceiptResponse>> response = fireblocks.contractInteractions().getTransactionReceipt(baseAssetId, txHash);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.contract_interactions.get_transaction_receipt(base_asset_id, tx_hash);
            name: Fireblocks SDK Python example
      responses:
        '200':
          description: Retrieved The Transaction Receipt Successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TransactionReceiptResponse'
        default:
          $ref: '#/components/responses/Error'
      tags:
        - Contract Interactions
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<TransactionReceiptResponse>> = fireblocks.contractInteractions.getTransactionReceipt(contractInteractionsApiGetTransactionReceiptRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<TransactionReceiptResponse>> response = fireblocks.contractInteractions().getTransactionReceipt(baseAssetId, txHash);
        - lang: Python
          source: response = fireblocks.contract_interactions.get_transaction_receipt(base_asset_id, tx_hash);
  /tokenization/templates:
    get:
      operationId: getContractTemplates
      summary: List all contract templates
      x-rate-limit-category: query
      description: |-
        Return minimal representation of all the contract templates available for the workspace.
        Endpoint Permission: Admin, Non-Signing Admin, Signer, Approver, Editor, Viewer.
      parameters:
        - name: limit
          required: false
          in: query
          description: Items per page (max 100)
          schema:
            minimum: 1
            maximum: 100
            default: 100
            type: number
        - name: offset
          required: false
          in: query
          description: Paging offset
          schema:
            minimum: 0
            default: 0
            type: number
        - name: pageCursor
          required: false
          in: query
          description: Page cursor to get the next page
          example: MjAyMy0xMi0xMyAyMDozNjowOC4zMDI=:MTEwMA==
          schema:
            type: string
        - name: pageSize
          required: false
          in: query
          description: Number of items per page, requesting more then max will return max items
          example: 10
          schema:
            minimum: 1
            maximum: 100
            type: number
        - name: type
          required: false
          in: query
          description: The type of the contract templates you wish to retrieve. Can accept one type, more or none
          example: FUNGIBLE_TOKEN
          schema:
            type: string
            enum:
              - FUNGIBLE_TOKEN
              - NON_FUNGIBLE_TOKEN
              - TOKEN_UTILITY
        - name: initializationPhase
          required: false
          description: For standalone contracts use ON_DEPLOYMENT and for contracts that are behind proxies use POST_DEPLOYMENT
          in: query
          schema:
            enum:
              - ON_DEPLOYMENT
              - POST_DEPLOYMENT
            type: string
      x-readme:
        code-samples:
          - language: python
            code: contract_templates = fireblocks.get_contract_templates()
            name: Fireblocks SDK Python example (Legacy)
          - language: javascript
            code: const contractTemplates = await fireblocks.getContractTemplates();
            name: Fireblocks SDK Javascript example
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<TemplatesPaginatedResponse>> = fireblocks.contractTemplates.getContractTemplates(contractTemplatesApiGetContractTemplatesRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<TemplatesPaginatedResponse>> response = fireblocks.contractTemplates().getContractTemplates(limit, offset, pageCursor, pageSize, type, initializationPhase);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.contract_templates.get_contract_templates(limit, offset, page_cursor, page_size, type, initialization_phase);
            name: Fireblocks SDK Python example
      responses:
        '200':
          description: List of contract templates was returned successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TemplatesPaginatedResponse'
        default:
          $ref: '#/components/responses/Error'
      tags:
        - Contract Templates
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<TemplatesPaginatedResponse>> = fireblocks.contractTemplates.getContractTemplates(contractTemplatesApiGetContractTemplatesRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<TemplatesPaginatedResponse>> response = fireblocks.contractTemplates().getContractTemplates(limit, offset, pageCursor, pageSize, type, initializationPhase);
        - lang: Python
          source: response = fireblocks.contract_templates.get_contract_templates(limit, offset, page_cursor, page_size, type, initialization_phase);
    post:
      operationId: uploadContractTemplate
      summary: Upload contract template
      x-rate-limit-category: write
      description: Upload a new contract template. This contract template will be available for the workspace
      parameters:
        - $ref: '#/components/parameters/X-Idempotency-Key'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ContractUploadRequest'
      x-readme:
        code-samples:
          - language: python
            code: template = fireblocks.upload_contract_template(upload_request)
            name: Fireblocks SDK Python example (Legacy)
          - language: javascript
            code: const contractTemplate = await fireblocks.uploadContractTemplate(uploadRequest);
            name: Fireblocks SDK Javascript example
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<ContractTemplateDto>> = fireblocks.contractTemplates.uploadContractTemplate(contractTemplatesApiUploadContractTemplateRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<ContractTemplateDto>> response = fireblocks.contractTemplates().uploadContractTemplate(contractUploadRequest, idempotencyKey);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.contract_templates.upload_contract_template(contract_upload_request, idempotency_key);
            name: Fireblocks SDK Python example
      responses:
        '201':
          description: Contract was uploaded successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ContractTemplateDto'
        default:
          $ref: '#/components/responses/Error'
      tags:
        - Contract Templates
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<ContractTemplateDto>> = fireblocks.contractTemplates.uploadContractTemplate(contractTemplatesApiUploadContractTemplateRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<ContractTemplateDto>> response = fireblocks.contractTemplates().uploadContractTemplate(contractUploadRequest, idempotencyKey);
        - lang: Python
          source: response = fireblocks.contract_templates.upload_contract_template(contract_upload_request, idempotency_key);
  /tokenization/templates/{contractTemplateId}:
    get:
      operationId: getContractTemplateById
      summary: Return contract template by id
      x-rate-limit-category: read
      description: Return detailed information about the contract template
      parameters:
        - name: contractTemplateId
          required: true
          in: path
          description: The Contract Template identifier
          example: b70701f4-d7b1-4795-a8ee-b09cdb5b850d
          schema:
            type: string
      x-readme:
        code-samples:
          - language: python
            code: contract_template = fireblocks.get_contract_template(contract_id)
            name: Fireblocks SDK Python example (Legacy)
          - language: javascript
            code: const contractTemplate = await fireblocks.getContractTemplate(contractId);
            name: Fireblocks SDK Javascript example
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<ContractTemplateDto>> = fireblocks.contractTemplates.getContractTemplateById(contractTemplatesApiGetContractTemplateByIdRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<ContractTemplateDto>> response = fireblocks.contractTemplates().getContractTemplateById(contractTemplateId);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.contract_templates.get_contract_template_by_id(contract_template_id);
            name: Fireblocks SDK Python example
      responses:
        '200':
          description: Contract template was returned successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ContractTemplateDto'
        '404':
          description: Could not find contract.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HttpContractDoesNotExistError'
        default:
          $ref: '#/components/responses/Error'
      tags:
        - Contract Templates
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<ContractTemplateDto>> = fireblocks.contractTemplates.getContractTemplateById(contractTemplatesApiGetContractTemplateByIdRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<ContractTemplateDto>> response = fireblocks.contractTemplates().getContractTemplateById(contractTemplateId);
        - lang: Python
          source: response = fireblocks.contract_templates.get_contract_template_by_id(contract_template_id);
    delete:
      operationId: deleteContractTemplateById
      summary: Delete a contract template by id
      x-rate-limit-category: write
      description: 'Delete a contract by id. allowed only for private contract templates. Notice: it is irreversible!'
      parameters:
        - name: contractTemplateId
          required: true
          in: path
          description: The Contract Template identifier
          example: b70701f4-d7b1-4795-a8ee-b09cdb5b850d
          schema:
            type: string
      x-readme:
        code-samples:
          - language: python
            code: fireblocks.deleteContractTemplate(contract_id)
            name: Fireblocks SDK Python example (Legacy)
          - language: javascript
            code: await fireblocks.getContractTemplate(contractId);
            name: Fireblocks SDK Javascript example
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<void>> = fireblocks.contractTemplates.deleteContractTemplateById(contractTemplatesApiDeleteContractTemplateByIdRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<Void>> response = fireblocks.contractTemplates().deleteContractTemplateById(contractTemplateId);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.contract_templates.delete_contract_template_by_id(contract_template_id);
            name: Fireblocks SDK Python example
      responses:
        '204':
          description: Contract was deleted successfully
        '404':
          description: Could not find contract.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HttpContractDoesNotExistError'
        default:
          $ref: '#/components/responses/Error'
      tags:
        - Contract Templates
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<void>> = fireblocks.contractTemplates.deleteContractTemplateById(contractTemplatesApiDeleteContractTemplateByIdRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<Void>> response = fireblocks.contractTemplates().deleteContractTemplateById(contractTemplateId);
        - lang: Python
          source: response = fireblocks.contract_templates.delete_contract_template_by_id(contract_template_id);
  /tokenization/templates/{contractTemplateId}/constructor:
    get:
      operationId: getConstructorByContractTemplateId
      summary: Return contract template's constructor
      x-rate-limit-category: read
      description: Return contract template's constructor ABI
      parameters:
        - name: contractTemplateId
          required: true
          in: path
          description: The Contract Template identifier
          example: b70701f4-d7b1-4795-a8ee-b09cdb5b850d
          schema:
            type: string
        - name: withDocs
          required: false
          in: query
          description: true if you want to get the abi with its docs
          schema:
            default: false
            type: boolean
      x-readme:
        code-samples:
          - language: python
            code: contract_constructor_abi = fireblocks.get_contract_template_constructor(contract_id)
            name: Fireblocks SDK Python example (Legacy)
          - language: javascript
            code: const contractConstructorAbi = await fireblocks.getContractTemplateConstructor(contractId);
            name: Fireblocks SDK Javascript example
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<AbiFunction>> = fireblocks.contractTemplates.getConstructorByContractTemplateId(contractTemplatesApiGetConstructorByContractTemplateIdRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<AbiFunction>> response = fireblocks.contractTemplates().getConstructorByContractTemplateId(contractTemplateId, withDocs);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.contract_templates.get_constructor_by_contract_template_id(contract_template_id, with_docs);
            name: Fireblocks SDK Python example
      responses:
        '200':
          description: Contract template's constructor ABI was returned successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AbiFunction'
        '404':
          description: Could not find contract.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HttpContractDoesNotExistError'
        default:
          $ref: '#/components/responses/Error'
      tags:
        - Contract Templates
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<AbiFunction>> = fireblocks.contractTemplates.getConstructorByContractTemplateId(contractTemplatesApiGetConstructorByContractTemplateIdRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<AbiFunction>> response = fireblocks.contractTemplates().getConstructorByContractTemplateId(contractTemplateId, withDocs);
        - lang: Python
          source: response = fireblocks.contract_templates.get_constructor_by_contract_template_id(contract_template_id, with_docs);
  /tokenization/templates/{contractTemplateId}/deploy:
    post:
      operationId: deployContract
      summary: Deploy contract
      x-rate-limit-category: write
      description: Deploy a new contract by contract template id. If you wish to deploy a token (ERC20, ERC721 etc), and create asset please use POST /tokenization
      parameters:
        - name: contractTemplateId
          required: true
          in: path
          description: The Contract Template identifier
          example: b70701f4-d7b1-4795-a8ee-b09cdb5b850d
          schema:
            type: string
        - $ref: '#/components/parameters/X-Idempotency-Key'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ContractDeployRequest'
      x-readme:
        code-samples:
          - language: python
            code: response = fireblocks.deploy_contract(contract_id, contract_deploy_request)
            name: Fireblocks SDK Python example (Legacy)
          - language: javascript
            code: const { txId } = await fireblocks.deployContract(contractId, contractDeployRequest);
            name: Fireblocks SDK Javascript example
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<ContractDeployResponse>> = fireblocks.contractTemplates.deployContract(contractTemplatesApiDeployContractRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<ContractDeployResponse>> response = fireblocks.contractTemplates().deployContract(contractDeployRequest, contractTemplateId, idempotencyKey);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.contract_templates.deploy_contract(contract_deploy_request, contract_template_id, idempotency_key);
            name: Fireblocks SDK Python example
      responses:
        '202':
          description: Contract was deployed successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ContractDeployResponse'
        '404':
          description: Could not find contract.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HttpContractDoesNotExistError'
        default:
          $ref: '#/components/responses/Error'
      tags:
        - Contract Templates
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<ContractDeployResponse>> = fireblocks.contractTemplates.deployContract(contractTemplatesApiDeployContractRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<ContractDeployResponse>> response = fireblocks.contractTemplates().deployContract(contractDeployRequest, contractTemplateId, idempotencyKey);
        - lang: Python
          source: response = fireblocks.contract_templates.deploy_contract(contract_deploy_request, contract_template_id, idempotency_key);
  /tokenization/templates/{contractTemplateId}/function:
    get:
      operationId: getFunctionAbiByContractTemplateId
      summary: Return contract template's function
      description: Return contract template`s function ABI by signature
      x-rate-limit-category: read
      parameters:
        - name: contractTemplateId
          required: true
          in: path
          description: The Contract Template identifier
          example: b70701f4-d7b1-4795-a8ee-b09cdb5b850d
          schema:
            type: string
        - name: functionSignature
          required: true
          in: query
          schema:
            type: string
      responses:
        '200':
          description: Contract template`s function ABI was returned successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AbiFunction'
        '404':
          description: Could not find contract.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HttpContractDoesNotExistError'
        default:
          $ref: '#/components/responses/Error'
      tags:
        - Contract Templates
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<AbiFunction>> = fireblocks.contractTemplates.getFunctionAbiByContractTemplateId(contractTemplatesApiGetFunctionAbiByContractTemplateIdRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<AbiFunction>> response = fireblocks.contractTemplates().getFunctionAbiByContractTemplateId(contractTemplateId, functionSignature);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.contract_templates.get_function_abi_by_contract_template_id(contract_template_id, function_signature);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<AbiFunction>> = fireblocks.contractTemplates.getFunctionAbiByContractTemplateId(contractTemplatesApiGetFunctionAbiByContractTemplateIdRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<AbiFunction>> response = fireblocks.contractTemplates().getFunctionAbiByContractTemplateId(contractTemplateId, functionSignature);
        - lang: Python
          source: response = fireblocks.contract_templates.get_function_abi_by_contract_template_id(contract_template_id, function_signature);
  /tokenization/templates/{contractTemplateId}/supported_blockchains:
    get:
      operationId: getSupportedBlockchainsByTemplateId
      summary: Get supported blockchains for the template
      x-rate-limit-category: read
      description: Get supported blockchains for the template
      parameters:
        - name: contractTemplateId
          required: true
          in: path
          description: The Contract Template identifier
          example: b70701f4-d7b1-4795-a8ee-b09cdb5b850d
          schema:
            type: string
      x-readme:
        code-samples:
          - language: python
            code: supported_blockchains = fireblocks.get_supported_blockchains_by_template_id(contract_template_id)
            name: Fireblocks SDK Python example (Legacy)
          - language: javascript
            code: const supportedBlockchains = await fireblocks.getSupportedBlockchainsByTemplateId(contractTemplateId);
            name: Fireblocks SDK Javascript example
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<SupportedBlockChainsResponse>> = fireblocks.contractTemplates.getSupportedBlockchainsByTemplateId(contractTemplatesApiGetSupportedBlockchainsByTemplateIdRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<SupportedBlockChainsResponse>> response = fireblocks.contractTemplates().getSupportedBlockchainsByTemplateId(contractTemplateId);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.contract_templates.get_supported_blockchains_by_template_id(contract_template_id);
            name: Fireblocks SDK Python example
      responses:
        '200':
          description: Supported blockchains list
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SupportedBlockChainsResponse'
        '404':
          description: Could not find contract.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HttpContractDoesNotExistError'
        default:
          $ref: '#/components/responses/Error'
      tags:
        - Contract Templates
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<SupportedBlockChainsResponse>> = fireblocks.contractTemplates.getSupportedBlockchainsByTemplateId(contractTemplatesApiGetSupportedBlockchainsByTemplateIdRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<SupportedBlockChainsResponse>> response = fireblocks.contractTemplates().getSupportedBlockchainsByTemplateId(contractTemplateId);
        - lang: Python
          source: response = fireblocks.contract_templates.get_supported_blockchains_by_template_id(contract_template_id);
  /contracts:
    get:
      summary: List Whitelisted Contracts
      description: 'Gets a list of whitelisted contracts. Endpoint Permission: Admin, Non-Signing Admin, Signer, Approver, Editor, Viewer.'
      tags:
        - Contracts
      x-rate-limit-category: query
      responses:
        '200':
          description: A list of contracts
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetContractsResponse'
        default:
          $ref: '#/components/responses/Error'
      operationId: getContracts
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<GetContractsResponse>> = fireblocks.contracts.getContracts();'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<List<UnmanagedWallet>>> response = fireblocks.contracts().getContracts();
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.contracts.get_contracts();
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<GetContractsResponse>> = fireblocks.contracts.getContracts();'
        - lang: Java
          source: CompletableFuture<ApiResponse<List<UnmanagedWallet>>> response = fireblocks.contracts().getContracts();
        - lang: Python
          source: response = fireblocks.contracts.get_contracts();
    post:
      summary: Add a contract
      description: 'Adds a contract to the workspace whitelist. Endpoint Permission: Admin, Non-Signing Admin, Signer, Approver, Editor.'
      tags:
        - Contracts
      x-rate-limit-category: write
      parameters:
        - $ref: '#/components/parameters/X-Idempotency-Key'
      responses:
        '200':
          description: A Wallet object
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnmanagedWallet'
        default:
          $ref: '#/components/responses/Error'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateContractRequest'
      operationId: createContract
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<UnmanagedWallet>> = fireblocks.contracts.createContract(contractsApiCreateContractRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<UnmanagedWallet>> response = fireblocks.contracts().createContract(createContractRequest, idempotencyKey);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.contracts.create_contract(create_contract_request, idempotency_key);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<UnmanagedWallet>> = fireblocks.contracts.createContract(contractsApiCreateContractRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<UnmanagedWallet>> response = fireblocks.contracts().createContract(createContractRequest, idempotencyKey);
        - lang: Python
          source: response = fireblocks.contracts.create_contract(create_contract_request, idempotency_key);
  /contracts/{contractId}:
    get:
      summary: Find a Specific Whitelisted Contract
      description: 'Returns a whitelisted contract by Fireblocks Contract ID. Endpoint Permission: Admin, Non-Signing Admin, Signer, Approver, Editor.'
      tags:
        - Contracts
      x-rate-limit-category: read
      parameters:
        - in: path
          name: contractId
          required: true
          description: The ID of the contract to return
          schema:
            type: string
      responses:
        '200':
          description: A Wallet object
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnmanagedWallet'
        default:
          $ref: '#/components/responses/Error'
      operationId: getContract
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<UnmanagedWallet>> = fireblocks.contracts.getContract(contractsApiGetContractRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<UnmanagedWallet>> response = fireblocks.contracts().getContract(contractId);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.contracts.get_contract(contract_id);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<UnmanagedWallet>> = fireblocks.contracts.getContract(contractsApiGetContractRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<UnmanagedWallet>> response = fireblocks.contracts().getContract(contractId);
        - lang: Python
          source: response = fireblocks.contracts.get_contract(contract_id);
    delete:
      summary: Delete a contract
      description: 'Deletes a contract by ID. Endpoint Permission: Admin, Non-Signing Admin, Signer, Approver, Editor.'
      tags:
        - Contracts
      x-rate-limit-category: write
      parameters:
        - in: path
          name: contractId
          required: true
          description: The ID of the contract to delete
          schema:
            type: string
      responses:
        '201':
          description: OK
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
        default:
          $ref: '#/components/responses/Error'
      operationId: deleteContract
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<void>> = fireblocks.contracts.deleteContract(contractsApiDeleteContractRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<Void>> response = fireblocks.contracts().deleteContract(contractId);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.contracts.delete_contract(contract_id);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<void>> = fireblocks.contracts.deleteContract(contractsApiDeleteContractRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<Void>> response = fireblocks.contracts().deleteContract(contractId);
        - lang: Python
          source: response = fireblocks.contracts.delete_contract(contract_id);
  /contracts/{contractId}/{assetId}:
    get:
      summary: Find a whitelisted contract's asset
      description: 'Returns a whitelisted contract''s asset by ID. Endpoint Permission: Admin, Non-Signing Admin, Signer, Approver, Editor.'
      tags:
        - Contracts
      x-rate-limit-category: read
      parameters:
        - in: path
          name: contractId
          required: true
          description: The ID of the contract
          schema:
            type: string
        - in: path
          name: assetId
          required: true
          description: The ID of the asset to return
          schema:
            type: string
            x-fb-entity: asset
      responses:
        '200':
          description: A Wallet Asset object
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExternalWalletAsset'
        default:
          $ref: '#/components/responses/Error'
      operationId: getContractAsset
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<ExternalWalletAsset>> = fireblocks.contracts.getContractAsset(contractsApiGetContractAssetRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<ExternalWalletAsset>> response = fireblocks.contracts().getContractAsset(contractId, assetId);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.contracts.get_contract_asset(contract_id, asset_id);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<ExternalWalletAsset>> = fireblocks.contracts.getContractAsset(contractsApiGetContractAssetRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<ExternalWalletAsset>> response = fireblocks.contracts().getContractAsset(contractId, assetId);
        - lang: Python
          source: response = fireblocks.contracts.get_contract_asset(contract_id, asset_id);
    post:
      summary: Add an asset to a whitelisted contract
      description: 'Adds an asset to a whitelisted contract. Endpoint Permission: Admin, Non-Signing Admin, Signer, Approver, Editor.'
      tags:
        - Contracts
      x-rate-limit-category: write
      parameters:
        - in: path
          name: contractId
          required: true
          description: The ID of the contract
          schema:
            type: string
        - in: path
          name: assetId
          required: true
          description: The ID of the asset to add
          schema:
            type: string
            x-fb-entity: asset
        - $ref: '#/components/parameters/X-Idempotency-Key'
      responses:
        '200':
          description: A Wallet Asset object
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExternalWalletAsset'
        default:
          $ref: '#/components/responses/Error'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AddContractAssetRequest'
      operationId: addContractAsset
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<ExternalWalletAsset>> = fireblocks.contracts.addContractAsset(contractsApiAddContractAssetRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<ExternalWalletAsset>> response = fireblocks.contracts().addContractAsset(contractId, assetId, addContractAssetRequest, idempotencyKey);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.contracts.add_contract_asset(contract_id, asset_id, add_contract_asset_request, idempotency_key);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<ExternalWalletAsset>> = fireblocks.contracts.addContractAsset(contractsApiAddContractAssetRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<ExternalWalletAsset>> response = fireblocks.contracts().addContractAsset(contractId, assetId, addContractAssetRequest, idempotencyKey);
        - lang: Python
          source: response = fireblocks.contracts.add_contract_asset(contract_id, asset_id, add_contract_asset_request, idempotency_key);
    delete:
      summary: Delete an asset from a whitelisted contract
      description: 'Deletes a whitelisted contract asset by ID. Endpoint Permission: Admin, Non-Signing Admin, Signer, Approver, Editor.'
      tags:
        - Contracts
      x-rate-limit-category: write
      parameters:
        - in: path
          name: contractId
          required: true
          description: The ID of the contract
          schema:
            type: string
        - in: path
          name: assetId
          required: true
          description: The ID of the asset to delete
          schema:
            type: string
            x-fb-entity: asset
      responses:
        '201':
          description: OK
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
        default:
          $ref: '#/components/responses/Error'
      operationId: deleteContractAsset
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<void>> = fireblocks.contracts.deleteContractAsset(contractsApiDeleteContractAssetRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<Void>> response = fireblocks.contracts().deleteContractAsset(contractId, assetId);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.contracts.delete_contract_asset(contract_id, asset_id);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<void>> = fireblocks.contracts.deleteContractAsset(contractsApiDeleteContractAssetRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<Void>> response = fireblocks.contracts().deleteContractAsset(contractId, assetId);
        - lang: Python
          source: response = fireblocks.contracts.delete_contract_asset(contract_id, asset_id);
  /cosigners:
    get:
      operationId: getCosigners
      summary: Get all cosigners
      description: |-
        Get all workspace cosigners (paginated).
        **Note:** These endpoints are currently in beta and might be subject to changes.
        Endpoint Permission: Admin and Non-Signing Admin.
      x-rate-limit-category: query
      parameters:
        - name: order
          required: false
          in: query
          description: ASC / DESC ordering (default DESC)
          example: ASC
          schema:
            default: DESC
            enum:
              - ASC
              - DESC
            type: string
        - name: pageCursor
          required: false
          in: query
          description: Cursor of the required page
          schema:
            type: string
        - name: pageSize
          required: false
          in: query
          description: Maximum number of items in the page
          example: 10
          schema:
            minimum: 1
            maximum: 100
            default: 10
            type: number
      responses:
        '200':
          description: A paginated response containing Cosigner objects
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CosignersPaginatedResponse'
        default:
          $ref: '#/components/responses/Error'
      tags:
        - Cosigners (Beta)
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<CosignersPaginatedResponse>> = fireblocks.cosignersBeta.getCosigners(cosignersBetaApiGetCosignersRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<CosignersPaginatedResponse>> response = fireblocks.cosignersBeta().getCosigners(order, pageCursor, pageSize);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.cosigners_beta.get_cosigners(order, page_cursor, page_size);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<CosignersPaginatedResponse>> = fireblocks.cosignersBeta.getCosigners(cosignersBetaApiGetCosignersRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<CosignersPaginatedResponse>> response = fireblocks.cosignersBeta().getCosigners(order, pageCursor, pageSize);
        - lang: Python
          source: response = fireblocks.cosigners_beta.get_cosigners(order, page_cursor, page_size);
    post:
      operationId: addCosigner
      summary: Add cosigner
      description: |-
        Add a new cosigner. The cosigner will be pending pairing until the API key is manually paired
        Endpoint Permission: Admin and Non-Signing Admin.
      x-rate-limit-category: write
      parameters:
        - $ref: '#/components/parameters/X-Idempotency-Key'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AddCosignerRequest'
      responses:
        '201':
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          description: Pending cosigner added
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AddCosignerResponse'
        default:
          $ref: '#/components/responses/Error'
      tags:
        - Cosigners (Beta)
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<AddCosignerResponse>> = fireblocks.cosignersBeta.addCosigner(cosignersBetaApiAddCosignerRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<AddCosignerResponse>> response = fireblocks.cosignersBeta().addCosigner(addCosignerRequest, idempotencyKey);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.cosigners_beta.add_cosigner(add_cosigner_request, idempotency_key);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<AddCosignerResponse>> = fireblocks.cosignersBeta.addCosigner(cosignersBetaApiAddCosignerRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<AddCosignerResponse>> response = fireblocks.cosignersBeta().addCosigner(addCosignerRequest, idempotencyKey);
        - lang: Python
          source: response = fireblocks.cosigners_beta.add_cosigner(add_cosigner_request, idempotency_key);
  /cosigners/{cosignerId}:
    get:
      operationId: getCosigner
      summary: Get cosigner
      description: |-
        Get a cosigner by ID.
        **Note:** These endpoints are currently in beta and might be subject to changes.
        Endpoint Permission: Admin and Non-Signing Admin.
      x-rate-limit-category: read
      parameters:
        - name: cosignerId
          required: true
          in: path
          description: The unique identifier of the cosigner
          example: 44fcead0-7053-4831-a53a-df7fb90d440f
          schema:
            format: uuid
            type: string
      responses:
        '200':
          description: A cosigner object
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Cosigner'
        default:
          $ref: '#/components/responses/Error'
      tags:
        - Cosigners (Beta)
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<Cosigner>> = fireblocks.cosignersBeta.getCosigner(cosignersBetaApiGetCosignerRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<Cosigner>> response = fireblocks.cosignersBeta().getCosigner(cosignerId);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.cosigners_beta.get_cosigner(cosigner_id);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<Cosigner>> = fireblocks.cosignersBeta.getCosigner(cosignersBetaApiGetCosignerRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<Cosigner>> response = fireblocks.cosignersBeta().getCosigner(cosignerId);
        - lang: Python
          source: response = fireblocks.cosigners_beta.get_cosigner(cosigner_id);
    patch:
      operationId: renameCosigner
      summary: Rename cosigner
      description: |-
        Rename a cosigner by ID.
        **Note:** These endpoints are currently in beta and might be subject to changes.
        Endpoint Permission: Admin and Non-Signing Admin.
      x-rate-limit-category: write
      parameters:
        - name: cosignerId
          required: true
          in: path
          description: The unique identifier of the cosigner
          example: 44fcead0-7053-4831-a53a-df7fb90d440f
          schema:
            format: uuid
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RenameCosigner'
      responses:
        '200':
          description: A cosigner object
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Cosigner'
        default:
          $ref: '#/components/responses/Error'
      tags:
        - Cosigners (Beta)
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<Cosigner>> = fireblocks.cosignersBeta.renameCosigner(cosignersBetaApiRenameCosignerRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<Cosigner>> response = fireblocks.cosignersBeta().renameCosigner(renameCosigner, cosignerId);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.cosigners_beta.rename_cosigner(rename_cosigner, cosigner_id);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<Cosigner>> = fireblocks.cosignersBeta.renameCosigner(cosignersBetaApiRenameCosignerRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<Cosigner>> response = fireblocks.cosignersBeta().renameCosigner(renameCosigner, cosignerId);
        - lang: Python
          source: response = fireblocks.cosigners_beta.rename_cosigner(rename_cosigner, cosigner_id);
  /cosigners/{cosignerId}/api_keys:
    get:
      operationId: getApiKeys
      summary: Get all API keys
      description: |-
        Get all cosigner paired API keys (paginated).
        **Note:** These endpoints are currently in beta and might be subject to changes.
        Endpoint Permission: Admin and Non-Signing Admin.
      parameters:
        - name: cosignerId
          required: true
          in: path
          description: The unique identifier of the cosigner
          example: 44fcead0-7053-4831-a53a-df7fb90d440f
          schema:
            format: uuid
            type: string
        - name: order
          required: false
          in: query
          description: ASC / DESC ordering (default DESC)
          example: ASC
          schema:
            default: DESC
            enum:
              - ASC
              - DESC
            type: string
        - name: pageCursor
          required: false
          in: query
          description: Cursor of the required page
          schema:
            type: string
        - name: pageSize
          required: false
          in: query
          description: Maximum number of items in the page
          example: 10
          schema:
            minimum: 1
            maximum: 100
            default: 10
            type: number
      responses:
        '200':
          description: A paginated response containing ApiKey objects
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiKeysPaginatedResponse'
        default:
          $ref: '#/components/responses/Error'
      tags:
        - Cosigners (Beta)
      x-rate-limit-category: query
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<ApiKeysPaginatedResponse>> = fireblocks.cosignersBeta.getApiKeys(cosignersBetaApiGetApiKeysRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<ApiKeysPaginatedResponse>> response = fireblocks.cosignersBeta().getApiKeys(cosignerId, order, pageCursor, pageSize);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.cosigners_beta.get_api_keys(cosigner_id, order, page_cursor, page_size);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<ApiKeysPaginatedResponse>> = fireblocks.cosignersBeta.getApiKeys(cosignersBetaApiGetApiKeysRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<ApiKeysPaginatedResponse>> response = fireblocks.cosignersBeta().getApiKeys(cosignerId, order, pageCursor, pageSize);
        - lang: Python
          source: response = fireblocks.cosigners_beta.get_api_keys(cosigner_id, order, page_cursor, page_size);
  /cosigners/{cosignerId}/api_keys/{apiKeyId}:
    get:
      operationId: getApiKey
      summary: Get API key
      description: |-
        Get an API key by ID.
        **Note:** These endpoints are currently in beta and might be subject to changes.
        Endpoint Permission: Admin and Non-Signing Admin.
      parameters:
        - name: cosignerId
          required: true
          in: path
          description: The unique identifier of the cosigner
          example: 44fcead0-7053-4831-a53a-df7fb90d440f
          schema:
            format: uuid
            type: string
        - name: apiKeyId
          required: true
          in: path
          description: The unique identifier of the API key
          example: 44fcead0-7053-4831-a53a-df7fb90d440f
          schema:
            type: string
      responses:
        '200':
          description: An ApiKey object
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiKey'
        default:
          $ref: '#/components/responses/Error'
      tags:
        - Cosigners (Beta)
      x-rate-limit-category: read
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<ApiKey>> = fireblocks.cosignersBeta.getApiKey(cosignersBetaApiGetApiKeyRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<ApiKey>> response = fireblocks.cosignersBeta().getApiKey(cosignerId, apiKeyId);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.cosigners_beta.get_api_key(cosigner_id, api_key_id);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<ApiKey>> = fireblocks.cosignersBeta.getApiKey(cosignersBetaApiGetApiKeyRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<ApiKey>> response = fireblocks.cosignersBeta().getApiKey(cosignerId, apiKeyId);
        - lang: Python
          source: response = fireblocks.cosigners_beta.get_api_key(cosigner_id, api_key_id);
    put:
      operationId: pairApiKey
      summary: Pair API key
      description: |-
        Pair an API key to a cosigner
        Endpoint Permission: Admin and Non-Signing Admin.
      x-rate-limit-category: write
      parameters:
        - name: cosignerId
          required: true
          in: path
          description: The unique identifier of the cosigner
          example: 44fcead0-7053-4831-a53a-df7fb90d440f
          schema:
            format: uuid
            type: string
        - name: apiKeyId
          required: true
          in: path
          description: The unique identifier of the API key
          example: 44fcead0-7053-4831-a53a-df7fb90d440f
          schema:
            type: string
        - $ref: '#/components/parameters/X-Idempotency-Key'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PairApiKeyRequest'
      responses:
        '202':
          description: The API key object to be paired
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
            Location:
              $ref: '#/components/headers/Location'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PairApiKeyResponse'
        default:
          $ref: '#/components/responses/Error'
      tags:
        - Cosigners (Beta)
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<PairApiKeyResponse>> = fireblocks.cosignersBeta.pairApiKey(cosignersBetaApiPairApiKeyRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<PairApiKeyResponse>> response = fireblocks.cosignersBeta().pairApiKey(pairApiKeyRequest, cosignerId, apiKeyId, idempotencyKey);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.cosigners_beta.pair_api_key(pair_api_key_request, cosigner_id, api_key_id, idempotency_key);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<PairApiKeyResponse>> = fireblocks.cosignersBeta.pairApiKey(cosignersBetaApiPairApiKeyRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<PairApiKeyResponse>> response = fireblocks.cosignersBeta().pairApiKey(pairApiKeyRequest, cosignerId, apiKeyId, idempotencyKey);
        - lang: Python
          source: response = fireblocks.cosigners_beta.pair_api_key(pair_api_key_request, cosigner_id, api_key_id, idempotency_key);
    delete:
      operationId: unpairApiKey
      summary: Unpair API key
      description: |-
        Unpair an API key from a cosigner
        Endpoint Permission: Admin and Non-Signing Admin.
      x-rate-limit-category: write
      parameters:
        - name: cosignerId
          required: true
          in: path
          description: The unique identifier of the cosigner
          example: 44fcead0-7053-4831-a53a-df7fb90d440f
          schema:
            format: uuid
            type: string
        - name: apiKeyId
          required: true
          in: path
          description: The unique identifier of the API key
          example: 44fcead0-7053-4831-a53a-df7fb90d440f
          schema:
            type: string
      responses:
        '202':
          description: The API key object to be unpaired
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
            Location:
              $ref: '#/components/headers/Location'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiKey'
        default:
          $ref: '#/components/responses/Error'
      tags:
        - Cosigners (Beta)
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<ApiKey>> = fireblocks.cosignersBeta.unpairApiKey(cosignersBetaApiUnpairApiKeyRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<ApiKey>> response = fireblocks.cosignersBeta().unpairApiKey(cosignerId, apiKeyId);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.cosigners_beta.unpair_api_key(cosigner_id, api_key_id);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<ApiKey>> = fireblocks.cosignersBeta.unpairApiKey(cosignersBetaApiUnpairApiKeyRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<ApiKey>> response = fireblocks.cosignersBeta().unpairApiKey(cosignerId, apiKeyId);
        - lang: Python
          source: response = fireblocks.cosigners_beta.unpair_api_key(cosigner_id, api_key_id);
    patch:
      operationId: updateCallbackHandler
      summary: Update API key callback handler
      description: |-
        Update the callback handler of an API key
        Endpoint Permission: Admin and Non-Signing Admin.
      x-rate-limit-category: write
      parameters:
        - name: cosignerId
          required: true
          in: path
          description: The unique identifier of the cosigner
          example: 44fcead0-7053-4831-a53a-df7fb90d440f
          schema:
            format: uuid
            type: string
        - name: apiKeyId
          required: true
          in: path
          description: The unique identifier of the API key
          example: 44fcead0-7053-4831-a53a-df7fb90d440f
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateCallbackHandlerRequest'
      responses:
        '202':
          description: The API key object with the new callback handler
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
            Location:
              $ref: '#/components/headers/Location'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UpdateCallbackHandlerResponse'
        default:
          $ref: '#/components/responses/Error'
      tags:
        - Cosigners (Beta)
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<UpdateCallbackHandlerResponse>> = fireblocks.cosignersBeta.updateCallbackHandler(cosignersBetaApiUpdateCallbackHandlerRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<UpdateCallbackHandlerResponse>> response = fireblocks.cosignersBeta().updateCallbackHandler(updateCallbackHandlerRequest, cosignerId, apiKeyId);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.cosigners_beta.update_callback_handler(update_callback_handler_request, cosigner_id, api_key_id);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<UpdateCallbackHandlerResponse>> = fireblocks.cosignersBeta.updateCallbackHandler(cosignersBetaApiUpdateCallbackHandlerRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<UpdateCallbackHandlerResponse>> response = fireblocks.cosignersBeta().updateCallbackHandler(updateCallbackHandlerRequest, cosignerId, apiKeyId);
        - lang: Python
          source: response = fireblocks.cosigners_beta.update_callback_handler(update_callback_handler_request, cosigner_id, api_key_id);
  /cosigners/{cosignerId}/api_keys/{apiKeyId}/{requestId}:
    get:
      operationId: getRequestStatus
      summary: Get request status
      description: |-
        Get the status of an asynchronous request
        Endpoint Permission: Admin and Non-Signing Admin.
      x-rate-limit-category: read
      parameters:
        - name: cosignerId
          required: true
          in: path
          description: The unique identifier of the cosigner
          example: 44fcead0-7053-4831-a53a-df7fb90d440f
          schema:
            format: uuid
            type: string
        - name: apiKeyId
          required: true
          in: path
          description: The unique identifier of the API key
          example: 44fcead0-7053-4831-a53a-df7fb90d440f
          schema:
            type: string
        - name: requestId
          required: true
          in: path
          schema:
            type: string
      responses:
        '200':
          description: The status of the request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Status'
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
        default:
          $ref: '#/components/responses/Error'
      tags:
        - Cosigners (Beta)
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<Status>> = fireblocks.cosignersBeta.getRequestStatus(cosignersBetaApiGetRequestStatusRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<Status>> response = fireblocks.cosignersBeta().getRequestStatus(cosignerId, apiKeyId, requestId);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.cosigners_beta.get_request_status(cosigner_id, api_key_id, request_id);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<Status>> = fireblocks.cosignersBeta.getRequestStatus(cosignersBetaApiGetRequestStatusRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<Status>> response = fireblocks.cosignersBeta().getRequestStatus(cosignerId, apiKeyId, requestId);
        - lang: Python
          source: response = fireblocks.cosigners_beta.get_request_status(cosigner_id, api_key_id, request_id);
  /tokenization/contracts:
    get:
      operationId: getDeployedContracts
      summary: List deployed contracts data
      x-rate-limit-category: query
      description: Return a filtered lean representation of the deployed contracts data on all blockchains (paginated)
      parameters:
        - name: pageCursor
          required: false
          in: query
          description: Page cursor to get the next page
          example: MjAyMy0xMi0xMyAyMDozNjowOC4zMDI=:MTEwMA==
          schema:
            type: string
        - name: pageSize
          required: false
          in: query
          description: Number of items per page, requesting more then max will return max items
          example: 10
          schema:
            minimum: 1
            maximum: 100
            type: number
        - name: contractAddress
          required: false
          in: query
          description: The contract's onchain address
          example: '0xC2c4e1Db41F0bB97996D0eD0542D2170d146FB66'
          schema:
            type: string
        - name: baseAssetId
          required: false
          in: query
          schema:
            type: string
        - name: contractTemplateId
          required: false
          in: query
          schema:
            type: string
      x-readme:
        code-samples:
          - language: python
            code: deployed_contracts = fireblocks.get_contracts_by_filter(template_id)
            name: Fireblocks SDK Python example (Legacy)
          - language: javascript
            code: const deployedContracts = await fireblocks.getContractsByFilter(templateId);
            name: Fireblocks SDK Javascript example
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<DeployedContractsPaginatedResponse>> = fireblocks.deployedContracts.getDeployedContracts(deployedContractsApiGetDeployedContractsRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<DeployedContractsPaginatedResponse>> response = fireblocks.deployedContracts().getDeployedContracts(pageCursor, pageSize, contractAddress, baseAssetId, contractTemplateId);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.deployed_contracts.get_deployed_contracts(page_cursor, page_size, contract_address, base_asset_id, contract_template_id);
            name: Fireblocks SDK Python example
      responses:
        '200':
          description: Deployed contracts fetched successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DeployedContractsPaginatedResponse'
        default:
          $ref: '#/components/responses/Error'
      tags:
        - Deployed Contracts
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<DeployedContractsPaginatedResponse>> = fireblocks.deployedContracts.getDeployedContracts(deployedContractsApiGetDeployedContractsRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<DeployedContractsPaginatedResponse>> response = fireblocks.deployedContracts().getDeployedContracts(pageCursor, pageSize, contractAddress, baseAssetId, contractTemplateId);
        - lang: Python
          source: response = fireblocks.deployed_contracts.get_deployed_contracts(page_cursor, page_size, contract_address, base_asset_id, contract_template_id);
  /tokenization/contracts/{assetId}/{contractAddress}:
    get:
      operationId: getDeployedContractByAddress
      summary: Return deployed contract data
      description: Return deployed contract data by blockchain native asset id and contract address
      x-rate-limit-category: read
      parameters:
        - name: contractAddress
          required: true
          in: path
          description: The contract's onchain address
          example: '0xC2c4e1Db41F0bB97996D0eD0542D2170d146FB66'
          schema:
            type: string
        - name: assetId
          required: true
          in: path
          schema:
            type: string
      x-readme:
        code-samples:
          - language: python
            code: deployed_contract = fireblocks.get_contract_by_address(base_asset_id, contract_address)
            name: Fireblocks SDK Python example (Legacy)
          - language: javascript
            code: const deployedContract = await fireblocks.getContractByAddress(baseAssetId, contractAddress);
            name: Fireblocks SDK Javascript example
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<DeployedContractResponseDto>> = fireblocks.deployedContracts.getDeployedContractByAddress(deployedContractsApiGetDeployedContractByAddressRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<DeployedContractResponseDto>> response = fireblocks.deployedContracts().getDeployedContractByAddress(contractAddress, assetId);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.deployed_contracts.get_deployed_contract_by_address(contract_address, asset_id);
            name: Fireblocks SDK Python example
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DeployedContractResponseDto'
        default:
          $ref: '#/components/responses/Error'
      tags:
        - Deployed Contracts
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<DeployedContractResponseDto>> = fireblocks.deployedContracts.getDeployedContractByAddress(deployedContractsApiGetDeployedContractByAddressRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<DeployedContractResponseDto>> response = fireblocks.deployedContracts().getDeployedContractByAddress(contractAddress, assetId);
        - lang: Python
          source: response = fireblocks.deployed_contracts.get_deployed_contract_by_address(contract_address, asset_id);
  /tokenization/contracts/{id}:
    get:
      operationId: getDeployedContractById
      summary: Return deployed contract data by id
      description: Return deployed contract data by id
      x-rate-limit-category: read
      parameters:
        - name: id
          required: true
          in: path
          description: The deployed contract data identifier
          example: b70701f4-d7b1-4795-a8ee-b09cdb5b850d
          schema:
            type: string
      x-readme:
        code-samples:
          - language: python
            code: deployed_contracts = fireblocks.get_contract_by_id(contract_id)
            name: Fireblocks SDK Python example (Legacy)
          - language: javascript
            code: const deployedContracts = await fireblocks.getContractById(contractId);
            name: Fireblocks SDK Javascript example
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<DeployedContractResponseDto>> = fireblocks.deployedContracts.getDeployedContractById(deployedContractsApiGetDeployedContractByIdRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<DeployedContractResponseDto>> response = fireblocks.deployedContracts().getDeployedContractById(id);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.deployed_contracts.get_deployed_contract_by_id(id);
            name: Fireblocks SDK Python example
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DeployedContractResponseDto'
        default:
          $ref: '#/components/responses/Error'
      tags:
        - Deployed Contracts
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<DeployedContractResponseDto>> = fireblocks.deployedContracts.getDeployedContractById(deployedContractsApiGetDeployedContractByIdRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<DeployedContractResponseDto>> response = fireblocks.deployedContracts().getDeployedContractById(id);
        - lang: Python
          source: response = fireblocks.deployed_contracts.get_deployed_contract_by_id(id);
  /tokenization/contracts/abi:
    post:
      operationId: addContractABI
      summary: Save contract ABI
      x-rate-limit-category: write
      description: Save contract ABI for the tenant
      parameters:
        - $ref: '#/components/parameters/X-Idempotency-Key'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AddAbiRequestDto'
      responses:
        '200':
          description: Contract ABI created (or updated) for the tenant
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ContractWithAbiDto'
        '409':
          description: Contract ABI already exists.
        default:
          $ref: '#/components/responses/Error'
      tags:
        - Deployed Contracts
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<ContractWithAbiDto>> = fireblocks.deployedContracts.addContractABI(deployedContractsApiAddContractABIRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<ContractWithAbiDto>> response = fireblocks.deployedContracts().addContractABI(addAbiRequestDto, idempotencyKey);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.deployed_contracts.add_contract_a_b_i(add_abi_request_dto, idempotency_key);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<ContractWithAbiDto>> = fireblocks.deployedContracts.addContractABI(deployedContractsApiAddContractABIRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<ContractWithAbiDto>> response = fireblocks.deployedContracts().addContractABI(addAbiRequestDto, idempotencyKey);
        - lang: Python
          source: response = fireblocks.deployed_contracts.add_contract_a_b_i(add_abi_request_dto, idempotency_key);
  /tokenization/contracts/fetch_abi:
    post:
      operationId: fetchContractAbi
      summary: Fetch the contract ABI
      x-rate-limit-category: read
      description: Fetch the ABI. If not found fetch the ABI from the block explorer
      parameters:
        - $ref: '#/components/parameters/X-Idempotency-Key'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/FetchAbiRequestDto'
      responses:
        '200':
          description: Contract ABI found.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ContractWithAbiDto'
        '404':
          description: Contract ABI not found
        default:
          $ref: '#/components/responses/Error'
      tags:
        - Deployed Contracts
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<ContractWithAbiDto>> = fireblocks.deployedContracts.fetchContractAbi(deployedContractsApiFetchContractAbiRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<ContractWithAbiDto>> response = fireblocks.deployedContracts().fetchContractAbi(fetchAbiRequestDto, idempotencyKey);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.deployed_contracts.fetch_contract_abi(fetch_abi_request_dto, idempotency_key);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<ContractWithAbiDto>> = fireblocks.deployedContracts.fetchContractAbi(deployedContractsApiFetchContractAbiRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<ContractWithAbiDto>> response = fireblocks.deployedContracts().fetchContractAbi(fetchAbiRequestDto, idempotencyKey);
        - lang: Python
          source: response = fireblocks.deployed_contracts.fetch_contract_abi(fetch_abi_request_dto, idempotency_key);
  /earn/actions:
    get:
      operationId: getEarnActions
      summary: List earn lending actions
      description: |
        Returns a paginated list of lending actions (deposits and withdrawals) for the authenticated tenant.

        **Note:** This endpoint is currently in beta and might be subject to changes.
      parameters:
        - name: pageCursor
          in: query
          required: false
          description: Cursor for the next or previous page of results.
          schema:
            type: string
        - name: pageSize
          in: query
          required: false
          description: Number of items per page (default 100, max 100).
          schema:
            type: integer
            format: int32
            default: 100
            minimum: 1
            maximum: 100
        - name: sortBy
          in: query
          required: false
          description: Field to sort results by.
          schema:
            type: string
            enum:
              - createdAt
              - updatedAt
        - name: order
          in: query
          required: false
          description: Sort order (ASC or DESC).
          schema:
            type: string
            default: DESC
            example: ASC
            enum:
              - ASC
              - DESC
      responses:
        '200':
          description: OK
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetActionsResponse'
        '403':
          description: 'Forbidden: insufficient permissions, disabled feature, or restricted access.'
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorSchema'
        '404':
          description: 'Not found: requested resource does not exist.'
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorSchema'
        '429':
          description: 'Rate limit exceeded: slow down and retry later.'
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorSchema'
        '500':
          description: Internal error while processing the request.
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorSchema'
        default:
          $ref: '#/components/responses/Error'
      tags:
        - Earn (Beta)
      x-rate-limit-category: query
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<GetActionsResponse>> = fireblocks.earnBeta.getEarnActions(earnBetaApiGetEarnActionsRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<GetActionsResponse>> response = fireblocks.earnBeta().getEarnActions(pageCursor, pageSize, sortBy, order);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.earn_beta.get_earn_actions(page_cursor, page_size, sort_by, order);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<GetActionsResponse>> = fireblocks.earnBeta.getEarnActions(earnBetaApiGetEarnActionsRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<GetActionsResponse>> response = fireblocks.earnBeta().getEarnActions(pageCursor, pageSize, sortBy, order);
        - lang: Python
          source: response = fireblocks.earn_beta.get_earn_actions(page_cursor, page_size, sort_by, order);
    post:
      operationId: createEarnAction
      summary: Create and execute a lending action (deposit or withdraw)
      description: |
        Creates and runs a sequence of on-chain steps for either a deposit into or a withdrawal from an earn
        vault/market. Specify the operation with `action` in the request body (`DEPOSIT` or `WITHDRAW`).

        **Note:** This endpoint is currently in beta and might be subject to changes.
      parameters:
        - $ref: '#/components/parameters/X-Idempotency-Key'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateEarnActionRequest'
      responses:
        '200':
          description: OK
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreateEarnActionResponse'
        '400':
          description: 'Bad request: missing/invalid fields, unsupported amount, or malformed payload.'
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorSchema'
        '403':
          description: 'Forbidden: insufficient permissions, disabled feature, or restricted provider.'
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorSchema'
        '404':
          description: 'Not found: requested resource does not exist (e.g., opportunity, provider, or wallet).'
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorSchema'
        '429':
          description: 'Rate limit exceeded: slow down and retry later.'
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorSchema'
        '500':
          description: Internal error while processing the request.
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorSchema'
        default:
          $ref: '#/components/responses/Error'
      tags:
        - Earn (Beta)
      x-rate-limit-category: write
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<CreateEarnActionResponse>> = fireblocks.earnBeta.createEarnAction(earnBetaApiCreateEarnActionRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<CreateEarnActionResponse>> response = fireblocks.earnBeta().createEarnAction(createEarnActionRequest, idempotencyKey);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.earn_beta.create_earn_action(create_earn_action_request, idempotency_key);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<CreateEarnActionResponse>> = fireblocks.earnBeta.createEarnAction(earnBetaApiCreateEarnActionRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<CreateEarnActionResponse>> response = fireblocks.earnBeta().createEarnAction(createEarnActionRequest, idempotencyKey);
        - lang: Python
          source: response = fireblocks.earn_beta.create_earn_action(create_earn_action_request, idempotency_key);
  /earn/actions/{id}:
    get:
      operationId: getEarnAction
      summary: Get a single earn lending action
      description: |
        Returns one lending action by its action sequence id (tenant-scoped).

        **Note:** This endpoint is currently in beta and might be subject to changes.
      parameters:
        - name: id
          in: path
          required: true
          description: Action sequence id (UUID).
          schema:
            type: string
            minLength: 1
      responses:
        '200':
          description: OK
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetActionResponse'
        '403':
          description: 'Forbidden: insufficient permissions, disabled feature, or restricted access.'
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorSchema'
        '404':
          description: 'Not found: action does not exist or is not visible for this tenant.'
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorSchema'
        '429':
          description: 'Rate limit exceeded: slow down and retry later.'
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorSchema'
        '500':
          description: Internal error while processing the request.
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorSchema'
        default:
          $ref: '#/components/responses/Error'
      tags:
        - Earn (Beta)
      x-rate-limit-category: query
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<GetActionResponse>> = fireblocks.earnBeta.getEarnAction(earnBetaApiGetEarnActionRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<GetActionResponse>> response = fireblocks.earnBeta().getEarnAction(id);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.earn_beta.get_earn_action(id);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<GetActionResponse>> = fireblocks.earnBeta.getEarnAction(earnBetaApiGetEarnActionRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<GetActionResponse>> response = fireblocks.earnBeta().getEarnAction(id);
        - lang: Python
          source: response = fireblocks.earn_beta.get_earn_action(id);
  /earn/opportunities:
    get:
      operationId: getEarnOpportunities
      summary: Get list of earn opportunities
      description: |
        Get list of earn opportunities (vaults).

        **Note:** This endpoint is currently in beta and might be subject to changes.
      parameters:
        - name: pageCursor
          in: query
          required: false
          description: Cursor for the next or previous page of results.
          schema:
            type: string
        - name: pageSize
          in: query
          required: false
          description: Number of items per page.
          schema:
            type: integer
            format: int32
            default: 100
            minimum: 1
            maximum: 100
        - name: sortBy
          in: query
          required: false
          description: Field to sort results by.
          schema:
            type: string
        - name: order
          in: query
          required: false
          description: Sort order (ASC or DESC).
          schema:
            type: string
            default: DESC
            example: ASC
            enum:
              - ASC
              - DESC
      responses:
        '200':
          description: OK
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetOpportunitiesResponse'
        '403':
          description: 'Forbidden: insufficient permissions, disabled feature, or restricted access.'
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorSchema'
        '404':
          description: 'Not found: requested resource does not exist.'
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorSchema'
        '429':
          description: 'Rate limit exceeded: slow down and retry later.'
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorSchema'
        '500':
          description: Internal error while processing the request.
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorSchema'
        default:
          $ref: '#/components/responses/Error'
      tags:
        - Earn (Beta)
      x-rate-limit-category: query
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<GetOpportunitiesResponse>> = fireblocks.earnBeta.getEarnOpportunities(earnBetaApiGetEarnOpportunitiesRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<GetOpportunitiesResponse>> response = fireblocks.earnBeta().getEarnOpportunities(pageCursor, pageSize, sortBy, order);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.earn_beta.get_earn_opportunities(page_cursor, page_size, sort_by, order);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<GetOpportunitiesResponse>> = fireblocks.earnBeta.getEarnOpportunities(earnBetaApiGetEarnOpportunitiesRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<GetOpportunitiesResponse>> response = fireblocks.earnBeta().getEarnOpportunities(pageCursor, pageSize, sortBy, order);
        - lang: Python
          source: response = fireblocks.earn_beta.get_earn_opportunities(page_cursor, page_size, sort_by, order);
  /earn/positions:
    get:
      operationId: getEarnPositions
      summary: Get list of earn positions
      description: |
        Get list of earn positions for accounts tracked for this workspace. 
        Optional query parameters filter by chain, provider, and pagination.

        **Note:** This endpoint is currently in beta and might be subject to changes.
      parameters:
        - name: chainId
          in: query
          required: false
          schema:
            type: integer
            format: int32
        - name: providerId
          in: query
          required: false
          schema:
            type: string
            enum:
              - MORPHO
              - AAVE
        - name: pageCursor
          in: query
          required: false
          description: Cursor for the next or previous page of results.
          schema:
            type: string
        - name: pageSize
          in: query
          required: false
          description: Number of items per page.
          schema:
            type: integer
            format: int32
            default: 100
            minimum: 1
            maximum: 100
        - name: sortBy
          in: query
          required: false
          description: Field to sort results by.
          schema:
            type: string
        - name: order
          in: query
          required: false
          description: Sort order (ASC or DESC).
          schema:
            type: string
            default: DESC
            example: ASC
            enum:
              - ASC
              - DESC
      responses:
        '200':
          description: OK
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetPositionsResponse'
        '403':
          description: 'Forbidden: insufficient permissions, disabled feature, or restricted access.'
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorSchema'
        '404':
          description: 'Not found: requested resource does not exist.'
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorSchema'
        '429':
          description: 'Rate limit exceeded: slow down and retry later.'
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorSchema'
        '500':
          description: Internal error while processing the request.
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorSchema'
        default:
          $ref: '#/components/responses/Error'
      tags:
        - Earn (Beta)
      x-rate-limit-category: query
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<GetPositionsResponse>> = fireblocks.earnBeta.getEarnPositions(earnBetaApiGetEarnPositionsRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<GetPositionsResponse>> response = fireblocks.earnBeta().getEarnPositions(chainId, providerId, pageCursor, pageSize, sortBy, order);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.earn_beta.get_earn_positions(chain_id, provider_id, page_cursor, page_size, sort_by, order);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<GetPositionsResponse>> = fireblocks.earnBeta.getEarnPositions(earnBetaApiGetEarnPositionsRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<GetPositionsResponse>> response = fireblocks.earnBeta().getEarnPositions(chainId, providerId, pageCursor, pageSize, sortBy, order);
        - lang: Python
          source: response = fireblocks.earn_beta.get_earn_positions(chain_id, provider_id, page_cursor, page_size, sort_by, order);
  /earn/providers:
    get:
      operationId: getEarnProviders
      summary: Get list of earn providers
      description: |
        Get list of earn providers.

        **Note:** This endpoint is currently in beta and might be subject to changes.
      parameters:
        - name: pageCursor
          in: query
          required: false
          description: Cursor for the next or previous page of results.
          schema:
            type: string
        - name: pageSize
          in: query
          required: false
          description: Number of items per page.
          schema:
            type: integer
            format: int32
            default: 100
            minimum: 1
            maximum: 100
        - name: sortBy
          in: query
          required: false
          description: Field to sort results by.
          schema:
            type: string
        - name: order
          in: query
          required: false
          description: Sort order (ASC or DESC).
          schema:
            type: string
            default: DESC
            example: ASC
            enum:
              - ASC
              - DESC
      responses:
        '200':
          description: OK
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetProvidersResponse'
        '403':
          description: 'Forbidden: insufficient permissions, disabled feature, or restricted access.'
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorSchema'
        '404':
          description: 'Not found: requested resource does not exist.'
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorSchema'
        '429':
          description: 'Rate limit exceeded: slow down and retry later.'
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorSchema'
        '500':
          description: Internal error while processing the request.
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorSchema'
        default:
          $ref: '#/components/responses/Error'
      tags:
        - Earn (Beta)
      x-rate-limit-category: query
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<GetProvidersResponse>> = fireblocks.earnBeta.getEarnProviders(earnBetaApiGetEarnProvidersRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<GetProvidersResponse>> response = fireblocks.earnBeta().getEarnProviders(pageCursor, pageSize, sortBy, order);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.earn_beta.get_earn_providers(page_cursor, page_size, sort_by, order);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<GetProvidersResponse>> = fireblocks.earnBeta.getEarnProviders(earnBetaApiGetEarnProvidersRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<GetProvidersResponse>> response = fireblocks.earnBeta().getEarnProviders(pageCursor, pageSize, sortBy, order);
        - lang: Python
          source: response = fireblocks.earn_beta.get_earn_providers(page_cursor, page_size, sort_by, order);
  /earn/providers/approve_terms_of_service:
    post:
      operationId: approveTermsOfService
      summary: Approve earn provider terms of service
      description: |
        Approves earn provider terms of service for this workspace (one-time per tenant).
        When `isTermsApprovalRequired` is true on a provider (see list providers),
        call this once before creating or executing earn actions with providers that require it.
        After success, `GET /earn/providers` reflects `isTermsOfServiceApproved`.

        **Note:** This endpoint is currently in beta and might be subject to changes.
      parameters:
        - $ref: '#/components/parameters/X-Idempotency-Key'
      responses:
        '204':
          description: Terms of service accepted.
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
        '400':
          description: 'Bad request: missing/invalid fields, unsupported amount, or malformed payload.'
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorSchema'
        '403':
          description: 'Forbidden: insufficient permissions, disabled feature, or restricted provider/validator.'
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorSchema'
        '404':
          description: 'Not found: requested resource does not exist (e.g., position, validator, provider, or wallet).'
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorSchema'
        '429':
          description: 'Rate limit exceeded: slow down and retry later.'
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorSchema'
        '500':
          description: Internal error while processing the request.
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorSchema'
        default:
          $ref: '#/components/responses/Error'
      tags:
        - Earn (Beta)
      x-rate-limit-category: write
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<void>> = fireblocks.earnBeta.approveTermsOfService(earnBetaApiApproveTermsOfServiceRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<Void>> response = fireblocks.earnBeta().approveTermsOfService(idempotencyKey);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.earn_beta.approve_terms_of_service(idempotency_key);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<void>> = fireblocks.earnBeta.approveTermsOfService(earnBetaApiApproveTermsOfServiceRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<Void>> response = fireblocks.earnBeta().approveTermsOfService(idempotencyKey);
        - lang: Python
          source: response = fireblocks.earn_beta.approve_terms_of_service(idempotency_key);
  /ncw/{walletId}/accounts/{accountId}/{assetId}/{change}/{addressIndex}/public_key_info:
    get:
      summary: Get the public key of an asset
      x-internal: true
      description: Gets the public key of an asset associated with a specific account within a Non-Custodial Wallet
      x-rate-limit-category: read
      tags:
        - Embedded Wallets
      x-readme:
        code-samples:
          - language: python
            code: pubKey = fireblocks.NCW.get_public_key_info_by_account_asset(wallet_id, asset_id, account_id, change, address_index, compressed)
            name: Fireblocks SDK Python example
          - language: javascript
            code: |
              const publicKeyInfoByAccountAssetArgs = {
                assetId: 'ETH',
                accountId: 0,
                change: 0,
                addressIndex: 0,
                compressed: true
              };            
              const pubKey = await fireblocks.NCW.getPublicKeyInfoByAccountAsset(walletId, publicKeyInfoByAccountAssetArgs);
            name: Fireblocks SDK Javascript example
      parameters:
        - $ref: '#/components/parameters/X-End-User-Wallet-Id_required'
        - in: path
          name: walletId
          description: The ID of the Non-Custodial wallet
          required: true
          schema:
            type: string
            example: 550e8400-e29b-41d4-a716-446655440000
        - in: path
          name: accountId
          description: The ID of the account
          required: true
          schema:
            type: string
            format: numeric
            example: '0'
        - in: path
          name: assetId
          description: The ID of the asset
          required: true
          schema:
            type: string
            x-fb-entity: asset
            example: BTC
        - in: path
          name: change
          description: BIP44 derivation path - change value
          required: true
          schema:
            type: number
            example: 0
        - in: path
          name: addressIndex
          description: BIP44 derivation path - index value
          required: true
          schema:
            type: number
            example: 0
        - in: query
          name: compressed
          description: Compressed/Uncompressed public key format
          required: false
          schema:
            type: boolean
            example: true
      responses:
        '200':
          description: Public Key Information
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PublicKeyInformation'
        default:
          $ref: '#/components/responses/Error'
      operationId: getPublicKeyInfoForAddressNcw
  /ncw/wallets:
    get:
      summary: List wallets
      description: Get all Non Custodial Wallets
      tags:
        - Embedded Wallets
      x-rate-limit-category: query
      parameters:
        - in: query
          name: pageCursor
          required: false
          description: Next page cursor to fetch
          example: MjAyMy0xMi0xMyAyMDozNjowOC4zMDI=:MTEwMA==
          schema:
            type: string
        - in: query
          name: pageSize
          required: false
          description: Items per page
          example: 500
          schema:
            type: number
            default: 200
            maximum: 400
        - in: query
          name: sort
          required: false
          description: Field(s) to use for sorting
          example: createdAt
          schema:
            enum:
              - createdAt
            default: createdAt
        - in: query
          name: order
          description: Is the order ascending or descending
          example: ASC
          required: false
          schema:
            type: string
            enum:
              - ASC
              - DESC
            default: ASC
        - in: query
          name: enabled
          description: Enabled Wallets
          example: true
          required: false
          schema:
            type: boolean
      responses:
        '200':
          description: Successful response
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EmbeddedWalletPaginatedWalletsResponse'
        default:
          $ref: '#/components/responses/Error'
      operationId: GetEmbeddedWallets
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<EmbeddedWalletPaginatedWalletsResponse>> = fireblocks.embeddedWallets.getEmbeddedWallets(embeddedWalletsApiGetEmbeddedWalletsRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<EmbeddedWalletPaginatedWalletsResponse>> response = fireblocks.embeddedWallets().getEmbeddedWallets(pageCursor, pageSize, sort, order, enabled);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.embedded_wallets.get_embedded_wallets(page_cursor, page_size, sort, order, enabled);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<EmbeddedWalletPaginatedWalletsResponse>> = fireblocks.embeddedWallets.getEmbeddedWallets(embeddedWalletsApiGetEmbeddedWalletsRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<EmbeddedWalletPaginatedWalletsResponse>> response = fireblocks.embeddedWallets().getEmbeddedWallets(pageCursor, pageSize, sort, order, enabled);
        - lang: Python
          source: response = fireblocks.embedded_wallets.get_embedded_wallets(page_cursor, page_size, sort, order, enabled);
    post:
      summary: Create a new wallet
      description: Create new Non Custodial Wallet
      tags:
        - Embedded Wallets
      x-rate-limit-category: write
      parameters:
        - $ref: '#/components/parameters/X-Idempotency-Key'
      responses:
        '201':
          description: Wallet created successfully
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EmbeddedWallet'
        default:
          $ref: '#/components/responses/Error'
      operationId: CreateEmbeddedWallet
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<EmbeddedWallet>> = fireblocks.embeddedWallets.createEmbeddedWallet(embeddedWalletsApiCreateEmbeddedWalletRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<EmbeddedWallet>> response = fireblocks.embeddedWallets().createEmbeddedWallet(idempotencyKey);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.embedded_wallets.create_embedded_wallet(idempotency_key);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<EmbeddedWallet>> = fireblocks.embeddedWallets.createEmbeddedWallet(embeddedWalletsApiCreateEmbeddedWalletRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<EmbeddedWallet>> response = fireblocks.embeddedWallets().createEmbeddedWallet(idempotencyKey);
        - lang: Python
          source: response = fireblocks.embedded_wallets.create_embedded_wallet(idempotency_key);
  /ncw/wallets/{walletId}:
    get:
      summary: Get a wallet
      description: Get a wallet
      tags:
        - Embedded Wallets
      x-rate-limit-category: read
      parameters:
        - in: path
          name: walletId
          required: true
          description: Wallet Id
          schema:
            type: string
            example: 550e8400-e29b-41d4-a716-446655440000
      responses:
        '200':
          description: Successful response
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EmbeddedWallet'
        default:
          $ref: '#/components/responses/Error'
      operationId: GetEmbeddedWallet
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<EmbeddedWallet>> = fireblocks.embeddedWallets.getEmbeddedWallet(embeddedWalletsApiGetEmbeddedWalletRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<EmbeddedWallet>> response = fireblocks.embeddedWallets().getEmbeddedWallet(walletId);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.embedded_wallets.get_embedded_wallet(wallet_id);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<EmbeddedWallet>> = fireblocks.embeddedWallets.getEmbeddedWallet(embeddedWalletsApiGetEmbeddedWalletRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<EmbeddedWallet>> response = fireblocks.embeddedWallets().getEmbeddedWallet(walletId);
        - lang: Python
          source: response = fireblocks.embedded_wallets.get_embedded_wallet(wallet_id);
  /ncw/wallets/{walletId}/accounts:
    post:
      summary: Create a new account
      description: Create a new account under a specific Non Custodial Wallet
      tags:
        - Embedded Wallets
      x-rate-limit-category: write
      parameters:
        - $ref: '#/components/parameters/X-Idempotency-Key'
        - name: walletId
          description: Wallet Id
          example: 550e8400-e29b-41d4-a716-446655440000
          required: true
          in: path
          schema:
            type: string
            example: 550e8400-e29b-41d4-a716-446655440000
      responses:
        '201':
          description: Account Created
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EmbeddedWalletAccount'
        default:
          $ref: '#/components/responses/Error'
      operationId: CreateEmbeddedWalletAccount
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<EmbeddedWalletAccount>> = fireblocks.embeddedWallets.createEmbeddedWalletAccount(embeddedWalletsApiCreateEmbeddedWalletAccountRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<EmbeddedWalletAccount>> response = fireblocks.embeddedWallets().createEmbeddedWalletAccount(walletId, idempotencyKey);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.embedded_wallets.create_embedded_wallet_account(wallet_id, idempotency_key);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<EmbeddedWalletAccount>> = fireblocks.embeddedWallets.createEmbeddedWalletAccount(embeddedWalletsApiCreateEmbeddedWalletAccountRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<EmbeddedWalletAccount>> response = fireblocks.embeddedWallets().createEmbeddedWalletAccount(walletId, idempotencyKey);
        - lang: Python
          source: response = fireblocks.embedded_wallets.create_embedded_wallet_account(wallet_id, idempotency_key);
  /ncw/wallets/{walletId}/accounts/{accountId}:
    get:
      summary: Get a account
      operationId: GetEmbeddedWalletAccount
      description: Get a specific account under a specific Non Custodial Wallet
      tags:
        - Embedded Wallets
      x-rate-limit-category: read
      parameters:
        - in: path
          name: walletId
          description: WalletId
          example: 550e8400-e29b-41d4-a716-446655440000
          required: true
          schema:
            type: string
        - in: path
          name: accountId
          description: The ID of the account
          example: '0'
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Successful response
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EmbeddedWalletAccount'
        default:
          $ref: '#/components/responses/Error'
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<EmbeddedWalletAccount>> = fireblocks.embeddedWallets.getEmbeddedWalletAccount(embeddedWalletsApiGetEmbeddedWalletAccountRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<EmbeddedWalletAccount>> response = fireblocks.embeddedWallets().getEmbeddedWalletAccount(walletId, accountId);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.embedded_wallets.get_embedded_wallet_account(wallet_id, account_id);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<EmbeddedWalletAccount>> = fireblocks.embeddedWallets.getEmbeddedWalletAccount(embeddedWalletsApiGetEmbeddedWalletAccountRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<EmbeddedWalletAccount>> response = fireblocks.embeddedWallets().getEmbeddedWalletAccount(walletId, accountId);
        - lang: Python
          source: response = fireblocks.embedded_wallets.get_embedded_wallet_account(wallet_id, account_id);
  /ncw/wallets/{walletId}/accounts/{accountId}/assets:
    get:
      operationId: getEmbeddedWalletAssets
      summary: Retrieve assets
      description: Retrieve assets for a specific account under a specific Non Custodial Wallet
      tags:
        - Embedded Wallets
      x-rate-limit-category: query
      parameters:
        - in: path
          name: walletId
          description: Wallet Id
          example: 550e8400-e29b-41d4-a716-446655440000
          required: true
          schema:
            type: string
        - in: path
          name: accountId
          description: The ID of the account
          example: '0'
          required: true
          schema:
            type: string
        - in: query
          name: sort
          description: Sort by fields
          required: false
          schema:
            type: array
            items:
              type: string
              enum:
                - assetId
                - createdAt
            default:
              - assetId
        - in: query
          name: pageCursor
          description: Cursor to the next page
          required: false
          schema:
            type: string
        - in: query
          name: pageSize
          description: Amount of results to return in the next page
          required: false
          schema:
            type: number
            default: 200
            maximum: 400
        - in: query
          name: order
          description: Is the order ascending or descending
          required: false
          schema:
            type: string
            enum:
              - ASC
              - DESC
            default: ASC
      responses:
        '200':
          description: Successful response
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EmbeddedWalletPaginatedAssetsResponse'
        default:
          $ref: '#/components/responses/Error'
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<EmbeddedWalletPaginatedAssetsResponse>> = fireblocks.embeddedWallets.getEmbeddedWalletAssets(embeddedWalletsApiGetEmbeddedWalletAssetsRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<EmbeddedWalletPaginatedAssetsResponse>> response = fireblocks.embeddedWallets().getEmbeddedWalletAssets(walletId, accountId, sort, pageCursor, pageSize, order);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.embedded_wallets.get_embedded_wallet_assets(wallet_id, account_id, sort, page_cursor, page_size, order);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<EmbeddedWalletPaginatedAssetsResponse>> = fireblocks.embeddedWallets.getEmbeddedWalletAssets(embeddedWalletsApiGetEmbeddedWalletAssetsRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<EmbeddedWalletPaginatedAssetsResponse>> response = fireblocks.embeddedWallets().getEmbeddedWalletAssets(walletId, accountId, sort, pageCursor, pageSize, order);
        - lang: Python
          source: response = fireblocks.embedded_wallets.get_embedded_wallet_assets(wallet_id, account_id, sort, page_cursor, page_size, order);
  /ncw/wallets/{walletId}/accounts/{accountId}/assets/{assetId}:
    get:
      summary: Retrieve asset
      description: Get asset under a specific account, under a specific Non Custodial Wallet
      operationId: GetEmbeddedWalletAsset
      tags:
        - Embedded Wallets
      x-rate-limit-category: read
      parameters:
        - in: path
          name: walletId
          description: Wallet Id
          example: 550e8400-e29b-41d4-a716-446655440000
          required: true
          schema:
            type: string
        - in: path
          name: accountId
          description: The ID of the account
          example: '0'
          required: true
          schema:
            type: string
        - name: assetId
          required: true
          description: The ID of the asset
          example: BTC
          in: path
          schema:
            type: string
            x-fb-entity: asset
      responses:
        '200':
          description: Successful response
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EmbeddedWalletAssetResponse'
        default:
          $ref: '#/components/responses/Error'
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<EmbeddedWalletAssetResponse>> = fireblocks.embeddedWallets.getEmbeddedWalletAsset(embeddedWalletsApiGetEmbeddedWalletAssetRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<EmbeddedWalletAssetResponse>> response = fireblocks.embeddedWallets().getEmbeddedWalletAsset(walletId, accountId, assetId);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.embedded_wallets.get_embedded_wallet_asset(wallet_id, account_id, asset_id);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<EmbeddedWalletAssetResponse>> = fireblocks.embeddedWallets.getEmbeddedWalletAsset(embeddedWalletsApiGetEmbeddedWalletAssetRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<EmbeddedWalletAssetResponse>> response = fireblocks.embeddedWallets().getEmbeddedWalletAsset(walletId, accountId, assetId);
        - lang: Python
          source: response = fireblocks.embedded_wallets.get_embedded_wallet_asset(wallet_id, account_id, asset_id);
    post:
      summary: Add asset to account
      description: Get the addresses of a specific asset, under a specific account, under a specific Non Custodial Wallet
      tags:
        - Embedded Wallets
      x-rate-limit-category: write
      parameters:
        - $ref: '#/components/parameters/X-Idempotency-Key'
        - in: path
          name: walletId
          description: Wallet Id
          example: 550e8400-e29b-41d4-a716-446655440000
          required: true
          schema:
            type: string
        - in: path
          name: accountId
          description: The ID of the account
          example: '0'
          required: true
          schema:
            type: string
            x-fb-entity: asset
        - name: assetId
          required: true
          description: The ID of the asset
          example: BTC
          in: path
          schema:
            type: string
      responses:
        '201':
          description: Created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EmbeddedWalletAddressDetails'
        default:
          $ref: '#/components/responses/Error'
      operationId: AddEmbeddedWalletAsset
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<EmbeddedWalletAddressDetails>> = fireblocks.embeddedWallets.addEmbeddedWalletAsset(embeddedWalletsApiAddEmbeddedWalletAssetRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<EmbeddedWalletAddressDetails>> response = fireblocks.embeddedWallets().addEmbeddedWalletAsset(walletId, accountId, assetId, idempotencyKey);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.embedded_wallets.add_embedded_wallet_asset(wallet_id, account_id, asset_id, idempotency_key);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<EmbeddedWalletAddressDetails>> = fireblocks.embeddedWallets.addEmbeddedWalletAsset(embeddedWalletsApiAddEmbeddedWalletAssetRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<EmbeddedWalletAddressDetails>> response = fireblocks.embeddedWallets().addEmbeddedWalletAsset(walletId, accountId, assetId, idempotencyKey);
        - lang: Python
          source: response = fireblocks.embedded_wallets.add_embedded_wallet_asset(wallet_id, account_id, asset_id, idempotency_key);
  /ncw/wallets/{walletId}/accounts/{accountId}/assets/{assetId}/{change}/{addressIndex}/public_key_info:
    get:
      summary: Get the public key of an asset
      description: Gets the public key of an asset associated with a specific account within a Non-Custodial Wallet
      x-rate-limit-category: read
      tags:
        - Embedded Wallets
      x-readme:
        code-samples:
          - language: javascript
            code: |
              const publicKeyInfoByAccountAssetArgs = {
                assetId: 'ETH',
                accountId: 0,
                change: 0,
                addressIndex: 0,
                compressed: true
              };            
              const pubKey = await fireblocks.NCW.getPublicKeyInfoByAccountAsset(walletId, publicKeyInfoByAccountAssetArgs);
            name: Fireblocks SDK Javascript example
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<PublicKeyInformation>> = fireblocks.embeddedWallets.getEmbeddedWalletPublicKeyInfoForAddress(embeddedWalletsApiGetEmbeddedWalletPublicKeyInfoForAddressRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<PublicKeyInformation>> response = fireblocks.embeddedWallets().getEmbeddedWalletPublicKeyInfoForAddress(walletId, accountId, assetId, change, addressIndex, xEndUserWalletId, compressed);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.embedded_wallets.get_embedded_wallet_public_key_info_for_address(wallet_id, account_id, asset_id, change, address_index, x_end_user_wallet_id, compressed);
            name: Fireblocks SDK Python example
      parameters:
        - $ref: '#/components/parameters/X-End-User-Wallet-Id_required'
        - in: path
          name: walletId
          description: The ID of the Non-Custodial wallet
          required: true
          schema:
            type: string
            example: 550e8400-e29b-41d4-a716-446655440000
        - in: path
          name: accountId
          description: The ID of the account
          required: true
          schema:
            type: string
            format: numeric
            example: '0'
        - in: path
          name: assetId
          description: The ID of the asset
          required: true
          schema:
            type: string
            x-fb-entity: asset
            example: BTC
        - in: path
          name: change
          description: BIP44 derivation path - change value
          required: true
          schema:
            type: number
            example: 0
        - in: path
          name: addressIndex
          description: BIP44 derivation path - index value
          required: true
          schema:
            type: number
            example: 0
        - in: query
          name: compressed
          description: Compressed/Uncompressed public key format
          required: false
          schema:
            type: boolean
            example: true
      responses:
        '200':
          description: Public Key Information
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PublicKeyInformation'
        default:
          $ref: '#/components/responses/Error'
      operationId: GetEmbeddedWalletPublicKeyInfoForAddress
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<PublicKeyInformation>> = fireblocks.embeddedWallets.getEmbeddedWalletPublicKeyInfoForAddress(embeddedWalletsApiGetEmbeddedWalletPublicKeyInfoForAddressRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<PublicKeyInformation>> response = fireblocks.embeddedWallets().getEmbeddedWalletPublicKeyInfoForAddress(walletId, accountId, assetId, change, addressIndex, xEndUserWalletId, compressed);
        - lang: Python
          source: response = fireblocks.embedded_wallets.get_embedded_wallet_public_key_info_for_address(wallet_id, account_id, asset_id, change, address_index, x_end_user_wallet_id, compressed);
  /ncw/wallets/{walletId}/accounts/{accountId}/assets/{assetId}/addresses:
    get:
      operationId: GetEmbeddedWalletAddresses
      summary: Retrieve asset addresses
      description: Get the addresses of a specific asset, under a specific account, under a specific Non Custodial Wallet
      tags:
        - Embedded Wallets
      x-rate-limit-category: query
      parameters:
        - in: path
          name: walletId
          description: Wallet Id
          example: 550e8400-e29b-41d4-a716-446655440000
          required: true
          schema:
            type: string
        - in: path
          name: accountId
          description: The ID of the account
          example: '0'
          required: true
          schema:
            type: string
        - name: assetId
          required: true
          description: The ID of the asset
          example: BTC
          in: path
          schema:
            type: string
        - name: pageCursor
          description: Cursor to the next page
          example: MjAyMy0xMi0xMyAyMDozNjowOC4zMDI=:MTEwMA==
          required: false
          in: query
          schema:
            type: string
        - name: pageSize
          required: false
          description: Items per page
          example: 10
          in: query
          schema:
            minimum: 1
            maximum: 100
            type: number
        - name: sort
          required: false
          description: Sort by address
          example: address
          in: query
          schema:
            default: createdAt
            enum:
              - address
              - createdAt
            type: string
        - name: order
          required: false
          description: Is the order ascending or descending
          example: ASC
          in: query
          schema:
            default: ASC
            enum:
              - DESC
              - ASC
            type: string
        - name: enabled
          required: false
          description: Enabled
          example: true
          in: query
          schema:
            type: boolean
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EmbeddedWalletPaginatedAddressesResponse'
        default:
          $ref: '#/components/responses/Error'
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<EmbeddedWalletPaginatedAddressesResponse>> = fireblocks.embeddedWallets.getEmbeddedWalletAddresses(embeddedWalletsApiGetEmbeddedWalletAddressesRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<EmbeddedWalletPaginatedAddressesResponse>> response = fireblocks.embeddedWallets().getEmbeddedWalletAddresses(walletId, accountId, assetId, pageCursor, pageSize, sort, order, enabled);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.embedded_wallets.get_embedded_wallet_addresses(wallet_id, account_id, asset_id, page_cursor, page_size, sort, order, enabled);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<EmbeddedWalletPaginatedAddressesResponse>> = fireblocks.embeddedWallets.getEmbeddedWalletAddresses(embeddedWalletsApiGetEmbeddedWalletAddressesRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<EmbeddedWalletPaginatedAddressesResponse>> response = fireblocks.embeddedWallets().getEmbeddedWalletAddresses(walletId, accountId, assetId, pageCursor, pageSize, sort, order, enabled);
        - lang: Python
          source: response = fireblocks.embedded_wallets.get_embedded_wallet_addresses(wallet_id, account_id, asset_id, page_cursor, page_size, sort, order, enabled);
  /ncw/wallets/{walletId}/accounts/{accountId}/assets/{assetId}/balance:
    put:
      operationId: RefreshEmbeddedWalletAssetBalance
      description: Refresh the balance of an asset in a specific account
      summary: Refresh asset balance
      tags:
        - Embedded Wallets
      x-rate-limit-category: async
      parameters:
        - $ref: '#/components/parameters/X-Idempotency-Key'
        - in: path
          name: walletId
          description: Wallet Id
          example: 550e8400-e29b-41d4-a716-446655440000
          required: true
          schema:
            type: string
        - in: path
          name: accountId
          description: The ID of the account
          example: '0'
          required: true
          schema:
            type: string
        - name: assetId
          required: true
          description: The ID of the asset
          example: BTC
          in: path
          schema:
            type: string
            x-fb-entity: asset
      responses:
        '200':
          description: Successful response
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EmbeddedWalletAssetBalance'
        default:
          $ref: '#/components/responses/Error'
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<EmbeddedWalletAssetBalance>> = fireblocks.embeddedWallets.refreshEmbeddedWalletAssetBalance(embeddedWalletsApiRefreshEmbeddedWalletAssetBalanceRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<EmbeddedWalletAssetBalance>> response = fireblocks.embeddedWallets().refreshEmbeddedWalletAssetBalance(walletId, accountId, assetId, idempotencyKey);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.embedded_wallets.refresh_embedded_wallet_asset_balance(wallet_id, account_id, asset_id, idempotency_key);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<EmbeddedWalletAssetBalance>> = fireblocks.embeddedWallets.refreshEmbeddedWalletAssetBalance(embeddedWalletsApiRefreshEmbeddedWalletAssetBalanceRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<EmbeddedWalletAssetBalance>> response = fireblocks.embeddedWallets().refreshEmbeddedWalletAssetBalance(walletId, accountId, assetId, idempotencyKey);
        - lang: Python
          source: response = fireblocks.embedded_wallets.refresh_embedded_wallet_asset_balance(wallet_id, account_id, asset_id, idempotency_key);
    get:
      operationId: GetEmbeddedWalletAssetBalance
      summary: Retrieve asset balance
      description: Get balance for specific asset, under a specific account
      tags:
        - Embedded Wallets
      x-rate-limit-category: read
      parameters:
        - in: path
          name: walletId
          description: Wallet Id
          example: 550e8400-e29b-41d4-a716-446655440000
          required: true
          schema:
            type: string
        - in: path
          name: accountId
          description: The ID of the account
          example: '0'
          required: true
          schema:
            type: string
        - name: assetId
          required: true
          description: The ID of the asset
          example: BTC
          in: path
          schema:
            type: string
            x-fb-entity: asset
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EmbeddedWalletAssetBalance'
        default:
          $ref: '#/components/responses/Error'
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<EmbeddedWalletAssetBalance>> = fireblocks.embeddedWallets.getEmbeddedWalletAssetBalance(embeddedWalletsApiGetEmbeddedWalletAssetBalanceRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<EmbeddedWalletAssetBalance>> response = fireblocks.embeddedWallets().getEmbeddedWalletAssetBalance(walletId, accountId, assetId);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.embedded_wallets.get_embedded_wallet_asset_balance(wallet_id, account_id, asset_id);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<EmbeddedWalletAssetBalance>> = fireblocks.embeddedWallets.getEmbeddedWalletAssetBalance(embeddedWalletsApiGetEmbeddedWalletAssetBalanceRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<EmbeddedWalletAssetBalance>> response = fireblocks.embeddedWallets().getEmbeddedWalletAssetBalance(walletId, accountId, assetId);
        - lang: Python
          source: response = fireblocks.embedded_wallets.get_embedded_wallet_asset_balance(wallet_id, account_id, asset_id);
  /ncw/wallets/{walletId}/assign:
    post:
      operationId: assignEmbeddedWallet
      summary: Assign a wallet
      description: Assign a specific Non Custodial Wallet to a user
      tags:
        - Embedded Wallets
      x-rate-limit-category: write
      parameters:
        - $ref: '#/components/parameters/X-Idempotency-Key'
        - in: path
          name: walletId
          description: Wallet Id
          example: 550e8400-e29b-41d4-a716-446655440000
          required: true
          schema:
            type: string
      responses:
        '201':
          description: Wallet Assigned
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EmbeddedWallet'
        default:
          $ref: '#/components/responses/Error'
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<EmbeddedWallet>> = fireblocks.embeddedWallets.assignEmbeddedWallet(embeddedWalletsApiAssignEmbeddedWalletRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<EmbeddedWallet>> response = fireblocks.embeddedWallets().assignEmbeddedWallet(walletId, idempotencyKey);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.embedded_wallets.assign_embedded_wallet(wallet_id, idempotency_key);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<EmbeddedWallet>> = fireblocks.embeddedWallets.assignEmbeddedWallet(embeddedWalletsApiAssignEmbeddedWalletRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<EmbeddedWallet>> response = fireblocks.embeddedWallets().assignEmbeddedWallet(walletId, idempotencyKey);
        - lang: Python
          source: response = fireblocks.embedded_wallets.assign_embedded_wallet(wallet_id, idempotency_key);
  /ncw/wallets/{walletId}/backup/latest:
    get:
      summary: Get wallet Latest Backup details
      operationId: GetEmbeddedWalletLatestBackup
      description: Get wallet Latest Backup details, including the deviceId, and backup time
      tags:
        - Embedded Wallets
      x-rate-limit-category: read
      parameters:
        - in: path
          name: walletId
          description: Wallet Id
          example: 550e8400-e29b-41d4-a716-446655440000
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Successful response
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EmbeddedWalletLatestBackupResponse'
        default:
          $ref: '#/components/responses/Error'
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<EmbeddedWalletLatestBackupResponse>> = fireblocks.embeddedWallets.getEmbeddedWalletLatestBackup(embeddedWalletsApiGetEmbeddedWalletLatestBackupRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<EmbeddedWalletLatestBackupResponse>> response = fireblocks.embeddedWallets().getEmbeddedWalletLatestBackup(walletId);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.embedded_wallets.get_embedded_wallet_latest_backup(wallet_id);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<EmbeddedWalletLatestBackupResponse>> = fireblocks.embeddedWallets.getEmbeddedWalletLatestBackup(embeddedWalletsApiGetEmbeddedWalletLatestBackupRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<EmbeddedWalletLatestBackupResponse>> response = fireblocks.embeddedWallets().getEmbeddedWalletLatestBackup(walletId);
        - lang: Python
          source: response = fireblocks.embedded_wallets.get_embedded_wallet_latest_backup(wallet_id);
  /ncw/wallets/{walletId}/devices_paginated:
    get:
      operationId: getEmbeddedWalletDevicesPaginated
      summary: Get registered devices - paginated
      description: Get a paginated list of registered devices for a specific Non Custodial Wallet
      tags:
        - Embedded Wallets
      x-rate-limit-category: query
      parameters:
        - in: path
          name: walletId
          description: Wallet Id
          example: 550e8400-e29b-41d4-a716-446655440000
          required: true
          schema:
            type: string
        - in: query
          name: sort
          description: Sort by fields
          required: false
          schema:
            type: array
            items:
              type: string
              enum:
                - createdAt
            default:
              - createdAt
        - in: query
          name: pageCursor
          description: Cursor to the next page
          required: false
          schema:
            type: string
        - in: query
          name: pageSize
          description: Amount of results to return in the next page
          required: false
          schema:
            type: number
            default: 200
            maximum: 400
        - in: query
          name: order
          description: Is the order ascending or descending
          required: false
          schema:
            type: string
            enum:
              - ASC
              - DESC
            default: ASC
      responses:
        '200':
          description: Successful response
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EmbeddedWalletPaginatedDevicesResponse'
        '400':
          description: Query parameters were invalid
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorSchema'
        default:
          $ref: '#/components/responses/Error'
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<EmbeddedWalletPaginatedDevicesResponse>> = fireblocks.embeddedWallets.getEmbeddedWalletDevicesPaginated(embeddedWalletsApiGetEmbeddedWalletDevicesPaginatedRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<EmbeddedWalletPaginatedDevicesResponse>> response = fireblocks.embeddedWallets().getEmbeddedWalletDevicesPaginated(walletId, sort, pageCursor, pageSize, order);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.embedded_wallets.get_embedded_wallet_devices_paginated(wallet_id, sort, page_cursor, page_size, order);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<EmbeddedWalletPaginatedDevicesResponse>> = fireblocks.embeddedWallets.getEmbeddedWalletDevicesPaginated(embeddedWalletsApiGetEmbeddedWalletDevicesPaginatedRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<EmbeddedWalletPaginatedDevicesResponse>> response = fireblocks.embeddedWallets().getEmbeddedWalletDevicesPaginated(walletId, sort, pageCursor, pageSize, order);
        - lang: Python
          source: response = fireblocks.embedded_wallets.get_embedded_wallet_devices_paginated(wallet_id, sort, page_cursor, page_size, order);
  /ncw/wallets/{walletId}/devices/{deviceId}:
    get:
      summary: Get Embedded Wallet Device
      operationId: GetEmbeddedWalletDevice
      description: Get specific device for a specific s Wallet
      tags:
        - Embedded Wallets
      x-rate-limit-category: read
      parameters:
        - in: path
          name: walletId
          description: Wallet Id
          example: 550e8400-e29b-41d4-a716-446655440000
          required: true
          schema:
            type: string
        - in: path
          name: deviceId
          description: Device Id
          example: 9ee1bff0-6dba-4f0c-9b75-03fe90e66fa3
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Successful response
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EmbeddedWalletDevice'
        default:
          $ref: '#/components/responses/Error'
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<EmbeddedWalletDevice>> = fireblocks.embeddedWallets.getEmbeddedWalletDevice(embeddedWalletsApiGetEmbeddedWalletDeviceRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<EmbeddedWalletDevice>> response = fireblocks.embeddedWallets().getEmbeddedWalletDevice(walletId, deviceId);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.embedded_wallets.get_embedded_wallet_device(wallet_id, device_id);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<EmbeddedWalletDevice>> = fireblocks.embeddedWallets.getEmbeddedWalletDevice(embeddedWalletsApiGetEmbeddedWalletDeviceRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<EmbeddedWalletDevice>> response = fireblocks.embeddedWallets().getEmbeddedWalletDevice(walletId, deviceId);
        - lang: Python
          source: response = fireblocks.embedded_wallets.get_embedded_wallet_device(wallet_id, device_id);
  /ncw/wallets/{walletId}/devices/{deviceId}/setup_status:
    get:
      summary: Get device key setup state
      operationId: GetEmbeddedWalletDeviceSetupState
      description: Get the state of the specific device setup key under a specific Non Custodial Wallet
      tags:
        - Embedded Wallets
      x-rate-limit-category: read
      parameters:
        - in: path
          name: walletId
          description: Wallet Id
          example: 550e8400-e29b-41d4-a716-446655440000
          required: true
          schema:
            type: string
        - in: path
          name: deviceId
          description: Device Id
          example: 9ee1bff0-6dba-4f0c-9b75-03fe90e66fa3
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Successful response
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EmbeddedWalletDeviceKeySetupResponse'
        default:
          $ref: '#/components/responses/Error'
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<EmbeddedWalletDeviceKeySetupResponse>> = fireblocks.embeddedWallets.getEmbeddedWalletDeviceSetupState(embeddedWalletsApiGetEmbeddedWalletDeviceSetupStateRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<EmbeddedWalletDeviceKeySetupResponse>> response = fireblocks.embeddedWallets().getEmbeddedWalletDeviceSetupState(walletId, deviceId);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.embedded_wallets.get_embedded_wallet_device_setup_state(wallet_id, device_id);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<EmbeddedWalletDeviceKeySetupResponse>> = fireblocks.embeddedWallets.getEmbeddedWalletDeviceSetupState(embeddedWalletsApiGetEmbeddedWalletDeviceSetupStateRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<EmbeddedWalletDeviceKeySetupResponse>> response = fireblocks.embeddedWallets().getEmbeddedWalletDeviceSetupState(walletId, deviceId);
        - lang: Python
          source: response = fireblocks.embedded_wallets.get_embedded_wallet_device_setup_state(wallet_id, device_id);
  /ncw/wallets/{walletId}/devices/{deviceId}/status:
    patch:
      operationId: updateEmbeddedWalletDeviceStatus
      summary: Update device status
      description: Update the enabled/disabled status of a specific device for a Non Custodial Wallet
      tags:
        - Embedded Wallets
      x-rate-limit-category: write
      parameters:
        - $ref: '#/components/parameters/X-Idempotency-Key'
        - in: path
          name: walletId
          description: Wallet Id
          example: 550e8400-e29b-41d4-a716-446655440000
          required: true
          schema:
            type: string
        - in: path
          name: deviceId
          description: Device Id
          example: 9ee1bff0-6dba-4f0c-9b75-03fe90e66fa3
          required: true
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/EnableDevice'
      responses:
        '204':
          description: No Content - Device status updated successfully
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
        default:
          $ref: '#/components/responses/Error'
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<void>> = fireblocks.embeddedWallets.updateEmbeddedWalletDeviceStatus(embeddedWalletsApiUpdateEmbeddedWalletDeviceStatusRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<Void>> response = fireblocks.embeddedWallets().updateEmbeddedWalletDeviceStatus(enableDevice, walletId, deviceId, idempotencyKey);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.embedded_wallets.update_embedded_wallet_device_status(enable_device, wallet_id, device_id, idempotency_key);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<void>> = fireblocks.embeddedWallets.updateEmbeddedWalletDeviceStatus(embeddedWalletsApiUpdateEmbeddedWalletDeviceStatusRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<Void>> response = fireblocks.embeddedWallets().updateEmbeddedWalletDeviceStatus(enableDevice, walletId, deviceId, idempotencyKey);
        - lang: Python
          source: response = fireblocks.embedded_wallets.update_embedded_wallet_device_status(enable_device, wallet_id, device_id, idempotency_key);
  /ncw/wallets/{walletId}/public_key_info:
    get:
      summary: Get the public key for a derivation path
      description: Gets the public key information based on derivation path and signing algorithm within a Non-Custodial Wallet
      tags:
        - Embedded Wallets
      x-rate-limit-category: read
      x-readme:
        code-samples:
          - language: javascript
            code: |
              const publicKeyInfoArgs = { 
                algorithm: 'MPC_ECDSA_SECP256K1',
                derivationPath: [44, 0, 0, 0, 0],
                compressed: true
              };
              const pubKey = await fireblocks.NCW.getPublicKeyInfo(walletId, publicKeyInfoArgs);
            name: Fireblocks SDK Javascript example
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<PublicKeyInformation>> = fireblocks.embeddedWallets.getPublicKeyInfoNcw(embeddedWalletsApiGetPublicKeyInfoNcwRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<PublicKeyInformation>> response = fireblocks.embeddedWallets().getPublicKeyInfoNcw(walletId, derivationPath, algorithm, xEndUserWalletId, compressed);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.embedded_wallets.get_public_key_info_ncw(wallet_id, derivation_path, algorithm, x_end_user_wallet_id, compressed);
            name: Fireblocks SDK Python example
      parameters:
        - $ref: '#/components/parameters/X-End-User-Wallet-Id_required'
        - in: path
          name: walletId
          description: The ID of the Non-Custodial wallet
          required: true
          schema:
            type: string
            example: 550e8400-e29b-41d4-a716-446655440000
        - in: query
          name: derivationPath
          description: |
            An array of integers (passed as JSON stringified array) representing the full BIP44 derivation path of the requested public key. 
            The first element must always be 44.
          required: true
          example:
            - 44
            - 0
            - 0
            - 0
            - 0
          schema:
            type: string
        - in: query
          name: algorithm
          description: Elliptic Curve
          required: true
          schema:
            type: string
            enum:
              - MPC_ECDSA_SECP256K1
              - MPC_EDDSA_ED25519
            example: MPC_EDDSA_ED25519
        - in: query
          name: compressed
          description: Compressed/Uncompressed public key format
          required: false
          schema:
            type: boolean
            example: true
      responses:
        '200':
          description: Public key information
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PublicKeyInformation'
        default:
          $ref: '#/components/responses/Error'
      operationId: getPublicKeyInfoNcw
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<PublicKeyInformation>> = fireblocks.embeddedWallets.getPublicKeyInfoNcw(embeddedWalletsApiGetPublicKeyInfoNcwRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<PublicKeyInformation>> response = fireblocks.embeddedWallets().getPublicKeyInfoNcw(walletId, derivationPath, algorithm, xEndUserWalletId, compressed);
        - lang: Python
          source: response = fireblocks.embedded_wallets.get_public_key_info_ncw(wallet_id, derivation_path, algorithm, x_end_user_wallet_id, compressed);
  /ncw/wallets/{walletId}/setup_status:
    get:
      operationId: getEmbeddedWalletSetupStatus
      summary: Get wallet key setup state
      description: Get the key setup state for a specific Non Custodial Wallet, including required algorithms and device setup status
      tags:
        - Embedded Wallets
      x-rate-limit-category: read
      parameters:
        - in: path
          name: walletId
          description: Wallet Id
          example: 550e8400-e29b-41d4-a716-446655440000
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Successful response
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EmbeddedWalletSetupStatusResponse'
        default:
          $ref: '#/components/responses/Error'
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<EmbeddedWalletSetupStatusResponse>> = fireblocks.embeddedWallets.getEmbeddedWalletSetupStatus(embeddedWalletsApiGetEmbeddedWalletSetupStatusRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<EmbeddedWalletSetupStatusResponse>> response = fireblocks.embeddedWallets().getEmbeddedWalletSetupStatus(walletId);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.embedded_wallets.get_embedded_wallet_setup_status(wallet_id);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<EmbeddedWalletSetupStatusResponse>> = fireblocks.embeddedWallets.getEmbeddedWalletSetupStatus(embeddedWalletsApiGetEmbeddedWalletSetupStatusRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<EmbeddedWalletSetupStatusResponse>> response = fireblocks.embeddedWallets().getEmbeddedWalletSetupStatus(walletId);
        - lang: Python
          source: response = fireblocks.embedded_wallets.get_embedded_wallet_setup_status(wallet_id);
  /ncw/wallets/{walletId}/status:
    patch:
      operationId: updateEmbeddedWalletStatus
      summary: Update wallet status
      description: Update the enabled/disabled status of a specific Non Custodial Wallet
      tags:
        - Embedded Wallets
      x-rate-limit-category: write
      parameters:
        - $ref: '#/components/parameters/X-Idempotency-Key'
        - in: path
          name: walletId
          description: Wallet Id
          example: 550e8400-e29b-41d4-a716-446655440000
          required: true
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/EnableWallet'
      responses:
        '204':
          description: No Content - Wallet status updated successfully
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
        default:
          $ref: '#/components/responses/Error'
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<void>> = fireblocks.embeddedWallets.updateEmbeddedWalletStatus(embeddedWalletsApiUpdateEmbeddedWalletStatusRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<Void>> response = fireblocks.embeddedWallets().updateEmbeddedWalletStatus(enableWallet, walletId, idempotencyKey);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.embedded_wallets.update_embedded_wallet_status(enable_wallet, wallet_id, idempotency_key);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<void>> = fireblocks.embeddedWallets.updateEmbeddedWalletStatus(embeddedWalletsApiUpdateEmbeddedWalletStatusRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<Void>> response = fireblocks.embeddedWallets().updateEmbeddedWalletStatus(enableWallet, walletId, idempotencyKey);
        - lang: Python
          source: response = fireblocks.embedded_wallets.update_embedded_wallet_status(enable_wallet, wallet_id, idempotency_key);
  /ncw/wallets/supported_assets:
    get:
      summary: Retrieve supported assets
      description: Get all the available supported assets for the Non-Custodial Wallet
      tags:
        - Embedded Wallets
      x-rate-limit-category: query
      parameters:
        - in: query
          name: pageCursor
          required: false
          description: Next page cursor to fetch
          example: MjAyMy0xMi0xMyAyMDozNjowOC4zMDI=:MTEwMA==
          schema:
            type: string
        - in: query
          name: pageSize
          description: Items per page
          example: 500
          required: false
          schema:
            type: number
            default: 200
            maximum: 400
        - in: query
          name: onlyBaseAssets
          description: Only base assets
          example: true
          required: false
          schema:
            type: boolean
      responses:
        '200':
          description: Successful response
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EmbeddedWalletPaginatedAssetsResponse'
        default:
          $ref: '#/components/responses/Error'
      operationId: GetEmbeddedWalletSupportedAssets
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<EmbeddedWalletPaginatedAssetsResponse>> = fireblocks.embeddedWallets.getEmbeddedWalletSupportedAssets(embeddedWalletsApiGetEmbeddedWalletSupportedAssetsRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<EmbeddedWalletPaginatedAssetsResponse>> response = fireblocks.embeddedWallets().getEmbeddedWalletSupportedAssets(pageCursor, pageSize, onlyBaseAssets);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.embedded_wallets.get_embedded_wallet_supported_assets(page_cursor, page_size, only_base_assets);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<EmbeddedWalletPaginatedAssetsResponse>> = fireblocks.embeddedWallets.getEmbeddedWalletSupportedAssets(embeddedWalletsApiGetEmbeddedWalletSupportedAssetsRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<EmbeddedWalletPaginatedAssetsResponse>> response = fireblocks.embeddedWallets().getEmbeddedWalletSupportedAssets(pageCursor, pageSize, onlyBaseAssets);
        - lang: Python
          source: response = fireblocks.embedded_wallets.get_embedded_wallet_supported_assets(page_cursor, page_size, only_base_assets);
  /exchange_accounts:
    get:
      x-internal: true
      deprecated: true
      summary: List exchange accounts
      description: |-
        DEPRECATED - Please use the `/exchange_accounts/paged` endpoint.
        Endpoint Permission: Admin, Non-Signing Admin.
      tags:
        - Exchange accounts
      x-rate-limit-category: high_compute
      x-readme:
        code-samples:
          - language: python
            code: exchangeAccounts = fireblocks.get_exchange_accounts()
            name: Fireblocks SDK Python example (Legacy)
          - language: javascript
            code: const exchangeAccounts = await fireblocks.getExchangeAccounts();
            name: Fireblocks SDK Javascript example
      responses:
        '200':
          description: An ExchangeAccount object
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetExchangeAccountsResponse'
        default:
          $ref: '#/components/responses/Error'
      operationId: getExchangeAccounts
    post:
      summary: Add an exchange account
      operationId: addExchangeAccount
      description: |
        Add an exchange account to exchanges. 

        Note: This endpoint currently only supports the following exchanges `INDEPENDENT_RESERVE`,`BIT`, `BITHUMB`, `BITSO`, `CRYPTOCOM`, `BYBIT_V2`, `WHITEBIT`, `HITBTC`, `GEMINI`, `HUOBI`, `GATEIO`, `COINHAKO`, `BULLISH`, `BITGET`, and `LUNO`

        To add an exchange account, please use the following [guide](https://developers.fireblocks.com/docs/add-an-exchange-account).
      tags:
        - Exchange accounts
      x-rate-limit-category: write
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<AddExchangeAccountResponse>> = fireblocks.exchangeAccounts.addExchangeAccount(exchangeAccountsApiAddExchangeAccountRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<AddExchangeAccountResponse>> response = fireblocks.exchangeAccounts().addExchangeAccount(addExchangeAccountRequest, idempotencyKey);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.exchange_accounts.add_exchange_account(add_exchange_account_request, idempotency_key);
            name: Fireblocks SDK Python example
      parameters:
        - $ref: '#/components/parameters/X-Idempotency-Key'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AddExchangeAccountRequest'
      responses:
        '201':
          description: An Exchange Account identifier object
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AddExchangeAccountResponse'
        default:
          $ref: '#/components/responses/Error'
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<AddExchangeAccountResponse>> = fireblocks.exchangeAccounts.addExchangeAccount(exchangeAccountsApiAddExchangeAccountRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<AddExchangeAccountResponse>> response = fireblocks.exchangeAccounts().addExchangeAccount(addExchangeAccountRequest, idempotencyKey);
        - lang: Python
          source: response = fireblocks.exchange_accounts.add_exchange_account(add_exchange_account_request, idempotency_key);
  /exchange_accounts/{exchangeAccountId}:
    get:
      summary: Get a specific exchange account
      description: |-
        Returns an exchange account by ID.
        Endpoint Permission: Admin, Non-Signing Admin.
      tags:
        - Exchange accounts
      x-rate-limit-category: external_query
      x-readme:
        code-samples:
          - language: python
            code: exchangeAccount = fireblocks.get_exchange_account(exchangeAccountId)
            name: Fireblocks SDK Python example (Legacy)
          - language: javascript
            code: const exchnageAccount = await fireblocks.get_exchange_account(exchangeAccountId);
            name: Fireblocks SDK Javascript example
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<ExchangeAccount>> = fireblocks.exchangeAccounts.getExchangeAccount(exchangeAccountsApiGetExchangeAccountRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<ExchangeAccount>> response = fireblocks.exchangeAccounts().getExchangeAccount(exchangeAccountId);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.exchange_accounts.get_exchange_account(exchange_account_id);
            name: Fireblocks SDK Python example
      parameters:
        - in: path
          name: exchangeAccountId
          required: true
          description: The ID of the exchange account to return
          schema:
            type: string
      responses:
        '200':
          description: An ExchangeAccount object
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExchangeAccount'
        default:
          $ref: '#/components/responses/Error'
      operationId: getExchangeAccount
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<ExchangeAccount>> = fireblocks.exchangeAccounts.getExchangeAccount(exchangeAccountsApiGetExchangeAccountRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<ExchangeAccount>> response = fireblocks.exchangeAccounts().getExchangeAccount(exchangeAccountId);
        - lang: Python
          source: response = fireblocks.exchange_accounts.get_exchange_account(exchange_account_id);
  /exchange_accounts/{exchangeAccountId}/{assetId}:
    get:
      summary: Get an asset for an exchange account
      description: |-
        Returns an asset for an exchange account.
        Endpoint Permission: Admin, Non-Signing Admin.
      tags:
        - Exchange accounts
      x-rate-limit-category: external_query
      x-readme:
        code-samples:
          - language: python
            code: exchangeAsset = fireblocks.get_exchange_account_asset(exchangeAccountId, assetId)
            name: Fireblocks SDK Python example (Legacy)
          - language: javascript
            code: const exchangeAsset = await fireblocks.getExchangeAsset(exchangeAccountId, assetId);
            name: Fireblocks SDK Javascript example
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<ExchangeAsset>> = fireblocks.exchangeAccounts.getExchangeAccountAsset(exchangeAccountsApiGetExchangeAccountAssetRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<ExchangeAsset>> response = fireblocks.exchangeAccounts().getExchangeAccountAsset(exchangeAccountId, assetId);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.exchange_accounts.get_exchange_account_asset(exchange_account_id, asset_id);
            name: Fireblocks SDK Python example
      parameters:
        - in: path
          name: exchangeAccountId
          required: true
          description: The ID of the exchange account to return
          schema:
            type: string
        - in: path
          name: assetId
          required: true
          description: The ID of the asset to return
          schema:
            type: string
      responses:
        '200':
          description: An ExchangeAccountAsset object
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExchangeAsset'
        default:
          $ref: '#/components/responses/Error'
      operationId: getExchangeAccountAsset
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<ExchangeAsset>> = fireblocks.exchangeAccounts.getExchangeAccountAsset(exchangeAccountsApiGetExchangeAccountAssetRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<ExchangeAsset>> response = fireblocks.exchangeAccounts().getExchangeAccountAsset(exchangeAccountId, assetId);
        - lang: Python
          source: response = fireblocks.exchange_accounts.get_exchange_account_asset(exchange_account_id, asset_id);
  /exchange_accounts/{exchangeAccountId}/convert:
    post:
      summary: Convert exchange account funds
      description: |-
        Convert exchange account funds from the source asset to the destination asset. Coinbase (USD to USDC, USDC to USD) and Bitso (MXN to USD) are supported conversions.
        Learn more about Fireblocks Exchange Connectivity in the following [guide](https://developers.fireblocks.com/docs/connect-to-exchanges-and-fiat-providers).
        Endpoint Permission: Admin, Non-Signing Admin.
      tags:
        - Exchange accounts
      x-rate-limit-category: write
      parameters:
        - in: path
          name: exchangeAccountId
          required: true
          description: The ID of the exchange account. Please make sure the exchange supports conversions. To find the ID of your exchange account, use GET/exchange_accounts.
          schema:
            type: string
        - $ref: '#/components/parameters/X-Idempotency-Key'
      responses:
        '200':
          description: Conversion successful
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ConvertAssetsResponse'
        default:
          $ref: '#/components/responses/Error'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ConvertAssetsRequest'
      operationId: convertAssets
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<ConvertAssetsResponse>> = fireblocks.exchangeAccounts.convertAssets(exchangeAccountsApiConvertAssetsRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<ConvertAssetsResponse>> response = fireblocks.exchangeAccounts().convertAssets(exchangeAccountId, convertAssetsRequest, idempotencyKey);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.exchange_accounts.convert_assets(exchange_account_id, convert_assets_request, idempotency_key);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<ConvertAssetsResponse>> = fireblocks.exchangeAccounts.convertAssets(exchangeAccountsApiConvertAssetsRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<ConvertAssetsResponse>> response = fireblocks.exchangeAccounts().convertAssets(exchangeAccountId, convertAssetsRequest, idempotencyKey);
        - lang: Python
          source: response = fireblocks.exchange_accounts.convert_assets(exchange_account_id, convert_assets_request, idempotency_key);
  /exchange_accounts/{exchangeAccountId}/internal_transfer:
    post:
      summary: Internal transfer for exchange accounts
      description: |-
        Transfers funds between trading accounts under the same exchange account.
        Learn more about Fireblocks Exchange Connectivity in the following [guide](https://developers.fireblocks.com/docs/connect-to-exchanges-and-fiat-providers).
        Endpoint Permission: Admin, Non-Signing Admin.
      tags:
        - Exchange accounts
      x-rate-limit-category: high_compute
      parameters:
        - in: path
          name: exchangeAccountId
          required: true
          description: The ID of the exchange account to return
          schema:
            type: string
        - $ref: '#/components/parameters/X-Idempotency-Key'
      responses:
        '201':
          description: Transfer succeeded
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InternalTransferResponse'
        default:
          $ref: '#/components/responses/Error'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateInternalTransferRequest'
      operationId: internalTransfer
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<InternalTransferResponse>> = fireblocks.exchangeAccounts.internalTransfer(exchangeAccountsApiInternalTransferRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<InternalTransferResponse>> response = fireblocks.exchangeAccounts().internalTransfer(exchangeAccountId, createInternalTransferRequest, idempotencyKey);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.exchange_accounts.internal_transfer(exchange_account_id, create_internal_transfer_request, idempotency_key);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<InternalTransferResponse>> = fireblocks.exchangeAccounts.internalTransfer(exchangeAccountsApiInternalTransferRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<InternalTransferResponse>> response = fireblocks.exchangeAccounts().internalTransfer(exchangeAccountId, createInternalTransferRequest, idempotencyKey);
        - lang: Python
          source: response = fireblocks.exchange_accounts.internal_transfer(exchange_account_id, create_internal_transfer_request, idempotency_key);
  /exchange_accounts/credentials_public_key:
    get:
      summary: Get public key to encrypt exchange credentials
      description: Return public key
      tags:
        - Exchange accounts
      x-rate-limit-category: read
      responses:
        '200':
          description: public key as string
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetExchangeAccountsCredentialsPublicKeyResponse'
        default:
          $ref: '#/components/responses/Error'
      operationId: getExchangeAccountsCredentialsPublicKey
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<GetExchangeAccountsCredentialsPublicKeyResponse>> = fireblocks.exchangeAccounts.getExchangeAccountsCredentialsPublicKey();'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<GetExchangeAccountsCredentialsPublicKeyResponse>> response = fireblocks.exchangeAccounts().getExchangeAccountsCredentialsPublicKey();
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.exchange_accounts.get_exchange_accounts_credentials_public_key();
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<GetExchangeAccountsCredentialsPublicKeyResponse>> = fireblocks.exchangeAccounts.getExchangeAccountsCredentialsPublicKey();'
        - lang: Java
          source: CompletableFuture<ApiResponse<GetExchangeAccountsCredentialsPublicKeyResponse>> response = fireblocks.exchangeAccounts().getExchangeAccountsCredentialsPublicKey();
        - lang: Python
          source: response = fireblocks.exchange_accounts.get_exchange_accounts_credentials_public_key();
  /exchange_accounts/paged:
    get:
      operationId: getPagedExchangeAccounts
      summary: List connected exchange accounts
      description: 'Returns a list of the connected exchange accounts in your workspace. Endpoint Permission: Admin, Non-Signing Admin.'
      tags:
        - Exchange accounts
      x-rate-limit-category: query
      x-readme:
        code-samples:
          - language: javascript
            code: const exchangeAccounts = await fireblocks.getExchangeAccountsPaged();
            name: Fireblocks SDK Javascript example
          - language: python
            code: exchangeAccounts = fireblocks.get_exchange_accounts_paged()
            name: Fireblocks SDK Python example (Legacy)
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<GetPagedExchangeAccountsResponse>> = fireblocks.exchangeAccounts.getPagedExchangeAccounts(exchangeAccountsApiGetPagedExchangeAccountsRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<GetPagedExchangeAccountsResponse>> response = fireblocks.exchangeAccounts().getPagedExchangeAccounts(limit, before, after);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.exchange_accounts.get_paged_exchange_accounts(limit, before, after);
            name: Fireblocks SDK Python example
      parameters:
        - in: query
          name: before
          required: false
          schema:
            type: string
        - in: query
          name: after
          required: false
          schema:
            type: string
        - in: query
          name: limit
          description: number of exchanges per page
          required: true
          schema:
            type: number
            minimum: 1
            maximum: 5
            default: 3
      responses:
        '200':
          description: An ExchangeAccount object
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetPagedExchangeAccountsResponse'
        default:
          $ref: '#/components/responses/Error'
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<GetPagedExchangeAccountsResponse>> = fireblocks.exchangeAccounts.getPagedExchangeAccounts(exchangeAccountsApiGetPagedExchangeAccountsRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<GetPagedExchangeAccountsResponse>> response = fireblocks.exchangeAccounts().getPagedExchangeAccounts(limit, before, after);
        - lang: Python
          source: response = fireblocks.exchange_accounts.get_paged_exchange_accounts(limit, before, after);
  /external_wallets:
    get:
      summary: List external wallets
      description: |-
        Gets a list of external wallets under the workspace.

        External Wallet is a whitelisted address of a wallet that belongs to your users/counterparties.

        - You cannot see the balance of the external wallet.
        - You cannot initiate transactions from an external wallet as the source via Fireblocks.
        Endpoint Permission: Admin, Non-Signing Admin, Signer, Approver, Editor, Viewer.
      tags:
        - External wallets
      x-rate-limit-category: external_query
      x-readme:
        code-samples:
          - language: python
            code: externalWallets = fireblocks.get_external_wallets()
            name: Fireblocks SDK Python example (Legacy)
          - language: javascript
            code: const externalWallets = await fireblocks.getExternalWallets();
            name: Fireblocks SDK Javascript example
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<GetExternalWalletsResponse>> = fireblocks.externalWallets.getExternalWallets();'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<List<UnmanagedWallet>>> response = fireblocks.externalWallets().getExternalWallets();
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.external_wallets.get_external_wallets();
            name: Fireblocks SDK Python example
      responses:
        '200':
          description: A list of external wallets
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetExternalWalletsResponse'
        default:
          $ref: '#/components/responses/Error'
      operationId: getExternalWallets
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<GetExternalWalletsResponse>> = fireblocks.externalWallets.getExternalWallets();'
        - lang: Java
          source: CompletableFuture<ApiResponse<List<UnmanagedWallet>>> response = fireblocks.externalWallets().getExternalWallets();
        - lang: Python
          source: response = fireblocks.external_wallets.get_external_wallets();
    post:
      summary: Create an external wallet
      description: |-
        Creates a new external wallet with the requested name.

        External Wallet is a whitelisted address of a wallet that belongs to your users/counterparties.

        - You cannot see the balance of the external wallet.
        - You cannot initiate transactions from an external wallet as the source via Fireblocks.
        Endpoint Permission: Admin, Non-Signing Admin, Signer, Approver, Editor.
      tags:
        - External wallets
      x-rate-limit-category: write
      x-readme:
        code-samples:
          - language: python
            code: externalWallet = fireblocks.create_external_wallet(name, customer_ref_id)
            name: Fireblocks SDK Python example (Legacy)
          - language: javascript
            code: const externalWallet = await fireblocks.createExternalWallet(name, customerRefId);
            name: Fireblocks SDK Javascript example
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<UnmanagedWallet>> = fireblocks.externalWallets.createExternalWallet(externalWalletsApiCreateExternalWalletRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<UnmanagedWallet>> response = fireblocks.externalWallets().createExternalWallet(createWalletRequest, idempotencyKey);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.external_wallets.create_external_wallet(create_wallet_request, idempotency_key);
            name: Fireblocks SDK Python example
      parameters:
        - $ref: '#/components/parameters/X-Idempotency-Key'
      responses:
        '200':
          description: A Wallet object
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnmanagedWallet'
        default:
          $ref: '#/components/responses/Error'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateWalletRequest'
      operationId: createExternalWallet
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<UnmanagedWallet>> = fireblocks.externalWallets.createExternalWallet(externalWalletsApiCreateExternalWalletRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<UnmanagedWallet>> response = fireblocks.externalWallets().createExternalWallet(createWalletRequest, idempotencyKey);
        - lang: Python
          source: response = fireblocks.external_wallets.create_external_wallet(create_wallet_request, idempotency_key);
  /external_wallets/{walletId}:
    get:
      summary: Find an external wallet
      description: 'Returns an external wallet by ID. External Wallet is a whitelisted address of a wallet that belongs to your users/counterparties. Endpoint Permission: Admin, Non-Signing Admin, Signer, Approver, Editor, Viewer.'
      tags:
        - External wallets
      x-rate-limit-category: read
      x-readme:
        code-samples:
          - language: python
            code: externalWallet = fireblocks.get_external_wallet(walletId)
            name: Fireblocks SDK Python example (Legacy)
          - language: javascript
            code: const externalWallet = await fireblocks.getExternalWallet(walletId);
            name: Fireblocks SDK Javascript example
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<UnmanagedWallet>> = fireblocks.externalWallets.getExternalWallet(externalWalletsApiGetExternalWalletRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<UnmanagedWallet>> response = fireblocks.externalWallets().getExternalWallet(walletId);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.external_wallets.get_external_wallet(wallet_id);
            name: Fireblocks SDK Python example
      parameters:
        - in: path
          name: walletId
          required: true
          description: The ID of the wallet to return
          schema:
            type: string
      responses:
        '200':
          description: A Wallet object
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnmanagedWallet'
        default:
          $ref: '#/components/responses/Error'
      operationId: getExternalWallet
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<UnmanagedWallet>> = fireblocks.externalWallets.getExternalWallet(externalWalletsApiGetExternalWalletRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<UnmanagedWallet>> response = fireblocks.externalWallets().getExternalWallet(walletId);
        - lang: Python
          source: response = fireblocks.external_wallets.get_external_wallet(wallet_id);
    delete:
      summary: Delete an external wallet
      description: 'Deletes an external wallet by ID. External Wallet is a whitelisted address of a wallet that belongs to your users/counterparties. Endpoint Permission: Admin, Non-Signing Admin, Signer, Approver, Editor.'
      tags:
        - External wallets
      x-rate-limit-category: write
      x-readme:
        code-samples:
          - language: python
            code: result = firebocks.delete_external_wallet(walletId)
            name: Fireblocks SDK Python example (Legacy)
          - language: javascript
            code: const result = await fireblocks.deleteExternalWallet(walletId);
            name: Fireblocks SDK Javascript example
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<void>> = fireblocks.externalWallets.deleteExternalWallet(externalWalletsApiDeleteExternalWalletRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<Void>> response = fireblocks.externalWallets().deleteExternalWallet(walletId);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.external_wallets.delete_external_wallet(wallet_id);
            name: Fireblocks SDK Python example
      parameters:
        - in: path
          name: walletId
          required: true
          description: The ID of the wallet to delete
          schema:
            type: string
      responses:
        '201':
          description: OK
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
        default:
          $ref: '#/components/responses/Error'
      operationId: deleteExternalWallet
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<void>> = fireblocks.externalWallets.deleteExternalWallet(externalWalletsApiDeleteExternalWalletRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<Void>> response = fireblocks.externalWallets().deleteExternalWallet(walletId);
        - lang: Python
          source: response = fireblocks.external_wallets.delete_external_wallet(wallet_id);
  /external_wallets/{walletId}/{assetId}:
    get:
      summary: Get an asset from an external wallet
      description: 'Returns an external wallet by wallet ID and asset ID. External Wallet is a whitelisted address of a wallet that belongs to your users/counterparties. Endpoint Permission: Admin, Non-Signing Admin, Signer, Approver, Editor, Viewer.'
      tags:
        - External wallets
      x-rate-limit-category: read
      x-readme:
        code-samples:
          - language: python
            code: externalWalletAsset = fireblocks.get_external_wallet_asset(walletId, assetId)
            name: Fireblocks SDK Python example (Legacy)
          - language: javascript
            code: const externalWalletAsset = fireblocks.getExternalWalletAsset(walletId, assetId)
            name: Fireblocks SDK Javascript example
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<ExternalWalletAsset>> = fireblocks.externalWallets.getExternalWalletAsset(externalWalletsApiGetExternalWalletAssetRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<ExternalWalletAsset>> response = fireblocks.externalWallets().getExternalWalletAsset(walletId, assetId);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.external_wallets.get_external_wallet_asset(wallet_id, asset_id);
            name: Fireblocks SDK Python example
      parameters:
        - in: path
          name: walletId
          required: true
          description: The ID of the wallet
          schema:
            type: string
        - in: path
          name: assetId
          required: true
          description: The ID of the asset to return
          schema:
            type: string
            x-fb-entity: asset
      responses:
        '200':
          description: A Wallet Asset object
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExternalWalletAsset'
        default:
          $ref: '#/components/responses/Error'
      operationId: getExternalWalletAsset
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<ExternalWalletAsset>> = fireblocks.externalWallets.getExternalWalletAsset(externalWalletsApiGetExternalWalletAssetRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<ExternalWalletAsset>> response = fireblocks.externalWallets().getExternalWalletAsset(walletId, assetId);
        - lang: Python
          source: response = fireblocks.external_wallets.get_external_wallet_asset(wallet_id, asset_id);
    post:
      summary: Add an asset to an external wallet.
      description: 'Adds an asset to an existing external wallet. Endpoint Permission: Admin, Non-Signing Admin, Signer, Approver, Editor.'
      tags:
        - External wallets
      x-rate-limit-category: write
      x-readme:
        code-samples:
          - language: python
            code: externalWalletAsset = fireblocks.create_external_wallet_asset(walletId, assetId, address, tag)
            name: Fireblocks SDK Python example (Legacy)
          - language: javascript
            code: const externalWalletAsset = await fireblocks.createExternalWalletAsset(walletContainerId, assetId, address, tag);
            name: Fireblocks SDK Javascript example
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<ExternalWalletAsset>> = fireblocks.externalWallets.addAssetToExternalWallet(externalWalletsApiAddAssetToExternalWalletRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<ExternalWalletAsset>> response = fireblocks.externalWallets().addAssetToExternalWallet(walletId, assetId, addAssetToExternalWalletRequest, idempotencyKey);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.external_wallets.add_asset_to_external_wallet(wallet_id, asset_id, add_asset_to_external_wallet_request, idempotency_key);
            name: Fireblocks SDK Python example
      parameters:
        - in: path
          name: walletId
          required: true
          description: The ID of the wallet
          schema:
            type: string
        - in: path
          name: assetId
          required: true
          description: The ID of the asset to add
          schema:
            type: string
            x-fb-entity: asset
        - $ref: '#/components/parameters/X-Idempotency-Key'
      responses:
        '200':
          description: A Wallet Asset object
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExternalWalletAsset'
        default:
          $ref: '#/components/responses/Error'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AddAssetToExternalWalletRequest'
      operationId: addAssetToExternalWallet
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<ExternalWalletAsset>> = fireblocks.externalWallets.addAssetToExternalWallet(externalWalletsApiAddAssetToExternalWalletRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<ExternalWalletAsset>> response = fireblocks.externalWallets().addAssetToExternalWallet(walletId, assetId, addAssetToExternalWalletRequest, idempotencyKey);
        - lang: Python
          source: response = fireblocks.external_wallets.add_asset_to_external_wallet(wallet_id, asset_id, add_asset_to_external_wallet_request, idempotency_key);
    delete:
      summary: Delete an asset from an external wallet
      description: 'Deletes an external wallet asset by ID. Endpoint Permission: Admin, Non-Signing Admin, Signer, Approver, Editor.'
      tags:
        - External wallets
      x-rate-limit-category: write
      x-readme:
        code-samples:
          - language: python
            code: result = fireblocks.delete_external_wallet_asset(walletId, assetId)
            name: Fireblocks SDK Python example (Legacy)
          - language: javascript
            code: const result = await fireblocks.deleteExternalWalletAsset(walletId, assetId);
            name: Fireblocks SDK Javascript example
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<void>> = fireblocks.externalWallets.removeAssetFromExternalWallet(externalWalletsApiRemoveAssetFromExternalWalletRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<Void>> response = fireblocks.externalWallets().removeAssetFromExternalWallet(walletId, assetId);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.external_wallets.remove_asset_from_external_wallet(wallet_id, asset_id);
            name: Fireblocks SDK Python example
      parameters:
        - in: path
          name: walletId
          required: true
          description: The ID of the wallet
          schema:
            type: string
        - in: path
          name: assetId
          required: true
          description: The ID of the asset to delete
          schema:
            type: string
            x-fb-entity: asset
      responses:
        '201':
          description: OK
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
        default:
          $ref: '#/components/responses/Error'
      operationId: removeAssetFromExternalWallet
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<void>> = fireblocks.externalWallets.removeAssetFromExternalWallet(externalWalletsApiRemoveAssetFromExternalWalletRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<Void>> response = fireblocks.externalWallets().removeAssetFromExternalWallet(walletId, assetId);
        - lang: Python
          source: response = fireblocks.external_wallets.remove_asset_from_external_wallet(wallet_id, asset_id);
  /external_wallets/{walletId}/set_customer_ref_id:
    post:
      summary: Set an AML customer reference ID for an external wallet
      description: 'Sets an AML/KYT customer reference ID for the specific external wallet. External Wallet is a whitelisted address of a wallet that belongs to your users/counterparties. Endpoint Permission: Admin, Non-Signing Admin, Signer, Approver, Editor.'
      tags:
        - External wallets
      x-rate-limit-category: write
      x-readme:
        code-samples:
          - language: python
            code: result = firebocks.set_customer_ref_id_for_external_wallet(wallet_id, customer_ref_id)
            name: Fireblocks SDK Python example (Legacy)
          - language: javascript
            code: const result = await fireblocks.setCustomerRefIdForExternalWallet(walletId, customerRefId);
            name: Fireblocks SDK Javascript example
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<void>> = fireblocks.externalWallets.setExternalWalletCustomerRefId(externalWalletsApiSetExternalWalletCustomerRefIdRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<Void>> response = fireblocks.externalWallets().setExternalWalletCustomerRefId(setCustomerRefIdRequest, walletId, idempotencyKey);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.external_wallets.set_external_wallet_customer_ref_id(set_customer_ref_id_request, wallet_id, idempotency_key);
            name: Fireblocks SDK Python example
      parameters:
        - in: path
          name: walletId
          required: true
          description: The wallet ID
          schema:
            type: string
        - $ref: '#/components/parameters/X-Idempotency-Key'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SetCustomerRefIdRequest'
      responses:
        '201':
          description: OK
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
        default:
          $ref: '#/components/responses/Error'
      operationId: setExternalWalletCustomerRefId
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<void>> = fireblocks.externalWallets.setExternalWalletCustomerRefId(externalWalletsApiSetExternalWalletCustomerRefIdRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<Void>> response = fireblocks.externalWallets().setExternalWalletCustomerRefId(setCustomerRefIdRequest, walletId, idempotencyKey);
        - lang: Python
          source: response = fireblocks.external_wallets.set_external_wallet_customer_ref_id(set_customer_ref_id_request, wallet_id, idempotency_key);
  /fiat_accounts:
    get:
      summary: List fiat accounts
      description: |-
        Returns all fiat accounts.
        Endpoint Permission: Admin, Non-Signing Admin.
      tags:
        - Fiat accounts
      x-rate-limit-category: query
      x-readme:
        code-samples:
          - language: python
            code: transactions = fireblocks.get_fiat_accounts()
            name: Fireblocks SDK Python example (Legacy)
          - language: javascript
            code: const transactions = await fireblocks.getFiatAccounts();
            name: Fireblocks SDK Javascript example
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<GetFiatAccountsResponse>> = fireblocks.fiatAccounts.getFiatAccounts();'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<List<FiatAccount>>> response = fireblocks.fiatAccounts().getFiatAccounts();
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.fiat_accounts.get_fiat_accounts();
            name: Fireblocks SDK Python example
      responses:
        '200':
          description: A fiat account object
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetFiatAccountsResponse'
        default:
          $ref: '#/components/responses/Error'
      operationId: getFiatAccounts
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<GetFiatAccountsResponse>> = fireblocks.fiatAccounts.getFiatAccounts();'
        - lang: Java
          source: CompletableFuture<ApiResponse<List<FiatAccount>>> response = fireblocks.fiatAccounts().getFiatAccounts();
        - lang: Python
          source: response = fireblocks.fiat_accounts.get_fiat_accounts();
  /fiat_accounts/{accountId}:
    get:
      summary: Find a specific fiat account
      description: |-
        Returns a fiat account by ID.
        Endpoint Permission: Admin, Non-Signing Admin.
      tags:
        - Fiat accounts
      x-rate-limit-category: query
      x-readme:
        code-samples:
          - language: python
            code: transactions = fireblocks.get_fiat_account_by_id(account_id)
            name: Fireblocks SDK Python example (Legacy)
          - language: javascript
            code: const transactions = await fireblocks.getFiatAccountById(accountId);
            name: Fireblocks SDK Javascript example
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<FiatAccount>> = fireblocks.fiatAccounts.getFiatAccount(fiatAccountsApiGetFiatAccountRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<FiatAccount>> response = fireblocks.fiatAccounts().getFiatAccount(accountId);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.fiat_accounts.get_fiat_account(account_id);
            name: Fireblocks SDK Python example
      parameters:
        - in: path
          name: accountId
          required: true
          description: The ID of the fiat account to return
          schema:
            type: string
      responses:
        '200':
          description: A fiat account object
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FiatAccount'
        default:
          $ref: '#/components/responses/Error'
      operationId: getFiatAccount
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<FiatAccount>> = fireblocks.fiatAccounts.getFiatAccount(fiatAccountsApiGetFiatAccountRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<FiatAccount>> response = fireblocks.fiatAccounts().getFiatAccount(accountId);
        - lang: Python
          source: response = fireblocks.fiat_accounts.get_fiat_account(account_id);
  /fiat_accounts/{accountId}/deposit_from_linked_dda:
    post:
      summary: Deposit funds from DDA
      description: Deposits funds from the linked DDA.
      tags:
        - Fiat accounts
      x-rate-limit-category: write
      x-readme:
        code-samples:
          - language: python
            code: transactions = fireblocks.deposit_from_linked_dda(account_id, amount)
            name: Fireblocks SDK Python example (Legacy)
          - language: javascript
            code: const transactions = await fireblocks.depositFromLinkedDDA(accountId, amount);
            name: Fireblocks SDK Javascript example
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<DepositFundsFromLinkedDDAResponse>> = fireblocks.fiatAccounts.depositFundsFromLinkedDDA(fiatAccountsApiDepositFundsFromLinkedDDARequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<DepositFundsFromLinkedDDAResponse>> response = fireblocks.fiatAccounts().depositFundsFromLinkedDDA(accountId, funds, idempotencyKey);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.fiat_accounts.deposit_funds_from_linked_d_d_a(account_id, funds, idempotency_key);
            name: Fireblocks SDK Python example
      parameters:
        - in: path
          name: accountId
          required: true
          description: The ID of the fiat account to use
          schema:
            type: string
        - $ref: '#/components/parameters/X-Idempotency-Key'
      responses:
        '201':
          description: Transfer succeeded
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DepositFundsFromLinkedDDAResponse'
        default:
          $ref: '#/components/responses/Error'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Funds'
      operationId: depositFundsFromLinkedDDA
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<DepositFundsFromLinkedDDAResponse>> = fireblocks.fiatAccounts.depositFundsFromLinkedDDA(fiatAccountsApiDepositFundsFromLinkedDDARequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<DepositFundsFromLinkedDDAResponse>> response = fireblocks.fiatAccounts().depositFundsFromLinkedDDA(accountId, funds, idempotencyKey);
        - lang: Python
          source: response = fireblocks.fiat_accounts.deposit_funds_from_linked_d_d_a(account_id, funds, idempotency_key);
  /fiat_accounts/{accountId}/redeem_to_linked_dda:
    post:
      summary: Redeem funds to DDA
      description: Redeems funds to the linked DDA.
      tags:
        - Fiat accounts
      x-rate-limit-category: write
      x-readme:
        code-samples:
          - language: python
            code: transactions = fireblocks.redeem_to_linked_dda(account_id, amount)
            name: Fireblocks SDK Python example (Legacy)
          - language: javascript
            code: const transactions = await fireblocks.redeemToLinkedDDA(accountId, amount);
            name: Fireblocks SDK Javascript example
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<RedeemFundsToLinkedDDAResponse>> = fireblocks.fiatAccounts.redeemFundsToLinkedDDA(fiatAccountsApiRedeemFundsToLinkedDDARequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<RedeemFundsToLinkedDDAResponse>> response = fireblocks.fiatAccounts().redeemFundsToLinkedDDA(accountId, funds, idempotencyKey);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.fiat_accounts.redeem_funds_to_linked_d_d_a(account_id, funds, idempotency_key);
            name: Fireblocks SDK Python example
      parameters:
        - in: path
          name: accountId
          required: true
          description: The ID of the fiat account to use
          schema:
            type: string
        - $ref: '#/components/parameters/X-Idempotency-Key'
      responses:
        '201':
          description: Transfer succeeded
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RedeemFundsToLinkedDDAResponse'
        default:
          $ref: '#/components/responses/Error'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Funds'
      operationId: redeemFundsToLinkedDDA
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<RedeemFundsToLinkedDDAResponse>> = fireblocks.fiatAccounts.redeemFundsToLinkedDDA(fiatAccountsApiRedeemFundsToLinkedDDARequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<RedeemFundsToLinkedDDAResponse>> response = fireblocks.fiatAccounts().redeemFundsToLinkedDDA(accountId, funds, idempotencyKey);
        - lang: Python
          source: response = fireblocks.fiat_accounts.redeem_funds_to_linked_d_d_a(account_id, funds, idempotency_key);
  /gas_station:
    get:
      summary: Get gas station settings
      description: |-
        Returns gas station settings and ETH balance.
        Endpoint Permission: Admin, Non-Signing Admin, Signer, Approver, Editor.
      tags:
        - Gas stations
      x-rate-limit-category: query
      x-readme:
        code-samples:
          - language: python
            code: gas_station_info = fireblocks.get_gas_station_info()
            name: Fireblocks SDK Python example (Legacy)
          - language: javascript
            code: const gasStationInfo = await fireblocks.gasStationInfo();
            name: Fireblocks SDK Javascript example
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<GasStationPropertiesResponse>> = fireblocks.gasStations.getGasStationInfo();'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<GasStationPropertiesResponse>> response = fireblocks.gasStations().getGasStationInfo();
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.gas_stations.get_gas_station_info();
            name: Fireblocks SDK Python example
      responses:
        '200':
          description: Gas Station properties
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GasStationPropertiesResponse'
        default:
          $ref: '#/components/responses/Error'
      operationId: getGasStationInfo
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<GasStationPropertiesResponse>> = fireblocks.gasStations.getGasStationInfo();'
        - lang: Java
          source: CompletableFuture<ApiResponse<GasStationPropertiesResponse>> response = fireblocks.gasStations().getGasStationInfo();
        - lang: Python
          source: response = fireblocks.gas_stations.get_gas_station_info();
  /gas_station/{assetId}:
    get:
      summary: Get gas station settings by asset
      description: |-
        Returns gas station settings and balances for a requested asset.
        Endpoint Permission: Admin, Non-Signing Admin, Signer, Approver, Editor.
      tags:
        - Gas stations
      x-rate-limit-category: query
      x-readme:
        code-samples:
          - language: python
            code: gas_station_info = fireblocks.get_gas_station_info(asset_id)
            name: Fireblocks SDK Python example (Legacy)
          - language: javascript
            code: const gasStationInfo = await fireblocks.gasStationInfo(assetId);
            name: Fireblocks SDK Javascript example
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<GasStationPropertiesResponse>> = fireblocks.gasStations.getGasStationByAssetId(gasStationsApiGetGasStationByAssetIdRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<GasStationPropertiesResponse>> response = fireblocks.gasStations().getGasStationByAssetId(assetId);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.gas_stations.get_gas_station_by_asset_id(asset_id);
            name: Fireblocks SDK Python example
      parameters:
        - in: path
          required: true
          name: assetId
          description: The ID of the asset
          schema:
            type: string
            x-fb-entity: asset
      responses:
        '200':
          description: Gas Station properties
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GasStationPropertiesResponse'
        default:
          $ref: '#/components/responses/Error'
      operationId: getGasStationByAssetId
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<GasStationPropertiesResponse>> = fireblocks.gasStations.getGasStationByAssetId(gasStationsApiGetGasStationByAssetIdRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<GasStationPropertiesResponse>> response = fireblocks.gasStations().getGasStationByAssetId(assetId);
        - lang: Python
          source: response = fireblocks.gas_stations.get_gas_station_by_asset_id(asset_id);
  /gas_station/configuration:
    put:
      summary: Edit gas station settings
      description: |-
        Configures gas station settings for ETH.
        Learn more about the Fireblocks Gas Station in the following [guide](https://developers.fireblocks.com/docs/work-with-gas-station).
        Endpoint Permission: Admin, Non-Signing Admin, Signer, Approver, Editor.
      tags:
        - Gas stations
      x-rate-limit-category: write
      x-readme:
        code-samples:
          - language: python
            code: gas_station = fireblocks.set_gas_station_configuration(gas_threshold, gas_cap, max_gas_price, asset_id)
            name: Fireblocks SDK Python example (Legacy)
          - language: javascript
            code: const gasStation = await fireblocks.setGasStationConfiguration(gasThreshold, gasCap, maxGasPrice)
            name: Fireblocks SDK Javascript example
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<EditGasStationConfigurationResponse>> = fireblocks.gasStations.updateGasStationConfiguration(gasStationsApiUpdateGasStationConfigurationRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<EditGasStationConfigurationResponse>> response = fireblocks.gasStations().updateGasStationConfiguration(gasStationConfiguration, idempotencyKey);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.gas_stations.update_gas_station_configuration(gas_station_configuration, idempotency_key);
            name: Fireblocks SDK Python example
      parameters:
        - $ref: '#/components/parameters/X-Idempotency-Key'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/GasStationConfiguration'
      responses:
        '200':
          description: OK
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EditGasStationConfigurationResponse'
        default:
          $ref: '#/components/responses/Error'
      operationId: updateGasStationConfiguration
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<EditGasStationConfigurationResponse>> = fireblocks.gasStations.updateGasStationConfiguration(gasStationsApiUpdateGasStationConfigurationRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<EditGasStationConfigurationResponse>> response = fireblocks.gasStations().updateGasStationConfiguration(gasStationConfiguration, idempotencyKey);
        - lang: Python
          source: response = fireblocks.gas_stations.update_gas_station_configuration(gas_station_configuration, idempotency_key);
  /gas_station/configuration/{assetId}:
    put:
      operationId: updateGasStationConfigurationByAssetId
      summary: Edit gas station settings for an asset
      description: |-
        Configures gas station settings for a requested asset.
        Learn more about the Fireblocks Gas Station in the following [guide](https://developers.fireblocks.com/docs/work-with-gas-station).
        Endpoint Permission: Admin, Non-Signing Admin, Signer, Approver, Editor.
      tags:
        - Gas stations
      x-rate-limit-category: write
      parameters:
        - in: path
          required: true
          name: assetId
          description: The ID of the asset
          schema:
            type: string
            x-fb-entity: asset
        - $ref: '#/components/parameters/X-Idempotency-Key'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/GasStationConfiguration'
      responses:
        '200':
          description: OK
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EditGasStationConfigurationResponse'
        default:
          $ref: '#/components/responses/Error'
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<EditGasStationConfigurationResponse>> = fireblocks.gasStations.updateGasStationConfigurationByAssetId(gasStationsApiUpdateGasStationConfigurationByAssetIdRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<EditGasStationConfigurationResponse>> response = fireblocks.gasStations().updateGasStationConfigurationByAssetId(gasStationConfiguration, assetId, idempotencyKey);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.gas_stations.update_gas_station_configuration_by_asset_id(gas_station_configuration, asset_id, idempotency_key);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<EditGasStationConfigurationResponse>> = fireblocks.gasStations.updateGasStationConfigurationByAssetId(gasStationsApiUpdateGasStationConfigurationByAssetIdRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<EditGasStationConfigurationResponse>> response = fireblocks.gasStations().updateGasStationConfigurationByAssetId(gasStationConfiguration, assetId, idempotencyKey);
        - lang: Python
          source: response = fireblocks.gas_stations.update_gas_station_configuration_by_asset_id(gas_station_configuration, asset_id, idempotency_key);
  /genie/sessions:
    post:
      summary: Create a Genie session
      description: |
        Starts a new conversation with Genie, the Fireblocks AI assistant. Returns a `sessionId` — pass it when sending messages, and reuse it across calls to keep one continuous conversation.

        **Note:** This endpoint is currently in beta and might be subject to changes.
      tags:
        - Genie (Beta)
      x-rate-limit-category: write
      parameters:
        - $ref: '#/components/parameters/X-Idempotency-Key'
      responses:
        '200':
          description: Session created
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenieCreateSessionResponse'
        default:
          $ref: '#/components/responses/Error'
      operationId: createGenieSession
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<GenieCreateSessionResponse>> = fireblocks.genieBeta.createGenieSession(genieBetaApiCreateGenieSessionRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<GenieCreateSessionResponse>> response = fireblocks.genieBeta().createGenieSession(idempotencyKey);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.genie_beta.create_genie_session(idempotency_key);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<GenieCreateSessionResponse>> = fireblocks.genieBeta.createGenieSession(genieBetaApiCreateGenieSessionRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<GenieCreateSessionResponse>> response = fireblocks.genieBeta().createGenieSession(idempotencyKey);
        - lang: Python
          source: response = fireblocks.genie_beta.create_genie_session(idempotency_key);
  /genie/sessions/{sessionId}/messages:
    post:
      summary: Send a message to a Genie session
      description: |
        Sends a question to Genie and returns a single answer. Reuse the `sessionId` from the original session on follow-up messages to continue the conversation with prior context.

        **Note:** This endpoint is currently in beta and might be subject to changes.
      tags:
        - Genie (Beta)
      x-rate-limit-category: write
      parameters:
        - in: path
          name: sessionId
          required: true
          schema:
            type: string
            example: 7c1b2e1c-1c2a-4f3a-9c2d-2e0a8a1f8e1a
          description: The Genie session ID returned from `POST /genie/sessions`.
        - $ref: '#/components/parameters/X-Idempotency-Key'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/GenieSendMessageRequest'
      responses:
        '200':
          description: Genie response
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenieChatMessage'
        default:
          $ref: '#/components/responses/Error'
      operationId: sendGenieMessage
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<GenieSendMessageResponse>> = fireblocks.genieBeta.sendGenieMessage(genieBetaApiSendGenieMessageRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<GenieSendMessageResponse>> response = fireblocks.genieBeta().sendGenieMessage(genieSendMessageRequest, sessionId, idempotencyKey);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.genie_beta.send_genie_message(genie_send_message_request, session_id, idempotency_key);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<GenieSendMessageResponse>> = fireblocks.genieBeta.sendGenieMessage(genieBetaApiSendGenieMessageRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<GenieSendMessageResponse>> response = fireblocks.genieBeta().sendGenieMessage(genieSendMessageRequest, sessionId, idempotencyKey);
        - lang: Python
          source: response = fireblocks.genie_beta.send_genie_message(genie_send_message_request, session_id, idempotency_key);
  /internal_wallets:
    get:
      summary: List internal wallets
      tags:
        - Internal wallets
      x-rate-limit-category: high_compute
      description: |
        Gets a list of internal wallets.
      responses:
        '200':
          description: A list of internal wallets
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetInternalWalletsResponse'
        default:
          $ref: '#/components/responses/Error'
      operationId: getInternalWallets
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<GetInternalWalletsResponse>> = fireblocks.internalWallets.getInternalWallets();'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<List<UnmanagedWallet>>> response = fireblocks.internalWallets().getInternalWallets();
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.internal_wallets.get_internal_wallets();
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<GetInternalWalletsResponse>> = fireblocks.internalWallets.getInternalWallets();'
        - lang: Java
          source: CompletableFuture<ApiResponse<List<UnmanagedWallet>>> response = fireblocks.internalWallets().getInternalWallets();
        - lang: Python
          source: response = fireblocks.internal_wallets.get_internal_wallets();
    post:
      summary: Create an internal wallet
      tags:
        - Internal wallets
      x-rate-limit-category: write
      x-readme:
        code-samples:
          - language: python
            code: internalWallet = fireblocks.create_internal_wallet(name, customer_ref_id)
            name: Fireblocks SDK Python example (Legacy)
          - language: javascript
            code: const internalWallet = await fireblocks.createInternalWallet(name, customerRefId);
            name: Fireblocks SDK Javascript example
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<UnmanagedWallet>> = fireblocks.internalWallets.createInternalWallet(internalWalletsApiCreateInternalWalletRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<UnmanagedWallet>> response = fireblocks.internalWallets().createInternalWallet(createWalletRequest, idempotencyKey);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.internal_wallets.create_internal_wallet(create_wallet_request, idempotency_key);
            name: Fireblocks SDK Python example
      description: |-
        Creates a new internal wallet with the requested name.
        Learn more about Whitelisted Internal Addresses [here](https://developers.fireblocks.com/docs/whitelist-addresses#internal-wallets)
      parameters:
        - $ref: '#/components/parameters/X-Idempotency-Key'
      responses:
        '200':
          description: A new wallet object
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnmanagedWallet'
        default:
          $ref: '#/components/responses/Error'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateWalletRequest'
      operationId: createInternalWallet
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<UnmanagedWallet>> = fireblocks.internalWallets.createInternalWallet(internalWalletsApiCreateInternalWalletRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<UnmanagedWallet>> response = fireblocks.internalWallets().createInternalWallet(createWalletRequest, idempotencyKey);
        - lang: Python
          source: response = fireblocks.internal_wallets.create_internal_wallet(create_wallet_request, idempotency_key);
  /internal_wallets/{walletId}:
    get:
      summary: Get assets for internal wallet
      tags:
        - Internal wallets
      x-rate-limit-category: external_query
      x-readme:
        code-samples:
          - language: python
            code: internalWallet = fireblocks.get_internal_wallet(walletId)
            name: Fireblocks SDK Python example (Legacy)
          - language: javascript
            code: const result = await fireblocks.getInternalWallet(walletId);
            name: Fireblocks SDK Javascript example
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<UnmanagedWallet>> = fireblocks.internalWallets.getInternalWallet(internalWalletsApiGetInternalWalletRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<UnmanagedWallet>> response = fireblocks.internalWallets().getInternalWallet(walletId);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.internal_wallets.get_internal_wallet(wallet_id);
            name: Fireblocks SDK Python example
      description: Returns information for an internal wallet.
      parameters:
        - in: path
          name: walletId
          required: true
          description: The ID of the wallet to return
          schema:
            type: string
      responses:
        '200':
          description: A Wallet object
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnmanagedWallet'
        default:
          $ref: '#/components/responses/Error'
      operationId: getInternalWallet
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<UnmanagedWallet>> = fireblocks.internalWallets.getInternalWallet(internalWalletsApiGetInternalWalletRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<UnmanagedWallet>> response = fireblocks.internalWallets().getInternalWallet(walletId);
        - lang: Python
          source: response = fireblocks.internal_wallets.get_internal_wallet(wallet_id);
    delete:
      summary: Delete an internal wallet
      tags:
        - Internal wallets
      x-rate-limit-category: write
      x-readme:
        code-samples:
          - language: python
            code: result = firebocks.delete_internal_wallet(walletId)
            name: Fireblocks SDK Python example (Legacy)
          - language: javascript
            code: const result = await fireblocks.deleteInternalWallet(walletId);
            name: Fireblocks SDK Javascript example
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<void>> = fireblocks.internalWallets.deleteInternalWallet(internalWalletsApiDeleteInternalWalletRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<Void>> response = fireblocks.internalWallets().deleteInternalWallet(walletId);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.internal_wallets.delete_internal_wallet(wallet_id);
            name: Fireblocks SDK Python example
      description: Deletes an internal wallet by ID.
      parameters:
        - in: path
          name: walletId
          required: true
          description: The ID of the wallet to delete
          schema:
            type: string
      responses:
        '201':
          description: OK
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
        default:
          $ref: '#/components/responses/Error'
      operationId: deleteInternalWallet
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<void>> = fireblocks.internalWallets.deleteInternalWallet(internalWalletsApiDeleteInternalWalletRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<Void>> response = fireblocks.internalWallets().deleteInternalWallet(walletId);
        - lang: Python
          source: response = fireblocks.internal_wallets.delete_internal_wallet(wallet_id);
  /internal_wallets/{walletId}/{assetId}:
    get:
      summary: Get an asset from an internal wallet
      tags:
        - Internal wallets
      x-rate-limit-category: external_query
      x-readme:
        code-samples:
          - language: python
            code: internalWalletAsset = fireblocks.get_internal_wallet_asset(walletId, assetId)
            name: Fireblocks SDK Python example (Legacy)
          - language: javascript
            code: const internalWalletAsset = fireblocks.getInternalWalletAsset(walletId, assetId);
            name: Fireblocks SDK Javascript example
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<WalletAsset>> = fireblocks.internalWallets.getInternalWalletAsset(internalWalletsApiGetInternalWalletAssetRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<WalletAsset>> response = fireblocks.internalWallets().getInternalWalletAsset(walletId, assetId);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.internal_wallets.get_internal_wallet_asset(wallet_id, asset_id);
            name: Fireblocks SDK Python example
      description: Returns information for an asset in an internal wallet.
      parameters:
        - in: path
          name: walletId
          required: true
          description: The ID of the wallet
          schema:
            type: string
        - in: path
          name: assetId
          required: true
          description: The ID of the asset to return
          schema:
            type: string
            x-fb-entity: asset
      responses:
        '200':
          description: A Wallet Asset object
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WalletAsset'
        default:
          $ref: '#/components/responses/Error'
      operationId: getInternalWalletAsset
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<WalletAsset>> = fireblocks.internalWallets.getInternalWalletAsset(internalWalletsApiGetInternalWalletAssetRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<WalletAsset>> response = fireblocks.internalWallets().getInternalWalletAsset(walletId, assetId);
        - lang: Python
          source: response = fireblocks.internal_wallets.get_internal_wallet_asset(wallet_id, asset_id);
    post:
      summary: Add an asset to an internal wallet
      tags:
        - Internal wallets
      x-rate-limit-category: write
      x-readme:
        code-samples:
          - language: python
            code: internalWalletAsset = fireblocks.create_internal_wallet_asset(walletId, assetId, address, tag)
            name: Fireblocks SDK Python example (Legacy)
          - language: javascript
            code: const internalWalletAsset = await fireblocks.createInternalWalletAsset(walletContainerId, assetId, address, tag);
            name: Fireblocks SDK Javascript example
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<WalletAsset>> = fireblocks.internalWallets.createInternalWalletAsset(internalWalletsApiCreateInternalWalletAssetRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<WalletAsset>> response = fireblocks.internalWallets().createInternalWalletAsset(walletId, assetId, createInternalWalletAssetRequest, idempotencyKey);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.internal_wallets.create_internal_wallet_asset(wallet_id, asset_id, create_internal_wallet_asset_request, idempotency_key);
            name: Fireblocks SDK Python example
      description: Adds an asset to an existing internal wallet.
      parameters:
        - in: path
          name: walletId
          required: true
          description: The ID of the wallet
          schema:
            type: string
        - in: path
          name: assetId
          required: true
          description: The ID of the asset to add
          schema:
            type: string
            x-fb-entity: asset
        - $ref: '#/components/parameters/X-Idempotency-Key'
      responses:
        '200':
          description: A Wallet Asset object
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WalletAsset'
        default:
          $ref: '#/components/responses/Error'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateInternalWalletAssetRequest'
      operationId: createInternalWalletAsset
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<WalletAsset>> = fireblocks.internalWallets.createInternalWalletAsset(internalWalletsApiCreateInternalWalletAssetRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<WalletAsset>> response = fireblocks.internalWallets().createInternalWalletAsset(walletId, assetId, createInternalWalletAssetRequest, idempotencyKey);
        - lang: Python
          source: response = fireblocks.internal_wallets.create_internal_wallet_asset(wallet_id, asset_id, create_internal_wallet_asset_request, idempotency_key);
    delete:
      summary: Delete a whitelisted address
      tags:
        - Internal wallets
      x-rate-limit-category: write
      x-readme:
        code-samples:
          - language: python
            code: result = fireblocks.delete_internal_wallet_asset(walletId, assetId)
            name: Fireblocks SDK Python example (Legacy)
          - language: javascript
            code: const result = await fireblocks.deleteInternalWalletAsset(walletId, assetId);
            name: Fireblocks SDK Javascript example
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<void>> = fireblocks.internalWallets.deleteInternalWalletAsset(internalWalletsApiDeleteInternalWalletAssetRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<Void>> response = fireblocks.internalWallets().deleteInternalWalletAsset(walletId, assetId);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.internal_wallets.delete_internal_wallet_asset(wallet_id, asset_id);
            name: Fireblocks SDK Python example
      description: Deletes a whitelisted address (for an asset) from an internal wallet.
      parameters:
        - in: path
          name: walletId
          required: true
          description: The ID of the wallet
          schema:
            type: string
        - in: path
          name: assetId
          required: true
          description: The ID of the asset to delete
          schema:
            type: string
            x-fb-entity: asset
      responses:
        '201':
          description: OK
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
        default:
          $ref: '#/components/responses/Error'
      operationId: deleteInternalWalletAsset
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<void>> = fireblocks.internalWallets.deleteInternalWalletAsset(internalWalletsApiDeleteInternalWalletAssetRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<Void>> response = fireblocks.internalWallets().deleteInternalWalletAsset(walletId, assetId);
        - lang: Python
          source: response = fireblocks.internal_wallets.delete_internal_wallet_asset(wallet_id, asset_id);
  /internal_wallets/{walletId}/assets:
    get:
      summary: List assets in an internal wallet (Paginated)
      description: Returns a paginated response of assets in an internal wallet.
      tags:
        - Internal wallets
      x-rate-limit-category: query
      x-readme:
        code-samples:
          - language: python
            code: internalWalletAssets = fireblocks.get_internal_wallet_assets(walletId, pageSize, pageCursor)
            name: Fireblocks SDK Python example (Legacy)
          - language: javascript
            code: const internalWalletAssets = fireblocks.getInternalWalletAssets(walletId, pageSize, pageCursor);
            name: Fireblocks SDK Javascript example
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<PaginatedAssetsResponse>> = fireblocks.internalWallets.getInternalWalletAssetsPaginated(internalWalletsApiGetInternalWalletAssetsPaginatedRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<PaginatedAssetsResponse>> response = fireblocks.internalWallets().getInternalWalletAssetsPaginated(walletId, pageSize, pageCursor);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.internal_wallets.get_internal_wallet_assets_paginated(wallet_id, page_size, page_cursor);
            name: Fireblocks SDK Python example
      parameters:
        - in: path
          name: walletId
          required: true
          description: The ID of the internal wallet to return assets for
          schema:
            type: string
        - in: query
          name: pageSize
          required: false
          schema:
            description: Number of assets to return per page
            minimum: 1
            maximum: 200
            default: 50
            type: number
          example: 10
        - in: query
          name: pageCursor
          required: false
          schema:
            type: string
            description: Cursor for pagination
      responses:
        '200':
          description: A paginated response of assets for the internal wallet
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedAssetsResponse'
        default:
          $ref: '#/components/responses/Error'
      operationId: getInternalWalletAssetsPaginated
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<PaginatedAssetsResponse>> = fireblocks.internalWallets.getInternalWalletAssetsPaginated(internalWalletsApiGetInternalWalletAssetsPaginatedRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<PaginatedAssetsResponse>> response = fireblocks.internalWallets().getInternalWalletAssetsPaginated(walletId, pageSize, pageCursor);
        - lang: Python
          source: response = fireblocks.internal_wallets.get_internal_wallet_assets_paginated(wallet_id, page_size, page_cursor);
  /internal_wallets/{walletId}/set_customer_ref_id:
    post:
      summary: Set an AML/KYT customer reference ID for internal wallet
      tags:
        - Internal wallets
      x-rate-limit-category: write
      x-readme:
        code-samples:
          - language: python
            code: result = firebocks.set_customer_ref_id_for_internal_wallet(wallet_id, customer_ref_id)
            name: Fireblocks SDK Python example (Legacy)
          - language: javascript
            code: const result = await fireblocks.setCustomerRefIdForInternalWallet(walletId, customerRefId);
            name: Fireblocks SDK Javascript example
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<void>> = fireblocks.internalWallets.setCustomerRefIdForInternalWallet(internalWalletsApiSetCustomerRefIdForInternalWalletRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<Void>> response = fireblocks.internalWallets().setCustomerRefIdForInternalWallet(setCustomerRefIdRequest, walletId, idempotencyKey);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.internal_wallets.set_customer_ref_id_for_internal_wallet(set_customer_ref_id_request, wallet_id, idempotency_key);
            name: Fireblocks SDK Python example
      description: Sets an AML/KYT customer reference ID for the specific internal wallet.
      parameters:
        - in: path
          name: walletId
          required: true
          description: The wallet ID
          schema:
            type: string
        - $ref: '#/components/parameters/X-Idempotency-Key'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SetCustomerRefIdRequest'
      responses:
        '201':
          description: OK
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
        default:
          $ref: '#/components/responses/Error'
      operationId: setCustomerRefIdForInternalWallet
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<void>> = fireblocks.internalWallets.setCustomerRefIdForInternalWallet(internalWalletsApiSetCustomerRefIdForInternalWalletRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<Void>> response = fireblocks.internalWallets().setCustomerRefIdForInternalWallet(setCustomerRefIdRequest, walletId, idempotencyKey);
        - lang: Python
          source: response = fireblocks.internal_wallets.set_customer_ref_id_for_internal_wallet(set_customer_ref_id_request, wallet_id, idempotency_key);
  /key_link/signing_keys:
    post:
      operationId: createSigningKey
      summary: Add a new signing key
      description: Adds a new signing key to the workspace. The added key will be linked to the specific Fireblocks agent user ID. The same user will receive the proof of ownership message to be signed, and upon successful proof, the key will become enabled.
      parameters:
        - $ref: '#/components/parameters/X-Idempotency-Key'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateSigningKeyDto'
      responses:
        '201':
          description: Newly created signing key
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SigningKeyDto'
        default:
          $ref: '#/components/responses/Error'
      tags:
        - Key Link (Beta)
      x-rate-limit-category: write
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<SigningKeyDto>> = fireblocks.keyLinkBeta.createSigningKey(keyLinkBetaApiCreateSigningKeyRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<SigningKeyDto>> response = fireblocks.keyLinkBeta().createSigningKey(createSigningKeyDto, idempotencyKey);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.key_link_beta.create_signing_key(create_signing_key_dto, idempotency_key);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<SigningKeyDto>> = fireblocks.keyLinkBeta.createSigningKey(keyLinkBetaApiCreateSigningKeyRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<SigningKeyDto>> response = fireblocks.keyLinkBeta().createSigningKey(createSigningKeyDto, idempotencyKey);
        - lang: Python
          source: response = fireblocks.key_link_beta.create_signing_key(create_signing_key_dto, idempotency_key);
    get:
      operationId: getSigningKeysList
      summary: Get list of signing keys
      description: Returns the list of signing keys in the workspace
      parameters:
        - name: pageCursor
          required: false
          in: query
          description: Cursor to the next page
          example: MjAyMy0xMi0xMyAyMDozNjowOC4zMDI=:MTEwMA==
          schema:
            type: string
        - name: pageSize
          required: false
          in: query
          description: Amount of results to return in the next page
          schema:
            minimum: 1
            maximum: 50
            default: 10
            type: number
        - name: sortBy
          required: false
          in: query
          description: Field(s) to use for sorting
          schema:
            default: createdAt
            enum:
              - createdAt
            type: string
        - name: order
          required: false
          in: query
          description: Is the order ascending or descending
          schema:
            default: ASC
            enum:
              - ASC
              - DESC
            type: string
        - name: vaultAccountId
          required: false
          in: query
          description: Return keys assigned to a specific vault
          example: 4
          schema:
            type: number
        - name: agentUserId
          required: false
          in: query
          description: Return keys associated with a specific agent user
          example: 12fed207-5bdf-4a0c-ab12-fcd2627f75d1
          schema:
            type: string
        - name: algorithm
          required: false
          in: query
          description: Return only keys with a specific algorithm
          example: ECDSA_SECP256K1
          schema:
            enum:
              - ECDSA_SECP256K1
              - EDDSA_ED25519
            type: string
        - name: enabled
          required: false
          in: query
          description: Return keys that have been proof of ownership
          schema:
            type: boolean
        - name: available
          required: false
          in: query
          description: Return keys that are proof of ownership but not assigned. Available filter can be used only when vaultAccountId and enabled filters are not set
          schema:
            type: boolean
        - name: isAssigned
          required: false
          in: query
          description: Return keys that are assigned to a vault account
          schema:
            type: boolean
            nullable: true
        - name: keyPrefix
          required: false
          in: query
          description: A case-insensitive prefix filter that matches records where either keyId or signingDeviceKeyID starts with the specified value.
          schema:
            type: string
      responses:
        '200':
          description: List of signing keys and a data that allows requesting the next page if applicable
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetSigningKeyResponseDto'
        default:
          $ref: '#/components/responses/Error'
      tags:
        - Key Link (Beta)
      x-rate-limit-category: query
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<GetSigningKeyResponseDto>> = fireblocks.keyLinkBeta.getSigningKeysList(keyLinkBetaApiGetSigningKeysListRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<GetSigningKeyResponseDto>> response = fireblocks.keyLinkBeta().getSigningKeysList(pageCursor, pageSize, sortBy, order, vaultAccountId, agentUserId, algorithm, enabled, available, isAssigned, keyPrefix);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.key_link_beta.get_signing_keys_list(page_cursor, page_size, sort_by, order, vault_account_id, agent_user_id, algorithm, enabled, available, is_assigned, key_prefix);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<GetSigningKeyResponseDto>> = fireblocks.keyLinkBeta.getSigningKeysList(keyLinkBetaApiGetSigningKeysListRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<GetSigningKeyResponseDto>> response = fireblocks.keyLinkBeta().getSigningKeysList(pageCursor, pageSize, sortBy, order, vaultAccountId, agentUserId, algorithm, enabled, available, isAssigned, keyPrefix);
        - lang: Python
          source: response = fireblocks.key_link_beta.get_signing_keys_list(page_cursor, page_size, sort_by, order, vault_account_id, agent_user_id, algorithm, enabled, available, is_assigned, key_prefix);
  /key_link/signing_keys/{keyId}:
    get:
      operationId: getSigningKey
      summary: Get a signing key by `keyId`
      description: Returns a signing key if it exists, identified by the specified `keyId`.
      parameters:
        - name: keyId
          required: true
          in: path
          description: The unique identifier for the signing key provided by Fireblocks
          schema:
            type: string
            example: 46a92767-5f93-4a46-9eed-f012196bb4fc
      responses:
        '200':
          description: Requested signing key data
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SigningKeyDto'
        default:
          $ref: '#/components/responses/Error'
      tags:
        - Key Link (Beta)
      x-rate-limit-category: query
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<SigningKeyDto>> = fireblocks.keyLinkBeta.getSigningKey(keyLinkBetaApiGetSigningKeyRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<SigningKeyDto>> response = fireblocks.keyLinkBeta().getSigningKey(keyId);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.key_link_beta.get_signing_key(key_id);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<SigningKeyDto>> = fireblocks.keyLinkBeta.getSigningKey(keyLinkBetaApiGetSigningKeyRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<SigningKeyDto>> response = fireblocks.keyLinkBeta().getSigningKey(keyId);
        - lang: Python
          source: response = fireblocks.key_link_beta.get_signing_key(key_id);
    patch:
      operationId: updateSigningKey
      summary: Modify the signing keyId
      description: Allows assigning the signing key to a vault account, if it hasn't been assigned to any other vault accounts yet.
      parameters:
        - name: keyId
          required: true
          in: path
          description: The unique identifier for the signing key provided by Fireblocks
          schema:
            type: string
            example: 46a92767-5f93-4a46-9eed-f012196bb4fc
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ModifySigningKeyDto'
      responses:
        '200':
          description: Modified signing key data
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SigningKeyDto'
        default:
          $ref: '#/components/responses/Error'
      tags:
        - Key Link (Beta)
      x-rate-limit-category: write
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<SigningKeyDto>> = fireblocks.keyLinkBeta.updateSigningKey(keyLinkBetaApiUpdateSigningKeyRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<SigningKeyDto>> response = fireblocks.keyLinkBeta().updateSigningKey(modifySigningKeyDto, keyId);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.key_link_beta.update_signing_key(modify_signing_key_dto, key_id);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<SigningKeyDto>> = fireblocks.keyLinkBeta.updateSigningKey(keyLinkBetaApiUpdateSigningKeyRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<SigningKeyDto>> response = fireblocks.keyLinkBeta().updateSigningKey(modifySigningKeyDto, keyId);
        - lang: Python
          source: response = fireblocks.key_link_beta.update_signing_key(modify_signing_key_dto, key_id);
  /key_link/signing_keys/{keyId}/agent_user_id:
    patch:
      operationId: setAgentId
      summary: Set agent user id
      description: Can modify existing signing key id if the key is not enabled. The change done in background and will be visible once applied. If key is already enabled (after proof of ownership) the user cannot be changed.
      parameters:
        - name: keyId
          required: true
          in: path
          description: The unique identifier for the signing key provided by Fireblocks
          schema:
            type: string
            example: 46a92767-5f93-4a46-9eed-f012196bb4fc
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ModifySigningKeyAgentIdDto'
      responses:
        '204':
          description: Agent user id modification process has started in background.
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
        default:
          $ref: '#/components/responses/Error'
      tags:
        - Key Link (Beta)
      x-rate-limit-category: write
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<void>> = fireblocks.keyLinkBeta.setAgentId(keyLinkBetaApiSetAgentIdRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<Void>> response = fireblocks.keyLinkBeta().setAgentId(modifySigningKeyAgentIdDto, keyId);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.key_link_beta.set_agent_id(modify_signing_key_agent_id_dto, key_id);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<void>> = fireblocks.keyLinkBeta.setAgentId(keyLinkBetaApiSetAgentIdRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<Void>> response = fireblocks.keyLinkBeta().setAgentId(modifySigningKeyAgentIdDto, keyId);
        - lang: Python
          source: response = fireblocks.key_link_beta.set_agent_id(modify_signing_key_agent_id_dto, key_id);
  /key_link/validation_keys:
    post:
      operationId: createValidationKey
      summary: Add a new validation key
      description: Adds a new validation key used to validate signing keys. The new validation key will undergo an approval process by the workspace quorum.
      parameters:
        - $ref: '#/components/parameters/X-Idempotency-Key'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateValidationKeyDto'
      responses:
        '201':
          description: The validation key that was added and is pending approval.
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreateValidationKeyResponseDto'
        default:
          $ref: '#/components/responses/Error'
      tags:
        - Key Link (Beta)
      x-rate-limit-category: write
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<CreateValidationKeyResponseDto>> = fireblocks.keyLinkBeta.createValidationKey(keyLinkBetaApiCreateValidationKeyRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<CreateValidationKeyResponseDto>> response = fireblocks.keyLinkBeta().createValidationKey(createValidationKeyDto, idempotencyKey);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.key_link_beta.create_validation_key(create_validation_key_dto, idempotency_key);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<CreateValidationKeyResponseDto>> = fireblocks.keyLinkBeta.createValidationKey(keyLinkBetaApiCreateValidationKeyRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<CreateValidationKeyResponseDto>> response = fireblocks.keyLinkBeta().createValidationKey(createValidationKeyDto, idempotencyKey);
        - lang: Python
          source: response = fireblocks.key_link_beta.create_validation_key(create_validation_key_dto, idempotency_key);
    get:
      operationId: getValidationKeysList
      summary: Get list of registered validation keys
      description: Returns the list of validation keys in the workspace
      parameters:
        - name: pageCursor
          required: false
          in: query
          description: Cursor to the next page
          example: MjAyMy0xMi0xMyAyMDozNjowOC4zMDI=:MTEwMA==
          schema:
            type: string
        - name: pageSize
          required: false
          in: query
          description: Amount of results to return in the next page
          schema:
            minimum: 1
            maximum: 50
            default: 10
            type: number
        - name: sortBy
          required: false
          in: query
          description: Field(s) to use for sorting
          schema:
            default: createdAt
            enum:
              - createdAt
            type: string
        - name: order
          required: false
          in: query
          description: Is the order ascending or descending
          schema:
            default: ASC
            enum:
              - ASC
              - DESC
            type: string
      responses:
        '200':
          description: Validation keys list along with data required to request the next page if applicable
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetValidationKeyResponseDto'
        default:
          $ref: '#/components/responses/Error'
      tags:
        - Key Link (Beta)
      x-rate-limit-category: query
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<GetValidationKeyResponseDto>> = fireblocks.keyLinkBeta.getValidationKeysList(keyLinkBetaApiGetValidationKeysListRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<GetValidationKeyResponseDto>> response = fireblocks.keyLinkBeta().getValidationKeysList(pageCursor, pageSize, sortBy, order);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.key_link_beta.get_validation_keys_list(page_cursor, page_size, sort_by, order);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<GetValidationKeyResponseDto>> = fireblocks.keyLinkBeta.getValidationKeysList(keyLinkBetaApiGetValidationKeysListRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<GetValidationKeyResponseDto>> response = fireblocks.keyLinkBeta().getValidationKeysList(pageCursor, pageSize, sortBy, order);
        - lang: Python
          source: response = fireblocks.key_link_beta.get_validation_keys_list(page_cursor, page_size, sort_by, order);
  /key_link/validation_keys/{keyId}:
    get:
      operationId: getValidationKey
      summary: Get a validation key by `keyId`
      description: Returns a validation key if it exists, identified by the specified `keyId`.
      parameters:
        - name: keyId
          required: true
          in: path
          schema:
            type: string
      responses:
        '200':
          description: The requested validation key data
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidationKeyDto'
        default:
          $ref: '#/components/responses/Error'
      tags:
        - Key Link (Beta)
      x-rate-limit-category: query
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<ValidationKeyDto>> = fireblocks.keyLinkBeta.getValidationKey(keyLinkBetaApiGetValidationKeyRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<ValidationKeyDto>> response = fireblocks.keyLinkBeta().getValidationKey(keyId);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.key_link_beta.get_validation_key(key_id);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<ValidationKeyDto>> = fireblocks.keyLinkBeta.getValidationKey(keyLinkBetaApiGetValidationKeyRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<ValidationKeyDto>> response = fireblocks.keyLinkBeta().getValidationKey(keyId);
        - lang: Python
          source: response = fireblocks.key_link_beta.get_validation_key(key_id);
    patch:
      operationId: disableValidationKey
      summary: Disables a validation key
      description: Allows disabling validation key even if it has not expired yet. It is not allowed to enable the validation key back. Another key has to be used for future validations.
      parameters:
        - name: keyId
          required: true
          in: path
          description: The unique identifier for the validation key provided by Fireblocks
          schema:
            type: string
            example: 46a92767-5f93-4a46-9eed-f012196bb4fc
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ModifyValidationKeyDto'
      responses:
        '200':
          description: Modified validation key data
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidationKeyDto'
        default:
          $ref: '#/components/responses/Error'
      tags:
        - Key Link (Beta)
      x-rate-limit-category: write
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<ValidationKeyDto>> = fireblocks.keyLinkBeta.disableValidationKey(keyLinkBetaApiDisableValidationKeyRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<ValidationKeyDto>> response = fireblocks.keyLinkBeta().disableValidationKey(modifyValidationKeyDto, keyId);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.key_link_beta.disable_validation_key(modify_validation_key_dto, key_id);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<ValidationKeyDto>> = fireblocks.keyLinkBeta.disableValidationKey(keyLinkBetaApiDisableValidationKeyRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<ValidationKeyDto>> response = fireblocks.keyLinkBeta().disableValidationKey(modifyValidationKeyDto, keyId);
        - lang: Python
          source: response = fireblocks.key_link_beta.disable_validation_key(modify_validation_key_dto, key_id);
  /keys/mpc/list:
    get:
      operationId: getMpcKeysList
      summary: Get list of mpc keys
      description: |-
        Returns a list of MPC signing keys of the workspace. For each key, the list of players associated with it is attached.
        **Note:** 
        This endpoint is currently in beta and might be subject to changes.
      parameters: []
      responses:
        '200':
          description: List of mpc keys
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetMpcKeysResponse'
        default:
          $ref: '#/components/responses/Error'
      tags:
        - Keys (Beta)
      x-rate-limit-category: query
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<GetMpcKeysResponse>> = fireblocks.keysBeta.getMpcKeysList();'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<GetMpcKeysResponse>> response = fireblocks.keysBeta().getMpcKeysList();
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.keys_beta.get_mpc_keys_list();
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<GetMpcKeysResponse>> = fireblocks.keysBeta.getMpcKeysList();'
        - lang: Java
          source: CompletableFuture<ApiResponse<GetMpcKeysResponse>> response = fireblocks.keysBeta().getMpcKeysList();
        - lang: Python
          source: response = fireblocks.keys_beta.get_mpc_keys_list();
  /keys/mpc/list/{userId}:
    get:
      operationId: getMpcKeysListByUser
      summary: Get list of mpc keys by `userId`
      description: |-
        Returns a list of MPC signing keys of a specific user. For each key, the list of players associated with it is attached.
        **Note:**
        This endpoint is currently in beta and might be subject to changes.
      parameters:
        - name: userId
          required: true
          in: path
          description: The id for the user
          example: 46a92767-5f93-4a46-9eed-f012196bb4fc
          schema:
            type: string
      responses:
        '200':
          description: List of mpc keys
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetMpcKeysResponse'
        default:
          $ref: '#/components/responses/Error'
      tags:
        - Keys (Beta)
      x-rate-limit-category: query
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<GetMpcKeysResponse>> = fireblocks.keysBeta.getMpcKeysListByUser(keysBetaApiGetMpcKeysListByUserRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<GetMpcKeysResponse>> response = fireblocks.keysBeta().getMpcKeysListByUser(userId);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.keys_beta.get_mpc_keys_list_by_user(user_id);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<GetMpcKeysResponse>> = fireblocks.keysBeta.getMpcKeysListByUser(keysBetaApiGetMpcKeysListByUserRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<GetMpcKeysResponse>> response = fireblocks.keysBeta().getMpcKeysListByUser(userId);
        - lang: Python
          source: response = fireblocks.keys_beta.get_mpc_keys_list_by_user(user_id);
  /network_connections:
    get:
      summary: List network connections
      description: |-
        Returns all network connections.

        **Note:** This API call is subject to Flexible Routing Schemes.

        Your routing policy defines how your transactions are routed.
        You can choose 1 of the 3 different schemes mentioned below for each asset type:
          - **None**; Defines the profile routing to no destination for that asset type. Incoming transactions to asset types routed to `None` will fail.
          - **Custom**; Route to an account that you choose. If you remove the account, incoming transactions will fail until you choose another one.
          - **Default**; Use the routing specified by the network profile the connection is connected to. This scheme is also referred to as "Profile Routing"

        Default Workspace Presets:
          - Network Profile Crypto → **Custom**
          - Network Profile FIAT → **None**
          - Network Connection Crypto → **Default**
          - Network Connection FIAT → **Default**
      tags:
        - Network connections
      x-rate-limit-category: query
      x-readme:
        code-samples:
          - language: python
            code: network_connections = fireblocks.get_network_connections()
            name: Fireblocks SDK Python example (Legacy)
          - language: javascript
            code: const networkConnections = await fireblocks.getNetworkConnections();
            name: Fireblocks SDK Javascript example
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<GetNetworkConnectionsResponse>> = fireblocks.networkConnections.getNetworkConnections();'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<List<NetworkConnectionResponse>>> response = fireblocks.networkConnections().getNetworkConnections();
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.network_connections.get_network_connections();
            name: Fireblocks SDK Python example
      responses:
        '200':
          description: A list of network connections
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetNetworkConnectionsResponse'
        default:
          $ref: '#/components/responses/Error'
      operationId: getNetworkConnections
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<GetNetworkConnectionsResponse>> = fireblocks.networkConnections.getNetworkConnections();'
        - lang: Java
          source: CompletableFuture<ApiResponse<List<NetworkConnectionResponse>>> response = fireblocks.networkConnections().getNetworkConnections();
        - lang: Python
          source: response = fireblocks.network_connections.get_network_connections();
    post:
      summary: Create a new network connection
      description: |
        Initiates a new network connection.
        **Note:** This API call is subject to Flexible Routing Schemes.

        Your routing policy defines how your transactions are routed.
        You can choose 1 of the 3 different schemes mentioned below for each asset type:
          - **None**; Defines the profile routing to no destination for that asset type. Incoming transactions to asset types routed to `None` will fail.
          - **Custom**; Route to an account that you choose. If you remove the account, incoming transactions will fail until you choose another one.
          - **Default**; Use the routing specified by the network profile the connection is connected to. This scheme is also referred to as "Profile Routing"

        Default Workspace Presets:
          - Network Profile Crypto → **Custom**
          - Network Profile FIAT → **None**
          - Network Connection Crypto → **Default**
          - Network Connection FIAT → **Default**

        Supported asset groups for routing police can be found at `/network_ids/routing_policy_asset_groups`

            - **Note**: By default, Custom routing scheme uses (`dstId` = `0`, `dstType` = `VAULT`).
      tags:
        - Network connections
      x-rate-limit-category: write
      parameters:
        - $ref: '#/components/parameters/X-Idempotency-Key'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/NetworkConnection'
      responses:
        '201':
          description: A Network Connection object
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NetworkConnectionResponse'
        default:
          $ref: '#/components/responses/Error'
      operationId: createNetworkConnection
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<NetworkConnectionResponse>> = fireblocks.networkConnections.createNetworkConnection(networkConnectionsApiCreateNetworkConnectionRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<NetworkConnectionResponse>> response = fireblocks.networkConnections().createNetworkConnection(networkConnection, idempotencyKey);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.network_connections.create_network_connection(network_connection, idempotency_key);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<NetworkConnectionResponse>> = fireblocks.networkConnections.createNetworkConnection(networkConnectionsApiCreateNetworkConnectionRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<NetworkConnectionResponse>> response = fireblocks.networkConnections().createNetworkConnection(networkConnection, idempotencyKey);
        - lang: Python
          source: response = fireblocks.network_connections.create_network_connection(network_connection, idempotency_key);
  /network_connections/{connectionId}:
    get:
      summary: Get a network connection
      x-rate-limit-category: read
      description: Gets a network connection by ID.
      tags:
        - Network connections
      x-readme:
        code-samples:
          - language: python
            code: network_connection = fireblocks.get_network_connection_by_id(connectionId)
            name: Fireblocks SDK Python example (Legacy)
          - language: javascript
            code: const network_connection = await fireblocks.getNetworkConnection(connectionId);
            name: Fireblocks SDK Javascript example
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<NetworkConnectionResponse>> = fireblocks.networkConnections.getNetwork(networkConnectionsApiGetNetworkRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<NetworkConnectionResponse>> response = fireblocks.networkConnections().getNetwork(connectionId);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.network_connections.get_network(connection_id);
            name: Fireblocks SDK Python example
      parameters:
        - in: path
          name: connectionId
          required: true
          description: The ID of the connection
          schema:
            type: string
      responses:
        '200':
          description: A network connection
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NetworkConnectionResponse'
        default:
          $ref: '#/components/responses/Error'
      operationId: getNetwork
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<NetworkConnectionResponse>> = fireblocks.networkConnections.getNetwork(networkConnectionsApiGetNetworkRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<NetworkConnectionResponse>> response = fireblocks.networkConnections().getNetwork(connectionId);
        - lang: Python
          source: response = fireblocks.network_connections.get_network(connection_id);
    delete:
      summary: Delete a network connection by ID
      description: Deletes an existing network connection specified by its connection ID.
      tags:
        - Network connections
      x-rate-limit-category: write
      parameters:
        - in: path
          name: connectionId
          required: true
          description: The ID of the network connection to delete
          schema:
            type: string
      responses:
        '200':
          description: Network ID
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DeleteNetworkConnectionResponse'
        default:
          $ref: '#/components/responses/Error'
      operationId: deleteNetworkConnection
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<DeleteNetworkConnectionResponse>> = fireblocks.networkConnections.deleteNetworkConnection(networkConnectionsApiDeleteNetworkConnectionRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<DeleteNetworkConnectionResponse>> response = fireblocks.networkConnections().deleteNetworkConnection(connectionId);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.network_connections.delete_network_connection(connection_id);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<DeleteNetworkConnectionResponse>> = fireblocks.networkConnections.deleteNetworkConnection(networkConnectionsApiDeleteNetworkConnectionRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<DeleteNetworkConnectionResponse>> response = fireblocks.networkConnections().deleteNetworkConnection(connectionId);
        - lang: Python
          source: response = fireblocks.network_connections.delete_network_connection(connection_id);
  /network_connections/{connectionId}/is_third_party_routing/{assetType}:
    get:
      summary: Retrieve third-party network routing validation
      description: The Fireblocks Network allows for flexibility around incoming deposits. A receiver can receive network deposits to locations other than Fireblocks. This endpoint validates whether future transactions are routed to the displayed recipient or to a 3rd party.
      tags:
        - Network connections
      x-rate-limit-category: query
      parameters:
        - in: path
          name: connectionId
          required: true
          description: The ID of the network connection
          schema:
            type: string
        - in: path
          name: assetType
          required: true
          description: The destination asset type
          schema:
            type: string
      responses:
        '200':
          description: result for the validation
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ThirdPartyRouting'
        default:
          $ref: '#/components/responses/Error'
      operationId: checkThirdPartyRouting
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<ThirdPartyRouting>> = fireblocks.networkConnections.checkThirdPartyRouting(networkConnectionsApiCheckThirdPartyRoutingRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<ThirdPartyRouting>> response = fireblocks.networkConnections().checkThirdPartyRouting(connectionId, assetType);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.network_connections.check_third_party_routing(connection_id, asset_type);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<ThirdPartyRouting>> = fireblocks.networkConnections.checkThirdPartyRouting(networkConnectionsApiCheckThirdPartyRoutingRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<ThirdPartyRouting>> response = fireblocks.networkConnections().checkThirdPartyRouting(connectionId, assetType);
        - lang: Python
          source: response = fireblocks.network_connections.check_third_party_routing(connection_id, asset_type);
  /network_connections/{connectionId}/set_routing_policy:
    patch:
      summary: Update network connection routing policy.
      description: Updates an existing network connection's routing policy.
      tags:
        - Network connections
      x-rate-limit-category: write
      parameters:
        - in: path
          name: connectionId
          required: true
          description: The ID of the network connection
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SetRoutingPolicyRequest'
      responses:
        '200':
          description: Network ID
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SetRoutingPolicyResponse'
        default:
          $ref: '#/components/responses/Error'
      operationId: setRoutingPolicy
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<SetRoutingPolicyResponse>> = fireblocks.networkConnections.setRoutingPolicy(networkConnectionsApiSetRoutingPolicyRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<SetRoutingPolicyResponse>> response = fireblocks.networkConnections().setRoutingPolicy(connectionId, setRoutingPolicyRequest);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.network_connections.set_routing_policy(connection_id, set_routing_policy_request);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<SetRoutingPolicyResponse>> = fireblocks.networkConnections.setRoutingPolicy(networkConnectionsApiSetRoutingPolicyRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<SetRoutingPolicyResponse>> response = fireblocks.networkConnections().setRoutingPolicy(connectionId, setRoutingPolicyRequest);
        - lang: Python
          source: response = fireblocks.network_connections.set_routing_policy(connection_id, set_routing_policy_request);
  /network_ids:
    get:
      deprecated: true
      summary: Get all network IDs
      description: Retrieves a list of all local and discoverable remote network IDs.
      tags:
        - Network connections
      x-rate-limit-category: query
      responses:
        '200':
          description: A list of network IDs
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetNetworkIdsResponse'
        default:
          $ref: '#/components/responses/Error'
      operationId: getNetworkIds
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<GetNetworkIdsResponse>> = fireblocks.networkConnections.getNetworkIds();'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<List<Object>>> response = fireblocks.networkConnections().getNetworkIds();
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.network_connections.get_network_ids();
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<GetNetworkIdsResponse>> = fireblocks.networkConnections.getNetworkIds();'
        - lang: Java
          source: CompletableFuture<ApiResponse<List<Object>>> response = fireblocks.networkConnections().getNetworkIds();
        - lang: Python
          source: response = fireblocks.network_connections.get_network_ids();
    post:
      summary: Creates a new Network ID
      description: Create a new Network ID.
      tags:
        - Network connections
      x-rate-limit-category: write
      parameters:
        - $ref: '#/components/parameters/X-Idempotency-Key'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateNetworkIdRequest'
      responses:
        '201':
          description: Returns the new network ID in your workspace
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NetworkIdResponse'
        default:
          $ref: '#/components/responses/Error'
      operationId: createNetworkId
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<NetworkIdResponse>> = fireblocks.networkConnections.createNetworkId(networkConnectionsApiCreateNetworkIdRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<NetworkIdResponse>> response = fireblocks.networkConnections().createNetworkId(createNetworkIdRequest, idempotencyKey);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.network_connections.create_network_id(create_network_id_request, idempotency_key);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<NetworkIdResponse>> = fireblocks.networkConnections.createNetworkId(networkConnectionsApiCreateNetworkIdRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<NetworkIdResponse>> response = fireblocks.networkConnections().createNetworkId(createNetworkIdRequest, idempotencyKey);
        - lang: Python
          source: response = fireblocks.network_connections.create_network_id(create_network_id_request, idempotency_key);
  /network_ids/{networkId}:
    get:
      summary: Return specific network ID.
      description: Returns specific network ID.
      tags:
        - Network connections
      x-rate-limit-category: query
      parameters:
        - in: path
          name: networkId
          required: true
          description: The ID of the network
          schema:
            type: string
      responses:
        '200':
          description: Network ID
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NetworkIdResponse'
        default:
          $ref: '#/components/responses/Error'
      operationId: getNetworkId
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<NetworkIdResponse>> = fireblocks.networkConnections.getNetworkId(networkConnectionsApiGetNetworkIdRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<NetworkIdResponse>> response = fireblocks.networkConnections().getNetworkId(networkId);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.network_connections.get_network_id(network_id);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<NetworkIdResponse>> = fireblocks.networkConnections.getNetworkId(networkConnectionsApiGetNetworkIdRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<NetworkIdResponse>> response = fireblocks.networkConnections().getNetworkId(networkId);
        - lang: Python
          source: response = fireblocks.network_connections.get_network_id(network_id);
    delete:
      summary: Delete specific network ID.
      description: Deletes a network by its ID.
      tags:
        - Network connections
      x-rate-limit-category: write
      parameters:
        - in: path
          name: networkId
          required: true
          description: The ID of the network
          schema:
            type: string
      responses:
        '200':
          description: Network ID
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DeleteNetworkIdResponse'
        default:
          $ref: '#/components/responses/Error'
      operationId: deleteNetworkId
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<DeleteNetworkIdResponse>> = fireblocks.networkConnections.deleteNetworkId(networkConnectionsApiDeleteNetworkIdRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<DeleteNetworkIdResponse>> response = fireblocks.networkConnections().deleteNetworkId(networkId);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.network_connections.delete_network_id(network_id);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<DeleteNetworkIdResponse>> = fireblocks.networkConnections.deleteNetworkId(networkConnectionsApiDeleteNetworkIdRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<DeleteNetworkIdResponse>> response = fireblocks.networkConnections().deleteNetworkId(networkId);
        - lang: Python
          source: response = fireblocks.network_connections.delete_network_id(network_id);
  /network_ids/{networkId}/set_discoverability:
    patch:
      summary: Update network ID's discoverability.
      description: Update whether or not the network ID is discoverable by others.
      tags:
        - Network connections
      x-rate-limit-category: write
      parameters:
        - in: path
          name: networkId
          required: true
          description: The ID of the network
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SetNetworkIdDiscoverabilityRequest'
      responses:
        '200':
          description: Network ID
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SetNetworkIdResponse'
        default:
          $ref: '#/components/responses/Error'
      operationId: setNetworkIdDiscoverability
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<SetNetworkIdResponse>> = fireblocks.networkConnections.setNetworkIdDiscoverability(networkConnectionsApiSetNetworkIdDiscoverabilityRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<SetNetworkIdResponse>> response = fireblocks.networkConnections().setNetworkIdDiscoverability(setNetworkIdDiscoverabilityRequest, networkId);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.network_connections.set_network_id_discoverability(set_network_id_discoverability_request, network_id);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<SetNetworkIdResponse>> = fireblocks.networkConnections.setNetworkIdDiscoverability(networkConnectionsApiSetNetworkIdDiscoverabilityRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<SetNetworkIdResponse>> response = fireblocks.networkConnections().setNetworkIdDiscoverability(setNetworkIdDiscoverabilityRequest, networkId);
        - lang: Python
          source: response = fireblocks.network_connections.set_network_id_discoverability(set_network_id_discoverability_request, network_id);
  /network_ids/{networkId}/set_name:
    patch:
      summary: Update network ID's name.
      description: Updates name of a specified network ID.
      tags:
        - Network connections
      x-rate-limit-category: write
      parameters:
        - in: path
          name: networkId
          required: true
          description: The ID of the network
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SetNetworkIdNameRequest'
      responses:
        '200':
          description: Network ID
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SetNetworkIdResponse'
        default:
          $ref: '#/components/responses/Error'
      operationId: setNetworkIdName
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<SetNetworkIdResponse>> = fireblocks.networkConnections.setNetworkIdName(networkConnectionsApiSetNetworkIdNameRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<SetNetworkIdResponse>> response = fireblocks.networkConnections().setNetworkIdName(setNetworkIdNameRequest, networkId);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.network_connections.set_network_id_name(set_network_id_name_request, network_id);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<SetNetworkIdResponse>> = fireblocks.networkConnections.setNetworkIdName(networkConnectionsApiSetNetworkIdNameRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<SetNetworkIdResponse>> response = fireblocks.networkConnections().setNetworkIdName(setNetworkIdNameRequest, networkId);
        - lang: Python
          source: response = fireblocks.network_connections.set_network_id_name(set_network_id_name_request, network_id);
  /network_ids/{networkId}/set_routing_policy:
    patch:
      summary: Update network id routing policy.
      description: Updates the routing policy of a specified network ID.
      tags:
        - Network connections
      x-rate-limit-category: write
      parameters:
        - in: path
          name: networkId
          required: true
          description: The ID of the network
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SetNetworkIdRoutingPolicyRequest'
      responses:
        '200':
          description: Network ID
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SetNetworkIdResponse'
        default:
          $ref: '#/components/responses/Error'
      operationId: setNetworkIdRoutingPolicy
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<SetNetworkIdResponse>> = fireblocks.networkConnections.setNetworkIdRoutingPolicy(networkConnectionsApiSetNetworkIdRoutingPolicyRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<SetNetworkIdResponse>> response = fireblocks.networkConnections().setNetworkIdRoutingPolicy(networkId, setNetworkIdRoutingPolicyRequest);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.network_connections.set_network_id_routing_policy(network_id, set_network_id_routing_policy_request);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<SetNetworkIdResponse>> = fireblocks.networkConnections.setNetworkIdRoutingPolicy(networkConnectionsApiSetNetworkIdRoutingPolicyRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<SetNetworkIdResponse>> response = fireblocks.networkConnections().setNetworkIdRoutingPolicy(networkId, setNetworkIdRoutingPolicyRequest);
        - lang: Python
          source: response = fireblocks.network_connections.set_network_id_routing_policy(network_id, set_network_id_routing_policy_request);
  /network_ids/routing_policy_asset_groups:
    get:
      summary: Return all enabled routing policy asset groups
      x-rate-limit-category: query
      description: Returns all enabled routing policy asset groups
      tags:
        - Network connections
      responses:
        '200':
          description: A list of enabled routing policy asset groups
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetRoutingPolicyAssetGroupsResponse'
        default:
          $ref: '#/components/responses/Error'
      operationId: getRoutingPolicyAssetGroups
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<GetRoutingPolicyAssetGroupsResponse>> = fireblocks.networkConnections.getRoutingPolicyAssetGroups();'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<List<String>>> response = fireblocks.networkConnections().getRoutingPolicyAssetGroups();
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.network_connections.get_routing_policy_asset_groups();
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<GetRoutingPolicyAssetGroupsResponse>> = fireblocks.networkConnections.getRoutingPolicyAssetGroups();'
        - lang: Java
          source: CompletableFuture<ApiResponse<List<String>>> response = fireblocks.networkConnections().getRoutingPolicyAssetGroups();
        - lang: Python
          source: response = fireblocks.network_connections.get_routing_policy_asset_groups();
  /network_ids/search:
    get:
      summary: Get both local IDs and discoverable remote IDs
      description: |
        Retrieves a list of all local and discoverable remote network IDs. Can be filtered.
      parameters:
        - name: search
          required: false
          in: query
          description: Search string - displayName networkId. Optional
          schema:
            minLength: 1
            type: string
        - name: excludeSelf
          required: false
          in: query
          description: Exclude your networkIds. Optional, default false
          schema:
            type: boolean
        - name: onlySelf
          required: false
          in: query
          description: Include just your networkIds. Optional, default false
          schema:
            type: boolean
        - name: excludeConnected
          required: false
          in: query
          description: Exclude connected networkIds. Optional, default false
          schema:
            type: boolean
        - name: pageCursor
          required: false
          in: query
          description: ID of the record after which to fetch $limit records
          schema:
            type: string
        - name: pageSize
          required: false
          in: query
          description: Number of records to fetch. By default, it is 50
          schema:
            minimum: 1
            maximum: 50
            default: 50
            type: number
      tags:
        - Network connections
      x-rate-limit-category: query
      responses:
        '200':
          description: A list of network IDs
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SearchNetworkIdsResponse'
        default:
          $ref: '#/components/responses/Error'
      operationId: searchNetworkIds
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<SearchNetworkIdsResponse>> = fireblocks.networkConnections.searchNetworkIds(networkConnectionsApiSearchNetworkIdsRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<SearchNetworkIdsResponse>> response = fireblocks.networkConnections().searchNetworkIds(search, excludeSelf, onlySelf, excludeConnected, pageCursor, pageSize);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.network_connections.search_network_ids(search, exclude_self, only_self, exclude_connected, page_cursor, page_size);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<SearchNetworkIdsResponse>> = fireblocks.networkConnections.searchNetworkIds(networkConnectionsApiSearchNetworkIdsRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<SearchNetworkIdsResponse>> response = fireblocks.networkConnections().searchNetworkIds(search, excludeSelf, onlySelf, excludeConnected, pageCursor, pageSize);
        - lang: Python
          source: response = fireblocks.network_connections.search_network_ids(search, exclude_self, only_self, exclude_connected, page_cursor, page_size);
  /nfts/ownership/assets:
    get:
      operationId: listOwnedTokens
      summary: List all distinct owned tokens (paginated)
      description: |
        Returns all owned distinct tokens (for your tenant) and their data in your workspace.
      parameters:
        - name: ncwId
          required: false
          in: query
          description: Tenant's Non-Custodial Wallet ID
          schema:
            type: string
        - name: walletType
          required: false
          in: query
          description: Wallet type, it can be `VAULT_ACCOUNT` or `END_USER_WALLET`
          schema:
            default: VAULT_ACCOUNT
            enum:
              - VAULT_ACCOUNT
              - END_USER_WALLET
            type: string
        - name: pageCursor
          required: false
          in: query
          description: Page cursor to fetch
          schema:
            type: string
        - name: pageSize
          required: false
          in: query
          description: Items per page (max 100)
          schema:
            minimum: 1
            maximum: 100
            type: number
        - name: sort
          required: false
          in: query
          description: Sort by param, it can be one param or a list of params separated by comma
          schema:
            type: array
            items:
              type: string
              enum:
                - name
        - name: order
          required: false
          in: query
          description: Order direction, it can be `ASC` for ascending or `DESC` for descending
          schema:
            default: ASC
            enum:
              - DESC
              - ASC
            type: string
        - name: status
          required: false
          in: query
          description: Token ownership status
          schema:
            default: LISTED
            enum:
              - LISTED
              - ARCHIVED
            type: string
        - name: search
          required: false
          in: query
          description: Search owned tokens by token name
          schema:
            maximum: 100
            type: string
        - name: spam
          required: false
          in: query
          description: Token ownership spam status.
          schema:
            enum:
              - 'true'
              - 'false'
              - all
            type: string
      responses:
        '200':
          description: ''
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListOwnedTokensResponse'
      tags:
        - NFTs
      x-rate-limit-category: query
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<ListOwnedTokensResponse>> = fireblocks.nFTs.listOwnedTokens(nFTsApiListOwnedTokensRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<ListOwnedTokensResponse>> response = fireblocks.nFTs().listOwnedTokens(ncwId, walletType, pageCursor, pageSize, sort, order, status, search, spam);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.n_f_ts.list_owned_tokens(ncw_id, wallet_type, page_cursor, page_size, sort, order, status, search, spam);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<ListOwnedTokensResponse>> = fireblocks.nFTs.listOwnedTokens(nFTsApiListOwnedTokensRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<ListOwnedTokensResponse>> response = fireblocks.nFTs().listOwnedTokens(ncwId, walletType, pageCursor, pageSize, sort, order, status, search, spam);
        - lang: Python
          source: response = fireblocks.n_f_ts.list_owned_tokens(ncw_id, wallet_type, page_cursor, page_size, sort, order, status, search, spam);
  /nfts/ownership/collections:
    get:
      operationId: listOwnedCollections
      summary: List owned collections (paginated)
      description: |
        Returns all collections in your workspace
      parameters:
        - name: ncwId
          required: false
          in: query
          description: Tenant's Non-Custodial Wallet ID
          schema:
            type: string
        - name: walletType
          required: false
          in: query
          description: Wallet type, it can be `VAULT_ACCOUNT` or `END_USER_WALLET`
          schema:
            default: VAULT_ACCOUNT
            enum:
              - VAULT_ACCOUNT
              - END_USER_WALLET
            type: string
        - name: search
          required: false
          in: query
          description: 'Search owned collections. Possible criteria for search: collection name, collection contract address.'
          schema:
            maximum: 100
            type: string
        - name: pageCursor
          required: false
          in: query
          description: Page cursor to fetch
          schema:
            type: string
        - name: pageSize
          required: false
          in: query
          description: Items per page (max 100)
          schema:
            minimum: 1
            maximum: 100
            type: number
        - name: sort
          required: false
          in: query
          description: Sort by param, it can be one param or a list of params separated by comma
          schema:
            type: array
            items:
              type: string
              enum:
                - name
        - name: order
          required: false
          in: query
          description: Order direction, it can be `ASC` for ascending or `DESC` for descending
          schema:
            default: ASC
            enum:
              - DESC
              - ASC
            type: string
        - name: status
          required: false
          in: query
          description: Token ownership status
          schema:
            default: LISTED
            enum:
              - LISTED
              - ARCHIVED
            type: string
      responses:
        '200':
          description: ''
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListOwnedCollectionsResponse'
      tags:
        - NFTs
      x-rate-limit-category: query
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<ListOwnedCollectionsResponse>> = fireblocks.nFTs.listOwnedCollections(nFTsApiListOwnedCollectionsRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<ListOwnedCollectionsResponse>> response = fireblocks.nFTs().listOwnedCollections(ncwId, walletType, search, pageCursor, pageSize, sort, order, status);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.n_f_ts.list_owned_collections(ncw_id, wallet_type, search, page_cursor, page_size, sort, order, status);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<ListOwnedCollectionsResponse>> = fireblocks.nFTs.listOwnedCollections(nFTsApiListOwnedCollectionsRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<ListOwnedCollectionsResponse>> response = fireblocks.nFTs().listOwnedCollections(ncwId, walletType, search, pageCursor, pageSize, sort, order, status);
        - lang: Python
          source: response = fireblocks.n_f_ts.list_owned_collections(ncw_id, wallet_type, search, page_cursor, page_size, sort, order, status);
  /nfts/ownership/tokens:
    put:
      operationId: updateOwnershipTokens
      summary: Refresh vault account tokens
      x-rate-limit-category: write
      description: |-
        Updates all tokens and balances per blockchain and vault account.
        Learn more about Fireblocks NFT management in the following [guide](https://developers.fireblocks.com/reference/deploy-an-nft-collection).

        Endpoint Permission: Admin, Non-Signing Admin, Signer, Approver, Editor.
      parameters:
        - name: blockchainDescriptor
          required: true
          in: query
          description: Blockchain descriptor filter
          schema:
            enum:
              - ETH
              - ETH_TEST5
              - ETH_TEST6
              - POLYGON
              - POLYGON_TEST_MUMBAI
              - AMOY_POLYGON_TEST
              - BASECHAIN_ETH
              - BASECHAIN_ETH_TEST5
              - ETHERLINK
              - ETHERLINK_TEST
              - MANTLE
              - MANTLE_TEST
              - GUN_GUNZILLA
              - GUN_GUNZILLA_TEST
              - ETH_SONEIUM
              - SONEIUM_MINATO_TEST
              - IOTX_IOTEX
              - KLAY_KAIA
              - KLAY_KAIA_TEST
              - APECHAIN
              - APECHAIN_TEST
              - ROBINHOOD_CHAIN_TESTNET_TEST
            type: string
        - name: vaultAccountId
          required: true
          in: query
          description: Vault account filter
          schema:
            type: string
        - $ref: '#/components/parameters/X-Idempotency-Key'
      responses:
        '202':
          description: ''
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
      tags:
        - NFTs
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<void>> = fireblocks.nFTs.updateOwnershipTokens(nFTsApiUpdateOwnershipTokensRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<Void>> response = fireblocks.nFTs().updateOwnershipTokens(blockchainDescriptor, vaultAccountId, idempotencyKey);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.n_f_ts.update_ownership_tokens(blockchain_descriptor, vault_account_id, idempotency_key);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<void>> = fireblocks.nFTs.updateOwnershipTokens(nFTsApiUpdateOwnershipTokensRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<Void>> response = fireblocks.nFTs().updateOwnershipTokens(blockchainDescriptor, vaultAccountId, idempotencyKey);
        - lang: Python
          source: response = fireblocks.n_f_ts.update_ownership_tokens(blockchain_descriptor, vault_account_id, idempotency_key);
    get:
      operationId: getOwnershipTokens
      summary: List all owned tokens (paginated)
      description: |
        Returns all tokens and their data in your workspace.
      parameters:
        - name: blockchainDescriptor
          required: false
          in: query
          description: Blockchain descriptor filter
          schema:
            enum:
              - ETH
              - ETH_TEST3
              - ETH_TEST5
              - ETH_TEST6
              - POLYGON
              - POLYGON_TEST_MUMBAI
              - AMOY_POLYGON_TEST
              - XTZ
              - XTZ_TEST
              - BASECHAIN_ETH
              - BASECHAIN_ETH_TEST3
              - BASECHAIN_ETH_TEST5
              - ETHERLINK
              - ETHERLINK_TEST
              - MANTLE
              - MANTLE_TEST
              - GUN_GUNZILLA
              - GUN_GUNZILLA_TEST
              - ETH_SONEIUM
              - SONEIUM_MINATO_TEST
              - IOTX_IOTEX
              - KLAY_KAIA
              - KLAY_KAIA_TEST
              - APECHAIN
              - APECHAIN_TEST
              - CRONOS
              - CRONOS_TEST
              - ROBINHOOD_CHAIN_TESTNET_TEST
              - ARB
            type: string
        - name: vaultAccountIds
          required: false
          in: query
          description: A comma separated list of Vault Account IDs. Up to 100 are allowed in a single request.  This field will be ignored when walletType=END_USER_WALLET or ncwId is provided.
          schema:
            type: string
        - name: ncwId
          required: false
          in: query
          description: Tenant's Non-Custodial Wallet ID
          schema:
            type: string
        - name: ncwAccountIds
          required: false
          in: query
          description: A comma separated list of Non-Custodial account IDs. Up to 100 are allowed in a single request. This field will be ignored when walletType=VAULT_ACCOUNT or ncwId is not provided.
          schema:
            type: string
        - name: walletType
          required: false
          in: query
          description: Wallet type, it can be `VAULT_ACCOUNT` or `END_USER_WALLET`
          schema:
            default: VAULT_ACCOUNT
            enum:
              - VAULT_ACCOUNT
              - END_USER_WALLET
            type: string
        - name: ids
          required: false
          in: query
          description: A comma separated list of NFT IDs. Up to 100 are allowed in a single request.
          schema:
            type: string
        - name: collectionIds
          required: false
          in: query
          description: A comma separated list of collection IDs. Up to 100 are allowed in a single request.
          schema:
            type: string
        - name: pageCursor
          required: false
          in: query
          description: Page cursor to fetch
          schema:
            type: string
        - name: pageSize
          required: false
          in: query
          description: Items per page (max 100)
          schema:
            minimum: 1
            maximum: 100
            type: number
        - name: sort
          required: false
          in: query
          description: Sort by param, it can be one param or a list of params separated by comma
          schema:
            type: array
            items:
              type: string
              enum:
                - ownershipLastUpdateTime
                - name
                - collection.name
                - blockchainDescriptor
        - name: order
          required: false
          in: query
          description: Order direction, it can be `ASC` for ascending or `DESC` for descending
          schema:
            default: ASC
            enum:
              - DESC
              - ASC
            type: string
        - name: status
          required: false
          in: query
          description: Token ownership status
          schema:
            default: LISTED
            enum:
              - LISTED
              - ARCHIVED
            type: string
        - name: search
          required: false
          in: query
          description: 'Search owned tokens and their collections. Possible criteria for search:  token name and id within the contract/collection, collection name, blockchain descriptor and name.'
          schema:
            maximum: 100
            type: string
        - name: spam
          required: false
          in: query
          description: Token ownership spam status.
          schema:
            enum:
              - 'true'
              - 'false'
              - all
            type: string
      responses:
        '200':
          description: ''
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetOwnershipTokensResponse'
      tags:
        - NFTs
      x-rate-limit-category: query
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<GetOwnershipTokensResponse>> = fireblocks.nFTs.getOwnershipTokens(nFTsApiGetOwnershipTokensRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<GetOwnershipTokensResponse>> response = fireblocks.nFTs().getOwnershipTokens(blockchainDescriptor, vaultAccountIds, ncwId, ncwAccountIds, walletType, ids, collectionIds, pageCursor, pageSize, sort, order, status, search, spam);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.n_f_ts.get_ownership_tokens(blockchain_descriptor, vault_account_ids, ncw_id, ncw_account_ids, wallet_type, ids, collection_ids, page_cursor, page_size, sort, order, status, search, spam);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<GetOwnershipTokensResponse>> = fireblocks.nFTs.getOwnershipTokens(nFTsApiGetOwnershipTokensRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<GetOwnershipTokensResponse>> response = fireblocks.nFTs().getOwnershipTokens(blockchainDescriptor, vaultAccountIds, ncwId, ncwAccountIds, walletType, ids, collectionIds, pageCursor, pageSize, sort, order, status, search, spam);
        - lang: Python
          source: response = fireblocks.n_f_ts.get_ownership_tokens(blockchain_descriptor, vault_account_ids, ncw_id, ncw_account_ids, wallet_type, ids, collection_ids, page_cursor, page_size, sort, order, status, search, spam);
  /nfts/ownership/tokens/{id}/status:
    put:
      operationId: updateTokenOwnershipStatus
      summary: Update token ownership status
      description: |
        Updates token status for a tenant, in all tenant vaults.
      parameters:
        - $ref: '#/components/parameters/X-End-User-Wallet-Id'
        - name: id
          required: true
          in: path
          description: NFT ID
          example: NFT-abcdefabcdefabcdefabcdefabcdefabcdefabcd
          schema:
            type: string
        - $ref: '#/components/parameters/X-Idempotency-Key'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateTokenOwnershipStatusDto'
      responses:
        '200':
          description: ''
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
      tags:
        - NFTs
      x-rate-limit-category: write
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<void>> = fireblocks.nFTs.updateTokenOwnershipStatus(nFTsApiUpdateTokenOwnershipStatusRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<Void>> response = fireblocks.nFTs().updateTokenOwnershipStatus(updateTokenOwnershipStatusDto, id, xEndUserWalletId, idempotencyKey);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.n_f_ts.update_token_ownership_status(update_token_ownership_status_dto, id, x_end_user_wallet_id, idempotency_key);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<void>> = fireblocks.nFTs.updateTokenOwnershipStatus(nFTsApiUpdateTokenOwnershipStatusRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<Void>> response = fireblocks.nFTs().updateTokenOwnershipStatus(updateTokenOwnershipStatusDto, id, xEndUserWalletId, idempotencyKey);
        - lang: Python
          source: response = fireblocks.n_f_ts.update_token_ownership_status(update_token_ownership_status_dto, id, x_end_user_wallet_id, idempotency_key);
  /nfts/ownership/tokens/spam:
    put:
      operationId: updateTokensOwnershipSpam
      summary: Update tokens ownership spam property
      description: Updates tokens spam property for a tenant's token ownerships, in all tenant vaults.
      parameters:
        - $ref: '#/components/parameters/X-End-User-Wallet-Id'
        - $ref: '#/components/parameters/X-Idempotency-Key'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateTokensOwnershipSpamRequest'
      responses:
        '200':
          description: All token spam properties have been updated
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
        '400':
          description: Invalid data sent
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
        '404':
          description: When ownership for token ID is not found
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
      tags:
        - NFTs
      x-rate-limit-category: write
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<void>> = fireblocks.nFTs.updateTokensOwnershipSpam(nFTsApiUpdateTokensOwnershipSpamRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<Void>> response = fireblocks.nFTs().updateTokensOwnershipSpam(tokenOwnershipSpamUpdatePayload, xEndUserWalletId, idempotencyKey);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.n_f_ts.update_tokens_ownership_spam(token_ownership_spam_update_payload, x_end_user_wallet_id, idempotency_key);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<void>> = fireblocks.nFTs.updateTokensOwnershipSpam(nFTsApiUpdateTokensOwnershipSpamRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<Void>> response = fireblocks.nFTs().updateTokensOwnershipSpam(tokenOwnershipSpamUpdatePayload, xEndUserWalletId, idempotencyKey);
        - lang: Python
          source: response = fireblocks.n_f_ts.update_tokens_ownership_spam(token_ownership_spam_update_payload, x_end_user_wallet_id, idempotency_key);
  /nfts/ownership/tokens/status:
    put:
      operationId: updateTokensOwnershipStatus
      summary: Update tokens ownership status
      description: Updates tokens status for a tenant, in all tenant vaults.
      parameters:
        - $ref: '#/components/parameters/X-End-User-Wallet-Id'
        - $ref: '#/components/parameters/X-Idempotency-Key'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateTokensOwnershipStatusRequest'
      responses:
        '200':
          description: All token statuses have been updated
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
        '400':
          description: Invalid data sent
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
        '404':
          description: When ownership for token ID is not found
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
      tags:
        - NFTs
      x-rate-limit-category: write
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<void>> = fireblocks.nFTs.updateTokensOwnershipStatus(nFTsApiUpdateTokensOwnershipStatusRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<Void>> response = fireblocks.nFTs().updateTokensOwnershipStatus(tokenOwnershipStatusUpdatePayload, xEndUserWalletId, idempotencyKey);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.n_f_ts.update_tokens_ownership_status(token_ownership_status_update_payload, x_end_user_wallet_id, idempotency_key);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<void>> = fireblocks.nFTs.updateTokensOwnershipStatus(nFTsApiUpdateTokensOwnershipStatusRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<Void>> response = fireblocks.nFTs().updateTokensOwnershipStatus(tokenOwnershipStatusUpdatePayload, xEndUserWalletId, idempotencyKey);
        - lang: Python
          source: response = fireblocks.n_f_ts.update_tokens_ownership_status(token_ownership_status_update_payload, x_end_user_wallet_id, idempotency_key);
  /nfts/tokens:
    get:
      operationId: getNFTs
      summary: List tokens by IDs
      description: |
        Returns the requested tokens data.
      parameters:
        - name: ids
          required: true
          in: query
          description: A comma separated list of NFT IDs. Up to 100 are allowed in a single request.
          schema:
            type: string
        - name: pageCursor
          required: false
          in: query
          description: Page cursor to fetch
          schema:
            type: string
        - name: pageSize
          required: false
          in: query
          description: Items per page (max 100)
          schema:
            minimum: 1
            maximum: 100
            type: number
        - name: sort
          required: false
          in: query
          description: Sort by param, it can be one param or a list of params separated by comma
          schema:
            type: array
            items:
              type: string
              enum:
                - collection.name
                - name
                - blockchainDescriptor
        - name: order
          required: false
          in: query
          description: Order direction, it can be `ASC` for ascending or `DESC` for descending
          schema:
            default: ASC
            enum:
              - DESC
              - ASC
            type: string
      responses:
        '200':
          description: ''
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetNFTsResponse'
      tags:
        - NFTs
      x-rate-limit-category: query
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<GetNFTsResponse>> = fireblocks.nFTs.getNFTs(nFTsApiGetNFTsRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<GetNFTsResponse>> response = fireblocks.nFTs().getNFTs(ids, pageCursor, pageSize, sort, order);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.n_f_ts.get_n_f_ts(ids, page_cursor, page_size, sort, order);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<GetNFTsResponse>> = fireblocks.nFTs.getNFTs(nFTsApiGetNFTsRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<GetNFTsResponse>> response = fireblocks.nFTs().getNFTs(ids, pageCursor, pageSize, sort, order);
        - lang: Python
          source: response = fireblocks.n_f_ts.get_n_f_ts(ids, page_cursor, page_size, sort, order);
  /nfts/tokens/{id}:
    put:
      operationId: refreshNFTMetadata
      summary: Refresh token metadata
      x-rate-limit-category: write
      description: |
        Updates the latest token metadata.
      parameters:
        - $ref: '#/components/parameters/X-End-User-Wallet-Id'
        - name: id
          required: true
          in: path
          description: NFT ID
          example: NFT-abcdefabcdefabcdefabcdefabcdefabcdefabcd
          schema:
            type: string
        - $ref: '#/components/parameters/X-Idempotency-Key'
      responses:
        '202':
          description: ''
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
      tags:
        - NFTs
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<void>> = fireblocks.nFTs.refreshNFTMetadata(nFTsApiRefreshNFTMetadataRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<Void>> response = fireblocks.nFTs().refreshNFTMetadata(id, xEndUserWalletId, idempotencyKey);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.n_f_ts.refresh_n_f_t_metadata(id, x_end_user_wallet_id, idempotency_key);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<void>> = fireblocks.nFTs.refreshNFTMetadata(nFTsApiRefreshNFTMetadataRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<Void>> response = fireblocks.nFTs().refreshNFTMetadata(id, xEndUserWalletId, idempotencyKey);
        - lang: Python
          source: response = fireblocks.n_f_ts.refresh_n_f_t_metadata(id, x_end_user_wallet_id, idempotency_key);
    get:
      operationId: getNFT
      summary: List token data by ID
      description: |
        Returns the requested token data.
      parameters:
        - name: id
          required: true
          in: path
          description: NFT ID
          example: NFT-abcdefabcdefabcdefabcdefabcdefabcdefabcd
          schema:
            type: string
      responses:
        '200':
          description: ''
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TokenResponse'
      tags:
        - NFTs
      x-rate-limit-category: query
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<TokenResponse>> = fireblocks.nFTs.getNFT(nFTsApiGetNFTRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<TokenResponse>> response = fireblocks.nFTs().getNFT(id);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.n_f_ts.get_n_f_t(id);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<TokenResponse>> = fireblocks.nFTs.getNFT(nFTsApiGetNFTRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<TokenResponse>> response = fireblocks.nFTs().getNFT(id);
        - lang: Python
          source: response = fireblocks.n_f_ts.get_n_f_t(id);
  /off_exchange/add:
    post:
      summary: Add Collateral
      description: |-
        Add collateral and create deposit request.
        Learn more about Fireblocks Off Exchange in the following [guide](https://developers.fireblocks.com/docs/off-exchange).
        Endpoint Permission: Admin, Non-Signing Admin, Signer, Approver, Editor.
      tags:
        - Off exchanges
      x-rate-limit-category: write
      parameters:
        - $ref: '#/components/parameters/X-Idempotency-Key'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AddCollateralRequestBody'
      responses:
        '200':
          description: A transaction object
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreateTransactionResponse'
        default:
          $ref: '#/components/responses/Error'
      operationId: addOffExchange
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<CreateTransactionResponse>> = fireblocks.offExchanges.addOffExchange(offExchangesApiAddOffExchangeRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<CreateTransactionResponse>> response = fireblocks.offExchanges().addOffExchange(addCollateralRequestBody, idempotencyKey);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.off_exchanges.add_off_exchange(add_collateral_request_body, idempotency_key);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<CreateTransactionResponse>> = fireblocks.offExchanges.addOffExchange(offExchangesApiAddOffExchangeRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<CreateTransactionResponse>> response = fireblocks.offExchanges().addOffExchange(addCollateralRequestBody, idempotencyKey);
        - lang: Python
          source: response = fireblocks.off_exchanges.add_off_exchange(add_collateral_request_body, idempotency_key);
  /off_exchange/collateral_accounts/{mainExchangeAccountId}:
    get:
      summary: Find a specific collateral exchange account
      description: |-
        Returns a collateral account by mainExchangeAccountId.
        Learn more about Fireblocks Off Exchange in the following [guide](https://developers.fireblocks.com/docs/off-exchange).
        Endpoint Permission: Admin, Non-Signing Admin, Signer, Approver, Editor.
      tags:
        - Off exchanges
      x-rate-limit-category: query
      parameters:
        - in: path
          name: mainExchangeAccountId
          required: true
          description: The id of the main exchange account for which the requested collateral account is associated with
          schema:
            type: string
      responses:
        '200':
          description: An ExchangeAccount object
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExchangeAccount'
        default:
          $ref: '#/components/responses/Error'
      operationId: getOffExchangeCollateralAccounts
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<ExchangeAccount>> = fireblocks.offExchanges.getOffExchangeCollateralAccounts(offExchangesApiGetOffExchangeCollateralAccountsRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<ExchangeAccount>> response = fireblocks.offExchanges().getOffExchangeCollateralAccounts(mainExchangeAccountId);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.off_exchanges.get_off_exchange_collateral_accounts(main_exchange_account_id);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<ExchangeAccount>> = fireblocks.offExchanges.getOffExchangeCollateralAccounts(offExchangesApiGetOffExchangeCollateralAccountsRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<ExchangeAccount>> response = fireblocks.offExchanges().getOffExchangeCollateralAccounts(mainExchangeAccountId);
        - lang: Python
          source: response = fireblocks.off_exchanges.get_off_exchange_collateral_accounts(main_exchange_account_id);
  /off_exchange/remove:
    post:
      summary: Remove Collateral
      description: |-
        Remove collateral, create withdraw request.
        Learn more about Fireblocks Off Exchange in the following [guide](https://developers.fireblocks.com/docs/off-exchange).
        Endpoint Permission: Admin, Non-Signing Admin, Signer, Approver, Editor.
      tags:
        - Off exchanges
      x-rate-limit-category: write
      parameters:
        - $ref: '#/components/parameters/X-Idempotency-Key'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RemoveCollateralRequestBody'
      responses:
        '200':
          description: A transaction object
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreateTransactionResponse'
        default:
          $ref: '#/components/responses/Error'
      operationId: removeOffExchange
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<CreateTransactionResponse>> = fireblocks.offExchanges.removeOffExchange(offExchangesApiRemoveOffExchangeRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<CreateTransactionResponse>> response = fireblocks.offExchanges().removeOffExchange(removeCollateralRequestBody, idempotencyKey);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.off_exchanges.remove_off_exchange(remove_collateral_request_body, idempotency_key);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<CreateTransactionResponse>> = fireblocks.offExchanges.removeOffExchange(offExchangesApiRemoveOffExchangeRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<CreateTransactionResponse>> response = fireblocks.offExchanges().removeOffExchange(removeCollateralRequestBody, idempotencyKey);
        - lang: Python
          source: response = fireblocks.off_exchanges.remove_off_exchange(remove_collateral_request_body, idempotency_key);
  /off_exchange/settlements/trader:
    post:
      summary: Create Settlement for a Trader
      description: |-
        Create settlement for a trader.
        Learn more about Fireblocks Off Exchange in the following [guide](https://developers.fireblocks.com/docs/off-exchange).
        Endpoint Permission: Admin, Non-Signing Admin, Signer, Approver, Editor.
      tags:
        - Off exchanges
      x-rate-limit-category: write
      parameters:
        - $ref: '#/components/parameters/X-Idempotency-Key'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SettlementRequestBody'
      responses:
        '201':
          description: A settlement object
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SettlementResponse'
        default:
          $ref: '#/components/responses/Error'
      operationId: settleOffExchangeTrades
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<SettlementResponse>> = fireblocks.offExchanges.settleOffExchangeTrades(offExchangesApiSettleOffExchangeTradesRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<SettlementResponse>> response = fireblocks.offExchanges().settleOffExchangeTrades(settlementRequestBody, idempotencyKey);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.off_exchanges.settle_off_exchange_trades(settlement_request_body, idempotency_key);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<SettlementResponse>> = fireblocks.offExchanges.settleOffExchangeTrades(offExchangesApiSettleOffExchangeTradesRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<SettlementResponse>> response = fireblocks.offExchanges().settleOffExchangeTrades(settlementRequestBody, idempotencyKey);
        - lang: Python
          source: response = fireblocks.off_exchanges.settle_off_exchange_trades(settlement_request_body, idempotency_key);
  /off_exchange/settlements/transactions:
    get:
      summary: Get Settlements Transactions
      description: |-
        Get settlements transactions from exchange.
        Learn more about Fireblocks Off Exchange in the following [guide](https://developers.fireblocks.com/docs/off-exchange).
        Endpoint Permission: Admin, Non-Signing Admin, Signer, Approver, Editor.
      tags:
        - Off exchanges
      x-rate-limit-category: query
      parameters:
        - in: query
          name: mainExchangeAccountId
          required: true
          schema:
            type: string
      responses:
        '200':
          description: A settlement transactions
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExchangeSettlementTransactionsResponse'
        default:
          $ref: '#/components/responses/Error'
      operationId: getOffExchangeSettlementTransactions
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<GetSettlementResponse>> = fireblocks.offExchanges.getOffExchangeSettlementTransactions(offExchangesApiGetOffExchangeSettlementTransactionsRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<GetSettlementResponse>> response = fireblocks.offExchanges().getOffExchangeSettlementTransactions(mainExchangeAccountId);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.off_exchanges.get_off_exchange_settlement_transactions(main_exchange_account_id);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<GetSettlementResponse>> = fireblocks.offExchanges.getOffExchangeSettlementTransactions(offExchangesApiGetOffExchangeSettlementTransactionsRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<GetSettlementResponse>> response = fireblocks.offExchanges().getOffExchangeSettlementTransactions(mainExchangeAccountId);
        - lang: Python
          source: response = fireblocks.off_exchanges.get_off_exchange_settlement_transactions(main_exchange_account_id);
  /onchain_data/base_asset_id/{baseAssetId}/access_registry_address/{accessRegistryAddress}/list:
    get:
      operationId: getAccessRegistryCurrentState
      summary: Get the current state of addresses in an access registry
      x-rate-limit-category: read
      description: Returns the current state of addresses in the specified access registry. Only addresses that are currently active (added but not removed) are included.
      parameters:
        - $ref: '#/components/parameters/BaseAssetId'
        - $ref: '#/components/parameters/AccessRegistryAddress'
        - $ref: '#/components/parameters/PageCursor'
        - $ref: '#/components/parameters/PageSize'
        - $ref: '#/components/parameters/ListAccessRegistrySortBy'
        - $ref: '#/components/parameters/Order'
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<AccessRegistryCurrentStateResponse>> = fireblocks.onchainData.getAccessRegistryCurrentState(onchainDataApiGetAccessRegistryCurrentStateRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<AccessRegistryCurrentStateResponse>> response = fireblocks.onchainData().getAccessRegistryCurrentState(baseAssetId, accessRegistryAddress, pageCursor, pageSize, sortBy, order);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.onchain_data.get_access_registry_current_state(base_asset_id, access_registry_address, page_cursor, page_size, sort_by, order);
            name: Fireblocks SDK Python example
      responses:
        '200':
          description: Access registry current state retrieved successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AccessRegistryCurrentStateResponse-2'
        default:
          $ref: '#/components/responses/Error'
      tags:
        - Onchain Data
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<AccessRegistryCurrentStateResponse>> = fireblocks.onchainData.getAccessRegistryCurrentState(onchainDataApiGetAccessRegistryCurrentStateRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<AccessRegistryCurrentStateResponse>> response = fireblocks.onchainData().getAccessRegistryCurrentState(baseAssetId, accessRegistryAddress, pageCursor, pageSize, sortBy, order);
        - lang: Python
          source: response = fireblocks.onchain_data.get_access_registry_current_state(base_asset_id, access_registry_address, page_cursor, page_size, sort_by, order);
  /onchain_data/base_asset_id/{baseAssetId}/access_registry_address/{accessRegistryAddress}/summary:
    get:
      operationId: getAccessRegistrySummary
      summary: Summary of access registry state
      x-rate-limit-category: read
      description: Returns a summary of the current state of the access registry for the specified baseAssetId and accessRegistryAddress.
      parameters:
        - $ref: '#/components/parameters/BaseAssetId'
        - $ref: '#/components/parameters/AccessRegistryAddress'
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<AccessRegistrySummaryResponse>> = fireblocks.onchainData.getAccessRegistrySummary(onchainDataApiGetAccessRegistrySummaryRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<AccessRegistrySummaryResponse>> response = fireblocks.onchainData().getAccessRegistrySummary(baseAssetId, accessRegistryAddress);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.onchain_data.get_access_registry_summary(base_asset_id, access_registry_address);
            name: Fireblocks SDK Python example
      responses:
        '200':
          description: Successfully retrieved the summary of the access registry state
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AccessRegistrySummaryResponse'
        default:
          $ref: '#/components/responses/Error'
      tags:
        - Onchain Data
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<AccessRegistrySummaryResponse>> = fireblocks.onchainData.getAccessRegistrySummary(onchainDataApiGetAccessRegistrySummaryRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<AccessRegistrySummaryResponse>> response = fireblocks.onchainData().getAccessRegistrySummary(baseAssetId, accessRegistryAddress);
        - lang: Python
          source: response = fireblocks.onchain_data.get_access_registry_summary(base_asset_id, access_registry_address);
  /onchain_data/base_asset_id/{baseAssetId}/contract_address/{contractAddress}/account_address/{accountAddress}/balance_history:
    get:
      operationId: getContractBalanceHistory
      summary: Get historical balance data for a specific account in a contract
      x-rate-limit-category: read
      description: Returns the paginated balance history of the specified account in a contract with optional date range and interval filtering.
      parameters:
        - $ref: '#/components/parameters/BaseAssetId'
        - $ref: '#/components/parameters/ContractAddress'
        - $ref: '#/components/parameters/AccountAddress'
        - $ref: '#/components/parameters/StartDate'
        - $ref: '#/components/parameters/EndDate'
        - $ref: '#/components/parameters/Interval'
        - $ref: '#/components/parameters/PageCursor'
        - $ref: '#/components/parameters/PageSize'
        - $ref: '#/components/parameters/SortByTimestamp'
        - $ref: '#/components/parameters/Order'
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<BalanceHistoryPagedResponse>> = fireblocks.onchainData.getContractBalanceHistory(onchainDataApiGetContractBalanceHistoryRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<BalanceHistoryPagedResponse>> response = fireblocks.onchainData().getContractBalanceHistory(baseAssetId, contractAddress, accountAddress, startDate, endDate, interval, pageCursor, pageSize, sortBy, order);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.onchain_data.get_contract_balance_history(base_asset_id, contract_address, account_address, start_date, end_date, interval, page_cursor, page_size, sort_by, order);
            name: Fireblocks SDK Python example
      responses:
        '200':
          description: Successfully retrieved the contract balance history
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BalanceHistoryPagedResponse-2'
        default:
          $ref: '#/components/responses/Error'
      tags:
        - Onchain Data
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<BalanceHistoryPagedResponse>> = fireblocks.onchainData.getContractBalanceHistory(onchainDataApiGetContractBalanceHistoryRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<BalanceHistoryPagedResponse>> response = fireblocks.onchainData().getContractBalanceHistory(baseAssetId, contractAddress, accountAddress, startDate, endDate, interval, pageCursor, pageSize, sortBy, order);
        - lang: Python
          source: response = fireblocks.onchain_data.get_contract_balance_history(base_asset_id, contract_address, account_address, start_date, end_date, interval, page_cursor, page_size, sort_by, order);
  /onchain_data/base_asset_id/{baseAssetId}/contract_address/{contractAddress}/balances:
    get:
      operationId: getLatestBalancesForContract
      summary: Get latest balances for all addresses holding tokens from a contract
      x-rate-limit-category: read
      description: Returns the latest balance for each unique address with support for numeric balance sorting. The `prev` cursor is reserved for future support.
      parameters:
        - $ref: '#/components/parameters/BaseAssetId'
        - $ref: '#/components/parameters/ContractAddress'
        - $ref: '#/components/parameters/AccountAddressQuery'
        - $ref: '#/components/parameters/PageCursor'
        - $ref: '#/components/parameters/PageSize'
        - $ref: '#/components/parameters/BalancesSortBy'
        - $ref: '#/components/parameters/Order'
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<AddressBalancePagedResponse>> = fireblocks.onchainData.getLatestBalancesForContract(onchainDataApiGetLatestBalancesForContractRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<AddressBalancePagedResponse>> response = fireblocks.onchainData().getLatestBalancesForContract(baseAssetId, contractAddress, accountAddress, pageCursor, pageSize, sortBy, order);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.onchain_data.get_latest_balances_for_contract(base_asset_id, contract_address, account_address, page_cursor, page_size, sort_by, order);
            name: Fireblocks SDK Python example
      responses:
        '200':
          description: Successfully retrieved the latest balances for the contract
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AddressBalancePagedResponse-2'
        default:
          $ref: '#/components/responses/Error'
      tags:
        - Onchain Data
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<AddressBalancePagedResponse>> = fireblocks.onchainData.getLatestBalancesForContract(onchainDataApiGetLatestBalancesForContractRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<AddressBalancePagedResponse>> response = fireblocks.onchainData().getLatestBalancesForContract(baseAssetId, contractAddress, accountAddress, pageCursor, pageSize, sortBy, order);
        - lang: Python
          source: response = fireblocks.onchain_data.get_latest_balances_for_contract(base_asset_id, contract_address, account_address, page_cursor, page_size, sort_by, order);
  /onchain_data/base_asset_id/{baseAssetId}/contract_address/{contractAddress}/roles:
    get:
      operationId: getActiveRolesForContract
      summary: List of active roles for a given contract address and base asset ID
      x-rate-limit-category: read
      description: Returns a list of currently active roles for the specified baseAssetId and contractAddress.
      parameters:
        - $ref: '#/components/parameters/BaseAssetId'
        - $ref: '#/components/parameters/ContractAddress'
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<ActiveRolesResponse>> = fireblocks.onchainData.getActiveRolesForContract(onchainDataApiGetActiveRolesForContractRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<ActiveRolesResponse>> response = fireblocks.onchainData().getActiveRolesForContract(baseAssetId, contractAddress);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.onchain_data.get_active_roles_for_contract(base_asset_id, contract_address);
            name: Fireblocks SDK Python example
      responses:
        '200':
          description: Successfully retrieved the list of active roles
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ActiveRolesResponse-2'
        default:
          $ref: '#/components/responses/Error'
      tags:
        - Onchain Data
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<ActiveRolesResponse>> = fireblocks.onchainData.getActiveRolesForContract(onchainDataApiGetActiveRolesForContractRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<ActiveRolesResponse>> response = fireblocks.onchainData().getActiveRolesForContract(baseAssetId, contractAddress);
        - lang: Python
          source: response = fireblocks.onchain_data.get_active_roles_for_contract(base_asset_id, contract_address);
  /onchain_data/base_asset_id/{baseAssetId}/contract_address/{contractAddress}/summary:
    get:
      operationId: getContractBalancesSummary
      summary: Get summary for the token contract
      x-rate-limit-category: read
      description: Returns the total number of unique addresses holding balances and the total supply for the specified contract.
      parameters:
        - $ref: '#/components/parameters/BaseAssetId'
        - $ref: '#/components/parameters/ContractAddress'
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<TokenContractSummaryResponse>> = fireblocks.onchainData.getContractBalancesSummary(onchainDataApiGetContractBalancesSummaryRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<TokenContractSummaryResponse>> response = fireblocks.onchainData().getContractBalancesSummary(baseAssetId, contractAddress);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.onchain_data.get_contract_balances_summary(base_asset_id, contract_address);
            name: Fireblocks SDK Python example
      responses:
        '200':
          description: Successfully retrieved the summary for the token contract
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TokenContractSummaryResponse'
        default:
          $ref: '#/components/responses/Error'
      tags:
        - Onchain Data
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<TokenContractSummaryResponse>> = fireblocks.onchainData.getContractBalancesSummary(onchainDataApiGetContractBalancesSummaryRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<TokenContractSummaryResponse>> response = fireblocks.onchainData().getContractBalancesSummary(baseAssetId, contractAddress);
        - lang: Python
          source: response = fireblocks.onchain_data.get_contract_balances_summary(base_asset_id, contract_address);
  /onchain_data/base_asset_id/{baseAssetId}/contract_address/{contractAddress}/total_supply:
    get:
      operationId: getContractTotalSupply
      summary: Get historical total supply data for a contract
      x-rate-limit-category: read
      description: Returns the paginated total supply history of the specified contract with optional date range and interval filtering.
      parameters:
        - $ref: '#/components/parameters/BaseAssetId'
        - $ref: '#/components/parameters/ContractAddress'
        - $ref: '#/components/parameters/StartDate'
        - $ref: '#/components/parameters/EndDate'
        - $ref: '#/components/parameters/Interval'
        - $ref: '#/components/parameters/PageCursor'
        - $ref: '#/components/parameters/PageSize'
        - $ref: '#/components/parameters/SortByTimestamp'
        - $ref: '#/components/parameters/Order'
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<TotalSupplyPagedResponse>> = fireblocks.onchainData.getContractTotalSupply(onchainDataApiGetContractTotalSupplyRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<TotalSupplyPagedResponse>> response = fireblocks.onchainData().getContractTotalSupply(baseAssetId, contractAddress, startDate, endDate, interval, pageCursor, pageSize, sortBy, order);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.onchain_data.get_contract_total_supply(base_asset_id, contract_address, start_date, end_date, interval, page_cursor, page_size, sort_by, order);
            name: Fireblocks SDK Python example
      responses:
        '200':
          description: Successfully retrieved the contract total supply history
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TotalSupplyPagedResponse-2'
        default:
          $ref: '#/components/responses/Error'
      tags:
        - Onchain Data
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<TotalSupplyPagedResponse>> = fireblocks.onchainData.getContractTotalSupply(onchainDataApiGetContractTotalSupplyRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<TotalSupplyPagedResponse>> response = fireblocks.onchainData().getContractTotalSupply(baseAssetId, contractAddress, startDate, endDate, interval, pageCursor, pageSize, sortBy, order);
        - lang: Python
          source: response = fireblocks.onchain_data.get_contract_total_supply(base_asset_id, contract_address, start_date, end_date, interval, page_cursor, page_size, sort_by, order);
  /onchain_data/base_asset_id/{baseAssetId}/contract_address/{contractAddress}/transactions:
    get:
      operationId: getOnchainTransactions
      summary: Fetch onchain transactions for a contract
      x-rate-limit-category: read
      description: Returns a paginated list of onchain transactions for the specified contract address and base asset ID, optionally filtered by date range.
      parameters:
        - $ref: '#/components/parameters/BaseAssetId'
        - $ref: '#/components/parameters/ContractAddress'
        - $ref: '#/components/parameters/StartDate'
        - $ref: '#/components/parameters/EndDate'
        - $ref: '#/components/parameters/PageCursor'
        - $ref: '#/components/parameters/PageSize'
        - $ref: '#/components/parameters/TransactionsSortBy'
        - $ref: '#/components/parameters/Order'
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<OnchainTransactionsPagedResponse>> = fireblocks.onchainData.getOnchainTransactions(onchainDataApiGetOnchainTransactionsRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<OnchainTransactionsPagedResponse>> response = fireblocks.onchainData().getOnchainTransactions(baseAssetId, contractAddress, startDate, endDate, pageCursor, pageSize, sortBy, order);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.onchain_data.get_onchain_transactions(base_asset_id, contract_address, start_date, end_date, page_cursor, page_size, sort_by, order);
            name: Fireblocks SDK Python example
      responses:
        '200':
          description: Onchain transactions fetched successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OnchainTransactionsPagedResponse-2'
        default:
          $ref: '#/components/responses/Error'
      tags:
        - Onchain Data
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<OnchainTransactionsPagedResponse>> = fireblocks.onchainData.getOnchainTransactions(onchainDataApiGetOnchainTransactionsRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<OnchainTransactionsPagedResponse>> response = fireblocks.onchainData().getOnchainTransactions(baseAssetId, contractAddress, startDate, endDate, pageCursor, pageSize, sortBy, order);
        - lang: Python
          source: response = fireblocks.onchain_data.get_onchain_transactions(base_asset_id, contract_address, start_date, end_date, page_cursor, page_size, sort_by, order);
  /management/ota:
    put:
      operationId: setOtaStatus
      summary: Enable or disable transactions to OTA
      description: |-
        Enable or disable transactions to One Time Addresses (Non Whitelisted addresses).
        Learn more about [One Time Addresses](https://support.fireblocks.io/hc/en-us/articles/4409104568338-One-Time-Address-OTA-feature)
      parameters:
        - $ref: '#/components/parameters/X-Idempotency-Key'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SetOtaStatusRequest'
      responses:
        '202':
          description: Successfully updated OTA status
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SetOtaStatusResponse'
        '400':
          description: Bad request
        '409':
          description: Similar request already pending
        '500':
          description: Internal server error
      tags:
        - OTA (Beta)
      x-rate-limit-category: query
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<SetOtaStatusResponse>> = fireblocks.oTABeta.setOtaStatus(oTABetaApiSetOtaStatusRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<SetOtaStatusResponse>> response = fireblocks.oTABeta().setOtaStatus(setOtaStatusRequest, idempotencyKey);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.o_t_a_beta.set_ota_status(set_ota_status_request, idempotency_key);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<SetOtaStatusResponse>> = fireblocks.oTABeta.setOtaStatus(oTABetaApiSetOtaStatusRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<SetOtaStatusResponse>> response = fireblocks.oTABeta().setOtaStatus(setOtaStatusRequest, idempotencyKey);
        - lang: Python
          source: response = fireblocks.o_t_a_beta.set_ota_status(set_ota_status_request, idempotency_key);
    get:
      operationId: getOtaStatus
      summary: Returns current OTA status
      description: Returns current OTA status
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetOtaStatusResponse'
          description: Current OTA status
        '404':
          description: Configuration not found for tenant
      tags:
        - OTA (Beta)
      x-rate-limit-category: write
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<GetOtaStatusResponse>> = fireblocks.oTABeta.getOtaStatus();'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<GetOtaStatusResponse>> response = fireblocks.oTABeta().getOtaStatus();
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.o_t_a_beta.get_ota_status();
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<GetOtaStatusResponse>> = fireblocks.oTABeta.getOtaStatus();'
        - lang: Java
          source: CompletableFuture<ApiResponse<GetOtaStatusResponse>> response = fireblocks.oTABeta().getOtaStatus();
        - lang: Python
          source: response = fireblocks.o_t_a_beta.get_ota_status();
  /payments/workflow_config:
    post:
      x-internal: true
      x-rate-limit-category: write
      tags:
        - Payments - Flows
      description: Generate a new configuration ID to be used for initiating executions in subsequent phases. This configuration should include the operations you intend to incorporate into the workflow, such as TRANSFER, CONVERT, and DISBURSE, in addition to your pre-screening preferences, which are disabled by default.
      summary: Create payment flow configuration
      parameters:
        - $ref: '#/components/parameters/X-Idempotency-Key'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateWorkflowConfigurationRequest'
      responses:
        '202':
          description: Configuration is being generated
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WorkflowConfiguration'
        '401':
          description: Unauthorized. Missing / invalid JWT token in Authorization header.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '404':
          description: Not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      operationId: createFlowConfiguration
  /payments/workflow_config/{configId}:
    get:
      x-internal: true
      x-rate-limit-category: read
      tags:
        - Payments - Flows
      description: Retrieve a previously created workflow configuration using the specified "configId".
      summary: Retrieve workflow configuration
      parameters:
        - name: configId
          in: path
          schema:
            type: string
          required: true
      responses:
        '200':
          description: Returns a workflow configuration
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WorkflowConfiguration'
        '401':
          description: Unauthorized. Missing / invalid JWT token in Authorization header.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '404':
          description: Not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      operationId: getFlowConfiguration
    delete:
      x-internal: true
      x-rate-limit-category: write
      tags:
        - Payments - Flows
      description: Delete a configuration using the specified "configId".
      summary: Delete workflow configuration
      parameters:
        - name: configId
          in: path
          schema:
            type: string
          required: true
      responses:
        '200':
          description: The specified configuration has been deleted successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WorkflowConfigurationId'
        '401':
          description: Unauthorized. Missing / invalid JWT token in Authorization header.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '404':
          description: Not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      operationId: deleteFlowConfiguration
  /payments/workflow_execution:
    post:
      x-internal: true
      x-rate-limit-category: write
      tags:
        - Payments - Flows
      description: Validate the "workflow-config" previously created by utilizing the unique "configId". This step requires the mandatory field amount, and allows for modifications to other fields defined via the "workflow-config" endpoint, including pre-screening preferences. A response containing the "workflowExecutionId" and detailing the validation status will be provided. Execution is ready when the "workflow-execution" status is READY_FOR_LAUNCH, at which point it can be initiated with "POST /workflow-execution/{workflowExecutionId}/actions/execute".
      summary: Create workflow execution
      parameters:
        - $ref: '#/components/parameters/X-Idempotency-Key'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateWorkflowExecutionRequest'
      responses:
        '200':
          description: Workflow execution entity has been created successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WorkflowExecution'
        '401':
          description: Unauthorized. Missing / invalid JWT token in Authorization header.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '404':
          description: Not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      operationId: createFlowExecution
  /payments/workflow_execution/{workflowExecutionId}:
    get:
      x-internal: true
      x-rate-limit-category: read
      tags:
        - Payments - Flows
      description: Retrieve details of a previously initiated workflow execution by specifying the "workflowExecutionId"
      summary: Get workflow execution details
      parameters:
        - name: workflowExecutionId
          in: path
          schema:
            type: string
          required: true
      responses:
        '200':
          description: Returns workflow execution by id with preview info
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WorkflowExecution'
        '401':
          description: Unauthorized. Missing / invalid JWT token in Authorization header.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '404':
          description: Not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      operationId: getFlowExecution
  /payments/workflow_execution/{workflowExecutionId}/actions/execute:
    post:
      x-internal: true
      x-rate-limit-category: write
      tags:
        - Payments - Flows
      description: Launch the execution of a pre-configured workflow, identified by "workflowExecutionId", once it reaches the READY_FOR_LAUNCH state. The workflow undergoes several phases during execution - EXECUTION_IN_PROGRESS - Marks the start of the workflow execution. EXECUTION_COMPLETED or EXECUTION_FAILED - Indicates the execution has reached a final state.
      summary: Execute the payments workflow
      parameters:
        - name: workflowExecutionId
          in: path
          schema:
            type: string
          required: true
        - $ref: '#/components/parameters/X-Idempotency-Key'
      responses:
        '200':
          description: Workflow execution has been executed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WorkflowExecution'
        '401':
          description: Unauthorized. Missing / invalid JWT token in Authorization header.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '404':
          description: Not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      operationId: launchFlowExecution
  /payments/payout:
    post:
      tags:
        - Payments - Payout
      x-rate-limit-category: write
      description: |
        **Note:** The reference content in this section documents the Payments
        Engine endpoint. The Payments Engine endpoints include APIs available only
        for customers with Payments Engine enabled on their accounts.

        These endpoints are currently in beta and might be subject to
        changes.

        If you want to learn more about Fireblocks Payments Engine, please
        contact your Fireblocks Customer Success Manager or email
        CSM@fireblocks.com.

        **Create a payout instruction set.**

        A payout instruction set is a set of instructions for distributing payments
        from a single payment account to a list of payee accounts.

        The instruction set defines:

        - the payment account and its account type (vault, exchange, or fiat).
        - the account type (vault account, exchange account, whitelisted address,
          network connection, fiat account, or merchant account), the amount, and the
          asset of payment for each payee account.

        Learn more about Fireblocks Payments - Payouts in the following
        [guide](https://developers.fireblocks.com/docs/create-payouts).

        Endpoint Permission: Admin, Non-Signing Admin.
      summary: Create a payout instruction set
      parameters:
        - $ref: '#/components/parameters/X-Idempotency-Key'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreatePayoutRequest'
            example:
              paymentAccount:
                id: EX_SUB1
                type: EXCHANGE_ACCOUNT
              instructionSet:
                - payeeAccount:
                    id: bef85a1c-b605-4b2e-bdb5-2d400f4d0bf3
                    type: EXTERNAL_WALLET
                  amount:
                    amount: '43'
                    assetId: USDC
                - payeeAccount:
                    id: 3adc1f92-e791-44a8-9aee-7f31c2108b78
                    type: NETWORK_CONNECTION
                  amount:
                    amount: '4423'
                    assetId: USDC
      responses:
        '200':
          description: The payout instruction set creation succeeded and returns the generated instruction set with a unique payout IDThe payout ID will be used for executing the payout and checking the payout status.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PayoutResponse'
              example:
                payoutId: 1fe3b61f-7e1f-4a19-aff0-4f0a524d44d7
                paymentAccount:
                  id: EX_SUB2
                  type: EXCHANGE_ACCOUNT
                createdAt: 1645365800
                state: REQUESTED
                status: REGISTERED
                initMethod: API
                instructionSet:
                  - id: 6ea4a016-536b-49af-b1a0-40b343ccf879
                    name: payee-wallet-name
                    payeeAccount:
                      id: bef85a1c-b605-4b2e-bdb5-2d400f4d0bf3
                      type: EXTERNAL_WALLET
                    amount:
                      amount: '43'
                      assetId: USDC
                    state: NOT_STARTED
                    transactions: []
                  - id: e783a79b-6acc-4d18-885d-ed533cad8eeb
                    name: payee-by-network
                    payeeAccount:
                      id: 3adc1f92-e791-44a8-9aee-7f31c2108b78
                      type: NETWORK_CONNECTION
                    amount:
                      amount: '4423.23'
                      assetId: USDC
                    state: NOT_STARTED
                    transactions: []
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '401':
          description: Unauthorized. Missing / invalid JWT token in Authorization header.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        5XX:
          description: Internal error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      operationId: createPayout
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<PayoutResponse>> = fireblocks.paymentsPayout.createPayout(paymentsPayoutApiCreatePayoutRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<PayoutResponse>> response = fireblocks.paymentsPayout().createPayout(createPayoutRequest, idempotencyKey);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.payments_payout.create_payout(create_payout_request, idempotency_key);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<PayoutResponse>> = fireblocks.paymentsPayout.createPayout(paymentsPayoutApiCreatePayoutRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<PayoutResponse>> response = fireblocks.paymentsPayout().createPayout(createPayoutRequest, idempotencyKey);
        - lang: Python
          source: response = fireblocks.payments_payout.create_payout(create_payout_request, idempotency_key);
  /payments/payout/{payoutId}:
    get:
      tags:
        - Payments - Payout
      x-rate-limit-category: query
      summary: Get the status of a payout instruction set
      description: |
        **Note:** The reference content in this section documents the Payments Engine endpoint. The Payments Engine endpoints include APIs available only for customers with Payments Engine enabled on their accounts. 
        These endpoints are currently in beta and might be subject to changes.
        If you want to learn more about Fireblocks Payments Engine, please contact your Fireblocks Customer Success Manager or email CSM@fireblocks.com. 
        Endpoint Permission: Admin, Non-Signing Admin.
      parameters:
        - name: payoutId
          description: the payout id received from the creation of the payout instruction set
          in: path
          schema:
            type: string
          required: true
          example: 1fe3b61f-7e1f-4a19-aff0-4f0a524d44d7
      responses:
        '200':
          description: Returns the current status of the payout instruction set, including the status of each payout instruction and the transactions created in the process.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PayoutResponse'
              example:
                payoutId: 1fe3b61f-7e1f-4a19-aff0-4f0a524d44d7
                paymentAccount:
                  id: EX_SUB3
                  type: EXCHANGE_ACCOUNT
                createdAt: 1645365800
                state: FINALIZED
                status: DONE
                initMethod: API
                instructionSet:
                  - id: 6ea4a016-536b-49af-b1a0-40b343ccf879
                    name: payee-wallet-name
                    payeeAccount:
                      id: bef85a1c-b605-4b2e-bdb5-2d400f4d0bf3
                      type: EXTERNAL_WALLET
                    amount:
                      amount: '4312'
                      assetId: USDC
                    state: COMPLETED
                    transactions:
                      - id: 35a4b10c-1f83-4f0b-ba2a-da0e73be2d6e
                        state: COMPLETED
                        timestamp: 1645367429
                  - id: e783a79b-6acc-4d18-885d-ed533cad8eeb
                    name: payee-by-network
                    payeeAccount:
                      id: 3adc1f92-e791-44a8-9aee-7f31c2108b78
                      type: NETWORK_CONNECTION
                    amount:
                      amount: '4423.23'
                      assetId: USDC
                    state: COMPLETED
                    transactions:
                      - id: 4505e7d9-bfc7-41bc-9750-54311fcbbf26
                        state: COMPLETED
                        timestamp: 1645367449
                reportUrl: https://some-url.com/reports/cc5777c1-75a9-4337-aebd-f1f5a40a9391
        '401':
          description: Unauthorized. Missing / invalid JWT token in Authorization header.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '404':
          description: No payout with the given payout ID exists.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        5XX:
          description: Internal error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      operationId: getPayout
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<PayoutResponse>> = fireblocks.paymentsPayout.getPayout(paymentsPayoutApiGetPayoutRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<PayoutResponse>> response = fireblocks.paymentsPayout().getPayout(payoutId);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.payments_payout.get_payout(payout_id);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<PayoutResponse>> = fireblocks.paymentsPayout.getPayout(paymentsPayoutApiGetPayoutRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<PayoutResponse>> response = fireblocks.paymentsPayout().getPayout(payoutId);
        - lang: Python
          source: response = fireblocks.payments_payout.get_payout(payout_id);
  /payments/payout/{payoutId}/actions/execute:
    post:
      tags:
        - Payments - Payout
      x-rate-limit-category: write
      summary: Execute a payout instruction set
      description: |
        **Note:** The reference content in this section documents the Payments
        Engine endpoint. The Payments Engine endpoints include APIs available only
        for customers with Payments Engine enabled on their accounts.

        These endpoints are currently in beta and might be subject to
        changes.

        If you want to learn more about Fireblocks Payments Engine, please
        contact your Fireblocks Customer Success Manager or email
        CSM@fireblocks.com.

        **Execute a payout instruction set.**

        The instruction set will be verified and executed.

        **Source locking**

        If you are executing a payout instruction set from a payment account with an
        already active payout the active payout will complete before the new payout
        instruction set can be executed.

        You cannot execute the same payout instruction set more than once.
      parameters:
        - name: payoutId
          description: the payout id received from the creation of the payout instruction set
          in: path
          schema:
            type: string
          required: true
          example: 1fe3b61f-7e1f-4a19-aff0-4f0a524d44d7
        - $ref: '#/components/parameters/X-Idempotency-Key'
      responses:
        '200':
          description: Executed the payout instruction set
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DispatchPayoutResponse'
              example:
                payoutId: 1fe3b61f-7e1f-4a19-aff0-4f0a524d44d7
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '401':
          description: Unauthorized. Missing / invalid JWT token in Authorization header.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        5XX:
          description: Internal error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      operationId: executePayoutAction
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<DispatchPayoutResponse>> = fireblocks.paymentsPayout.executePayoutAction(paymentsPayoutApiExecutePayoutActionRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<DispatchPayoutResponse>> response = fireblocks.paymentsPayout().executePayoutAction(payoutId, idempotencyKey);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.payments_payout.execute_payout_action(payout_id, idempotency_key);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<DispatchPayoutResponse>> = fireblocks.paymentsPayout.executePayoutAction(paymentsPayoutApiExecutePayoutActionRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<DispatchPayoutResponse>> response = fireblocks.paymentsPayout().executePayoutAction(payoutId, idempotencyKey);
        - lang: Python
          source: response = fireblocks.payments_payout.execute_payout_action(payout_id, idempotency_key);
  /tap/active_policy:
    get:
      operationId: getActivePolicyLegacy
      summary: Get the active policy and its validation
      description: |
        Legacy Endpoint – Returns the active policy and its validation. 
        **Note:** 
        - This endpoint will remain available for the foreseeable future and is not deprecated. - The `getActivePolicy` endpoint under policy/paths provides policy type-specific operations and improved functionality. - These endpoints are currently in beta and might be subject to changes.
        If you want to participate and learn more about the Fireblocks TAP, please contact your Fireblocks Customer Success Manager or send an email to CSM@fireblocks.com.
      tags:
        - Policy Editor (Beta)
      x-rate-limit-category: query
      x-readme:
        code-samples:
          - language: python
            code: policy = fireblocks.get_active_policy()
            name: Fireblocks SDK Python example (Legacy)
          - language: javascript
            code: const policy = await fireblocks.getActivePolicy();
            name: Fireblocks SDK Javascript example
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<LegacyPolicyAndValidationResponse>> = fireblocks.policyEditorBeta.getActivePolicyLegacy();'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<LegacyPolicyAndValidationResponse>> response = fireblocks.policyEditorBeta().getActivePolicyLegacy();
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.policy_editor_beta.get_active_policy_legacy();
            name: Fireblocks SDK Python example
      responses:
        '200':
          description: A policy object
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LegacyPolicyAndValidationResponse'
        default:
          $ref: '#/components/responses/Error'
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<LegacyPolicyAndValidationResponse>> = fireblocks.policyEditorBeta.getActivePolicyLegacy();'
        - lang: Java
          source: CompletableFuture<ApiResponse<LegacyPolicyAndValidationResponse>> response = fireblocks.policyEditorBeta().getActivePolicyLegacy();
        - lang: Python
          source: response = fireblocks.policy_editor_beta.get_active_policy_legacy();
  /tap/draft:
    get:
      operationId: getDraftLegacy
      summary: Get the active draft
      description: |
        Legacy Endpoint – Returns the active draft and its validation. 
        **Note:** 
        - This endpoint will remain available for the foreseeable future and is not deprecated. - The `getDraft` endpoint under policy/paths provides policy type-specific operations and improved functionality. - These endpoints are currently in beta and might be subject to changes.
        If you want to participate and learn more about the Fireblocks TAP, please contact your Fireblocks Customer Success Manager or send an email to CSM@fireblocks.com.
      tags:
        - Policy Editor (Beta)
      x-rate-limit-category: read
      x-readme:
        code-samples:
          - language: python
            code: policy = fireblocks.get_draft()
            name: Fireblocks SDK Python example (Legacy)
          - language: javascript
            code: const policy = await fireblocks.getDraft();
            name: Fireblocks SDK Javascript example
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<LegacyDraftReviewAndValidationResponse>> = fireblocks.policyEditorBeta.getDraftLegacy();'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<LegacyDraftReviewAndValidationResponse>> response = fireblocks.policyEditorBeta().getDraftLegacy();
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.policy_editor_beta.get_draft_legacy();
            name: Fireblocks SDK Python example
      responses:
        '200':
          description: A draft validation response object
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LegacyDraftReviewAndValidationResponse'
        default:
          $ref: '#/components/responses/Error'
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<LegacyDraftReviewAndValidationResponse>> = fireblocks.policyEditorBeta.getDraftLegacy();'
        - lang: Java
          source: CompletableFuture<ApiResponse<LegacyDraftReviewAndValidationResponse>> response = fireblocks.policyEditorBeta().getDraftLegacy();
        - lang: Python
          source: response = fireblocks.policy_editor_beta.get_draft_legacy();
    put:
      operationId: updateDraftLegacy
      summary: Update the draft with a new set of rules
      description: |
        Legacy Endpoint – Update the draft and return its validation. 
        **Note:** 
        - This endpoint will remain available for the foreseeable future and is not deprecated. - The `updateDraft` endpoint under policy/paths provides policy type-specific operations and improved functionality. - These endpoints are currently in beta and might be subject to changes.
        If you want to participate and learn more about the Fireblocks TAP, please contact your Fireblocks Customer Success Manager or send an email to CSM@fireblocks.com.
      tags:
        - Policy Editor (Beta)
      x-rate-limit-category: write
      parameters:
        - $ref: '#/components/parameters/X-Idempotency-Key'
      x-readme:
        code-samples:
          - language: python
            code: policy = fireblocks.update_draft()
            name: Fireblocks SDK Python example (Legacy)
          - language: javascript
            code: const policy = await fireblocks.updateDraft();
            name: Fireblocks SDK Javascript example
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<LegacyDraftReviewAndValidationResponse>> = fireblocks.policyEditorBeta.updateDraftLegacy(policyEditorBetaApiUpdateDraftLegacyRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<LegacyDraftReviewAndValidationResponse>> response = fireblocks.policyEditorBeta().updateDraftLegacy(legacyPolicyRules, idempotencyKey);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.policy_editor_beta.update_draft_legacy(legacy_policy_rules, idempotency_key);
            name: Fireblocks SDK Python example
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/LegacyPolicyRules'
      responses:
        '200':
          description: A draft validation response object
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LegacyDraftReviewAndValidationResponse'
        default:
          $ref: '#/components/responses/Error'
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<LegacyDraftReviewAndValidationResponse>> = fireblocks.policyEditorBeta.updateDraftLegacy(policyEditorBetaApiUpdateDraftLegacyRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<LegacyDraftReviewAndValidationResponse>> response = fireblocks.policyEditorBeta().updateDraftLegacy(legacyPolicyRules, idempotencyKey);
        - lang: Python
          source: response = fireblocks.policy_editor_beta.update_draft_legacy(legacy_policy_rules, idempotency_key);
    post:
      operationId: publishDraftLegacy
      summary: Send publish request for a certain draft id
      description: |
        Legacy Endpoint – Send publish request of certain draft id and returns the response. 
        **Note:** 
        - This endpoint will remain available for the foreseeable future and is not deprecated. - The `publishDraft` endpoint under policy/paths provides improved functionality and better performance. - These endpoints are currently in beta and might be subject to changes.
        If you want to participate and learn more about the Fireblocks TAP, please contact your Fireblocks Customer Success Manager or send an email to CSM@fireblocks.com.
      tags:
        - Policy Editor (Beta)
      x-rate-limit-category: write
      x-readme:
        code-samples:
          - language: python
            code: policy = fireblocks.publish_draft()
            name: Fireblocks SDK Python example (Legacy)
          - language: javascript
            code: const policy = await fireblocks.publishDraft();
            name: Fireblocks SDK Javascript example
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<LegacyPublishResult>> = fireblocks.policyEditorBeta.publishDraftLegacy(policyEditorBetaApiPublishDraftLegacyRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<LegacyPublishResult>> response = fireblocks.policyEditorBeta().publishDraftLegacy(legacyPublishDraftRequest, idempotencyKey);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.policy_editor_beta.publish_draft_legacy(legacy_publish_draft_request, idempotency_key);
            name: Fireblocks SDK Python example
      parameters:
        - $ref: '#/components/parameters/X-Idempotency-Key'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/LegacyPublishDraftRequest'
      responses:
        '201':
          description: A policy publish result object
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LegacyPublishResult'
        default:
          $ref: '#/components/responses/Error'
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<LegacyPublishResult>> = fireblocks.policyEditorBeta.publishDraftLegacy(policyEditorBetaApiPublishDraftLegacyRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<LegacyPublishResult>> response = fireblocks.policyEditorBeta().publishDraftLegacy(legacyPublishDraftRequest, idempotencyKey);
        - lang: Python
          source: response = fireblocks.policy_editor_beta.publish_draft_legacy(legacy_publish_draft_request, idempotency_key);
  /tap/publish:
    post:
      operationId: publishPolicyRules
      summary: Send publish request for a set of policy rules
      description: |
        Send publish request of set of policy rules and returns the response. 
        **Note:** These endpoints are currently in beta and might be subject to changes.
        If you want to participate and learn more about the Fireblocks TAP, please contact your Fireblocks Customer Success Manager or send an email to CSM@fireblocks.com.
      tags:
        - Policy Editor (Beta)
      x-rate-limit-category: write
      x-readme:
        code-samples:
          - language: python
            code: policy = fireblocks.publish_rules()
            name: Fireblocks SDK Python example (Legacy)
          - language: javascript
            code: const policy = await fireblocks.publishRules();
            name: Fireblocks SDK Javascript example
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<LegacyPublishResult>> = fireblocks.policyEditorBeta.publishPolicyRules(policyEditorBetaApiPublishPolicyRulesRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<LegacyPublishResult>> response = fireblocks.policyEditorBeta().publishPolicyRules(legacyPolicyRules, idempotencyKey);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.policy_editor_beta.publish_policy_rules(legacy_policy_rules, idempotency_key);
            name: Fireblocks SDK Python example
      parameters:
        - $ref: '#/components/parameters/X-Idempotency-Key'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/LegacyPolicyRules'
      responses:
        '201':
          description: A policy publish result object
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LegacyPublishResult'
        default:
          $ref: '#/components/responses/Error'
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<LegacyPublishResult>> = fireblocks.policyEditorBeta.publishPolicyRules(policyEditorBetaApiPublishPolicyRulesRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<LegacyPublishResult>> response = fireblocks.policyEditorBeta().publishPolicyRules(legacyPolicyRules, idempotencyKey);
        - lang: Python
          source: response = fireblocks.policy_editor_beta.publish_policy_rules(legacy_policy_rules, idempotency_key);
  /policy/active_policy:
    get:
      operationId: getActivePolicy
      summary: Get the active policy and its validation by policy type
      description: |
        Returns the active policy and its validation for a specific policy type.

        Endpoint Permissions: Owner, Admin, Non-Signing Admin.
      tags:
        - Policy Editor V2
      x-rate-limit-category: query
      parameters:
        - name: policyType
          in: query
          required: true
          description: The policy type(s) to retrieve. Can be a single type or multiple types by repeating the parameter (e.g., ?policyType=TRANSFER&policyType=MINT).
          schema:
            $ref: '#/components/schemas/PolicyType'
      x-readme:
        code-samples:
          - language: javascript
            code: |
              // Single policy type
              const policy = await fireblocks.getActivePolicy({policyType: "TRANSFER"});
              // Multiple policy types
              const policy = await fireblocks.getActivePolicy({policyType: ["TRANSFER", "MINT"]});
            name: Fireblocks SDK Javascript example
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<PolicyAndValidationResponse>> = fireblocks.policyEditorV2.getActivePolicy(policyEditorV2ApiGetActivePolicyRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<PolicyAndValidationResponse>> response = fireblocks.policyEditorV2().getActivePolicy(policyType);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.policy_editor_v2.get_active_policy(policy_type);
            name: Fireblocks SDK Python example
      responses:
        '200':
          description: A policy object with validation
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PolicyAndValidationResponse'
        default:
          $ref: '#/components/responses/Error'
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<PolicyAndValidationResponse>> = fireblocks.policyEditorV2.getActivePolicy(policyEditorV2ApiGetActivePolicyRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<PolicyAndValidationResponse>> response = fireblocks.policyEditorV2().getActivePolicy(policyType);
        - lang: Python
          source: response = fireblocks.policy_editor_v2.get_active_policy(policy_type);
  /policy/draft:
    get:
      operationId: getDraft
      summary: Get the active draft by policy type
      description: Returns the active draft and its validation for a specific policy type.
      tags:
        - Policy Editor V2
      x-rate-limit-category: read
      parameters:
        - name: policyType
          in: query
          required: true
          description: The policy type(s) to retrieve. Can be a single type or multiple types by repeating the parameter (e.g., ?policyType=TRANSFER&policyType=MINT).
          schema:
            $ref: '#/components/schemas/PolicyType'
      x-readme:
        code-samples:
          - language: javascript
            code: |
              // Single policy type
              const draft = await fireblocks.getDraft({policyType: "TRANSFER"});
              // Multiple policy types
              const draft = await fireblocks.getDraft({policyType: ["TRANSFER", "MINT"]});
            name: Fireblocks SDK Javascript example
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<DraftReviewAndValidationResponse>> = fireblocks.policyEditorV2.getDraft(policyEditorV2ApiGetDraftRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<DraftReviewAndValidationResponse>> response = fireblocks.policyEditorV2().getDraft(policyType);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.policy_editor_v2.get_draft(policy_type);
            name: Fireblocks SDK Python example
      responses:
        '200':
          description: A draft validation response object
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DraftReviewAndValidationResponse'
        default:
          $ref: '#/components/responses/Error'
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<DraftReviewAndValidationResponse>> = fireblocks.policyEditorV2.getDraft(policyEditorV2ApiGetDraftRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<DraftReviewAndValidationResponse>> response = fireblocks.policyEditorV2().getDraft(policyType);
        - lang: Python
          source: response = fireblocks.policy_editor_v2.get_draft(policy_type);
    put:
      operationId: updateDraft
      summary: Update the draft with a new set of rules by policy types
      description: |
        Update the draft and return its validation for specific policy types.

        **⚠️ IMPORTANT SECURITY NOTICE:**

        The Fireblocks Policy is a critical security guardrail. Programmatically modifying your policy via the API introduces significant security risks. As an industry best practice, Fireblocks strongly recommends manual editing accompanied by strict human oversight and approval workflows for all policy changes. Programmatic updates should only be implemented by advanced users with comprehensive, multi-layer security controls in place.
      tags:
        - Policy Editor V2
      x-rate-limit-category: write
      parameters:
        - $ref: '#/components/parameters/X-Idempotency-Key'
      x-readme:
        code-samples:
          - language: javascript
            code: |
              const draft = await fireblocks.updateDraft({policyTypes: ["TRANSFER"], rules: rules});
            name: Fireblocks SDK Javascript example
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<DraftReviewAndValidationResponse>> = fireblocks.policyEditorV2.updateDraft(policyEditorV2ApiUpdateDraftRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<DraftReviewAndValidationResponse>> response = fireblocks.policyEditorV2().updateDraft(updateDraftRequest, idempotencyKey);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.policy_editor_v2.update_draft(update_draft_request, idempotency_key);
            name: Fireblocks SDK Python example
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateDraftRequest'
      responses:
        '200':
          description: A draft validation response object
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DraftReviewAndValidationResponse'
        default:
          $ref: '#/components/responses/Error'
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<DraftReviewAndValidationResponse>> = fireblocks.policyEditorV2.updateDraft(policyEditorV2ApiUpdateDraftRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<DraftReviewAndValidationResponse>> response = fireblocks.policyEditorV2().updateDraft(updateDraftRequest, idempotencyKey);
        - lang: Python
          source: response = fireblocks.policy_editor_v2.update_draft(update_draft_request, idempotency_key);
    post:
      operationId: publishDraft
      summary: Send publish request for a certain draft id
      description: |
        Send publish request of certain draft id and returns the response.

        **⚠️ IMPORTANT SECURITY NOTICE:**

        The Fireblocks Policy is a critical security guardrail. Programmatically modifying your policy via the API introduces significant security risks. As an industry best practice, Fireblocks strongly recommends manual editing accompanied by strict human oversight and approval workflows for all policy changes. Programmatic updates should only be implemented by advanced users with comprehensive, multi-layer security controls in place.

        If you want to learn more about the Fireblocks Policy Editor, please contact your Fireblocks Customer Success Manager or send an email to CSM@fireblocks.com.
      tags:
        - Policy Editor V2
      x-rate-limit-category: write
      x-readme:
        code-samples:
          - language: javascript
            code: |
              const policy = await fireblocks.publishDraft({policyTypes: ["TRANSFER"], draftId: "draft-123"});
            name: Fireblocks SDK Javascript example
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<PublishResult>> = fireblocks.policyEditorV2.publishDraft(policyEditorV2ApiPublishDraftRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<PublishResult>> response = fireblocks.policyEditorV2().publishDraft(publishDraftRequest, idempotencyKey);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.policy_editor_v2.publish_draft(publish_draft_request, idempotency_key);
            name: Fireblocks SDK Python example
      parameters:
        - $ref: '#/components/parameters/X-Idempotency-Key'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PublishDraftRequest'
      responses:
        '201':
          description: A policy publish result object
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PublishResult'
        default:
          $ref: '#/components/responses/Error'
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<PublishResult>> = fireblocks.policyEditorV2.publishDraft(policyEditorV2ApiPublishDraftRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<PublishResult>> response = fireblocks.policyEditorV2().publishDraft(publishDraftRequest, idempotencyKey);
        - lang: Python
          source: response = fireblocks.policy_editor_v2.publish_draft(publish_draft_request, idempotency_key);
  /reports:
    post:
      operationId: createReport
      summary: Create a report
      description: |
        Creates a new asynchronous report job and returns a receipt containing the report ID.
        Poll `GET /v1/reports/{reportId}` to check status. When `status` is `COMPLETED`, the poll
        response includes a fresh pre-signed download URL in `links.downloadUrl`.

        **Note:** These endpoints are currently in beta and might be subject to changes.

        Endpoint Permission: Viewer and above.
      tags:
        - Reports (Beta)
      x-rate-limit-category: report
      parameters:
        - $ref: '#/components/parameters/X-Idempotency-Key'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateReportRequest'
      responses:
        '202':
          description: Report job accepted and queued for processing
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreateReportResponse'
        '409':
          description: A report with the same type and filters is already being processed
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ReportConflictResponse'
        default:
          $ref: '#/components/responses/Error'
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<CreateReportResponse>> = fireblocks.reportsBeta.createReport(reportsBetaApiCreateReportRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<CreateReportResponse>> response = fireblocks.reportsBeta().createReport(createReportRequest, idempotencyKey);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.reports_beta.create_report(create_report_request, idempotency_key);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<CreateReportResponse>> = fireblocks.reportsBeta.createReport(reportsBetaApiCreateReportRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<CreateReportResponse>> response = fireblocks.reportsBeta().createReport(createReportRequest, idempotencyKey);
        - lang: Python
          source: response = fireblocks.reports_beta.create_report(create_report_request, idempotency_key);
    get:
      operationId: listReports
      summary: List reports
      description: |
        Returns a paginated list of report jobs scoped to the calling tenant.

        **Note:** Download URLs are not included in list responses. Call `GET /v1/reports/{reportId}` to
        obtain a fresh signed download URL for a specific completed report.

        **Note:** These endpoints are currently in beta and might be subject to changes.

        Endpoint Permission: Viewer and above.
      tags:
        - Reports (Beta)
      x-rate-limit-category: query
      parameters:
        - name: pageCursor
          in: query
          required: false
          description: Opaque cursor returned from a previous list call
          schema:
            type: string
        - name: pageSize
          in: query
          required: false
          description: Maximum number of items per page
          schema:
            type: integer
            minimum: 1
            maximum: 100
            default: 20
        - name: sortBy
          in: query
          required: false
          description: Field to sort by
          schema:
            type: string
            enum:
              - createdAt
              - completedAt
            default: createdAt
        - name: order
          in: query
          required: false
          description: Sort direction
          schema:
            type: string
            enum:
              - ASC
              - DESC
            default: DESC
        - name: status
          in: query
          required: false
          description: Filter by lifecycle status. Repeat the parameter to filter on multiple statuses (e.g., ?status=QUEUED&status=PROCESSING).
          style: form
          explode: true
          schema:
            type: array
            items:
              $ref: '#/components/schemas/ReportStatus'
        - name: reportType
          in: query
          required: false
          description: Filter by report type. Repeat the parameter to filter on multiple types.
          style: form
          explode: true
          schema:
            type: array
            items:
              $ref: '#/components/schemas/ReportType'
      responses:
        '200':
          description: Paginated list of report jobs
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ReportListResponse'
        default:
          $ref: '#/components/responses/Error'
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<ReportListResponse>> = fireblocks.reportsBeta.listReports(reportsBetaApiListReportsRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<ReportListResponse>> response = fireblocks.reportsBeta().listReports(pageCursor, pageSize, sortBy, order, status, reportType);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.reports_beta.list_reports(page_cursor, page_size, sort_by, order, status, report_type);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<ReportListResponse>> = fireblocks.reportsBeta.listReports(reportsBetaApiListReportsRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<ReportListResponse>> response = fireblocks.reportsBeta().listReports(pageCursor, pageSize, sortBy, order, status, reportType);
        - lang: Python
          source: response = fireblocks.reports_beta.list_reports(page_cursor, page_size, sort_by, order, status, report_type);
  /reports/{reportId}:
    get:
      operationId: getReport
      summary: Get report status
      description: |
        Returns the current status of a report job. Check the `status` field to determine the outcome.

        When `status` is `COMPLETED`, the response includes a fresh pre-signed download URL in
        `links.downloadUrl` (TTL ~1 hour). Re-poll this endpoint to obtain a new URL after expiry.

        When `status` is `FAILED`, the `failedAt` timestamp indicates when the failure occurred.

        **Note:** These endpoints are currently in beta and might be subject to changes.

        Endpoint Permission: Viewer and above.
      tags:
        - Reports (Beta)
      x-rate-limit-category: read
      parameters:
        - name: reportId
          in: path
          required: true
          description: The unique identifier of the report job
          example: 0190b3c2-7e4a-7c31-9f2a-1b6d8e5a0c11
          schema:
            type: string
      responses:
        '200':
          description: Report job details
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ReportJobResponse'
        default:
          $ref: '#/components/responses/Error'
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<ReportJobResponse>> = fireblocks.reportsBeta.getReport(reportsBetaApiGetReportRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<ReportJobResponse>> response = fireblocks.reportsBeta().getReport(reportId);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.reports_beta.get_report(report_id);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<ReportJobResponse>> = fireblocks.reportsBeta.getReport(reportsBetaApiGetReportRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<ReportJobResponse>> response = fireblocks.reportsBeta().getReport(reportId);
        - lang: Python
          source: response = fireblocks.reports_beta.get_report(report_id);
  /management/users/{id}/reset_device:
    post:
      operationId: resetDevice
      summary: Resets device
      description: |-
        Resets mobile device for given console user, that user will need to do mobile onboarding again.
        - Please note that this endpoint is available only for API keys with Admin/Non Signing Admin permissions.
        Endpoint Permission: Admin, Non-Signing Admin.
      tags:
        - Reset device
      x-rate-limit-category: write
      x-readme:
        code-samples:
          - language: javascript
            code: const res = await fireblocks.resetDeviceRequest(consoleUserId);
            name: Fireblocks SDK Javascript example
          - language: python
            code: res = fireblocks.reset_device_request(console_user_id)
            name: Fireblocks SDK Python example (Legacy)
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<void>> = fireblocks.resetDevice.resetDevice(resetDeviceApiResetDeviceRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<Void>> response = fireblocks.resetDevice().resetDevice(id, idempotencyKey);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.reset_device.reset_device(id, idempotency_key);
            name: Fireblocks SDK Python example
      parameters:
        - in: path
          name: id
          required: true
          description: The ID of the console user
          schema:
            type: string
        - $ref: '#/components/parameters/X-Idempotency-Key'
      responses:
        '200':
          description: Reset device approval request has been sent
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
        '401':
          description: Unauthorized. Missing / invalid JWT token in Authorization header.
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '403':
          description: Lacking permissions.
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        5XX:
          description: Internal error.
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        default:
          $ref: '#/components/responses/Error'
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<void>> = fireblocks.resetDevice.resetDevice(resetDeviceApiResetDeviceRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<Void>> response = fireblocks.resetDevice().resetDevice(id, idempotencyKey);
        - lang: Python
          source: response = fireblocks.reset_device.reset_device(id, idempotency_key);
  /smart_transfers/{ticketId}/dvp/fund:
    put:
      operationId: fundDvpTicket
      summary: Fund dvp ticket
      description: Create or fulfill dvp ticket order
      parameters:
        - name: ticketId
          required: true
          in: path
          schema:
            type: string
        - $ref: '#/components/parameters/X-Idempotency-Key'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SmartTransferFundDvpTicket'
      responses:
        '200':
          description: Successfully started creating or fulfilling order on dvp Smart Transfer ticket
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SmartTransferTicketResponse'
        '403':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SmartTransferForbiddenResponse'
        '404':
          description: Not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SmartTransferNotFoundResponse'
        '422':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SmartTransferBadRequestResponse'
      x-rate-limit-category: write
      tags:
        - Smart Transfer
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<SmartTransferTicketResponse>> = fireblocks.smartTransfer.fundDvpTicket(smartTransferApiFundDvpTicketRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<SmartTransferTicketResponse>> response = fireblocks.smartTransfer().fundDvpTicket(smartTransferFundDvpTicket, ticketId, idempotencyKey);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.smart_transfer.fund_dvp_ticket(smart_transfer_fund_dvp_ticket, ticket_id, idempotency_key);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<SmartTransferTicketResponse>> = fireblocks.smartTransfer.fundDvpTicket(smartTransferApiFundDvpTicketRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<SmartTransferTicketResponse>> response = fireblocks.smartTransfer().fundDvpTicket(smartTransferFundDvpTicket, ticketId, idempotencyKey);
        - lang: Python
          source: response = fireblocks.smart_transfer.fund_dvp_ticket(smart_transfer_fund_dvp_ticket, ticket_id, idempotency_key);
  /smart_transfers/{ticketId}/terms/{termId}/dvp/approve:
    put:
      operationId: approveDvPTicketTerm
      summary: Set funding source and approval
      description: Set funding source for ticket term and creating approving transaction for contract to transfer asset
      parameters:
        - name: ticketId
          required: true
          in: path
          schema:
            type: string
        - name: termId
          required: true
          in: path
          schema:
            type: string
        - $ref: '#/components/parameters/X-Idempotency-Key'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SmartTransferApproveTerm'
      responses:
        '201':
          description: Creating approval transaction started
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SmartTransferTicketTermResponse'
        '403':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SmartTransferForbiddenResponse'
        '404':
          description: Not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SmartTransferNotFoundResponse'
        '422':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SmartTransferBadRequestResponse'
      tags:
        - Smart Transfer
      x-rate-limit-category: write
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<SmartTransferTicketTermResponse>> = fireblocks.smartTransfer.approveDvPTicketTerm(smartTransferApiApproveDvPTicketTermRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<SmartTransferTicketTermResponse>> response = fireblocks.smartTransfer().approveDvPTicketTerm(smartTransferApproveTerm, ticketId, termId, idempotencyKey);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.smart_transfer.approve_dv_p_ticket_term(smart_transfer_approve_term, ticket_id, term_id, idempotency_key);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<SmartTransferTicketTermResponse>> = fireblocks.smartTransfer.approveDvPTicketTerm(smartTransferApiApproveDvPTicketTermRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<SmartTransferTicketTermResponse>> response = fireblocks.smartTransfer().approveDvPTicketTerm(smartTransferApproveTerm, ticketId, termId, idempotencyKey);
        - lang: Python
          source: response = fireblocks.smart_transfer.approve_dv_p_ticket_term(smart_transfer_approve_term, ticket_id, term_id, idempotency_key);
  /smart_transfers/statistic:
    get:
      operationId: getSmartTransferStatistic
      summary: Get smart transfers statistic
      description: Get smart transfer statistic
      responses:
        '200':
          description: Smart Transfer ticket statistic returned successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SmartTransferStatistic'
        '403':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SmartTransferForbiddenResponse'
        default:
          $ref: '#/components/responses/Error'
      tags:
        - Smart Transfer
      x-rate-limit-category: query
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<SmartTransferStatistic>> = fireblocks.smartTransfer.getSmartTransferStatistic();'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<SmartTransferStatistic>> response = fireblocks.smartTransfer().getSmartTransferStatistic();
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.smart_transfer.get_smart_transfer_statistic();
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<SmartTransferStatistic>> = fireblocks.smartTransfer.getSmartTransferStatistic();'
        - lang: Java
          source: CompletableFuture<ApiResponse<SmartTransferStatistic>> response = fireblocks.smartTransfer().getSmartTransferStatistic();
        - lang: Python
          source: response = fireblocks.smart_transfer.get_smart_transfer_statistic();
  /smart-transfers:
    post:
      operationId: createTicket
      summary: Create Ticket
      description: |
        Creates a new Smart Transfer ticket. Learn more about Fireblocks Smart Transfers [here](https://developers.fireblocks.com/docs/execute-smart-transfers).

        **Note:** The `DVP` value is in Early Access and should only be used if Fireblocks has enabled it in your workspace. Contact your Customer Success Manager for more information.

        **Endpoint Permissions:** Admin, Non-Signing Admin, Signer, Approver, Editor.
      parameters:
        - $ref: '#/components/parameters/X-Idempotency-Key'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SmartTransferCreateTicket'
      responses:
        '201':
          description: Smart Transfer ticket was created successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SmartTransferTicketResponse'
        '403':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SmartTransferForbiddenResponse'
        '422':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SmartTransferBadRequestResponse'
      tags:
        - Smart Transfer
      x-rate-limit-category: async
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<SmartTransferTicketResponse>> = fireblocks.smartTransfer.createTicket(smartTransferApiCreateTicketRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<SmartTransferTicketResponse>> response = fireblocks.smartTransfer().createTicket(smartTransferCreateTicket, idempotencyKey);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.smart_transfer.create_ticket(smart_transfer_create_ticket, idempotency_key);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<SmartTransferTicketResponse>> = fireblocks.smartTransfer.createTicket(smartTransferApiCreateTicketRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<SmartTransferTicketResponse>> response = fireblocks.smartTransfer().createTicket(smartTransferCreateTicket, idempotencyKey);
        - lang: Python
          source: response = fireblocks.smart_transfer.create_ticket(smart_transfer_create_ticket, idempotency_key);
    get:
      operationId: searchTickets
      summary: Find Ticket
      description: |-
        Find tickets by their title or ticker. You can also query all tickets without filters by not providing any input parameters.
        **Endpoint Permissions:** Admin, Non-Signing Admin, Signer, Approver, Editor, Viewer.
      parameters:
        - name: q
          required: false
          in: query
          description: Search string - counterparty name or asset or ticketId. Optional
          schema:
            minLength: 1
            type: string
        - name: statuses
          required: false
          in: query
          description: Ticket statuses for Smart Transfer tickets. Optional
          example:
            - DRAFT
            - OPEN
          schema:
            default: []
            type: array
            items:
              type: string
              enum:
                - DRAFT
                - PENDING_APPROVAL
                - OPEN
                - IN_SETTLEMENT
                - FULFILLED
                - EXPIRED
                - CANCELED
        - name: networkId
          required: false
          in: query
          description: "NetworkId that is used in the ticket\t. Optional"
          schema:
            type: string
        - name: createdByMe
          required: false
          in: query
          description: Filter created tickets by created by self or by others. Optional
          schema:
            type: boolean
        - name: expiresAfter
          required: false
          in: query
          description: Lower bound of search range. Optional
          schema:
            format: date-time
            type: string
        - name: expiresBefore
          required: false
          in: query
          description: Upper bound of search range. Optional
          schema:
            format: date-time
            type: string
        - name: type
          required: false
          in: query
          description: Type of transfer. ASYNC executes transfers as they are funded, DVP executes all terms (legs) as one dvp transfer
          schema:
            enum:
              - ASYNC
              - DVP
            type: string
        - name: externalRefId
          required: false
          in: query
          description: External ref. ID that workspace can use to identify ticket outside of Fireblocks system.
          schema:
            minLength: 1
            maxLength: 64
            type: string
        - name: after
          required: false
          in: query
          description: ID of the record after which to fetch $limit records
          schema:
            type: string
        - name: limit
          required: false
          in: query
          description: Number of records to fetch. By default, it is 100
          schema:
            minimum: 1
            type: number
        - name: sortBy
          required: false
          in: query
          description: Sort by field
          schema:
            default: createdAt
            example: createdAt
            enum:
              - createdAt
              - updatedAt
              - submittedAt
            type: string
        - name: order
          required: false
          in: query
          description: ASC / DESC ordering (default DESC)
          schema:
            default: DESC
            example: DESC
            enum:
              - ASC
              - DESC
            type: string
      responses:
        '200':
          description: Smart Transfer tickets were returned successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SmartTransferTicketFilteredResponse'
        '403':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SmartTransferForbiddenResponse'
      tags:
        - Smart Transfer
      x-rate-limit-category: query
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<SmartTransferTicketFilteredResponse>> = fireblocks.smartTransfer.searchTickets(smartTransferApiSearchTicketsRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<SmartTransferTicketFilteredResponse>> response = fireblocks.smartTransfer().searchTickets(q, statuses, networkId, createdByMe, expiresAfter, expiresBefore, type, externalRefId, after, limit, sortBy, order);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.smart_transfer.search_tickets(q, statuses, network_id, created_by_me, expires_after, expires_before, type, external_ref_id, after, limit, sort_by, order);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<SmartTransferTicketFilteredResponse>> = fireblocks.smartTransfer.searchTickets(smartTransferApiSearchTicketsRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<SmartTransferTicketFilteredResponse>> response = fireblocks.smartTransfer().searchTickets(q, statuses, networkId, createdByMe, expiresAfter, expiresBefore, type, externalRefId, after, limit, sortBy, order);
        - lang: Python
          source: response = fireblocks.smart_transfer.search_tickets(q, statuses, network_id, created_by_me, expires_after, expires_before, type, external_ref_id, after, limit, sort_by, order);
  /smart-transfers/{ticketId}:
    get:
      operationId: findTicketById
      summary: Search Ticket by ID
      description: 'Find Smart Transfer ticket by id. Endpoint Permission: Admin, Non-Signing Admin, Signer, Approver, Editor, Viewer.'
      parameters:
        - name: ticketId
          required: true
          in: path
          schema:
            type: string
      responses:
        '200':
          description: Smart Transfer ticket returned successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SmartTransferTicketResponse'
        '403':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SmartTransferForbiddenResponse'
        '404':
          description: Not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SmartTransferNotFoundResponse'
      tags:
        - Smart Transfer
      x-rate-limit-category: query
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<SmartTransferTicketResponse>> = fireblocks.smartTransfer.findTicketById(smartTransferApiFindTicketByIdRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<SmartTransferTicketResponse>> response = fireblocks.smartTransfer().findTicketById(ticketId);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.smart_transfer.find_ticket_by_id(ticket_id);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<SmartTransferTicketResponse>> = fireblocks.smartTransfer.findTicketById(smartTransferApiFindTicketByIdRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<SmartTransferTicketResponse>> response = fireblocks.smartTransfer().findTicketById(ticketId);
        - lang: Python
          source: response = fireblocks.smart_transfer.find_ticket_by_id(ticket_id);
  /smart-transfers/{ticketId}/cancel:
    put:
      operationId: cancelTicket
      summary: Cancel Ticket
      description: 'Cancel Smart Transfer ticket. Endpoint Permission: Admin, Non-Signing Admin, Signer, Approver, Editor.'
      parameters:
        - name: ticketId
          required: true
          in: path
          schema:
            type: string
        - $ref: '#/components/parameters/X-Idempotency-Key'
      responses:
        '200':
          description: Smart Transfer ticket successfully canceled
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SmartTransferTicketResponse'
        '403':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SmartTransferForbiddenResponse'
        '404':
          description: Not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SmartTransferNotFoundResponse'
        '422':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SmartTransferBadRequestResponse'
      tags:
        - Smart Transfer
      x-rate-limit-category: write
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<SmartTransferTicketResponse>> = fireblocks.smartTransfer.cancelTicket(smartTransferApiCancelTicketRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<SmartTransferTicketResponse>> response = fireblocks.smartTransfer().cancelTicket(ticketId, idempotencyKey);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.smart_transfer.cancel_ticket(ticket_id, idempotency_key);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<SmartTransferTicketResponse>> = fireblocks.smartTransfer.cancelTicket(smartTransferApiCancelTicketRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<SmartTransferTicketResponse>> response = fireblocks.smartTransfer().cancelTicket(ticketId, idempotencyKey);
        - lang: Python
          source: response = fireblocks.smart_transfer.cancel_ticket(ticket_id, idempotency_key);
  /smart-transfers/{ticketId}/expires-in:
    put:
      operationId: setTicketExpiration
      summary: Set expiration
      description: 'Set expiration date on Smart Transfer ticket. Endpoint Permission: Admin, Non-Signing Admin, Signer, Approver, Editor.'
      parameters:
        - name: ticketId
          required: true
          in: path
          schema:
            type: string
        - $ref: '#/components/parameters/X-Idempotency-Key'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SmartTransferSetTicketExpiration'
      responses:
        '200':
          description: Successfully set expiration date on Smart Transfer ticket
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SmartTransferTicketResponse'
        '403':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SmartTransferForbiddenResponse'
        '404':
          description: Not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SmartTransferNotFoundResponse'
        '422':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SmartTransferBadRequestResponse'
      tags:
        - Smart Transfer
      x-rate-limit-category: write
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<SmartTransferTicketResponse>> = fireblocks.smartTransfer.setTicketExpiration(smartTransferApiSetTicketExpirationRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<SmartTransferTicketResponse>> response = fireblocks.smartTransfer().setTicketExpiration(smartTransferSetTicketExpiration, ticketId, idempotencyKey);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.smart_transfer.set_ticket_expiration(smart_transfer_set_ticket_expiration, ticket_id, idempotency_key);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<SmartTransferTicketResponse>> = fireblocks.smartTransfer.setTicketExpiration(smartTransferApiSetTicketExpirationRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<SmartTransferTicketResponse>> response = fireblocks.smartTransfer().setTicketExpiration(smartTransferSetTicketExpiration, ticketId, idempotencyKey);
        - lang: Python
          source: response = fireblocks.smart_transfer.set_ticket_expiration(smart_transfer_set_ticket_expiration, ticket_id, idempotency_key);
  /smart-transfers/{ticketId}/external-id:
    put:
      operationId: setExternalRefId
      summary: Add external ref. ID
      description: 'Set external id Smart Transfer ticket. Endpoint Permission: Admin, Non-Signing Admin, Signer, Approver, Editor.'
      parameters:
        - name: ticketId
          required: true
          in: path
          schema:
            type: string
        - $ref: '#/components/parameters/X-Idempotency-Key'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SmartTransferSetTicketExternalId'
      responses:
        '200':
          description: Successfully set external id on Smart Transfer ticket
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SmartTransferTicketResponse'
        '403':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SmartTransferForbiddenResponse'
        '404':
          description: Not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SmartTransferNotFoundResponse'
        '422':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SmartTransferBadRequestResponse'
      tags:
        - Smart Transfer
      x-rate-limit-category: write
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<SmartTransferTicketResponse>> = fireblocks.smartTransfer.setExternalRefId(smartTransferApiSetExternalRefIdRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<SmartTransferTicketResponse>> response = fireblocks.smartTransfer().setExternalRefId(smartTransferSetTicketExternalId, ticketId, idempotencyKey);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.smart_transfer.set_external_ref_id(smart_transfer_set_ticket_external_id, ticket_id, idempotency_key);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<SmartTransferTicketResponse>> = fireblocks.smartTransfer.setExternalRefId(smartTransferApiSetExternalRefIdRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<SmartTransferTicketResponse>> response = fireblocks.smartTransfer().setExternalRefId(smartTransferSetTicketExternalId, ticketId, idempotencyKey);
        - lang: Python
          source: response = fireblocks.smart_transfer.set_external_ref_id(smart_transfer_set_ticket_external_id, ticket_id, idempotency_key);
  /smart-transfers/{ticketId}/fulfill:
    put:
      operationId: fulfillTicket
      summary: Fund ticket manually
      description: 'Manually fulfill ticket, in case when all terms (legs) are funded manually. Endpoint Permission: Admin, Non-Signing Admin, Signer, Approver, Editor.'
      parameters:
        - name: ticketId
          required: true
          in: path
          schema:
            type: string
        - $ref: '#/components/parameters/X-Idempotency-Key'
      responses:
        '200':
          description: Successfully fulfilled on Smart Transfer ticket
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SmartTransferTicketResponse'
        '403':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SmartTransferForbiddenResponse'
        '404':
          description: Not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SmartTransferNotFoundResponse'
        '422':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SmartTransferBadRequestResponse'
      tags:
        - Smart Transfer
      x-rate-limit-category: write
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<SmartTransferTicketResponse>> = fireblocks.smartTransfer.fulfillTicket(smartTransferApiFulfillTicketRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<SmartTransferTicketResponse>> response = fireblocks.smartTransfer().fulfillTicket(ticketId, idempotencyKey);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.smart_transfer.fulfill_ticket(ticket_id, idempotency_key);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<SmartTransferTicketResponse>> = fireblocks.smartTransfer.fulfillTicket(smartTransferApiFulfillTicketRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<SmartTransferTicketResponse>> response = fireblocks.smartTransfer().fulfillTicket(ticketId, idempotencyKey);
        - lang: Python
          source: response = fireblocks.smart_transfer.fulfill_ticket(ticket_id, idempotency_key);
  /smart-transfers/{ticketId}/submit:
    put:
      operationId: submitTicket
      summary: Submit ticket
      description: 'Submit Smart Transfer ticket - change status into ready for approval if auto approval is not turned on, or OPEN if auto approval is on. Endpoint Permission: Admin, Non-Signing Admin, Signer, Approver, Editor.'
      parameters:
        - name: ticketId
          required: true
          in: path
          schema:
            type: string
        - $ref: '#/components/parameters/X-Idempotency-Key'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SmartTransferSubmitTicket'
      responses:
        '200':
          description: Successfully submitted Smart Transfer ticket
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SmartTransferTicketResponse'
        '403':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SmartTransferForbiddenResponse'
        '404':
          description: Not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SmartTransferNotFoundResponse'
        '422':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SmartTransferBadRequestResponse'
      tags:
        - Smart Transfer
      x-rate-limit-category: write
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<SmartTransferTicketResponse>> = fireblocks.smartTransfer.submitTicket(smartTransferApiSubmitTicketRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<SmartTransferTicketResponse>> response = fireblocks.smartTransfer().submitTicket(smartTransferSubmitTicket, ticketId, idempotencyKey);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.smart_transfer.submit_ticket(smart_transfer_submit_ticket, ticket_id, idempotency_key);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<SmartTransferTicketResponse>> = fireblocks.smartTransfer.submitTicket(smartTransferApiSubmitTicketRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<SmartTransferTicketResponse>> response = fireblocks.smartTransfer().submitTicket(smartTransferSubmitTicket, ticketId, idempotencyKey);
        - lang: Python
          source: response = fireblocks.smart_transfer.submit_ticket(smart_transfer_submit_ticket, ticket_id, idempotency_key);
  /smart-transfers/{ticketId}/terms:
    post:
      operationId: createTicketTerm
      summary: Create leg (term)
      description: 'Creates new smart transfer ticket term (when the ticket status is DRAFT). Learn more about Fireblocks Smart Transfers in the following [guide](https://developers.fireblocks.com/docs/execute-smart-transfers). Endpoint Permission: Admin, Non-Signing Admin, Signer, Approver, Editor.'
      parameters:
        - name: ticketId
          required: true
          in: path
          schema:
            type: string
        - $ref: '#/components/parameters/X-Idempotency-Key'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SmartTransferCreateTicketTerm'
      responses:
        '201':
          description: Smart Transfer ticket term was created successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SmartTransferTicketTermResponse'
        '403':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SmartTransferForbiddenResponse'
        '422':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SmartTransferBadRequestResponse'
      tags:
        - Smart Transfer
      x-rate-limit-category: write
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<SmartTransferTicketTermResponse>> = fireblocks.smartTransfer.createTicketTerm(smartTransferApiCreateTicketTermRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<SmartTransferTicketTermResponse>> response = fireblocks.smartTransfer().createTicketTerm(smartTransferCreateTicketTerm, ticketId, idempotencyKey);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.smart_transfer.create_ticket_term(smart_transfer_create_ticket_term, ticket_id, idempotency_key);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<SmartTransferTicketTermResponse>> = fireblocks.smartTransfer.createTicketTerm(smartTransferApiCreateTicketTermRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<SmartTransferTicketTermResponse>> response = fireblocks.smartTransfer().createTicketTerm(smartTransferCreateTicketTerm, ticketId, idempotencyKey);
        - lang: Python
          source: response = fireblocks.smart_transfer.create_ticket_term(smart_transfer_create_ticket_term, ticket_id, idempotency_key);
  /smart-transfers/{ticketId}/terms/{termId}:
    get:
      operationId: findTicketTermById
      summary: Get Smart Transfer ticket term
      description: 'Find a specific term of a specific Smart Transfer ticket. Endpoint Permission: Admin, Non-Signing Admin, Signer, Approver, Editor, Viewer.'
      parameters:
        - name: ticketId
          required: true
          in: path
          schema:
            type: string
        - name: termId
          required: true
          in: path
          schema:
            type: string
      responses:
        '200':
          description: Smart Transfer ticket term returned successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SmartTransferTicketTermResponse'
        '403':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SmartTransferForbiddenResponse'
        '404':
          description: Not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SmartTransferNotFoundResponse'
      tags:
        - Smart Transfer
      x-rate-limit-category: read
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<SmartTransferTicketTermResponse>> = fireblocks.smartTransfer.findTicketTermById(smartTransferApiFindTicketTermByIdRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<SmartTransferTicketTermResponse>> response = fireblocks.smartTransfer().findTicketTermById(ticketId, termId);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.smart_transfer.find_ticket_term_by_id(ticket_id, term_id);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<SmartTransferTicketTermResponse>> = fireblocks.smartTransfer.findTicketTermById(smartTransferApiFindTicketTermByIdRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<SmartTransferTicketTermResponse>> response = fireblocks.smartTransfer().findTicketTermById(ticketId, termId);
        - lang: Python
          source: response = fireblocks.smart_transfer.find_ticket_term_by_id(ticket_id, term_id);
    put:
      operationId: updateTicketTerm
      summary: Update ticket leg (term)
      description: Update ticket term (when ticket status is DRAFT)
      parameters:
        - name: ticketId
          required: true
          in: path
          schema:
            type: string
        - name: termId
          required: true
          in: path
          schema:
            type: string
        - $ref: '#/components/parameters/X-Idempotency-Key'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SmartTransferUpdateTicketTerm'
      responses:
        '200':
          description: Smart Transfer ticket term updated successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SmartTransferTicketTermResponse'
        '403':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SmartTransferForbiddenResponse'
        '404':
          description: Not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SmartTransferNotFoundResponse'
      tags:
        - Smart Transfer
      x-rate-limit-category: write
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<SmartTransferTicketTermResponse>> = fireblocks.smartTransfer.updateTicketTerm(smartTransferApiUpdateTicketTermRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<SmartTransferTicketTermResponse>> response = fireblocks.smartTransfer().updateTicketTerm(smartTransferUpdateTicketTerm, ticketId, termId, idempotencyKey);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.smart_transfer.update_ticket_term(smart_transfer_update_ticket_term, ticket_id, term_id, idempotency_key);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<SmartTransferTicketTermResponse>> = fireblocks.smartTransfer.updateTicketTerm(smartTransferApiUpdateTicketTermRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<SmartTransferTicketTermResponse>> response = fireblocks.smartTransfer().updateTicketTerm(smartTransferUpdateTicketTerm, ticketId, termId, idempotencyKey);
        - lang: Python
          source: response = fireblocks.smart_transfer.update_ticket_term(smart_transfer_update_ticket_term, ticket_id, term_id, idempotency_key);
    delete:
      operationId: removeTicketTerm
      summary: Delete ticket leg (term)
      description: Delete ticket term when ticket is in DRAFT status
      parameters:
        - name: ticketId
          required: true
          in: path
          schema:
            type: string
        - name: termId
          required: true
          in: path
          schema:
            type: string
      responses:
        '204':
          description: Smart Transfer ticket term successfully removed
        '403':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SmartTransferForbiddenResponse'
        '404':
          description: Not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SmartTransferNotFoundResponse'
      tags:
        - Smart Transfer
      x-rate-limit-category: write
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<void>> = fireblocks.smartTransfer.removeTicketTerm(smartTransferApiRemoveTicketTermRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<Void>> response = fireblocks.smartTransfer().removeTicketTerm(ticketId, termId);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.smart_transfer.remove_ticket_term(ticket_id, term_id);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<void>> = fireblocks.smartTransfer.removeTicketTerm(smartTransferApiRemoveTicketTermRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<Void>> response = fireblocks.smartTransfer().removeTicketTerm(ticketId, termId);
        - lang: Python
          source: response = fireblocks.smart_transfer.remove_ticket_term(ticket_id, term_id);
  /smart-transfers/{ticketId}/terms/{termId}/fund:
    put:
      operationId: fundTicketTerm
      summary: Define funding source
      description: 'Set funding source for ticket term (in case of ASYNC tickets, this will execute transfer immediately). Endpoint Permission: Admin, Non-Signing Admin, Signer, Approver, Editor.'
      parameters:
        - name: ticketId
          required: true
          in: path
          schema:
            type: string
        - name: termId
          required: true
          in: path
          schema:
            type: string
        - $ref: '#/components/parameters/X-Idempotency-Key'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SmartTransferFundTerm'
      responses:
        '201':
          description: Funding source for ticket term successfully done
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SmartTransferTicketTermResponse'
        '403':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SmartTransferForbiddenResponse'
        '404':
          description: Not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SmartTransferNotFoundResponse'
        '422':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SmartTransferBadRequestResponse'
      tags:
        - Smart Transfer
      x-rate-limit-category: write
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<SmartTransferTicketTermResponse>> = fireblocks.smartTransfer.fundTicketTerm(smartTransferApiFundTicketTermRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<SmartTransferTicketTermResponse>> response = fireblocks.smartTransfer().fundTicketTerm(smartTransferFundTerm, ticketId, termId, idempotencyKey);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.smart_transfer.fund_ticket_term(smart_transfer_fund_term, ticket_id, term_id, idempotency_key);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<SmartTransferTicketTermResponse>> = fireblocks.smartTransfer.fundTicketTerm(smartTransferApiFundTicketTermRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<SmartTransferTicketTermResponse>> response = fireblocks.smartTransfer().fundTicketTerm(smartTransferFundTerm, ticketId, termId, idempotencyKey);
        - lang: Python
          source: response = fireblocks.smart_transfer.fund_ticket_term(smart_transfer_fund_term, ticket_id, term_id, idempotency_key);
  /smart-transfers/{ticketId}/terms/{termId}/manually-fund:
    put:
      operationId: manuallyFundTicketTerm
      summary: Manually add term transaction
      description: |-
        Manually set ticket term transaction.
        Endpoint Permission: Admin, Non-Signing Admin, Signer, Approver, Editor.
      parameters:
        - name: ticketId
          required: true
          in: path
          schema:
            type: string
        - name: termId
          required: true
          in: path
          schema:
            type: string
        - $ref: '#/components/parameters/X-Idempotency-Key'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SmartTransferManuallyFundTerm'
      responses:
        '201':
          description: Successfully manually set ticket term transaction
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SmartTransferTicketTermResponse'
        '403':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SmartTransferForbiddenResponse'
        '404':
          description: Not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SmartTransferNotFoundResponse'
        '422':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SmartTransferBadRequestResponse'
      tags:
        - Smart Transfer
      x-rate-limit-category: write
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<SmartTransferTicketTermResponse>> = fireblocks.smartTransfer.manuallyFundTicketTerm(smartTransferApiManuallyFundTicketTermRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<SmartTransferTicketTermResponse>> response = fireblocks.smartTransfer().manuallyFundTicketTerm(smartTransferManuallyFundTerm, ticketId, termId, idempotencyKey);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.smart_transfer.manually_fund_ticket_term(smart_transfer_manually_fund_term, ticket_id, term_id, idempotency_key);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<SmartTransferTicketTermResponse>> = fireblocks.smartTransfer.manuallyFundTicketTerm(smartTransferApiManuallyFundTicketTermRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<SmartTransferTicketTermResponse>> response = fireblocks.smartTransfer().manuallyFundTicketTerm(smartTransferManuallyFundTerm, ticketId, termId, idempotencyKey);
        - lang: Python
          source: response = fireblocks.smart_transfer.manually_fund_ticket_term(smart_transfer_manually_fund_term, ticket_id, term_id, idempotency_key);
  /smart-transfers/settings/user-groups:
    post:
      operationId: setUserGroups
      summary: Set user group
      description: |-
        Set Smart Transfers user group to receive email notifications for Smart Transfers.
        Endpoint Permission: Admin, Non-Signing Admin, Signer, Approver, Editor.
      parameters:
        - $ref: '#/components/parameters/X-Idempotency-Key'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SmartTransferSetUserGroups'
      responses:
        '201':
          description: User group settings were set successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SmartTransferUserGroupsResponse'
        '403':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SmartTransferForbiddenResponse'
        '422':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SmartTransferBadRequestResponse'
      tags:
        - Smart Transfer
      x-rate-limit-category: write
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<SmartTransferUserGroupsResponse>> = fireblocks.smartTransfer.setUserGroups(smartTransferApiSetUserGroupsRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<SmartTransferUserGroupsResponse>> response = fireblocks.smartTransfer().setUserGroups(smartTransferSetUserGroups, idempotencyKey);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.smart_transfer.set_user_groups(smart_transfer_set_user_groups, idempotency_key);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<SmartTransferUserGroupsResponse>> = fireblocks.smartTransfer.setUserGroups(smartTransferApiSetUserGroupsRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<SmartTransferUserGroupsResponse>> response = fireblocks.smartTransfer().setUserGroups(smartTransferSetUserGroups, idempotencyKey);
        - lang: Python
          source: response = fireblocks.smart_transfer.set_user_groups(smart_transfer_set_user_groups, idempotency_key);
    get:
      operationId: getSmartTransferUserGroups
      summary: Get user group
      description: |-
        Get Smart Transfer user groups.
        Endpoint Permission: Admin, Non-Signing Admin, Signer, Approver, Editor, Viewer.
      parameters: []
      responses:
        '200':
          description: User group settings were returned successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SmartTransferUserGroupsResponse'
        '403':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SmartTransferForbiddenResponse'
        '422':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SmartTransferBadRequestResponse'
      tags:
        - Smart Transfer
      x-rate-limit-category: query
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<SmartTransferUserGroupsResponse>> = fireblocks.smartTransfer.getSmartTransferUserGroups();'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<SmartTransferUserGroupsResponse>> response = fireblocks.smartTransfer().getSmartTransferUserGroups();
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.smart_transfer.get_smart_transfer_user_groups();
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<SmartTransferUserGroupsResponse>> = fireblocks.smartTransfer.getSmartTransferUserGroups();'
        - lang: Java
          source: CompletableFuture<ApiResponse<SmartTransferUserGroupsResponse>> response = fireblocks.smartTransfer().getSmartTransferUserGroups();
        - lang: Python
          source: response = fireblocks.smart_transfer.get_smart_transfer_user_groups();
  /staking/chains:
    get:
      operationId: getChains
      summary: List supported staking chains
      description: |-
        Returns an alphabetical list of blockchains supported for staking by the current workspace context.
        Endpoint Permission: Admin, Non-Signing Admin, Signer, Approver, Editor.
      responses:
        '200':
          description: An array of supported chains was returned successfully.
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StakingGetChainsResponse'
        '403':
          description: 'Forbidden: insufficient permissions, disabled feature, or restricted provider/validator.'
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StakingErrorSchema'
        '404':
          description: 'Not found: requested resource does not exist (e.g., position, validator, provider, or wallet).'
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StakingErrorSchema'
        '429':
          description: 'Rate limit exceeded: slow down and retry later.'
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StakingErrorSchema'
        '500':
          description: Internal error while processing the request.
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StakingErrorSchema'
        default:
          $ref: '#/components/responses/Error'
      tags:
        - Staking
      x-rate-limit-category: query
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<StakingGetChainsResponse>> = fireblocks.staking.getChains();'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<List<ChainDescriptor>>> response = fireblocks.staking().getChains();
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.staking.get_chains();
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<StakingGetChainsResponse>> = fireblocks.staking.getChains();'
        - lang: Java
          source: CompletableFuture<ApiResponse<List<ChainDescriptor>>> response = fireblocks.staking().getChains();
        - lang: Python
          source: response = fireblocks.staking.get_chains();
  /staking/chains/{chainDescriptor}/chainInfo:
    get:
      operationId: getChainInfo
      summary: Get chain-level staking parameters
      description: Returns chain-specific staking information such as epoch/slot cadence, lockup or unbonding periods, fee/reward mechanics, and other operational constraints.
      parameters:
        - name: chainDescriptor
          required: true
          in: path
          description: Protocol identifier for the chain info staking operation (e.g., ETH/MATIC/SOL).
          schema:
            $ref: '#/components/schemas/ChainDescriptor'
      responses:
        '200':
          description: Chain-specific staking information returned successfully.
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ChainInfoResponse'
        '400':
          description: 'Bad request: missing/invalid fields, unsupported amount, or malformed payload.'
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StakingErrorSchema'
        '403':
          description: 'Forbidden: insufficient permissions, disabled feature, or restricted provider/validator.'
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StakingErrorSchema'
        '404':
          description: 'Not found: requested resource does not exist (e.g., position, validator, provider, or wallet).'
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StakingErrorSchema'
        '429':
          description: 'Rate limit exceeded: slow down and retry later.'
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StakingErrorSchema'
        '500':
          description: Internal error while processing the request.
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StakingErrorSchema'
        default:
          $ref: '#/components/responses/Error'
      tags:
        - Staking
      x-rate-limit-category: query
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<ChainInfoResponse>> = fireblocks.staking.getChainInfo(stakingApiGetChainInfoRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<ChainInfoResponse>> response = fireblocks.staking().getChainInfo(chainDescriptor);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.staking.get_chain_info(chain_descriptor);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<ChainInfoResponse>> = fireblocks.staking.getChainInfo(stakingApiGetChainInfoRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<ChainInfoResponse>> response = fireblocks.staking().getChainInfo(chainDescriptor);
        - lang: Python
          source: response = fireblocks.staking.get_chain_info(chain_descriptor);
  /staking/chains/{chainDescriptor}/claim_rewards:
    post:
      operationId: claimRewards
      summary: Claim accrued rewards
      description: 'Claims available staking rewards for the specified chain and vault. Supported chains: Solana and Polygon (POL/Matic). Behavior depends on protocol reward distribution.'
      parameters:
        - name: chainDescriptor
          required: true
          in: path
          description: Protocol identifier for the claim rewards staking operation (e.g., POL/MATIC/SOL).
          example: SOL
          schema:
            enum:
              - SOL
              - SOL_TEST
              - MATIC
              - POL
              - POL_TEST
            type: string
        - $ref: '#/components/parameters/X-Idempotency-Key'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ClaimRewardsRequest'
      responses:
        '201':
          description: Claim-rewards request accepted and created.
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
        '400':
          description: 'Bad request: missing/invalid fields, unsupported amount, or malformed payload.'
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StakingErrorSchema'
        '403':
          description: 'Forbidden: insufficient permissions, disabled feature, or restricted provider/validator.'
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StakingErrorSchema'
        '404':
          description: 'Not found: requested resource does not exist (e.g., position, validator, provider, or wallet).'
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StakingErrorSchema'
        '429':
          description: 'Rate limit exceeded: slow down and retry later.'
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StakingErrorSchema'
        '500':
          description: Internal error while processing the request.
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StakingErrorSchema'
        default:
          $ref: '#/components/responses/Error'
      tags:
        - Staking
      x-rate-limit-category: write
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<void>> = fireblocks.staking.claimRewards(stakingApiClaimRewardsRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<Void>> response = fireblocks.staking().claimRewards(claimRewardsRequest, chainDescriptor, idempotencyKey);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.staking.claim_rewards(claim_rewards_request, chain_descriptor, idempotency_key);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<void>> = fireblocks.staking.claimRewards(stakingApiClaimRewardsRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<Void>> response = fireblocks.staking().claimRewards(claimRewardsRequest, chainDescriptor, idempotencyKey);
        - lang: Python
          source: response = fireblocks.staking.claim_rewards(claim_rewards_request, chain_descriptor, idempotency_key);
  /staking/chains/{chainDescriptor}/consolidate:
    post:
      operationId: consolidate
      summary: Consolidate staking positions (ETH validator consolidation)
      description: |-
        Consolidates the source staking position into the destination, merging the balance into the destination and closing the source position once complete. Both positions must be from the same vault account (i.e. same withdrawal credentials).  On chain, this translates into a consolidation transaction, where the  source validator is consolidated into the destination validator.  Supported chains: Ethereum (ETH) only.
        Endpoint Permission: Owner, Admin, Non-Signing Admin, Signer, Approver, Editor.
        **Note:** This endpoint is currently in beta and might be subject to changes.
      parameters:
        - name: chainDescriptor
          in: path
          required: true
          description: Protocol identifier for the staking operation (e.g., ETH).
          example: ETH
          schema:
            type: string
            enum:
              - ETH
              - ETH_TEST6
              - ETH_TEST_HOODI
        - $ref: '#/components/parameters/X-Idempotency-Key'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/MergeStakeAccountsRequest'
      responses:
        '201':
          description: Merge request accepted and created.
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MergeStakeAccountsResponse'
        '400':
          description: 'Bad request: missing/invalid fields, unsupported amount, or malformed payload.'
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StakingErrorSchema'
        '403':
          description: 'Forbidden: insufficient permissions, disabled feature, or restricted provider/validator.'
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StakingErrorSchema'
        '404':
          description: 'Not found: requested resource does not exist (e.g., position, validator, provider, or wallet).'
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StakingErrorSchema'
        '429':
          description: 'Rate limit exceeded: slow down and retry later.'
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StakingErrorSchema'
        '500':
          description: Internal error while processing the request.
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StakingErrorSchema'
        default:
          $ref: '#/components/responses/Error'
      tags:
        - Staking
      x-rate-limit-category: write
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<MergeStakeAccountsResponse>> = fireblocks.staking.consolidate(stakingApiConsolidateRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<MergeStakeAccountsResponse>> response = fireblocks.staking().consolidate(mergeStakeAccountsRequest, chainDescriptor, idempotencyKey);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.staking.consolidate(merge_stake_accounts_request, chain_descriptor, idempotency_key);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<MergeStakeAccountsResponse>> = fireblocks.staking.consolidate(stakingApiConsolidateRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<MergeStakeAccountsResponse>> response = fireblocks.staking().consolidate(mergeStakeAccountsRequest, chainDescriptor, idempotencyKey);
        - lang: Python
          source: response = fireblocks.staking.consolidate(merge_stake_accounts_request, chain_descriptor, idempotency_key);
  /staking/chains/{chainDescriptor}/merge:
    post:
      operationId: mergeStakeAccounts
      summary: Merge staking positions
      description: |-
        Merges the source stake account into the destination, consolidating the balance into the destination and closing the source account once complete. Both accounts must be from the same validator provider and of same vault account.. Supported chains: Solana (SOL).
        Endpoint Permission: Owner, Admin, Non-Signing Admin, Signer, Approver, Editor.
      parameters:
        - name: chainDescriptor
          required: true
          in: path
          description: Protocol identifier for the merge staking operation (e.g., SOL).
          example: SOL
          schema:
            enum:
              - SOL
              - SOL_TEST
            type: string
        - $ref: '#/components/parameters/X-Idempotency-Key'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/MergeStakeAccountsRequest'
      responses:
        '201':
          description: Merge request accepted and created.
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MergeStakeAccountsResponse'
        '400':
          description: 'Bad request: missing/invalid fields, unsupported amount, or malformed payload.'
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StakingErrorSchema'
        '403':
          description: 'Forbidden: insufficient permissions, disabled feature, or restricted provider/validator.'
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StakingErrorSchema'
        '404':
          description: 'Not found: requested resource does not exist (e.g., position, validator, provider, or wallet).'
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StakingErrorSchema'
        '429':
          description: 'Rate limit exceeded: slow down and retry later.'
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StakingErrorSchema'
        '500':
          description: Internal error while processing the request.
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StakingErrorSchema'
        default:
          $ref: '#/components/responses/Error'
      tags:
        - Staking
      x-rate-limit-category: write
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<MergeStakeAccountsResponse>> = fireblocks.staking.mergeStakeAccounts(stakingApiMergeStakeAccountsRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<MergeStakeAccountsResponse>> response = fireblocks.staking().mergeStakeAccounts(mergeStakeAccountsRequest, chainDescriptor, idempotencyKey);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.staking.merge_stake_accounts(merge_stake_accounts_request, chain_descriptor, idempotency_key);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<MergeStakeAccountsResponse>> = fireblocks.staking.mergeStakeAccounts(stakingApiMergeStakeAccountsRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<MergeStakeAccountsResponse>> response = fireblocks.staking().mergeStakeAccounts(mergeStakeAccountsRequest, chainDescriptor, idempotencyKey);
        - lang: Python
          source: response = fireblocks.staking.merge_stake_accounts(merge_stake_accounts_request, chain_descriptor, idempotency_key);
  /staking/chains/{chainDescriptor}/split:
    post:
      operationId: split
      summary: Split a staking position
      description: 'Splits a staking position by creating a new stake account with the requested amount, while keeping the original account with the remaining balance. Supported chains: Solana (SOL).'
      parameters:
        - name: chainDescriptor
          required: true
          in: path
          description: Protocol identifier for the staking operation (e.g., SOL).
          example: SOL
          schema:
            enum:
              - SOL
              - SOL_TEST
            type: string
        - $ref: '#/components/parameters/X-Idempotency-Key'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SplitRequest'
      responses:
        '201':
          description: Split request accepted and created.
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SplitResponse'
        '400':
          description: 'Bad request: missing/invalid fields, unsupported amount, or malformed payload.'
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StakingErrorSchema'
        '403':
          description: 'Forbidden: insufficient permissions, disabled feature, or restricted provider/validator.'
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StakingErrorSchema'
        '404':
          description: 'Not found: requested resource does not exist (e.g., position, validator, provider, or wallet).'
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StakingErrorSchema'
        '429':
          description: 'Rate limit exceeded: slow down and retry later.'
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StakingErrorSchema'
        '500':
          description: Internal error while processing the request.
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StakingErrorSchema'
        default:
          $ref: '#/components/responses/Error'
      tags:
        - Staking
      x-rate-limit-category: write
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<SplitResponse>> = fireblocks.staking.split(stakingApiSplitRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<SplitResponse>> response = fireblocks.staking().split(splitRequest, chainDescriptor, idempotencyKey);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.staking.split(split_request, chain_descriptor, idempotency_key);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<SplitResponse>> = fireblocks.staking.split(stakingApiSplitRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<SplitResponse>> response = fireblocks.staking().split(splitRequest, chainDescriptor, idempotencyKey);
        - lang: Python
          source: response = fireblocks.staking.split(split_request, chain_descriptor, idempotency_key);
  /staking/chains/{chainDescriptor}/stake:
    post:
      operationId: stake
      summary: Initiate or add to existing stake
      description: 'Creates a new staking position and returns its unique ID. For Ethereum compounding validator (EIP-7251): when the ''id'' of an existing compounding validator position is provided, adds to that position; otherwise creates a new position. For Ethereum legacy validator: creates a new position regardless of existing delegations. For Cosmos chains and Ethereum liquid staking (Lido): automatically add to existing positions for the same validator provider and same vault account if one exists, otherwise create a new position. For Solana and Polygon (MATIC/POL): always create new positions regardless of existing delegations.'
      parameters:
        - name: chainDescriptor
          required: true
          in: path
          description: Protocol identifier for the stake staking operation (e.g., ATOM_COS/AXL/CELESTIA).
          schema:
            $ref: '#/components/schemas/ChainDescriptor'
        - $ref: '#/components/parameters/X-Idempotency-Key'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/StakeRequest'
      responses:
        '201':
          description: Stake request accepted and created.
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StakeResponse'
        '400':
          description: 'Bad request: missing/invalid fields, unsupported amount, or malformed payload.'
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StakingErrorSchema'
        '403':
          description: 'Forbidden: insufficient permissions, disabled feature, or restricted provider/validator.'
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StakingErrorSchema'
        '404':
          description: 'Not found: requested resource does not exist (e.g., position, validator, provider, or wallet).'
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StakingErrorSchema'
        '429':
          description: 'Rate limit exceeded: slow down and retry later.'
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StakingErrorSchema'
        '500':
          description: Internal error while processing the request.
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StakingErrorSchema'
        default:
          $ref: '#/components/responses/Error'
      tags:
        - Staking
      x-rate-limit-category: write
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<StakeResponse>> = fireblocks.staking.stake(stakingApiStakeRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<StakeResponse>> response = fireblocks.staking().stake(stakeRequest, chainDescriptor, idempotencyKey);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.staking.stake(stake_request, chain_descriptor, idempotency_key);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<StakeResponse>> = fireblocks.staking.stake(stakingApiStakeRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<StakeResponse>> response = fireblocks.staking().stake(stakeRequest, chainDescriptor, idempotencyKey);
        - lang: Python
          source: response = fireblocks.staking.stake(stake_request, chain_descriptor, idempotency_key);
  /staking/chains/{chainDescriptor}/unstake:
    post:
      operationId: unstake
      summary: Initiate unstake
      description: Submits a chain-specific unstake request.
      parameters:
        - name: chainDescriptor
          required: true
          in: path
          description: Protocol identifier for the unstake staking operation (e.g., SOL/SOL_TEST/MATIC).
          schema:
            $ref: '#/components/schemas/ChainDescriptor'
        - $ref: '#/components/parameters/X-Idempotency-Key'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UnstakeRequest'
      responses:
        '201':
          description: Unstake request accepted and created.
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
        '400':
          description: 'Bad request: missing/invalid fields, unsupported amount, or malformed payload.'
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StakingErrorSchema'
        '403':
          description: 'Forbidden: insufficient permissions, disabled feature, or restricted provider/validator.'
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StakingErrorSchema'
        '404':
          description: 'Not found: requested resource does not exist (e.g., position, validator, provider, or wallet).'
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StakingErrorSchema'
        '429':
          description: 'Rate limit exceeded: slow down and retry later.'
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StakingErrorSchema'
        '500':
          description: Internal error while processing the request.
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StakingErrorSchema'
        default:
          $ref: '#/components/responses/Error'
      tags:
        - Staking
      x-rate-limit-category: write
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<void>> = fireblocks.staking.unstake(stakingApiUnstakeRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<Void>> response = fireblocks.staking().unstake(unstakeRequest, chainDescriptor, idempotencyKey);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.staking.unstake(unstake_request, chain_descriptor, idempotency_key);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<void>> = fireblocks.staking.unstake(stakingApiUnstakeRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<Void>> response = fireblocks.staking().unstake(unstakeRequest, chainDescriptor, idempotencyKey);
        - lang: Python
          source: response = fireblocks.staking.unstake(unstake_request, chain_descriptor, idempotency_key);
  /staking/chains/{chainDescriptor}/withdraw:
    post:
      operationId: withdraw
      summary: Withdraw staked funds
      description: |-
        Withdraws funds that have completed the unbonding period. Typically requires the position to be deactivated first (unstake → unbond → withdraw). Amount and timing vary by chain protocol.

        Partial withdrawal is supported for ETH compounding validators (EIP-7251/Pectra) and Cosmos chains via the optional 'amount' field. For ETH compounding validators, the remaining balance must be at least 32 ETH after the withdrawal. For all other chains, omitting 'amount' withdraws the entire available balance.
      parameters:
        - name: chainDescriptor
          required: true
          in: path
          description: Protocol identifier for the withdraw staking operation (e.g., ATOM_COS/ETH/STETH_ETH).
          schema:
            $ref: '#/components/schemas/ChainDescriptor'
        - $ref: '#/components/parameters/X-Idempotency-Key'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/WithdrawRequest'
      responses:
        '201':
          description: Withdraw request accepted and created.
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
        '400':
          description: 'Bad request: missing/invalid fields, unsupported amount, or malformed payload.'
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StakingErrorSchema'
        '403':
          description: 'Forbidden: insufficient permissions, disabled feature, or restricted provider/validator.'
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StakingErrorSchema'
        '404':
          description: 'Not found: requested resource does not exist (e.g., position, validator, provider, or wallet).'
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StakingErrorSchema'
        '429':
          description: 'Rate limit exceeded: slow down and retry later.'
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StakingErrorSchema'
        '500':
          description: Internal error while processing the request.
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StakingErrorSchema'
        default:
          $ref: '#/components/responses/Error'
      tags:
        - Staking
      x-rate-limit-category: write
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<void>> = fireblocks.staking.withdraw(stakingApiWithdrawRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<Void>> response = fireblocks.staking().withdraw(withdrawRequest, chainDescriptor, idempotencyKey);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.staking.withdraw(withdraw_request, chain_descriptor, idempotency_key);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<void>> = fireblocks.staking.withdraw(stakingApiWithdrawRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<Void>> response = fireblocks.staking().withdraw(withdrawRequest, chainDescriptor, idempotencyKey);
        - lang: Python
          source: response = fireblocks.staking.withdraw(withdraw_request, chain_descriptor, idempotency_key);
  /staking/positions:
    get:
      operationId: getAllDelegations
      summary: List staking positions
      description: |-
        Returns all staking positions with core details: amounts, rewards, status, chain, and vault.
        Endpoint Permission: Admin, Non-Signing Admin, Signer, Approver, Editor.
      parameters:
        - name: chainDescriptor
          required: false
          in: query
          description: Protocol identifier to filter positions (e.g., ATOM_COS/AXL/CELESTIA). If omitted, positions across all supported chains are returned.
          schema:
            $ref: '#/components/schemas/ChainDescriptor'
        - name: vaultAccountId
          required: false
          in: query
          description: Filter positions by vault account ID.
          schema:
            type: string
            format: numeric
            x-fb-entity: vault_account
            example: '1'
      responses:
        '200':
          description: Positions retrieved successfully.
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StakingGetAllDelegationsResponse'
        '400':
          description: 'Bad request: missing/invalid fields, unsupported amount, or malformed payload.'
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StakingErrorSchema'
        '403':
          description: 'Forbidden: insufficient permissions, disabled feature, or restricted provider/validator.'
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StakingErrorSchema'
        '404':
          description: 'Not found: requested resource does not exist (e.g., position, validator, provider, or wallet).'
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StakingErrorSchema'
        '429':
          description: 'Rate limit exceeded: slow down and retry later.'
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StakingErrorSchema'
        '500':
          description: Internal error while processing the request.
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StakingErrorSchema'
        default:
          $ref: '#/components/responses/Error'
      tags:
        - Staking
      x-rate-limit-category: query
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<StakingGetAllDelegationsResponse>> = fireblocks.staking.getAllDelegations(stakingApiGetAllDelegationsRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<List<Delegation>>> response = fireblocks.staking().getAllDelegations(chainDescriptor, vaultAccountId);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.staking.get_all_delegations(chain_descriptor, vault_account_id);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<StakingGetAllDelegationsResponse>> = fireblocks.staking.getAllDelegations(stakingApiGetAllDelegationsRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<List<Delegation>>> response = fireblocks.staking().getAllDelegations(chainDescriptor, vaultAccountId);
        - lang: Python
          source: response = fireblocks.staking.get_all_delegations(chain_descriptor, vault_account_id);
  /staking/positions_paginated:
    get:
      operationId: getPositions
      summary: List staking positions (Paginated)
      description: |-
        Returns staking positions with core details: amounts, rewards, status, chain, and vault. It supports cursor-based pagination for efficient data retrieval. This endpoint always returns a paginated response with {data, next} structure.
        Endpoint Permission: Admin, Non-Signing Admin, Signer, Approver, Editor.
      parameters:
        - name: chainDescriptor
          required: false
          in: query
          description: Protocol identifier to filter positions (e.g., ATOM_COS/AXL/CELESTIA). If omitted, positions across all supported chains are returned.
          schema:
            $ref: '#/components/schemas/ChainDescriptor'
        - name: vaultAccountId
          required: false
          in: query
          example: '10'
          description: Filter positions by Fireblocks vault account ID. If omitted, positions across all vault accounts are returned.
          schema:
            type: string
            format: numeric
            x-fb-entity: vault_account
        - name: pageSize
          required: true
          in: query
          description: Number of results per page. When provided, the response returns a paginated object with {data, next}. If omitted, all results are returned as an array.
          schema:
            type: integer
            format: int32
            minimum: 1
            maximum: 100
            example: 10
            default: 10
        - name: pageCursor
          required: false
          in: query
          description: Cursor for the next page of results. Use the value from the 'next' field in the previous response.
          schema:
            type: string
            example: eJ0eXAiOiJKV1QiLCJhbGcOiJIUzI1NiJ9
        - name: order
          required: false
          in: query
          description: ASC / DESC ordering (default DESC)
          schema:
            default: DESC
            example: ASC
            enum:
              - ASC
              - DESC
            type: string
      responses:
        '200':
          description: Positions retrieved successfully with pagination.
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StakingPositionsPaginatedResponse'
        '400':
          description: 'Bad request: missing/invalid fields, unsupported amount, or malformed payload.'
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StakingErrorSchema'
        '403':
          description: 'Forbidden: insufficient permissions, disabled feature, or restricted provider/validator.'
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StakingErrorSchema'
        '404':
          description: 'Not found: requested resource does not exist (e.g., position, validator, provider, or wallet).'
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StakingErrorSchema'
        '429':
          description: 'Rate limit exceeded: slow down and retry later.'
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StakingErrorSchema'
        '500':
          description: Internal error while processing the request.
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StakingErrorSchema'
        default:
          $ref: '#/components/responses/Error'
      tags:
        - Staking
      x-rate-limit-category: query
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<StakingPositionsPaginatedResponse>> = fireblocks.staking.getPositions(stakingApiGetPositionsRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<StakingPositionsPaginatedResponse>> response = fireblocks.staking().getPositions(pageSize, chainDescriptor, vaultAccountId, pageCursor, order);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.staking.get_positions(page_size, chain_descriptor, vault_account_id, page_cursor, order);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<StakingPositionsPaginatedResponse>> = fireblocks.staking.getPositions(stakingApiGetPositionsRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<StakingPositionsPaginatedResponse>> response = fireblocks.staking().getPositions(pageSize, chainDescriptor, vaultAccountId, pageCursor, order);
        - lang: Python
          source: response = fireblocks.staking.get_positions(page_size, chain_descriptor, vault_account_id, page_cursor, order);
  /staking/positions/{id}:
    get:
      operationId: getDelegationById
      summary: Get position details
      description: 'Returns full details for a single staking position: amounts, rewards, status, chain, and vault.'
      parameters:
        - name: id
          required: true
          in: path
          description: Unique identifier of the staking position.
          schema:
            type: string
      responses:
        '200':
          description: Position retrieved successfully.
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Delegation'
        '400':
          description: 'Bad request: missing/invalid fields, unsupported amount, or malformed payload.'
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StakingErrorSchema'
        '403':
          description: 'Forbidden: insufficient permissions, disabled feature, or restricted provider/validator.'
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StakingErrorSchema'
        '404':
          description: 'Not found: requested resource does not exist (e.g., position, validator, provider, or wallet).'
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StakingErrorSchema'
        '429':
          description: 'Rate limit exceeded: slow down and retry later.'
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StakingErrorSchema'
        '500':
          description: Internal error while processing the request.
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StakingErrorSchema'
        default:
          $ref: '#/components/responses/Error'
      tags:
        - Staking
      x-rate-limit-category: query
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<Delegation>> = fireblocks.staking.getDelegationById(stakingApiGetDelegationByIdRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<Delegation>> response = fireblocks.staking().getDelegationById(id);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.staking.get_delegation_by_id(id);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<Delegation>> = fireblocks.staking.getDelegationById(stakingApiGetDelegationByIdRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<Delegation>> response = fireblocks.staking().getDelegationById(id);
        - lang: Python
          source: response = fireblocks.staking.get_delegation_by_id(id);
  /staking/positions/{id}/related_transactions:
    get:
      operationId: getPositionRelatedTransactions
      summary: List related transactions for a position
      description: Returns enriched transaction history for a staking position with cursor-based pagination. Includes in-flight transactions with status pending. The in-flight transaction is always returned first; completed and failed history is ordered by the order parameter.
      parameters:
        - name: id
          required: true
          in: path
          description: Unique identifier of the staking position.
          schema:
            type: string
        - name: pageSize
          required: true
          in: query
          description: 'Number of results per page (minimum: 1, maximum: 100).'
          schema:
            type: integer
            format: int32
            minimum: 1
            maximum: 100
            example: 10
        - name: pageCursor
          required: false
          in: query
          description: Cursor for the next page of results. Use the value from the 'next' field in the previous response.
          schema:
            type: string
            example: eJ0eXAiOiJKV1QiLCJhbGcOiJIUzI1NiJ9
        - name: order
          required: false
          in: query
          description: ASC / DESC ordering for completed/failed history (default DESC). The in-flight transaction is always returned first.
          schema:
            default: DESC
            example: ASC
            enum:
              - ASC
              - DESC
            type: string
      responses:
        '200':
          description: Paginated list of related transactions for the position returned successfully.
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StakingPositionRelatedTransactionsPaginatedResponse'
        '400':
          description: 'Bad request: missing/invalid fields, unsupported amount, or malformed payload.'
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StakingErrorSchema'
        '403':
          description: 'Forbidden: insufficient permissions, disabled feature, or restricted provider/validator.'
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StakingErrorSchema'
        '404':
          description: 'Not found: requested resource does not exist (e.g., position, validator, provider, or wallet).'
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StakingErrorSchema'
        '429':
          description: 'Rate limit exceeded: slow down and retry later.'
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StakingErrorSchema'
        '500':
          description: Internal error while processing the request.
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StakingErrorSchema'
        default:
          $ref: '#/components/responses/Error'
      tags:
        - Staking
      x-rate-limit-category: query
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<StakingPositionRelatedTransactionsPaginatedResponse>> = fireblocks.staking.getPositionRelatedTransactions(stakingApiGetPositionRelatedTransactionsRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<StakingPositionRelatedTransactionsPaginatedResponse>> response = fireblocks.staking().getPositionRelatedTransactions(id, pageSize, pageCursor, order);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.staking.get_position_related_transactions(id, page_size, page_cursor, order);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<StakingPositionRelatedTransactionsPaginatedResponse>> = fireblocks.staking.getPositionRelatedTransactions(stakingApiGetPositionRelatedTransactionsRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<StakingPositionRelatedTransactionsPaginatedResponse>> response = fireblocks.staking().getPositionRelatedTransactions(id, pageSize, pageCursor, order);
        - lang: Python
          source: response = fireblocks.staking.get_position_related_transactions(id, page_size, page_cursor, order);
  /staking/positions/summary:
    get:
      operationId: getSummary
      summary: Get positions summary
      description: 'Returns an aggregated cross-vault summary: active/inactive counts, total staked, and total rewards per chain.'
      responses:
        '200':
          description: Summary across all vaults returned successfully.
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DelegationSummary'
              example:
                active:
                  - chainDescriptor: ETH
                    amount: '64.036604667'
                  - chainDescriptor: SOL
                    amount: '0.077345939'
                inactive:
                  - chainDescriptor: ETH
                    amount: '0'
                  - chainDescriptor: SOL
                    amount: '0'
                rewardsAmount:
                  - chainDescriptor: ETH
                    amount: '0.036604667'
                  - chainDescriptor: SOL
                    amount: '0.001345939'
                totalStaked:
                  - chainDescriptor: ETH
                    amount: '64.036604667'
                  - chainDescriptor: SOL
                    amount: '0.077345939'
        '403':
          description: 'Forbidden: insufficient permissions, disabled feature, or restricted provider/validator.'
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StakingErrorSchema'
        '404':
          description: 'Not found: requested resource does not exist (e.g., position, validator, provider, or wallet).'
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StakingErrorSchema'
        '429':
          description: 'Rate limit exceeded: slow down and retry later.'
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StakingErrorSchema'
        '500':
          description: Internal error while processing the request.
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StakingErrorSchema'
        default:
          $ref: '#/components/responses/Error'
      tags:
        - Staking
      x-rate-limit-category: query
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<DelegationSummary>> = fireblocks.staking.getSummary();'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<DelegationSummary>> response = fireblocks.staking().getSummary();
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.staking.get_summary();
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<DelegationSummary>> = fireblocks.staking.getSummary();'
        - lang: Java
          source: CompletableFuture<ApiResponse<DelegationSummary>> response = fireblocks.staking().getSummary();
        - lang: Python
          source: response = fireblocks.staking.get_summary();
  /staking/positions/summary/vaults:
    get:
      operationId: getSummaryByVault
      summary: Get positions summary by vault
      description: 'Returns per-vault aggregates: status breakdown, total staked, and total rewards per chain.'
      responses:
        '200':
          description: Per-vault summary returned successfully.
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StakingGetSummaryByVaultResponse'
              example:
                '0':
                  active:
                    - chainDescriptor: SOL
                      amount: '0.015202376'
                  inactive:
                    - chainDescriptor: SOL
                      amount: '0'
                  rewardsAmount:
                    - chainDescriptor: SOL
                      amount: '0.000202376'
                  totalStaked:
                    - chainDescriptor: SOL
                      amount: '0.015202376'
                '1':
                  active:
                    - chainDescriptor: ETH
                      amount: '64.036604667'
                    - chainDescriptor: SOL
                      amount: '0.011191566'
                  inactive:
                    - chainDescriptor: ETH
                      amount: '0'
                    - chainDescriptor: SOL
                      amount: '0'
                  rewardsAmount:
                    - chainDescriptor: ETH
                      amount: '0.036604667'
                    - chainDescriptor: SOL
                      amount: '0.000191566'
                  totalStaked:
                    - chainDescriptor: ETH
                      amount: '64.036604667'
                    - chainDescriptor: SOL
                      amount: '0.011191566'
        '403':
          description: 'Forbidden: insufficient permissions, disabled feature, or restricted provider/validator.'
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StakingErrorSchema'
        '404':
          description: 'Not found: requested resource does not exist (e.g., position, validator, provider, or wallet).'
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StakingErrorSchema'
        '429':
          description: 'Rate limit exceeded: slow down and retry later.'
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StakingErrorSchema'
        '500':
          description: Internal error while processing the request.
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StakingErrorSchema'
        default:
          $ref: '#/components/responses/Error'
      tags:
        - Staking
      x-rate-limit-category: query
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<StakingGetSummaryByVaultResponse>> = fireblocks.staking.getSummaryByVault();'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<StakingGetSummaryByVaultResponse>> response = fireblocks.staking().getSummaryByVault();
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.staking.get_summary_by_vault();
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<StakingGetSummaryByVaultResponse>> = fireblocks.staking.getSummaryByVault();'
        - lang: Java
          source: CompletableFuture<ApiResponse<StakingGetSummaryByVaultResponse>> response = fireblocks.staking().getSummaryByVault();
        - lang: Python
          source: response = fireblocks.staking.get_summary_by_vault();
  /staking/providers:
    get:
      operationId: getProviders
      summary: List staking providers
      description: |-
        Returns all available staking providers with metadata such as name, ID, and supported chains.
        Endpoint Permission: Admin, Non-Signing Admin, Signer, Approver, Editor.
      responses:
        '200':
          description: Supported providers retrieved successfully.
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StakingGetProvidersResponse'
        '403':
          description: 'Forbidden: insufficient permissions, disabled feature, or restricted provider/validator.'
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StakingErrorSchema'
        '404':
          description: 'Not found: requested resource does not exist (e.g., position, validator, provider, or wallet).'
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StakingErrorSchema'
        '429':
          description: 'Rate limit exceeded: slow down and retry later.'
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StakingErrorSchema'
        '500':
          description: Internal error while processing the request.
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StakingErrorSchema'
        default:
          $ref: '#/components/responses/Error'
      tags:
        - Staking
      x-rate-limit-category: query
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<StakingGetProvidersResponse>> = fireblocks.staking.getProviders();'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<List<Provider>>> response = fireblocks.staking().getProviders();
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.staking.get_providers();
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<StakingGetProvidersResponse>> = fireblocks.staking.getProviders();'
        - lang: Java
          source: CompletableFuture<ApiResponse<List<Provider>>> response = fireblocks.staking().getProviders();
        - lang: Python
          source: response = fireblocks.staking.get_providers();
  /staking/providers/{providerId}/approveTermsOfService:
    post:
      operationId: approveTermsOfServiceByProviderId
      summary: Approve provider terms of service
      description: Approves the provider's terms of service. Must be called once before performing any staking operation with this provider.
      parameters:
        - name: providerId
          required: true
          in: path
          description: Unique identifier of the staking provider.
          schema:
            $ref: '#/components/schemas/StakingProvider'
        - $ref: '#/components/parameters/X-Idempotency-Key'
      responses:
        '201':
          description: Terms of service accepted.
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
        '400':
          description: 'Bad request: missing/invalid fields, unsupported amount, or malformed payload.'
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StakingErrorSchema'
        '403':
          description: 'Forbidden: insufficient permissions, disabled feature, or restricted provider/validator.'
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StakingErrorSchema'
        '404':
          description: 'Not found: requested resource does not exist (e.g., position, validator, provider, or wallet).'
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StakingErrorSchema'
        '429':
          description: 'Rate limit exceeded: slow down and retry later.'
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StakingErrorSchema'
        '500':
          description: Internal error while processing the request.
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StakingErrorSchema'
        default:
          $ref: '#/components/responses/Error'
      tags:
        - Staking
      x-rate-limit-category: write
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<void>> = fireblocks.staking.approveTermsOfServiceByProviderId(stakingApiApproveTermsOfServiceByProviderIdRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<Void>> response = fireblocks.staking().approveTermsOfServiceByProviderId(providerId, idempotencyKey);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.staking.approve_terms_of_service_by_provider_id(provider_id, idempotency_key);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<void>> = fireblocks.staking.approveTermsOfServiceByProviderId(stakingApiApproveTermsOfServiceByProviderIdRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<Void>> response = fireblocks.staking().approveTermsOfServiceByProviderId(providerId, idempotencyKey);
        - lang: Python
          source: response = fireblocks.staking.approve_terms_of_service_by_provider_id(provider_id, idempotency_key);
  /tags:
    post:
      operationId: createTag
      summary: Create a new tag
      description: |-
        Create a new tag.
        Endpoint Permissions: For protected tags: ADMIN,NON_SIGNING_ADMIN,OWNER. For non protected tags: ADMIN,NON_SIGNING_ADMIN,OWNER,SIGNER,EDITOR,APPROVER.
      tags:
        - Tags
      x-rate-limit-category: write
      parameters:
        - $ref: '#/components/parameters/X-Idempotency-Key'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateTagRequest'
      responses:
        '201':
          description: Tag created successfully
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Tag'
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<Tag>> = fireblocks.tags.createTag(tagsApiCreateTagRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<Tag>> response = fireblocks.tags().createTag(createTagRequest, idempotencyKey);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.tags.create_tag(create_tag_request, idempotency_key);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<Tag>> = fireblocks.tags.createTag(tagsApiCreateTagRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<Tag>> response = fireblocks.tags().createTag(createTagRequest, idempotencyKey);
        - lang: Python
          source: response = fireblocks.tags.create_tag(create_tag_request, idempotency_key);
    get:
      operationId: getTags
      summary: Get list of tags
      description: Retrieve a paged list of all tags according to filters.
      tags:
        - Tags
      x-rate-limit-category: query
      parameters:
        - in: query
          name: pageCursor
          description: Page cursor to get the next page.
          example: MjAyMy0xMi0xMyAyMDozNjowOC4zMDI=:MTEwMA==
          required: false
          schema:
            type: string
        - in: query
          name: pageSize
          description: Maximum number of items in the page
          required: false
          schema:
            type: number
            minimum: 1
            maximum: 100
            default: 100
        - in: query
          name: label
          description: Label prefix to filter by.
          example: VIP
          required: false
          schema:
            type: string
        - in: query
          name: tagIds
          description: List of tag IDs to filter by.
          required: false
          schema:
            type: array
            maxItems: 100
            items:
              type: string
              format: uuid
        - in: query
          name: includePendingApprovalsInfo
          description: Whether to include pending approval requests info.
          required: false
          schema:
            type: boolean
            default: false
        - in: query
          name: isProtected
          required: false
          schema:
            type: boolean
        - in: query
          name: type
          description: Filter by tag type
          required: false
          schema:
            type: array
            items:
              $ref: '#/components/schemas/TagType'
      responses:
        '200':
          description: Tags fetched successfully
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TagsPagedResponse'
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<TagsPagedResponse>> = fireblocks.tags.getTags(tagsApiGetTagsRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<TagsPagedResponse>> response = fireblocks.tags().getTags(pageCursor, pageSize, label, tagIds, includePendingApprovalsInfo, isProtected, type);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.tags.get_tags(page_cursor, page_size, label, tag_ids, include_pending_approvals_info, is_protected, type);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<TagsPagedResponse>> = fireblocks.tags.getTags(tagsApiGetTagsRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<TagsPagedResponse>> response = fireblocks.tags().getTags(pageCursor, pageSize, label, tagIds, includePendingApprovalsInfo, isProtected, type);
        - lang: Python
          source: response = fireblocks.tags.get_tags(page_cursor, page_size, label, tag_ids, include_pending_approvals_info, is_protected, type);
  /tags/{tagId}:
    get:
      summary: Get a tag
      description: Retrieve an existing tag by ID.
      tags:
        - Tags
      x-rate-limit-category: read
      parameters:
        - in: path
          name: tagId
          required: true
          description: The ID of the tag to retrieve
          schema:
            type: string
            format: uuid
      responses:
        '200':
          description: A tag object
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Tag'
      operationId: getTag
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<Tag>> = fireblocks.tags.getTag(tagsApiGetTagRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<Tag>> response = fireblocks.tags().getTag(tagId);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.tags.get_tag(tag_id);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<Tag>> = fireblocks.tags.getTag(tagsApiGetTagRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<Tag>> response = fireblocks.tags().getTag(tagId);
        - lang: Python
          source: response = fireblocks.tags.get_tag(tag_id);
    patch:
      summary: Update a tag
      description: |-
        Update an existing specified tag.
        Endpoint Permission: For protected tags: Owner, Admin, Non-Signing Admin. For non protected tags: Owner, Admin, Non-Signing Admin, Signer, Editor, Approver.
      tags:
        - Tags
      x-rate-limit-category: write
      parameters:
        - in: path
          name: tagId
          required: true
          description: The ID of the tag to update
          schema:
            type: string
            format: uuid
        - $ref: '#/components/parameters/X-Idempotency-Key'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateTagRequest'
      responses:
        '200':
          description: A tag object
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Tag'
      operationId: updateTag
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<Tag>> = fireblocks.tags.updateTag(tagsApiUpdateTagRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<Tag>> response = fireblocks.tags().updateTag(updateTagRequest, tagId, idempotencyKey);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.tags.update_tag(update_tag_request, tag_id, idempotency_key);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<Tag>> = fireblocks.tags.updateTag(tagsApiUpdateTagRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<Tag>> response = fireblocks.tags().updateTag(updateTagRequest, tagId, idempotencyKey);
        - lang: Python
          source: response = fireblocks.tags.update_tag(update_tag_request, tag_id, idempotency_key);
    delete:
      summary: Delete a tag
      description: |-
        Delete the specified tag.
        Endpoint Permission: For protected tags: Owner, Admin, Non-Signing Admin. For non protected tags: Owner, Admin, Non-Signing Admin, Signer, Editor, Approver.
      tags:
        - Tags
      x-rate-limit-category: write
      parameters:
        - in: path
          name: tagId
          required: true
          description: The ID of the tag to retrieve
          schema:
            type: string
            format: uuid
      responses:
        '204':
          description: Tag was deleted successfully
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
      operationId: deleteTag
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<void>> = fireblocks.tags.deleteTag(tagsApiDeleteTagRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<Void>> response = fireblocks.tags().deleteTag(tagId);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.tags.delete_tag(tag_id);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<void>> = fireblocks.tags.deleteTag(tagsApiDeleteTagRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<Void>> response = fireblocks.tags().deleteTag(tagId);
        - lang: Python
          source: response = fireblocks.tags.delete_tag(tag_id);
  /tags/approval_requests/{id}:
    get:
      summary: Get an approval request by id
      description: Get an approval request by id
      tags:
        - Tags
      x-rate-limit-category: read
      parameters:
        - in: path
          name: id
          required: true
          schema:
            type: string
            format: numeric
            example: '12345'
      responses:
        '200':
          description: Approval request fetched successfully
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApprovalRequest'
        '401':
          description: Unauthorized
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '404':
          description: Approval request not found
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        default:
          $ref: '#/components/responses/Error'
      operationId: getApprovalRequest
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<ApprovalRequest>> = fireblocks.tags.getApprovalRequest(tagsApiGetApprovalRequestRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<ApprovalRequest>> response = fireblocks.tags().getApprovalRequest(id);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.tags.get_approval_request(id);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<ApprovalRequest>> = fireblocks.tags.getApprovalRequest(tagsApiGetApprovalRequestRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<ApprovalRequest>> response = fireblocks.tags().getApprovalRequest(id);
        - lang: Python
          source: response = fireblocks.tags.get_approval_request(id);
  /tokenization/access_registries/{id}/addresses:
    get:
      operationId: getTokenAccessRegistryAddresses
      summary: Get current state of addresses in an access registry
      x-rate-limit-category: query
      description: Returns the currently active addresses in the access registry (added but not removed).
      parameters:
        - name: id
          required: true
          in: path
          description: The token link id
          example: fbfbfbfb-fbfb-fbfb-fbfb-fbfbfbfbfbfb
          schema:
            type: string
        - $ref: '#/components/parameters/TokenPageCursor'
        - $ref: '#/components/parameters/TokenPageSize'
        - name: sortBy
          in: query
          description: Sorting field (enum).
          required: false
          schema:
            type: string
            enum:
              - dateAdded
              - address
            default: dateAdded
        - $ref: '#/components/parameters/TokenOrder'
      responses:
        '200':
          description: Access registry addresses retrieved successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AccessRegistryCurrentStateResponse'
        default:
          $ref: '#/components/responses/Error'
      tags:
        - Tokenization
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<AccessRegistryCurrentStateResponse>> = fireblocks.tokenization.getTokenAccessRegistryAddresses(tokenizationApiGetTokenAccessRegistryAddressesRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<AccessRegistryCurrentStateResponse>> response = fireblocks.tokenization().getTokenAccessRegistryAddresses(id, pageCursor, pageSize, sortBy, order);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.tokenization.get_token_access_registry_addresses(id, page_cursor, page_size, sort_by, order);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<AccessRegistryCurrentStateResponse>> = fireblocks.tokenization.getTokenAccessRegistryAddresses(tokenizationApiGetTokenAccessRegistryAddressesRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<AccessRegistryCurrentStateResponse>> response = fireblocks.tokenization().getTokenAccessRegistryAddresses(id, pageCursor, pageSize, sortBy, order);
        - lang: Python
          source: response = fireblocks.tokenization.get_token_access_registry_addresses(id, page_cursor, page_size, sort_by, order);
  /tokenization/access_registries/{id}/summary:
    get:
      operationId: getTokenAccessRegistrySummary
      summary: Get summary of an access registry
      x-rate-limit-category: read
      description: Returns a summary of the current state of the access registry.
      parameters:
        - name: id
          required: true
          in: path
          description: The token link id
          example: fbfbfbfb-fbfb-fbfb-fbfb-fbfbfbfbfbfb
          schema:
            type: string
      responses:
        '200':
          description: Access registry summary retrieved successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AccessRegistrySummaryResponse'
        default:
          $ref: '#/components/responses/Error'
      tags:
        - Tokenization
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<AccessRegistrySummaryResponse>> = fireblocks.tokenization.getTokenAccessRegistrySummary(tokenizationApiGetTokenAccessRegistrySummaryRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<AccessRegistrySummaryResponse>> response = fireblocks.tokenization().getTokenAccessRegistrySummary(id);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.tokenization.get_token_access_registry_summary(id);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<AccessRegistrySummaryResponse>> = fireblocks.tokenization.getTokenAccessRegistrySummary(tokenizationApiGetTokenAccessRegistrySummaryRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<AccessRegistrySummaryResponse>> response = fireblocks.tokenization().getTokenAccessRegistrySummary(id);
        - lang: Python
          source: response = fireblocks.tokenization.get_token_access_registry_summary(id);
  /tokenization/collections:
    post:
      operationId: createNewCollection
      summary: Create a new collection
      description: |-
        Create a new collection and link it as a token.
        Endpoint Permission: Owner, Admin, Non-Signing Admin, Signer, and Editor.
      x-rate-limit-category: write
      parameters:
        - $ref: '#/components/parameters/X-Idempotency-Key'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CollectionDeployRequestDto'
      responses:
        '201':
          description: Collection was created successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CollectionLinkDto'
        default:
          $ref: '#/components/responses/Error'
      tags:
        - Tokenization
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<CollectionLinkDto>> = fireblocks.tokenization.createNewCollection(tokenizationApiCreateNewCollectionRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<CollectionLinkDto>> response = fireblocks.tokenization().createNewCollection(collectionDeployRequestDto, idempotencyKey);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.tokenization.create_new_collection(collection_deploy_request_dto, idempotency_key);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<CollectionLinkDto>> = fireblocks.tokenization.createNewCollection(tokenizationApiCreateNewCollectionRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<CollectionLinkDto>> response = fireblocks.tokenization().createNewCollection(collectionDeployRequestDto, idempotencyKey);
        - lang: Python
          source: response = fireblocks.tokenization.create_new_collection(collection_deploy_request_dto, idempotency_key);
    get:
      operationId: getLinkedCollections
      summary: Get collections
      description: |-
        Get collections (paginated).
        Endpoint Permission: Admin, Non-Signing Admin, Signer, Approver, Editor, Viewer.
      x-rate-limit-category: query
      parameters:
        - name: pageCursor
          required: false
          in: query
          description: Page cursor to get the next page, for example - "MjAyMy0xMi0xMyAyMDozNjowOC4zMDI=:MTEwMA=="
          schema:
            type: string
        - name: pageSize
          required: false
          in: query
          description: Number of items per page (max 100), requesting more then 100 will return 100 items
          example: 10
          schema:
            minimum: 1
            maximum: 100
            default: 100
            type: number
        - name: status
          required: false
          in: query
          description: A comma separated list of statuses to filter. Default is "COMPLETED"
          example: COMPLETED
          schema: {}
      responses:
        '200':
          description: Collection fetched successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetLinkedCollectionsPaginatedResponse'
        default:
          $ref: '#/components/responses/Error'
      tags:
        - Tokenization
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<GetLinkedCollectionsPaginatedResponse>> = fireblocks.tokenization.getLinkedCollections(tokenizationApiGetLinkedCollectionsRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<GetLinkedCollectionsPaginatedResponse>> response = fireblocks.tokenization().getLinkedCollections(pageCursor, pageSize, status);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.tokenization.get_linked_collections(page_cursor, page_size, status);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<GetLinkedCollectionsPaginatedResponse>> = fireblocks.tokenization.getLinkedCollections(tokenizationApiGetLinkedCollectionsRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<GetLinkedCollectionsPaginatedResponse>> response = fireblocks.tokenization().getLinkedCollections(pageCursor, pageSize, status);
        - lang: Python
          source: response = fireblocks.tokenization.get_linked_collections(page_cursor, page_size, status);
  /tokenization/collections/{id}:
    get:
      operationId: getCollectionById
      summary: Get a collection by id
      description: Get a collection by id
      x-rate-limit-category: read
      parameters:
        - name: id
          required: true
          in: path
          description: The token link id
          example: fbfbfbfb-fbfb-fbfb-fbfb-fbfbfbfbfbfb
          schema:
            type: string
      responses:
        '200':
          description: Collection fetched successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CollectionLinkDto'
        default:
          $ref: '#/components/responses/Error'
      tags:
        - Tokenization
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<CollectionLinkDto>> = fireblocks.tokenization.getCollectionById(tokenizationApiGetCollectionByIdRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<CollectionLinkDto>> response = fireblocks.tokenization().getCollectionById(id);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.tokenization.get_collection_by_id(id);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<CollectionLinkDto>> = fireblocks.tokenization.getCollectionById(tokenizationApiGetCollectionByIdRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<CollectionLinkDto>> response = fireblocks.tokenization().getCollectionById(id);
        - lang: Python
          source: response = fireblocks.tokenization.get_collection_by_id(id);
    delete:
      operationId: unlinkCollection
      summary: Delete a collection link
      description: Delete a collection link
      x-rate-limit-category: write
      parameters:
        - name: id
          required: true
          in: path
          description: The token link id
          example: fbfbfbfb-fbfb-fbfb-fbfb-fbfbfbfbfbfb
          schema:
            type: string
      responses:
        '204':
          description: Collection unlinked successfully
        '404':
          description: Link for collection does not exist
        default:
          $ref: '#/components/responses/Error'
      tags:
        - Tokenization
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<void>> = fireblocks.tokenization.unlinkCollection(tokenizationApiUnlinkCollectionRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<Void>> response = fireblocks.tokenization().unlinkCollection(id);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.tokenization.unlink_collection(id);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<void>> = fireblocks.tokenization.unlinkCollection(tokenizationApiUnlinkCollectionRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<Void>> response = fireblocks.tokenization().unlinkCollection(id);
        - lang: Python
          source: response = fireblocks.tokenization.unlink_collection(id);
  /tokenization/collections/{id}/tokens/{tokenId}:
    get:
      operationId: fetchCollectionTokenDetails
      summary: Get collection token details
      description: Get collection token details by id
      x-rate-limit-category: read
      parameters:
        - name: id
          required: true
          in: path
          description: The collection link id
          example: fbfbfbfb-fbfb-fbfb-fbfb-fbfbfbfbfbfb
          schema:
            type: string
        - name: tokenId
          required: true
          in: path
          description: The tokenId as it appears on the blockchain
          example: '1'
          schema:
            type: string
      responses:
        '200':
          description: Collection token details were fetched successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CollectionLinkDto'
        default:
          $ref: '#/components/responses/Error'
      tags:
        - Tokenization
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<CollectionLinkDto>> = fireblocks.tokenization.fetchCollectionTokenDetails(tokenizationApiFetchCollectionTokenDetailsRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<CollectionLinkDto>> response = fireblocks.tokenization().fetchCollectionTokenDetails(id, tokenId);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.tokenization.fetch_collection_token_details(id, token_id);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<CollectionLinkDto>> = fireblocks.tokenization.fetchCollectionTokenDetails(tokenizationApiFetchCollectionTokenDetailsRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<CollectionLinkDto>> response = fireblocks.tokenization().fetchCollectionTokenDetails(id, tokenId);
        - lang: Python
          source: response = fireblocks.tokenization.fetch_collection_token_details(id, token_id);
  /tokenization/collections/{id}/tokens/burn:
    post:
      operationId: burnCollectionToken
      summary: Burn tokens
      description: Burn tokens in a collection
      x-rate-limit-category: write
      parameters:
        - name: id
          required: true
          in: path
          description: The collection link id
          example: fbfbfbfb-fbfb-fbfb-fbfb-fbfbfbfbfbfb
          schema:
            type: string
        - $ref: '#/components/parameters/X-Idempotency-Key'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CollectionBurnRequestDto'
      responses:
        '202':
          description: Tokens burned successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CollectionBurnResponseDto'
        default:
          $ref: '#/components/responses/Error'
      tags:
        - Tokenization
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<CollectionBurnResponseDto>> = fireblocks.tokenization.burnCollectionToken(tokenizationApiBurnCollectionTokenRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<CollectionBurnResponseDto>> response = fireblocks.tokenization().burnCollectionToken(collectionBurnRequestDto, id, idempotencyKey);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.tokenization.burn_collection_token(collection_burn_request_dto, id, idempotency_key);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<CollectionBurnResponseDto>> = fireblocks.tokenization.burnCollectionToken(tokenizationApiBurnCollectionTokenRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<CollectionBurnResponseDto>> response = fireblocks.tokenization().burnCollectionToken(collectionBurnRequestDto, id, idempotencyKey);
        - lang: Python
          source: response = fireblocks.tokenization.burn_collection_token(collection_burn_request_dto, id, idempotency_key);
  /tokenization/collections/{id}/tokens/mint:
    post:
      operationId: mintCollectionToken
      summary: Mint tokens
      description: Mint tokens and upload metadata
      x-rate-limit-category: async
      parameters:
        - name: id
          required: true
          in: path
          description: The collection link id
          example: fbfbfbfb-fbfb-fbfb-fbfb-fbfbfbfbfbfb
          schema:
            type: string
        - $ref: '#/components/parameters/X-Idempotency-Key'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CollectionMintRequestDto'
      responses:
        '202':
          description: Tokens minted successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CollectionMintResponseDto'
        default:
          $ref: '#/components/responses/Error'
      tags:
        - Tokenization
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<CollectionMintResponseDto>> = fireblocks.tokenization.mintCollectionToken(tokenizationApiMintCollectionTokenRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<CollectionMintResponseDto>> response = fireblocks.tokenization().mintCollectionToken(collectionMintRequestDto, id, idempotencyKey);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.tokenization.mint_collection_token(collection_mint_request_dto, id, idempotency_key);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<CollectionMintResponseDto>> = fireblocks.tokenization.mintCollectionToken(tokenizationApiMintCollectionTokenRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<CollectionMintResponseDto>> response = fireblocks.tokenization().mintCollectionToken(collectionMintRequestDto, id, idempotencyKey);
        - lang: Python
          source: response = fireblocks.tokenization.mint_collection_token(collection_mint_request_dto, id, idempotency_key);
  /tokenization/multichain/bridge/layerzero:
    post:
      operationId: deployAndLinkAdapters
      summary: Deploy LayerZero adapters
      x-rate-limit-category: write
      description: Deploy LayerZero adapters for multichain token bridging functionality. This endpoint creates adapter contracts that enable cross-chain token transfers.
      parameters:
        - $ref: '#/components/parameters/X-Idempotency-Key'
      x-readme:
        code-samples:
          - language: javascript
            code: |-
              const payload = {
                "vaultAccountId": "0",
                "createParams": [{
                  "tokenLinkId": "123-432-1234-1234-123456789012",
                  "delegateAddress": "0xABCDEF123456789abcdef1234567890abcdef12345678",
                  "defaultAdminAddress": "0xABC123456789abcdef1234567890abcdef12345678",
                  "pauserAddress": "0xDEFABC123456789abcdef1234567890abcdef12345678"
                }],
                "displayName": "LayerZero",
                "useGasless": true
              } const deployResponse = await fireblocks.deployAndLinkAdapters(payload);
            name: Fireblocks SDK Javascript example
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<DeployLayerZeroAdaptersResponse>> = fireblocks.tokenization.deployAndLinkAdapters(tokenizationApiDeployAndLinkAdaptersRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<List<AdapterProcessingResult>>> response = fireblocks.tokenization().deployAndLinkAdapters(deployLayerZeroAdaptersRequest, idempotencyKey);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.tokenization.deploy_and_link_adapters(deploy_layer_zero_adapters_request, idempotency_key);
            name: Fireblocks SDK Python example
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DeployLayerZeroAdaptersRequest'
      responses:
        '200':
          description: LayerZero adapters deployed successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DeployLayerZeroAdaptersResponse'
        '400':
          $ref: '#/components/responses/BadRequestError'
        '404':
          $ref: '#/components/responses/OriginalTokenLinkNotFoundError'
        '409':
          $ref: '#/components/responses/TokenLinkPreparationError'
        '422':
          $ref: '#/components/responses/OriginalTokenLinkNotFungibleError'
        '500':
          $ref: '#/components/responses/InternalServerError'
      tags:
        - Tokenization
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<DeployLayerZeroAdaptersResponse>> = fireblocks.tokenization.deployAndLinkAdapters(tokenizationApiDeployAndLinkAdaptersRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<List<AdapterProcessingResult>>> response = fireblocks.tokenization().deployAndLinkAdapters(deployLayerZeroAdaptersRequest, idempotencyKey);
        - lang: Python
          source: response = fireblocks.tokenization.deploy_and_link_adapters(deploy_layer_zero_adapters_request, idempotency_key);
    delete:
      operationId: deactivateAndUnlinkAdapters
      summary: Remove LayerZero adapters
      x-rate-limit-category: write
      description: Remove LayerZero adapters by deactivating and unlinking them. This endpoint revokes roles and deactivates the specified adapter contracts.
      parameters:
        - $ref: '#/components/parameters/X-Idempotency-Key'
      x-readme:
        code-samples:
          - language: javascript
            code: |-
              const payload = {
                "vaultAccountId": "1",
                "adapterTokenLinkIds": ["d290f1ee-6c54-4b01-90e6-d701748f0851", "e290f1ee-6c54-4b01-90e6-d701748f0852"]
              } const removeResponse = await fireblocks.deactivateAndUnlinkAdapters(payload);
            name: Fireblocks SDK Javascript example
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<RemoveLayerZeroAdaptersResponse>> = fireblocks.tokenization.deactivateAndUnlinkAdapters(tokenizationApiDeactivateAndUnlinkAdaptersRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<RemoveLayerZeroAdaptersResponse>> response = fireblocks.tokenization().deactivateAndUnlinkAdapters(removeLayerZeroAdaptersRequest, idempotencyKey);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.tokenization.deactivate_and_unlink_adapters(remove_layer_zero_adapters_request, idempotency_key);
            name: Fireblocks SDK Python example
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RemoveLayerZeroAdaptersRequest'
      responses:
        '200':
          description: LayerZero adapters removal process completed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RemoveLayerZeroAdaptersResponse'
        '400':
          $ref: '#/components/responses/BadRequestError'
        '404':
          $ref: '#/components/responses/OriginalTokenLinkNotFoundError'
        '409':
          $ref: '#/components/responses/TokenLinkProcessingError'
        '500':
          $ref: '#/components/responses/InternalServerError'
      tags:
        - Tokenization
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<RemoveLayerZeroAdaptersResponse>> = fireblocks.tokenization.deactivateAndUnlinkAdapters(tokenizationApiDeactivateAndUnlinkAdaptersRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<RemoveLayerZeroAdaptersResponse>> response = fireblocks.tokenization().deactivateAndUnlinkAdapters(removeLayerZeroAdaptersRequest, idempotencyKey);
        - lang: Python
          source: response = fireblocks.tokenization.deactivate_and_unlink_adapters(remove_layer_zero_adapters_request, idempotency_key);
  /tokenization/multichain/bridge/layerzero/config/{adapterTokenLinkId}/dvns:
    get:
      operationId: getLayerZeroDvnConfig
      summary: Get LayerZero DVN configuration
      x-rate-limit-category: read
      description: Retrieve the DVN (Data Verification Network) configuration for a specific adapter. Returns DVN configurations for channels between the source adapter and its peers.
      parameters:
        - name: adapterTokenLinkId
          required: true
          in: path
          description: The token link id of the adapter token link
          example: b70701f4-d7b1-4795-a8ee-b09cdb5b850d
          schema:
            type: string
            format: uuid
        - name: peerAdapterTokenLinkId
          required: false
          in: query
          description: Optional peer adapter token link ID to filter results
          example: 6add4f2a-b206-4114-8f94-2882618ffbb4
          schema:
            type: string
            format: uuid
      x-readme:
        code-samples:
          - language: javascript
            code: const adapterTokenLinkId = "b70701f4-d7b1-4795-a8ee-b09cdb5b850d"; const peerAdapterTokenLinkId = "6add4f2a-b206-4114-8f94-2882618ffbb4"; // optional const dvnConfigResponse = await fireblocks.getLayerZeroDvnConfig(adapterTokenLinkId, { peerAdapterTokenLinkId });
            name: Fireblocks SDK Javascript example
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<GetLayerZeroDvnConfigResponse>> = fireblocks.tokenization.getLayerZeroDvnConfig(tokenizationApiGetLayerZeroDvnConfigRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<GetLayerZeroDvnConfigResponse>> response = fireblocks.tokenization().getLayerZeroDvnConfig(adapterTokenLinkId, peerAdapterTokenLinkId);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.tokenization.get_layer_zero_dvn_config(adapter_token_link_id, peer_adapter_token_link_id);
            name: Fireblocks SDK Python example
      responses:
        '200':
          description: LayerZero DVN configuration retrieved successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetLayerZeroDvnConfigResponse'
        '400':
          $ref: '#/components/responses/BadRequestError'
        '404':
          $ref: '#/components/responses/OriginalTokenLinkNotFoundError'
        '500':
          $ref: '#/components/responses/InternalServerError'
      tags:
        - Tokenization
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<GetLayerZeroDvnConfigResponse>> = fireblocks.tokenization.getLayerZeroDvnConfig(tokenizationApiGetLayerZeroDvnConfigRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<GetLayerZeroDvnConfigResponse>> response = fireblocks.tokenization().getLayerZeroDvnConfig(adapterTokenLinkId, peerAdapterTokenLinkId);
        - lang: Python
          source: response = fireblocks.tokenization.get_layer_zero_dvn_config(adapter_token_link_id, peer_adapter_token_link_id);
  /tokenization/multichain/bridge/layerzero/config/{adapterTokenLinkId}/peers:
    get:
      operationId: getLayerZeroPeers
      summary: Get LayerZero peers
      x-rate-limit-category: read
      description: Retrieve the LayerZero peers configured for a specific adapter. Returns information about peer relationships for cross-chain communication.
      parameters:
        - name: adapterTokenLinkId
          required: true
          in: path
          description: The token link id of the adapter token link
          example: b70701f4-d7b1-4795-a8ee-b09cdb5b850d
          schema:
            type: string
            format: uuid
      x-readme:
        code-samples:
          - language: javascript
            code: const adapterTokenLinkId = "b70701f4-d7b1-4795-a8ee-b09cdb5b850d"; const peersResponse = await fireblocks.getLayerZeroPeers(adapterTokenLinkId);
            name: Fireblocks SDK Javascript example
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<GetLayerZeroPeersResponse>> = fireblocks.tokenization.getLayerZeroPeers(tokenizationApiGetLayerZeroPeersRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<GetLayerZeroPeersResponse>> response = fireblocks.tokenization().getLayerZeroPeers(adapterTokenLinkId);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.tokenization.get_layer_zero_peers(adapter_token_link_id);
            name: Fireblocks SDK Python example
      responses:
        '200':
          description: LayerZero peers retrieved successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetLayerZeroPeersResponse'
        '400':
          $ref: '#/components/responses/BadRequestError'
        '404':
          $ref: '#/components/responses/OriginalTokenLinkNotFoundError'
        '500':
          $ref: '#/components/responses/InternalServerError'
      tags:
        - Tokenization
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<GetLayerZeroPeersResponse>> = fireblocks.tokenization.getLayerZeroPeers(tokenizationApiGetLayerZeroPeersRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<GetLayerZeroPeersResponse>> response = fireblocks.tokenization().getLayerZeroPeers(adapterTokenLinkId);
        - lang: Python
          source: response = fireblocks.tokenization.get_layer_zero_peers(adapter_token_link_id);
  /tokenization/multichain/bridge/layerzero/config/dvns:
    post:
      operationId: setLayerZeroDvnConfig
      summary: Set LayerZero DVN configuration
      x-rate-limit-category: write
      description: Configure DVN settings for LayerZero adapters. This endpoint sets up the DVN configuration for message verification between source and destination adapters.
      parameters:
        - $ref: '#/components/parameters/X-Idempotency-Key'
      x-readme:
        code-samples:
          - language: javascript
            code: |-
              const payload = {
                "vaultAccountId": "0",
                "sourceAdapterTokenLinkId": "b70701f4-d7b1-4795-a8ee-b09cdb5b850d",
                "destinationAdapterTokenLinkId": "6add4f2a-b206-4114-8f94-2882618ffbb4",
                "sendConfig": {
                  "dvnAddresses": ["0xABCDEF123456789abcdef1234567890abcdef12345678", "0xABC123456789abcdef1234567890abcdef12345678"],
                  "optionalDVNAddresses": ["0xDEFABC123456789abcdef1234567890abcdef12345678"],
                  "optionalThreshold": 2
                },
                "receiveConfig": {
                  "dvnAddresses": ["0xABCDEF123456789abcdef1234567890abcdef12345678", "0xABC123456789abcdef1234567890abcdef12345678"],
                  "optionalThreshold": 1
                }
              } const dvnConfigResponse = await fireblocks.setLayerZeroDvnConfig(payload);
            name: Fireblocks SDK Javascript example
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<SetLayerZeroDvnConfigResponse>> = fireblocks.tokenization.setLayerZeroDvnConfig(tokenizationApiSetLayerZeroDvnConfigRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<SetLayerZeroDvnConfigResponse>> response = fireblocks.tokenization().setLayerZeroDvnConfig(setLayerZeroDvnConfigRequest, idempotencyKey);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.tokenization.set_layer_zero_dvn_config(set_layer_zero_dvn_config_request, idempotency_key);
            name: Fireblocks SDK Python example
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SetLayerZeroDvnConfigRequest'
      responses:
        '200':
          description: LayerZero DVN configuration set successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SetLayerZeroDvnConfigResponse'
        '400':
          $ref: '#/components/responses/BadRequestError'
        '404':
          $ref: '#/components/responses/OriginalTokenLinkNotFoundError'
        '409':
          $ref: '#/components/responses/TokenLinkPreparationError'
        '422':
          $ref: '#/components/responses/BridgingProtocolBlockchainMetadataNotFoundError'
        '500':
          $ref: '#/components/responses/InternalServerError'
      tags:
        - Tokenization
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<SetLayerZeroDvnConfigResponse>> = fireblocks.tokenization.setLayerZeroDvnConfig(tokenizationApiSetLayerZeroDvnConfigRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<SetLayerZeroDvnConfigResponse>> response = fireblocks.tokenization().setLayerZeroDvnConfig(setLayerZeroDvnConfigRequest, idempotencyKey);
        - lang: Python
          source: response = fireblocks.tokenization.set_layer_zero_dvn_config(set_layer_zero_dvn_config_request, idempotency_key);
  /tokenization/multichain/bridge/layerzero/config/peers:
    post:
      operationId: setLayerZeroPeers
      summary: Set LayerZero peers
      x-rate-limit-category: write
      description: Set LayerZero peers to establish connections between adapter contracts. This endpoint creates peer relationships that enable cross-chain communication. It sets the destination adapter as a peer of the source adapter. If `bidirectional` is true, it also sets the source adapter as a peer of the destination adapter(s).
      parameters:
        - $ref: '#/components/parameters/X-Idempotency-Key'
      x-readme:
        code-samples:
          - language: javascript
            code: |-
              const payload = {
                "vaultAccountId": "0",
                "sourceAdapterTokenLinkId": "123-432-1234-1234-123456789012",
                "destinationAdapterTokenLinkIds": ["123-432-1234-1234-123456789012", "123-432-1234-1234-123456789012"],
                "bidirectional": true
              } const setPeersResponse = await fireblocks.setLayerZeroPeers(payload);
            name: Fireblocks SDK Javascript example
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<SetLayerZeroPeersResponse>> = fireblocks.tokenization.setLayerZeroPeers(tokenizationApiSetLayerZeroPeersRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<SetLayerZeroPeersResponse>> response = fireblocks.tokenization().setLayerZeroPeers(setLayerZeroPeersRequest, idempotencyKey);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.tokenization.set_layer_zero_peers(set_layer_zero_peers_request, idempotency_key);
            name: Fireblocks SDK Python example
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SetLayerZeroPeersRequest'
      responses:
        '200':
          description: LayerZero peers set successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SetLayerZeroPeersResponse'
        '400':
          $ref: '#/components/responses/BadRequestError'
        '404':
          $ref: '#/components/responses/OriginalTokenLinkNotFoundError'
        '409':
          $ref: '#/components/responses/TokenLinkPreparationError'
        '422':
          $ref: '#/components/responses/OriginalTokenLinkNotFungibleError'
        '500':
          $ref: '#/components/responses/InternalServerError'
      tags:
        - Tokenization
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<SetLayerZeroPeersResponse>> = fireblocks.tokenization.setLayerZeroPeers(tokenizationApiSetLayerZeroPeersRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<SetLayerZeroPeersResponse>> response = fireblocks.tokenization().setLayerZeroPeers(setLayerZeroPeersRequest, idempotencyKey);
        - lang: Python
          source: response = fireblocks.tokenization.set_layer_zero_peers(set_layer_zero_peers_request, idempotency_key);
    delete:
      operationId: removeLayerZeroPeers
      summary: Remove LayerZero peers
      x-rate-limit-category: write
      description: Remove LayerZero peers to disconnect adapter contracts. This endpoint removes peer relationships between LayerZero adapters.
      parameters:
        - $ref: '#/components/parameters/X-Idempotency-Key'
      x-readme:
        code-samples:
          - language: javascript
            code: |-
              const payload = {
                "vaultAccountId": "0",
                "sourceAdapterTokenLinkId": "123-432-1234-1234-123456789012",
                "destinationAdapterTokenLinkIds": ["123-432-1234-1234-123456789012", "123-432-1234-1234-123456789012"],
                "bidirectional": true
              } const removePeersResponse = await fireblocks.removeLayerZeroPeers(payload);
            name: Fireblocks SDK Javascript example
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<RemoveLayerZeroPeersResponse>> = fireblocks.tokenization.removeLayerZeroPeers(tokenizationApiRemoveLayerZeroPeersRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<RemoveLayerZeroPeersResponse>> response = fireblocks.tokenization().removeLayerZeroPeers(removeLayerZeroPeersRequest, idempotencyKey);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.tokenization.remove_layer_zero_peers(remove_layer_zero_peers_request, idempotency_key);
            name: Fireblocks SDK Python example
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RemoveLayerZeroPeersRequest'
      responses:
        '200':
          description: LayerZero peers removal process completed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RemoveLayerZeroPeersResponse'
        '400':
          $ref: '#/components/responses/BadRequestError'
        '404':
          $ref: '#/components/responses/OriginalTokenLinkNotFoundError'
        '409':
          $ref: '#/components/responses/TokenLinkProcessingError'
        '500':
          $ref: '#/components/responses/InternalServerError'
      tags:
        - Tokenization
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<RemoveLayerZeroPeersResponse>> = fireblocks.tokenization.removeLayerZeroPeers(tokenizationApiRemoveLayerZeroPeersRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<RemoveLayerZeroPeersResponse>> response = fireblocks.tokenization().removeLayerZeroPeers(removeLayerZeroPeersRequest, idempotencyKey);
        - lang: Python
          source: response = fireblocks.tokenization.remove_layer_zero_peers(remove_layer_zero_peers_request, idempotency_key);
  /tokenization/multichain/bridge/layerzero/validate:
    get:
      operationId: validateLayerZeroChannelConfig
      summary: Validate LayerZero channel configuration
      x-rate-limit-category: read
      description: Validate the LayerZero channel configuration between adapters. This endpoint checks if the channel configuration is correct and returns any validation errors.
      parameters:
        - name: adapterTokenLinkId
          required: true
          in: query
          description: The token link ID of the adapter
          example: b70701f4-d7b1-4795-a8ee-b09cdb5b850d
          schema:
            type: string
            format: uuid
        - name: peerAdapterTokenLinkId
          required: true
          in: query
          description: Peer adapter token link ID to validate against
          example: 6add4f2a-b206-4114-8f94-2882618ffbb4
          schema:
            type: string
            format: uuid
      x-readme:
        code-samples:
          - language: javascript
            code: |-
              const adapterTokenLinkId = "b70701f4-d7b1-4795-a8ee-b09cdb5b850d"; const peerAdapterTokenLinkId = "6add4f2a-b206-4114-8f94-2882618ffbb4"; const validationResponse = await fireblocks.validateLayerZeroChannelConfig({ 
                adapterTokenLinkId,
                peerAdapterTokenLinkId 
              });
            name: Fireblocks SDK Javascript example
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<ValidateLayerZeroChannelResponse>> = fireblocks.tokenization.validateLayerZeroChannelConfig(tokenizationApiValidateLayerZeroChannelConfigRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<ValidateLayerZeroChannelResponse>> response = fireblocks.tokenization().validateLayerZeroChannelConfig(adapterTokenLinkId, peerAdapterTokenLinkId);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.tokenization.validate_layer_zero_channel_config(adapter_token_link_id, peer_adapter_token_link_id);
            name: Fireblocks SDK Python example
      responses:
        '200':
          description: LayerZero channel configuration validation completed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidateLayerZeroChannelResponse'
        '400':
          $ref: '#/components/responses/BadRequestError'
        '404':
          $ref: '#/components/responses/OriginalTokenLinkNotFoundError'
        '422':
          $ref: '#/components/responses/BridgingProtocolBlockchainMetadataNotFoundError'
        '500':
          $ref: '#/components/responses/InternalServerError'
      tags:
        - Tokenization
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<ValidateLayerZeroChannelResponse>> = fireblocks.tokenization.validateLayerZeroChannelConfig(tokenizationApiValidateLayerZeroChannelConfigRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<ValidateLayerZeroChannelResponse>> response = fireblocks.tokenization().validateLayerZeroChannelConfig(adapterTokenLinkId, peerAdapterTokenLinkId);
        - lang: Python
          source: response = fireblocks.tokenization.validate_layer_zero_channel_config(adapter_token_link_id, peer_adapter_token_link_id);
  /tokenization/multichain/deterministic_address:
    post:
      operationId: getDeployableAddress
      summary: Get deterministic address for contract deployment
      x-rate-limit-category: read
      description: Get a deterministic address for contract deployment. The address is derived from the contract's bytecode and  provided salt. This endpoint is used to get the address of a contract that will be deployed in the future.
      parameters:
        - $ref: '#/components/parameters/X-Idempotency-Key'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/GetDeployableAddressRequest'
      x-readme:
        code-samples:
          - language: javascript
            code: |-
              const payload = {
                  chainDescriptor: "ETH",
                  templateId: "b70701f4-d7b1-4795-a8ee-b09cdb5b850d",
                  initParams: [
                      { name: "name", type: "string", value: "TokenName" },
                      { name: "symbol", type: "string", value: "TokenSymbol" },
                      {
                          name: "customConfigProps",
                          type: "tuple",
                          components: [
                              { name: "_isMintable", type: "bool" }
                          ],
                          value: [{ _isMintable: false }]
                      }
                  ],
                  salt: "123456789"
              }; const address = await fireblocks.getDeterministicAddress(payload);
            name: Fireblocks SDK Javascript example
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<DeployableAddressResponse>> = fireblocks.tokenization.getDeployableAddress(tokenizationApiGetDeployableAddressRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<DeployableAddressResponse>> response = fireblocks.tokenization().getDeployableAddress(getDeployableAddressRequest, idempotencyKey);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.tokenization.get_deployable_address(get_deployable_address_request, idempotency_key);
            name: Fireblocks SDK Python example
      responses:
        '200':
          description: Deterministic address for contract deployment
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DeployableAddressResponse'
        '400':
          description: Invalid parameters or template has no bytecode
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InvalidParamaterValueError'
        '409':
          description: Address is already taken
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AddressNotAvailableError'
        default:
          $ref: '#/components/responses/Error'
      tags:
        - Tokenization
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<DeployableAddressResponse>> = fireblocks.tokenization.getDeployableAddress(tokenizationApiGetDeployableAddressRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<DeployableAddressResponse>> response = fireblocks.tokenization().getDeployableAddress(getDeployableAddressRequest, idempotencyKey);
        - lang: Python
          source: response = fireblocks.tokenization.get_deployable_address(get_deployable_address_request, idempotency_key);
  /tokenization/multichain/reissue/token/{tokenLinkId}:
    post:
      summary: Reissue a multichain token
      operationId: reIssueTokenMultiChain
      x-rate-limit-category: write
      description: Reissue a multichain token. This endpoint allows you to reissue a token on one or more blockchains. The token must be initially issued using the issueTokenMultiChain endpoint.
      parameters:
        - $ref: '#/components/parameters/X-Idempotency-Key'
        - name: tokenLinkId
          in: path
          required: true
          schema:
            type: string
          description: The ID of the token link
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ReissueMultichainTokenRequest'
      x-readme:
        code-samples:
          - language: javascript
            code: |-
              const payload = {
                vaultAccountId: "0",
                chains: "ETH",
                salt: "123456789",
                chains: ["ETH", "POLYGON"]
              }; const token = await fireblocks.reIssueTokenMultiChain(tokenLinkId, payload);
            name: Fireblocks SDK Javascript example
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<IssueTokenMultichainResponse>> = fireblocks.tokenization.reIssueTokenMultiChain(tokenizationApiReIssueTokenMultiChainRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<List<TokenLinkDto>>> response = fireblocks.tokenization().reIssueTokenMultiChain(reissueMultichainTokenRequest, tokenLinkId, idempotencyKey);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.tokenization.re_issue_token_multi_chain(reissue_multichain_token_request, token_link_id, idempotency_key);
            name: Fireblocks SDK Python example
      responses:
        '201':
          description: Successfully reissued multichain token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IssueTokenMultichainResponse'
        '400':
          description: Invalid input
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TokenLinkNotMultichainCompatibleHttpError'
        '404':
          description: Deployed contract not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DeployedContractNotFoundError'
        '409':
          description: Address is already taken
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AddressNotAvailableError'
        default:
          $ref: '#/components/responses/Error'
      tags:
        - Tokenization
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<IssueTokenMultichainResponse>> = fireblocks.tokenization.reIssueTokenMultiChain(tokenizationApiReIssueTokenMultiChainRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<List<TokenLinkDto>>> response = fireblocks.tokenization().reIssueTokenMultiChain(reissueMultichainTokenRequest, tokenLinkId, idempotencyKey);
        - lang: Python
          source: response = fireblocks.tokenization.re_issue_token_multi_chain(reissue_multichain_token_request, token_link_id, idempotency_key);
  /tokenization/multichain/tokens:
    post:
      operationId: issueTokenMultiChain
      summary: Issue a token on one or more blockchains
      x-rate-limit-category: write
      description: Facilitates the creation of a new token on one or more blockchains.
      parameters:
        - $ref: '#/components/parameters/X-Idempotency-Key'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateMultichainTokenRequest'
      x-readme:
        code-samples:
          - language: javascript
            code: |-
              const payload = {
                  vaultAccountId: "0",
                  createParams: {
                    contractId: "b70701f4-d7b1-4795-a8ee-b09cdb5b850d",
                    deployFunctionParams: [
                      { name: "name", type: "string", value: "TokenName" },
                      { name: "symbol", type: "string", value: "TokenSymbol" },
                      {
                          name: "customConfigProps",
                          type: "tuple",
                          components: [
                              { name: "_isMintable", type: "bool" }
                          ],
                          value: [{ _isMintable: false }]
                      },
                    ],
                  },
                  salt: "123456789",
                  chains: ["ETH", "POLYGON"]
              }; const token = await fireblocks.issueTokenMultiChain(payload);
            name: Fireblocks SDK Javascript example
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<IssueTokenMultichainResponse>> = fireblocks.tokenization.issueTokenMultiChain(tokenizationApiIssueTokenMultiChainRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<List<TokenLinkDto>>> response = fireblocks.tokenization().issueTokenMultiChain(createMultichainTokenRequest, idempotencyKey);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.tokenization.issue_token_multi_chain(create_multichain_token_request, idempotency_key);
            name: Fireblocks SDK Python example
      responses:
        '201':
          description: Tokens were created successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IssueTokenMultichainResponse'
        '400':
          description: Invalid input.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InvalidParamaterValueError'
        '409':
          description: Address is already taken.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AddressNotAvailableError'
      tags:
        - Tokenization
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<IssueTokenMultichainResponse>> = fireblocks.tokenization.issueTokenMultiChain(tokenizationApiIssueTokenMultiChainRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<List<TokenLinkDto>>> response = fireblocks.tokenization().issueTokenMultiChain(createMultichainTokenRequest, idempotencyKey);
        - lang: Python
          source: response = fireblocks.tokenization.issue_token_multi_chain(create_multichain_token_request, idempotency_key);
  /tokenization/tokens:
    post:
      operationId: issueNewToken
      summary: Issue a new token
      x-rate-limit-category: write
      description: |-
        Facilitates the creation of a new token, supporting both EVM-based and Stellar/Ripple platforms. For EVM, it deploys the corresponding contract template to the blockchain and links the token to the workspace. For Stellar/Ripple, it links a newly created token directly to the workspace without deploying a contract. Returns the token link with status "PENDING" until the token is deployed or "SUCCESS" if no deployment is needed.
        Endpoint Permission: Owner, Admin, Non-Signing Admin, Signer, and Editor.
      parameters:
        - $ref: '#/components/parameters/X-Idempotency-Key'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateTokenRequestDto'
      x-readme:
        code-samples:
          - language: python
            code: token = fireblocks.issue_new_token(payload)
            name: Fireblocks SDK Python example (Legacy)
          - language: javascript
            code: const token = await fireblocks.issueNewToken(payload);
            name: Fireblocks SDK Javascript example
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<TokenLinkDto>> = fireblocks.tokenization.issueNewToken(tokenizationApiIssueNewTokenRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<TokenLinkDto>> response = fireblocks.tokenization().issueNewToken(createTokenRequestDto, idempotencyKey);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.tokenization.issue_new_token(create_token_request_dto, idempotency_key);
            name: Fireblocks SDK Python example
      responses:
        '201':
          description: Token was created successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TokenLinkDto'
        '409':
          description: Asset already exists
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AssetAlreadyExistHttpError'
      tags:
        - Tokenization
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<TokenLinkDto>> = fireblocks.tokenization.issueNewToken(tokenizationApiIssueNewTokenRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<TokenLinkDto>> response = fireblocks.tokenization().issueNewToken(createTokenRequestDto, idempotencyKey);
        - lang: Python
          source: response = fireblocks.tokenization.issue_new_token(create_token_request_dto, idempotency_key);
    get:
      operationId: getLinkedTokens
      summary: List all linked tokens
      description: Return all linked tokens (paginated)
      x-rate-limit-category: query
      parameters:
        - name: pageCursor
          required: false
          in: query
          description: Page cursor to get the next page
          example: MjAyMy0xMi0xMyAyMDozNjowOC4zMDI=:MTEwMA==
          schema:
            type: string
        - name: pageSize
          required: false
          in: query
          description: Number of items per page, requesting more then max will return max items
          example: 10
          schema:
            minimum: 1
            maximum: 100
            type: number
        - name: status
          required: false
          in: query
          description: A comma separated list of statuses to filter. Default is "COMPLETED"
          example: COMPLETED
          schema: {}
      x-readme:
        code-samples:
          - language: python
            code: linked_tokens = fireblocks.get_linked_tokens(payload)
            name: Fireblocks SDK Python example (Legacy)
          - language: javascript
            code: const linkedTokens = await fireblocks.getLinkedTokens(payload);
            name: Fireblocks SDK Javascript example
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<TokensPaginatedResponse>> = fireblocks.tokenization.getLinkedTokens(tokenizationApiGetLinkedTokensRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<TokensPaginatedResponse>> response = fireblocks.tokenization().getLinkedTokens(pageCursor, pageSize, status);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.tokenization.get_linked_tokens(page_cursor, page_size, status);
            name: Fireblocks SDK Python example
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TokensPaginatedResponse'
        default:
          $ref: '#/components/responses/Error'
      tags:
        - Tokenization
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<TokensPaginatedResponse>> = fireblocks.tokenization.getLinkedTokens(tokenizationApiGetLinkedTokensRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<TokensPaginatedResponse>> response = fireblocks.tokenization().getLinkedTokens(pageCursor, pageSize, status);
        - lang: Python
          source: response = fireblocks.tokenization.get_linked_tokens(page_cursor, page_size, status);
  /tokenization/tokens/{id}:
    delete:
      operationId: unlink
      summary: Unlink a token
      x-rate-limit-category: write
      description: Unlink a token. The token will be unlinked from the workspace. The token will not be deleted on chain nor the refId, only the link to the workspace will be removed.
      parameters:
        - name: id
          required: true
          in: path
          description: The token link id
          example: fbfbfbfb-fbfb-fbfb-fbfb-fbfbfbfbfbfb
          schema:
            type: string
      x-readme:
        code-samples:
          - language: python
            code: token = fireblocks.unlink_token(token_id)
            name: Fireblocks SDK Python example (Legacy)
          - language: javascript
            code: const token = await fireblocks.unlinkToken(tokenId);
            name: Fireblocks SDK Javascript example
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<void>> = fireblocks.tokenization.unlink(tokenizationApiUnlinkRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<Void>> response = fireblocks.tokenization().unlink(id);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.tokenization.unlink(id);
            name: Fireblocks SDK Python example
      responses:
        '200':
          description: Token unlinked successfully
          content: {}
        '204':
          description: ''
          content: {}
        '404':
          description: Link did not exist
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundException'
        default:
          $ref: '#/components/responses/Error'
      tags:
        - Tokenization
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<void>> = fireblocks.tokenization.unlink(tokenizationApiUnlinkRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<Void>> response = fireblocks.tokenization().unlink(id);
        - lang: Python
          source: response = fireblocks.tokenization.unlink(id);
    get:
      operationId: getLinkedToken
      summary: Return a linked token
      description: Return a linked token, with its status and metadata.
      x-rate-limit-category: read
      parameters:
        - name: id
          required: true
          in: path
          description: The token link id
          example: fbfbfbfb-fbfb-fbfb-fbfb-fbfbfbfbfbfb
          schema:
            type: string
      x-readme:
        code-samples:
          - language: python
            code: token = fireblocks.get_linked_token(token_id)
            name: Fireblocks SDK Python example (Legacy)
          - language: javascript
            code: const token = await fireblocks.getLinkedToken(tokenId);
            name: Fireblocks SDK Javascript example
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<TokenLinkDto>> = fireblocks.tokenization.getLinkedToken(tokenizationApiGetLinkedTokenRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<TokenLinkDto>> response = fireblocks.tokenization().getLinkedToken(id);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.tokenization.get_linked_token(id);
            name: Fireblocks SDK Python example
      responses:
        '200':
          description: Token fetched successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TokenLinkDto'
        default:
          $ref: '#/components/responses/Error'
      tags:
        - Tokenization
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<TokenLinkDto>> = fireblocks.tokenization.getLinkedToken(tokenizationApiGetLinkedTokenRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<TokenLinkDto>> response = fireblocks.tokenization().getLinkedToken(id);
        - lang: Python
          source: response = fireblocks.tokenization.get_linked_token(id);
  /tokenization/tokens/{id}/balances:
    get:
      operationId: getTokenBalances
      summary: Get latest balances for all holders of a token
      x-rate-limit-category: query
      description: Returns the latest balance for each unique address holding this token.
      parameters:
        - name: id
          required: true
          in: path
          description: The token link id
          example: fbfbfbfb-fbfb-fbfb-fbfb-fbfbfbfbfbfb
          schema:
            type: string
        - $ref: '#/components/parameters/TokenPageCursor'
        - $ref: '#/components/parameters/TokenPageSize'
        - $ref: '#/components/parameters/TokenBalancesSortBy'
        - $ref: '#/components/parameters/TokenOrder'
      responses:
        '200':
          description: Successfully retrieved the latest balances for the token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AddressBalancePagedResponse'
        '404':
          description: Token not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundException'
        default:
          $ref: '#/components/responses/Error'
      tags:
        - Tokenization
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<AddressBalancePagedResponse>> = fireblocks.tokenization.getTokenBalances(tokenizationApiGetTokenBalancesRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<AddressBalancePagedResponse>> response = fireblocks.tokenization().getTokenBalances(id, pageCursor, pageSize, sortBy, order);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.tokenization.get_token_balances(id, page_cursor, page_size, sort_by, order);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<AddressBalancePagedResponse>> = fireblocks.tokenization.getTokenBalances(tokenizationApiGetTokenBalancesRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<AddressBalancePagedResponse>> response = fireblocks.tokenization().getTokenBalances(id, pageCursor, pageSize, sortBy, order);
        - lang: Python
          source: response = fireblocks.tokenization.get_token_balances(id, page_cursor, page_size, sort_by, order);
  /tokenization/tokens/{id}/balances/{accountAddress}:
    get:
      operationId: getTokenBalanceForAccount
      summary: Get the latest balance for a specific account
      x-rate-limit-category: read
      description: Returns the latest token balance for the specified account address.
      parameters:
        - name: id
          required: true
          in: path
          description: The token link id
          example: fbfbfbfb-fbfb-fbfb-fbfb-fbfbfbfbfbfb
          schema:
            type: string
        - $ref: '#/components/parameters/TokenAccountAddress'
      responses:
        '200':
          description: Successfully retrieved the balance for the account
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AddressBalanceItemDto'
        '404':
          description: Token not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundException'
        default:
          $ref: '#/components/responses/Error'
      tags:
        - Tokenization
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<AddressBalanceItemDto>> = fireblocks.tokenization.getTokenBalanceForAccount(tokenizationApiGetTokenBalanceForAccountRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<AddressBalanceItemDto>> response = fireblocks.tokenization().getTokenBalanceForAccount(id, accountAddress);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.tokenization.get_token_balance_for_account(id, account_address);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<AddressBalanceItemDto>> = fireblocks.tokenization.getTokenBalanceForAccount(tokenizationApiGetTokenBalanceForAccountRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<AddressBalanceItemDto>> response = fireblocks.tokenization().getTokenBalanceForAccount(id, accountAddress);
        - lang: Python
          source: response = fireblocks.tokenization.get_token_balance_for_account(id, account_address);
  /tokenization/tokens/{id}/balances/{accountAddress}/history:
    get:
      operationId: getTokenBalanceHistory
      summary: Get balance history for a specific account
      x-rate-limit-category: query
      description: Returns paginated balance history for the specified account address with optional time-range filtering.
      parameters:
        - name: id
          required: true
          in: path
          description: The token link id
          example: fbfbfbfb-fbfb-fbfb-fbfb-fbfbfbfbfbfb
          schema:
            type: string
        - $ref: '#/components/parameters/TokenAccountAddress'
        - $ref: '#/components/parameters/TokenStartDate'
        - $ref: '#/components/parameters/TokenEndDate'
        - $ref: '#/components/parameters/TokenInterval'
        - $ref: '#/components/parameters/TokenPageCursor'
        - $ref: '#/components/parameters/TokenPageSize'
        - $ref: '#/components/parameters/TokenSortByTimestamp'
        - $ref: '#/components/parameters/TokenOrder'
      responses:
        '200':
          description: Successfully retrieved the balance history
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BalanceHistoryPagedResponse'
        '404':
          description: Token not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundException'
        default:
          $ref: '#/components/responses/Error'
      tags:
        - Tokenization
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<BalanceHistoryPagedResponse>> = fireblocks.tokenization.getTokenBalanceHistory(tokenizationApiGetTokenBalanceHistoryRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<BalanceHistoryPagedResponse>> response = fireblocks.tokenization().getTokenBalanceHistory(id, accountAddress, startDate, endDate, interval, pageCursor, pageSize, sortBy, order);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.tokenization.get_token_balance_history(id, account_address, start_date, end_date, interval, page_cursor, page_size, sort_by, order);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<BalanceHistoryPagedResponse>> = fireblocks.tokenization.getTokenBalanceHistory(tokenizationApiGetTokenBalanceHistoryRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<BalanceHistoryPagedResponse>> response = fireblocks.tokenization().getTokenBalanceHistory(id, accountAddress, startDate, endDate, interval, pageCursor, pageSize, sortBy, order);
        - lang: Python
          source: response = fireblocks.tokenization.get_token_balance_history(id, account_address, start_date, end_date, interval, page_cursor, page_size, sort_by, order);
  /tokenization/tokens/{id}/rbac:
    get:
      operationId: getTokenRbac
      summary: Get active RBAC roles for a token
      x-rate-limit-category: read
      description: Returns a list of currently active roles for the token contract.
      parameters:
        - name: id
          required: true
          in: path
          description: The token link id
          example: fbfbfbfb-fbfb-fbfb-fbfb-fbfbfbfbfbfb
          schema:
            type: string
      responses:
        '200':
          description: Successfully retrieved the list of active roles
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ActiveRolesResponse'
        '404':
          description: Token not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundException'
        default:
          $ref: '#/components/responses/Error'
      tags:
        - Tokenization
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<ActiveRolesResponse>> = fireblocks.tokenization.getTokenRbac(tokenizationApiGetTokenRbacRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<ActiveRolesResponse>> response = fireblocks.tokenization().getTokenRbac(id);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.tokenization.get_token_rbac(id);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<ActiveRolesResponse>> = fireblocks.tokenization.getTokenRbac(tokenizationApiGetTokenRbacRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<ActiveRolesResponse>> response = fireblocks.tokenization().getTokenRbac(id);
        - lang: Python
          source: response = fireblocks.tokenization.get_token_rbac(id);
  /tokenization/tokens/{id}/summary:
    get:
      operationId: getTokenContractSummary
      summary: Get onchain summary for a token
      x-rate-limit-category: read
      description: Returns the total number of unique holders and the total supply for the token contract.
      parameters:
        - name: id
          required: true
          in: path
          description: The token link id
          example: fbfbfbfb-fbfb-fbfb-fbfb-fbfbfbfbfbfb
          schema:
            type: string
      responses:
        '200':
          description: Successfully retrieved the summary for the token contract
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TokenContractSummaryResponse'
        '404':
          description: Token not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundException'
        default:
          $ref: '#/components/responses/Error'
      tags:
        - Tokenization
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<TokenContractSummaryResponse>> = fireblocks.tokenization.getTokenContractSummary(tokenizationApiGetTokenContractSummaryRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<TokenContractSummaryResponse>> response = fireblocks.tokenization().getTokenContractSummary(id);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.tokenization.get_token_contract_summary(id);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<TokenContractSummaryResponse>> = fireblocks.tokenization.getTokenContractSummary(tokenizationApiGetTokenContractSummaryRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<TokenContractSummaryResponse>> response = fireblocks.tokenization().getTokenContractSummary(id);
        - lang: Python
          source: response = fireblocks.tokenization.get_token_contract_summary(id);
  /tokenization/tokens/{id}/total_supply:
    get:
      operationId: getTokenTotalSupply
      summary: Get historical total supply for a token
      x-rate-limit-category: query
      description: Returns paginated total supply history for the token contract with optional time-range filtering and binning.
      parameters:
        - name: id
          required: true
          in: path
          description: The token link id
          example: fbfbfbfb-fbfb-fbfb-fbfb-fbfbfbfbfbfb
          schema:
            type: string
        - $ref: '#/components/parameters/TokenStartDate'
        - $ref: '#/components/parameters/TokenEndDate'
        - $ref: '#/components/parameters/TokenInterval'
        - $ref: '#/components/parameters/TokenPageCursor'
        - $ref: '#/components/parameters/TokenPageSize'
        - $ref: '#/components/parameters/TokenSortByTimestamp'
        - $ref: '#/components/parameters/TokenOrder'
      responses:
        '200':
          description: Successfully retrieved the token total supply history
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TotalSupplyPagedResponse'
        '404':
          description: Token not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundException'
        default:
          $ref: '#/components/responses/Error'
      tags:
        - Tokenization
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<TotalSupplyPagedResponse>> = fireblocks.tokenization.getTokenTotalSupply(tokenizationApiGetTokenTotalSupplyRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<TotalSupplyPagedResponse>> response = fireblocks.tokenization().getTokenTotalSupply(id, startDate, endDate, interval, pageCursor, pageSize, sortBy, order);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.tokenization.get_token_total_supply(id, start_date, end_date, interval, page_cursor, page_size, sort_by, order);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<TotalSupplyPagedResponse>> = fireblocks.tokenization.getTokenTotalSupply(tokenizationApiGetTokenTotalSupplyRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<TotalSupplyPagedResponse>> response = fireblocks.tokenization().getTokenTotalSupply(id, startDate, endDate, interval, pageCursor, pageSize, sortBy, order);
        - lang: Python
          source: response = fireblocks.tokenization.get_token_total_supply(id, start_date, end_date, interval, page_cursor, page_size, sort_by, order);
  /tokenization/tokens/{id}/transactions:
    get:
      operationId: getTokenTransactions
      summary: Get onchain transactions for a token
      x-rate-limit-category: query
      description: Returns a paginated list of onchain transactions for the token contract, optionally filtered by date range.
      parameters:
        - name: id
          required: true
          in: path
          description: The token link id
          example: fbfbfbfb-fbfb-fbfb-fbfb-fbfbfbfbfbfb
          schema:
            type: string
        - $ref: '#/components/parameters/TokenStartDate'
        - $ref: '#/components/parameters/TokenEndDate'
        - $ref: '#/components/parameters/TokenPageCursor'
        - $ref: '#/components/parameters/TokenPageSize'
        - name: sortBy
          in: query
          description: Sorting field (enum).
          required: false
          schema:
            type: string
            enum:
              - blockTimestamp
              - blockNumber
              - transactionHash
            default: blockTimestamp
        - $ref: '#/components/parameters/TokenOrder'
      responses:
        '200':
          description: Onchain transactions fetched successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OnchainTransactionsPagedResponse'
        '404':
          description: Token not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundException'
        default:
          $ref: '#/components/responses/Error'
      tags:
        - Tokenization
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<OnchainTransactionsPagedResponse>> = fireblocks.tokenization.getTokenTransactions(tokenizationApiGetTokenTransactionsRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<OnchainTransactionsPagedResponse>> response = fireblocks.tokenization().getTokenTransactions(id, startDate, endDate, pageCursor, pageSize, sortBy, order);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.tokenization.get_token_transactions(id, start_date, end_date, page_cursor, page_size, sort_by, order);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<OnchainTransactionsPagedResponse>> = fireblocks.tokenization.getTokenTransactions(tokenizationApiGetTokenTransactionsRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<OnchainTransactionsPagedResponse>> response = fireblocks.tokenization().getTokenTransactions(id, startDate, endDate, pageCursor, pageSize, sortBy, order);
        - lang: Python
          source: response = fireblocks.tokenization.get_token_transactions(id, start_date, end_date, page_cursor, page_size, sort_by, order);
  /tokenization/tokens/{id}/transfers:
    get:
      operationId: getTokenTransfers
      summary: Get onchain transfers for a token
      x-rate-limit-category: query
      description: Returns a paginated list of ERC20 transfer events for the token contract, optionally filtered by date range.
      parameters:
        - name: id
          required: true
          in: path
          description: The token link id
          example: fbfbfbfb-fbfb-fbfb-fbfb-fbfbfbfbfbfb
          schema:
            type: string
        - $ref: '#/components/parameters/TokenStartDate'
        - $ref: '#/components/parameters/TokenEndDate'
        - $ref: '#/components/parameters/TokenPageCursor'
        - $ref: '#/components/parameters/TokenPageSize'
        - name: sortBy
          in: query
          description: Sorting field for transfers
          required: false
          schema:
            type: string
            enum:
              - blockTimeStamp
            default: blockTimeStamp
        - $ref: '#/components/parameters/TokenOrder'
        - name: sender
          in: query
          required: false
          description: Filter transfers by sender address
          schema:
            type: string
            example: '0xabcdef1234567890abcdef1234567890abcdef12'
        - name: receiver
          in: query
          required: false
          description: Filter transfers by receiver address
          schema:
            type: string
            example: '0x1234567890abcdef1234567890abcdef12345678'
      responses:
        '200':
          description: Onchain transfers fetched successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OnchainTransfersPagedResponse'
        '404':
          description: Token not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundException'
        default:
          $ref: '#/components/responses/Error'
      tags:
        - Tokenization
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<OnchainTransfersPagedResponse>> = fireblocks.tokenization.getTokenTransfers(tokenizationApiGetTokenTransfersRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<OnchainTransfersPagedResponse>> response = fireblocks.tokenization().getTokenTransfers(id, startDate, endDate, pageCursor, pageSize, sortBy, order, sender, receiver);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.tokenization.get_token_transfers(id, start_date, end_date, page_cursor, page_size, sort_by, order, sender, receiver);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<OnchainTransfersPagedResponse>> = fireblocks.tokenization.getTokenTransfers(tokenizationApiGetTokenTransfersRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<OnchainTransfersPagedResponse>> response = fireblocks.tokenization().getTokenTransfers(id, startDate, endDate, pageCursor, pageSize, sortBy, order, sender, receiver);
        - lang: Python
          source: response = fireblocks.tokenization.get_token_transfers(id, start_date, end_date, page_cursor, page_size, sort_by, order, sender, receiver);
  /tokenization/tokens/count:
    get:
      operationId: getLinkedTokensCount
      summary: Get the total count of linked tokens
      x-rate-limit-category: read
      description: Get the total count of linked tokens
      x-readme:
        code-samples:
          - language: python
            code: tokens_count = fireblocks.get_linked_tokens_count()
            name: Fireblocks SDK Python example (Legacy)
          - language: javascript
            code: const tokensCount = await fireblocks.getLinkedTokensCount();
            name: Fireblocks SDK Javascript example
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<LinkedTokensCount>> = fireblocks.tokenization.getLinkedTokensCount();'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<LinkedTokensCount>> response = fireblocks.tokenization().getLinkedTokensCount();
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.tokenization.get_linked_tokens_count();
            name: Fireblocks SDK Python example
      responses:
        '200':
          description: Count fetched successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LinkedTokensCount'
        default:
          $ref: '#/components/responses/Error'
      tags:
        - Tokenization
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<LinkedTokensCount>> = fireblocks.tokenization.getLinkedTokensCount();'
        - lang: Java
          source: CompletableFuture<ApiResponse<LinkedTokensCount>> response = fireblocks.tokenization().getLinkedTokensCount();
        - lang: Python
          source: response = fireblocks.tokenization.get_linked_tokens_count();
  /tokenization/tokens/link:
    post:
      operationId: link
      summary: Link a contract
      description: Link an a contract
      x-rate-limit-category: write
      parameters:
        - $ref: '#/components/parameters/X-Idempotency-Key'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TokenLinkRequestDto'
      responses:
        '200':
          description: Token linked successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TokenLinkDto'
        '201':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TokenLinkDto'
        '404':
          description: Could not find the underlying contract to link to
        '409':
          description: Token link for {refId} already exists
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TokenLinkExistsHttpError'
        default:
          $ref: '#/components/responses/Error'
      tags:
        - Tokenization
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<TokenLinkDto>> = fireblocks.tokenization.link(tokenizationApiLinkRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<TokenLinkDto>> response = fireblocks.tokenization().link(tokenLinkRequestDto, idempotencyKey);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.tokenization.link(token_link_request_dto, idempotency_key);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<TokenLinkDto>> = fireblocks.tokenization.link(tokenizationApiLinkRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<TokenLinkDto>> response = fireblocks.tokenization().link(tokenLinkRequestDto, idempotencyKey);
        - lang: Python
          source: response = fireblocks.tokenization.link(token_link_request_dto, idempotency_key);
  /trading/offers:
    post:
      operationId: fetchAllOffers
      summary: Get all offers
      x-rate-limit-category: external_query
      parameters:
        - $ref: '#/components/parameters/X-Idempotency-Key'
      tags:
        - Trading (Beta)
      description: |-
        Retrieve all available offers across the workspace for a given asset pair.
        Always operates in open scope — no provider or account selection required.
        Returns a mix of indicative rates and committed quotes as applicable per provider.

        If no slippageBps is provided, it defaults to 50 bps (0.5%).
        Slippage and settlement configuration do not affect the returned rate.

        Note: These endpoints are currently in beta and might be subject to changes.

        If you want to participate and learn more about the Fireblocks Trading, please contact your Fireblocks Customer Success Manager or send an email to CSM@fireblocks.com.

        Endpoint Permission: Owner, Admin, Non-Signing Admin, Signer, Editor.

        For detailed information about error codes and troubleshooting, please refer to our [API Error Codes documentation](https://developers.fireblocks.com/reference/api-error-codes).
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateOffersRequest'
      responses:
        '201':
          description: Offers response
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OffersResponse'
        '400':
          description: 'Bad request: invalid input parameters, malformed request body, or validation failure.'
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TradingErrorSchema'
        '401':
          description: Unauthorized. Missing / invalid JWT token in Authorization header.
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TradingErrorSchema'
        '403':
          description: 'Forbidden: insufficient permissions, disabled feature, or restricted access.'
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TradingErrorSchema'
        '429':
          description: 'Rate limit exceeded: slow down and retry later.'
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TradingErrorSchema'
        5XX:
          description: Internal error while processing the request.
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TradingErrorSchema'
        default:
          $ref: '#/components/responses/Error'
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<OffersResponse>> = fireblocks.tradingBeta.fetchAllOffers(tradingBetaApiFetchAllOffersRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<OffersResponse>> response = fireblocks.tradingBeta().fetchAllOffers(createOffersRequest, idempotencyKey);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.trading_beta.fetch_all_offers(create_offers_request, idempotency_key);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<OffersResponse>> = fireblocks.tradingBeta.fetchAllOffers(tradingBetaApiFetchAllOffersRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<OffersResponse>> response = fireblocks.tradingBeta().fetchAllOffers(createOffersRequest, idempotencyKey);
        - lang: Python
          source: response = fireblocks.trading_beta.fetch_all_offers(create_offers_request, idempotency_key);
  /trading/orders:
    post:
      operationId: createOrder
      summary: Create an order
      x-rate-limit-category: write
      parameters:
        - $ref: '#/components/parameters/X-Idempotency-Key'
      tags:
        - Trading (Beta)
      description: |-
        Create an order to buy or sell an asset. If no source is given, an external source will be use.

        Note: These endpoints are currently in beta and might be subject to changes.

        If you want to participate and learn more about the Fireblocks Trading, please contact your Fireblocks Customer Success Manager or send an email to CSM@fireblocks.com.

        Endpoint Permission: Owner, Admin, Non-Signing Admin, Signer, Editor.

        For detailed information about error codes and troubleshooting, please refer to our [API Error Codes documentation](https://developers.fireblocks.com/reference/api-error-codes).
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateOrderRequest'
      responses:
        '202':
          description: Order creation response
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OrderDetails'
        '400':
          description: 'Bad request: invalid input parameters, malformed request body, or validation failure.'
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TradingErrorSchema'
        '401':
          description: Unauthorized. Missing / invalid JWT token in Authorization header.
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TradingErrorSchema'
        '403':
          description: 'Forbidden: insufficient permissions, disabled feature, or restricted access.'
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TradingErrorSchema'
        '429':
          description: 'Rate limit exceeded: slow down and retry later.'
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TradingErrorSchema'
        5XX:
          description: Internal error while processing the request.
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TradingErrorSchema'
        default:
          $ref: '#/components/responses/Error'
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<OrderDetails>> = fireblocks.tradingBeta.createOrder(tradingBetaApiCreateOrderRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<OrderDetails>> response = fireblocks.tradingBeta().createOrder(createOrderRequest, idempotencyKey);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.trading_beta.create_order(create_order_request, idempotency_key);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<OrderDetails>> = fireblocks.tradingBeta.createOrder(tradingBetaApiCreateOrderRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<OrderDetails>> response = fireblocks.tradingBeta().createOrder(createOrderRequest, idempotencyKey);
        - lang: Python
          source: response = fireblocks.trading_beta.create_order(create_order_request, idempotency_key);
    get:
      operationId: getOrders
      summary: Get orders
      x-rate-limit-category: read
      tags:
        - Trading (Beta)
      description: |-
        Retrieve a paginated list of orders with optional filtering by account, provider, status, and time range.

        Note:These endpoints are currently in beta and might be subject to changes.

        If you want to participate and learn more about the Fireblocks Trading, please contact your Fireblocks Customer Success Manager or send an email to CSM@fireblocks.com.

        Endpoint Permission: Owner, Admin, Non-Signing Admin, Signer, Approver, Editor, Viewer.

        For detailed information about error codes and troubleshooting, please refer to our [API Error Codes documentation](https://developers.fireblocks.com/reference/api-error-codes).
      parameters:
        - name: pageSize
          in: query
          required: true
          description: pageSize for pagination.
          schema:
            type: integer
            minimum: 1
            maximum: 100
        - name: pageCursor
          in: query
          required: false
          schema:
            type: string
            minLength: 1
        - name: order
          in: query
          required: false
          description: ASC / DESC ordering (default DESC)
          schema:
            type: string
            default: DESC
            enum:
              - ASC
              - DESC
        - name: accountId
          in: query
          required: false
          explode: true
          style: form
          description: Filter by accountId.
          schema:
            type: array
            items:
              type: string
              minLength: 1
        - name: providerId
          in: query
          required: false
          explode: true
          style: form
          description: Filter by providerId.
          schema:
            type: array
            items:
              type: string
              minLength: 1
        - name: statuses
          in: query
          required: false
          explode: true
          style: form
          description: Filter by order status.
          schema:
            type: array
            items:
              $ref: '#/components/schemas/OrderStatus'
        - name: startTime
          in: query
          schema:
            type: integer
            minimum: 0
        - name: endTime
          in: query
          schema:
            type: integer
            minimum: 0
        - name: assetConversionType
          in: query
          schema:
            type: string
            enum:
              - DIGITAL_ONLY
              - FIAT
            description: Filter by asset conversion type.
      responses:
        '200':
          description: Orders response
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetOrdersResponse'
        '401':
          description: Unauthorized. Missing / invalid JWT token in Authorization header.
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TradingErrorSchema'
        '403':
          description: 'Forbidden: insufficient permissions, disabled feature, or restricted access.'
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TradingErrorSchema'
        '429':
          description: 'Rate limit exceeded: slow down and retry later.'
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TradingErrorSchema'
        5XX:
          description: Internal error while processing the request.
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TradingErrorSchema'
        default:
          $ref: '#/components/responses/Error'
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<GetOrdersResponse>> = fireblocks.tradingBeta.getOrders(tradingBetaApiGetOrdersRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<GetOrdersResponse>> response = fireblocks.tradingBeta().getOrders(pageSize, pageCursor, order, accountId, providerId, statuses, startTime, endTime, assetConversionType);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.trading_beta.get_orders(page_size, page_cursor, order, account_id, provider_id, statuses, start_time, end_time, asset_conversion_type);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<GetOrdersResponse>> = fireblocks.tradingBeta.getOrders(tradingBetaApiGetOrdersRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<GetOrdersResponse>> response = fireblocks.tradingBeta().getOrders(pageSize, pageCursor, order, accountId, providerId, statuses, startTime, endTime, assetConversionType);
        - lang: Python
          source: response = fireblocks.trading_beta.get_orders(page_size, page_cursor, order, account_id, provider_id, statuses, start_time, end_time, asset_conversion_type);
  /trading/orders/{orderId}:
    get:
      operationId: getOrder
      summary: Get order details
      x-rate-limit-category: read
      tags:
        - Trading (Beta)
      description: |-
        Retrieve detailed information about a specific order by its ID.

        Note:These endpoints are currently in beta and might be subject to changes.

        If you want to participate and learn more about the Fireblocks Trading, please contact your Fireblocks Customer Success Manager or send an email to CSM@fireblocks.com.

        Endpoint Permission: Owner, Admin, Non-Signing Admin, Signer, Approver, Editor, Viewer.

        For detailed information about error codes and troubleshooting, please refer to our [API Error Codes documentation](https://developers.fireblocks.com/reference/api-error-codes).
      parameters:
        - name: orderId
          in: path
          required: true
          description: The ID of the order to fetch.
          schema:
            type: string
            minLength: 1
      responses:
        '200':
          description: Order response
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OrderDetails'
        '401':
          description: Unauthorized. Missing / invalid JWT token in Authorization header.
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TradingErrorSchema'
        '403':
          description: 'Forbidden: insufficient permissions, disabled feature, or restricted access.'
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TradingErrorSchema'
        '404':
          description: 'Not found: requested resource does not exist (e.g., order).'
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TradingErrorSchema'
        '429':
          description: 'Rate limit exceeded: slow down and retry later.'
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TradingErrorSchema'
        5XX:
          description: Internal error while processing the request.
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TradingErrorSchema'
        default:
          $ref: '#/components/responses/Error'
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<OrderDetails>> = fireblocks.tradingBeta.getOrder(tradingBetaApiGetOrderRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<OrderDetails>> response = fireblocks.tradingBeta().getOrder(orderId);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.trading_beta.get_order(order_id);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<OrderDetails>> = fireblocks.tradingBeta.getOrder(tradingBetaApiGetOrderRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<OrderDetails>> response = fireblocks.tradingBeta().getOrder(orderId);
        - lang: Python
          source: response = fireblocks.trading_beta.get_order(order_id);
  /trading/orders/{orderId}/requirement:
    get:
      operationId: getOrderRequirements
      summary: Get order requirement details for an order
      x-rate-limit-category: read
      tags:
        - Trading (Beta)
      description: |-
        Fetch order requirement details for an order that is in `AWAITING_INFORMATION` status.

        The response includes `requirementId` and `dueBy` metadata, a
        `requiredData` JSON Schema (Draft-7) describing the shape of the `data` object expected on
        `POST /trading/orders/{orderId}/requirement/data`, and `requiredFiles` descriptors for any files the
        provider requires (uploaded via `POST /trading/orders/{orderId}/requirement/file`).

        Note: These endpoints are currently in beta and might be subject to changes.

        If you want to participate and learn more about the Fireblocks Trading, please contact your Fireblocks Customer Success Manager or send an email to CSM@fireblocks.com.

        Endpoint Permission: Owner, Admin, Non-Signing Admin, Signer, Approver, Editor, Viewer.

        For detailed information about error codes and troubleshooting, please refer to our [API Error Codes documentation](https://developers.fireblocks.com/reference/api-error-codes).
      parameters:
        - name: orderId
          in: path
          required: true
          description: The ID of the order for which the order requirement is issued.
          schema:
            type: string
            minLength: 1
      responses:
        '200':
          description: Order requirement details
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OrderRequirementDetails'
        '401':
          description: Unauthorized. Missing / invalid JWT token in Authorization header.
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TradingErrorSchema'
        '403':
          description: 'Forbidden: insufficient permissions, disabled feature, or restricted access.'
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TradingErrorSchema'
        '404':
          description: 'Not found: the order does not exist.'
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TradingErrorSchema'
        '409':
          description: 'Conflict: the order exists but does not have an active order requirement (e.g., the order is not in `AWAITING_INFORMATION`).'
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TradingErrorSchema'
        '429':
          description: 'Rate limit exceeded: slow down and retry later.'
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TradingErrorSchema'
        5XX:
          description: Internal error while processing the request.
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TradingErrorSchema'
        default:
          $ref: '#/components/responses/Error'
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<OrderRequirementDetails>> = fireblocks.tradingBeta.getOrderRequirements(tradingBetaApiGetOrderRequirementsRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<OrderRequirementDetails>> response = fireblocks.tradingBeta().getOrderRequirements(orderId);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.trading_beta.get_order_requirements(order_id);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<OrderRequirementDetails>> = fireblocks.tradingBeta.getOrderRequirements(tradingBetaApiGetOrderRequirementsRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<OrderRequirementDetails>> response = fireblocks.tradingBeta().getOrderRequirements(orderId);
        - lang: Python
          source: response = fireblocks.trading_beta.get_order_requirements(order_id);
  /trading/orders/{orderId}/requirement/data:
    post:
      operationId: submitOrderRequirements
      summary: Submit a response to an order requirement
      x-rate-limit-category: write
      tags:
        - Trading (Beta)
      description: |-
        Submit the user's textual response to an order requirement on an order that is in `AWAITING_INFORMATION` status.

        The request body carries `data` — a free-form object conforming to the `requiredData` JSON Schema
        returned by the GET endpoint. Any required files are uploaded separately via
        `POST /trading/orders/{orderId}/requirement/file`.

        Note: These endpoints are currently in beta and might be subject to changes.

        If you want to participate and learn more about the Fireblocks Trading, please contact your Fireblocks Customer Success Manager or send an email to CSM@fireblocks.com.

        Endpoint Permission: Owner, Admin, Non-Signing Admin, Signer, Editor.

        For detailed information about error codes and troubleshooting, please refer to our [API Error Codes documentation](https://developers.fireblocks.com/reference/api-error-codes).
      parameters:
        - $ref: '#/components/parameters/X-Idempotency-Key'
        - name: orderId
          in: path
          required: true
          description: The ID of the order to submit the order requirement response for.
          schema:
            type: string
            minLength: 1
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SubmitOrderRequirementRequest'
      responses:
        '202':
          description: Order requirement submission accepted for processing.
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
        '400':
          description: 'Bad request: invalid input parameters, malformed request body, or validation failure.'
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TradingErrorSchema'
        '401':
          description: Unauthorized. Missing / invalid JWT token in Authorization header.
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TradingErrorSchema'
        '403':
          description: 'Forbidden: insufficient permissions, disabled feature, or restricted access.'
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TradingErrorSchema'
        '404':
          description: 'Not found: the order does not exist.'
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TradingErrorSchema'
        '409':
          description: 'Conflict: the order exists but does not have an active order requirement (e.g., the order is not in `AWAITING_INFORMATION`).'
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TradingErrorSchema'
        '429':
          description: 'Rate limit exceeded: slow down and retry later.'
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TradingErrorSchema'
        5XX:
          description: Internal error while processing the request.
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TradingErrorSchema'
        default:
          $ref: '#/components/responses/Error'
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<void>> = fireblocks.tradingBeta.submitOrderRequirements(tradingBetaApiSubmitOrderRequirementsRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<Void>> response = fireblocks.tradingBeta().submitOrderRequirements(submitOrderRequirementRequest, orderId, idempotencyKey);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.trading_beta.submit_order_requirements(submit_order_requirement_request, order_id, idempotency_key);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<void>> = fireblocks.tradingBeta.submitOrderRequirements(tradingBetaApiSubmitOrderRequirementsRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<Void>> response = fireblocks.tradingBeta().submitOrderRequirements(submitOrderRequirementRequest, orderId, idempotencyKey);
        - lang: Python
          source: response = fireblocks.trading_beta.submit_order_requirements(submit_order_requirement_request, order_id, idempotency_key);
  /trading/orders/{orderId}/requirement/file:
    post:
      operationId: uploadOrderRequirementFile
      summary: Upload a file for an order requirement
      x-rate-limit-category: write
      tags:
        - Trading (Beta)
      description: |-
        Upload a single file (multipart/form-data) in response to an order requirement on an order that is in
        `AWAITING_INFORMATION` status. Call this endpoint once per required file.

        Send `fileKey` (matching a `fileKey` from `requiredFiles` on the GET response) and the binary `file`. Its type
        must be one of the supported file formats. Fireblocks encrypts each file and uploads it individually to the
        underlying provider. The textual response is submitted separately via
        `POST /trading/orders/{orderId}/requirement/data`.

        Note: These endpoints are currently in beta and might be subject to changes.

        If you want to participate and learn more about the Fireblocks Trading, please contact your Fireblocks Customer Success Manager or send an email to CSM@fireblocks.com.

        Endpoint Permission: Owner, Admin, Non-Signing Admin, Signer, Editor.

        For detailed information about error codes and troubleshooting, please refer to our [API Error Codes documentation](https://developers.fireblocks.com/reference/api-error-codes).
      parameters:
        - $ref: '#/components/parameters/X-Idempotency-Key'
        - name: orderId
          in: path
          required: true
          description: The ID of the order to upload the order requirement file for.
          schema:
            type: string
            minLength: 1
      requestBody:
        required: true
        content:
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/OrderRequirementFileUpload'
      responses:
        '202':
          description: File accepted for processing.
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
        '400':
          description: 'Bad request: unsupported file type, missing fileKey, malformed request, or validation failure.'
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TradingErrorSchema'
        '401':
          description: Unauthorized. Missing / invalid JWT token in Authorization header.
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TradingErrorSchema'
        '403':
          description: 'Forbidden: insufficient permissions, disabled feature, or restricted access.'
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TradingErrorSchema'
        '404':
          description: 'Not found: the order does not exist.'
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TradingErrorSchema'
        '409':
          description: 'Conflict: the order exists but does not have an active order requirement (e.g., the order is not in `AWAITING_INFORMATION`).'
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TradingErrorSchema'
        '429':
          description: 'Rate limit exceeded: slow down and retry later.'
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TradingErrorSchema'
        5XX:
          description: Internal error while processing the request.
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TradingErrorSchema'
        default:
          $ref: '#/components/responses/Error'
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<void>> = fireblocks.tradingBeta.uploadOrderRequirementFile(tradingBetaApiUploadOrderRequirementFileRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<Void>> response = fireblocks.tradingBeta().uploadOrderRequirementFile(orderId, idempotencyKey);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.trading_beta.upload_order_requirement_file(order_id, idempotency_key);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<void>> = fireblocks.tradingBeta.uploadOrderRequirementFile(tradingBetaApiUploadOrderRequirementFileRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<Void>> response = fireblocks.tradingBeta().uploadOrderRequirementFile(orderId, idempotencyKey);
        - lang: Python
          source: response = fireblocks.trading_beta.upload_order_requirement_file(order_id, idempotency_key);
  /trading/providers:
    get:
      operationId: getTradingProviders
      summary: Get providers
      x-rate-limit-category: query
      tags:
        - Trading (Beta)
      parameters:
        - name: pageSize
          in: query
          required: false
          description: Page size for pagination.
          schema:
            type: integer
            minimum: 1
            maximum: 100
            default: 20
        - name: pageCursor
          in: query
          required: false
          description: Page cursor for pagination.
          schema:
            type: string
      description: |
        Retrieve a list of all available external providers supporting trading activities through the platform.

        **Note:** These endpoints are currently in beta and might be subject to changes. If you want to participate and learn more about the Fireblocks Trading, please contact your Fireblocks Customer Success Manager or send an email to CSM@fireblocks.com.

        **Endpoint Permission:** Owner, Admin, Non-Signing Admin, Signer, Approver, Editor, Viewer.

        For detailed information about error codes and troubleshooting, please refer to our [API Error Codes documentation](https://developers.fireblocks.com/reference/api-error-codes).
      responses:
        '200':
          description: Providers response
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProvidersListResponse'
        '401':
          description: Unauthorized. Missing / invalid JWT token in Authorization header.
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TradingErrorSchema'
        '403':
          description: 'Forbidden: insufficient permissions, disabled feature, or restricted access.'
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TradingErrorSchema'
        '429':
          description: 'Rate limit exceeded: slow down and retry later.'
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TradingErrorSchema'
        5XX:
          description: Internal error while processing the request.
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TradingErrorSchema'
        default:
          $ref: '#/components/responses/Error'
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<ProvidersListResponse>> = fireblocks.tradingBeta.getTradingProviders(tradingBetaApiGetTradingProvidersRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<ProvidersListResponse>> response = fireblocks.tradingBeta().getTradingProviders(pageSize, pageCursor);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.trading_beta.get_trading_providers(page_size, page_cursor);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<ProvidersListResponse>> = fireblocks.tradingBeta.getTradingProviders(tradingBetaApiGetTradingProvidersRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<ProvidersListResponse>> response = fireblocks.tradingBeta().getTradingProviders(pageSize, pageCursor);
        - lang: Python
          source: response = fireblocks.trading_beta.get_trading_providers(page_size, page_cursor);
  /trading/providers/{providerId}:
    get:
      operationId: getTradingProviderById
      summary: Get trading provider by ID
      x-rate-limit-category: read
      tags:
        - Trading (Beta)
      parameters:
        - name: providerId
          in: path
          required: true
          description: The unique identifier of the provider.
          schema:
            type: string
            minLength: 1
      description: |
        Retrieve a single provider by ID.

        **Note:** These endpoints are currently in beta and might be subject to changes. If you want to participate and learn more about the Fireblocks Trading, please contact your Fireblocks Customer Success Manager or send an email to CSM@fireblocks.com.

        **Endpoint Permission:** Owner, Admin, Non-Signing Admin, Signer, Approver, Editor, Viewer.

        For detailed information about error codes and troubleshooting, please refer to our [API Error Codes documentation](https://developers.fireblocks.com/reference/api-error-codes).
      responses:
        '200':
          description: Single provider details.
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TradingProvider'
        '401':
          description: Unauthorized. Missing / invalid JWT token in Authorization header.
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TradingErrorSchema'
        '403':
          description: Forbidden - insufficient permissions, disabled feature, or restricted access.
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TradingErrorSchema'
        '404':
          description: Provider not found.
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TradingErrorSchema'
        '429':
          description: Rate limit exceeded - slow down and retry later.
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TradingErrorSchema'
        5XX:
          description: Internal error while processing the request.
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TradingErrorSchema'
        default:
          $ref: '#/components/responses/Error'
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<TradingProvider>> = fireblocks.tradingBeta.getTradingProviderById(tradingBetaApiGetTradingProviderByIdRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<TradingProvider>> response = fireblocks.tradingBeta().getTradingProviderById(providerId);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.trading_beta.get_trading_provider_by_id(provider_id);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<TradingProvider>> = fireblocks.tradingBeta.getTradingProviderById(tradingBetaApiGetTradingProviderByIdRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<TradingProvider>> response = fireblocks.tradingBeta().getTradingProviderById(providerId);
        - lang: Python
          source: response = fireblocks.trading_beta.get_trading_provider_by_id(provider_id);
  /trading/quotes:
    post:
      operationId: createQuote
      summary: Create a quote
      x-rate-limit-category: write
      parameters:
        - $ref: '#/components/parameters/X-Idempotency-Key'
      tags:
        - Trading (Beta)
      description: |-
        Generate a time-limited quote for asset conversion, providing exchange rate and amount calculations.

        Note: These endpoints are currently in beta and might be subject to changes.

        If you want to participate and learn more about the Fireblocks Trading, please contact your Fireblocks Customer Success Manager or send an email to CSM@fireblocks.com.

        Endpoint Permission: Owner, Admin, Non-Signing Admin, Signer, Editor.

        For detailed information about error codes and troubleshooting, please refer to our [API Error Codes documentation](https://developers.fireblocks.com/reference/api-error-codes).
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateQuote'
      responses:
        '201':
          description: Quote created
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/QuotesResponse'
        '400':
          description: 'Bad request: invalid input parameters, malformed request body, or validation failure.'
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TradingErrorSchema'
        '401':
          description: Unauthorized. Missing / invalid JWT token in Authorization header.
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TradingErrorSchema'
        '403':
          description: 'Forbidden: insufficient permissions, disabled feature, or restricted access.'
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TradingErrorSchema'
        '429':
          description: 'Rate limit exceeded: slow down and retry later.'
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TradingErrorSchema'
        5XX:
          description: Internal error while processing the request.
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TradingErrorSchema'
        default:
          $ref: '#/components/responses/Error'
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<QuotesResponse>> = fireblocks.tradingBeta.createQuote(tradingBetaApiCreateQuoteRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<QuotesResponse>> response = fireblocks.tradingBeta().createQuote(createQuote, idempotencyKey);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.trading_beta.create_quote(create_quote, idempotency_key);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<QuotesResponse>> = fireblocks.tradingBeta.createQuote(tradingBetaApiCreateQuoteRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<QuotesResponse>> response = fireblocks.tradingBeta().createQuote(createQuote, idempotencyKey);
        - lang: Python
          source: response = fireblocks.trading_beta.create_quote(create_quote, idempotency_key);
  /trading/rates:
    post:
      operationId: fetchRates
      summary: Get rates
      x-rate-limit-category: external_query
      parameters:
        - $ref: '#/components/parameters/X-Idempotency-Key'
      tags:
        - Trading (Beta)
      description: |-
        Retrieve indicative exchange rate from specified providers for a given asset pair.
        Rates are non-executable price signals intended for discovery and display purposes.

        Note: These endpoints are currently in beta and might be subject to changes.

        If you want to participate and learn more about the Fireblocks Trading, please contact your Fireblocks Customer Success Manager or send an email to CSM@fireblocks.com.

        Endpoint Permission: Owner, Admin, Non-Signing Admin, Signer, Approver, Editor, Viewer.

        For detailed information about error codes and troubleshooting, please refer to our [API Error Codes documentation](https://developers.fireblocks.com/reference/api-error-codes).
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RatesRequest'
      responses:
        '200':
          description: Rate response
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RatesResponse'
        '400':
          description: 'Bad request: invalid input parameters, malformed request body, or validation failure.'
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TradingErrorSchema'
        '401':
          description: Unauthorized. Missing / invalid JWT token in Authorization header.
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TradingErrorSchema'
        '403':
          description: 'Forbidden: insufficient permissions, disabled feature, or restricted access.'
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TradingErrorSchema'
        '429':
          description: 'Rate limit exceeded: slow down and retry later.'
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TradingErrorSchema'
        5XX:
          description: Internal error while processing the request.
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TradingErrorSchema'
        default:
          $ref: '#/components/responses/Error'
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<RatesResponse>> = fireblocks.tradingBeta.fetchRates(tradingBetaApiFetchRatesRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<RatesResponse>> response = fireblocks.tradingBeta().fetchRates(ratesRequest, idempotencyKey);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.trading_beta.fetch_rates(rates_request, idempotency_key);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<RatesResponse>> = fireblocks.tradingBeta.fetchRates(tradingBetaApiFetchRatesRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<RatesResponse>> response = fireblocks.tradingBeta().fetchRates(ratesRequest, idempotencyKey);
        - lang: Python
          source: response = fireblocks.trading_beta.fetch_rates(rates_request, idempotency_key);
  /estimate_network_fee:
    get:
      summary: Estimate the required fee for an asset
      description: |-
        Gets the estimated required fee for an asset.
        Fireblocks fetches, calculates and caches the result every 30 seconds.
        Customers should query this API while taking the caching interval into consideration.
        Notes:
        - The `networkFee` parameter is the `gasPrice` with a given delta added, multiplied by the gasLimit plus the delta. - The estimation provided depends on the asset type.
            - For UTXO-based assets, the response contains the `feePerByte` parameter
            - For ETH-based and all EVM based assets, the response will contain `gasPrice` parameter. This is calculated by adding the `baseFee` to the `actualPriority` based on the latest 12 blocks. The response for ETH-based  contains the `baseFee`, `gasPrice`, and `priorityFee` parameters.
            - For ADA-based assets, the response will contain the parameter `networkFee` and `feePerByte` parameters.
            - For XRP and XLM, the response will contain the transaction fee.
            - For other assets, the response will contain the `networkFee` parameter.

        Learn more about Fireblocks Fee Management in the following [guide](https://developers.fireblocks.com/reference/estimate-transaction-fee).
        Endpoint Permission: Admin, Non-Signing Admin, Signer, Approver, Editor.
      tags:
        - Transactions
      x-rate-limit-category: read
      x-readme:
        code-samples:
          - language: python
            code: fee_result = fireblocks.get_fee_for_asset(asset_id)
            name: Fireblocks SDK Python example (Legacy)
          - language: javascript
            code: const feeResult = await fireblocks.getFeeForAsset(assetId);
            name: Fireblocks SDK Javascript example
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<EstimatedNetworkFeeResponse>> = fireblocks.transactions.estimateNetworkFee(transactionsApiEstimateNetworkFeeRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<EstimatedNetworkFeeResponse>> response = fireblocks.transactions().estimateNetworkFee(assetId);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.transactions.estimate_network_fee(asset_id);
            name: Fireblocks SDK Python example
      parameters:
        - in: query
          name: assetId
          description: The asset for which to estimate the fee
          required: true
          schema:
            type: string
            x-fb-entity: asset
      responses:
        '200':
          description: Estimated fees response
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EstimatedNetworkFeeResponse'
        default:
          $ref: '#/components/responses/Error'
      operationId: estimateNetworkFee
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<EstimatedNetworkFeeResponse>> = fireblocks.transactions.estimateNetworkFee(transactionsApiEstimateNetworkFeeRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<EstimatedNetworkFeeResponse>> response = fireblocks.transactions().estimateNetworkFee(assetId);
        - lang: Python
          source: response = fireblocks.transactions.estimate_network_fee(asset_id);
  /transactions:
    get:
      summary: Get transaction history
      description: |
        Get the transaction history for your workspace.

        **Endpoint Permissions:** Admin, Non-Signing Admin, Signer, Approver, Editor, Viewer.
      tags:
        - Transactions
      x-rate-limit-category: query
      x-readme:
        code-samples:
          - language: python
            code: transactions = fireblocks.get_transactions(status, after)
            name: Fireblocks SDK Python example (Legacy)
          - language: javascript
            code: |
              const transactions = await fireblocks.getTransactions({
               status: args.status,
              after: from });
            name: Fireblocks SDK Javascript example
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<GetTransactionsResponse>> = fireblocks.transactions.getTransactions(transactionsApiGetTransactionsRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<List<TransactionResponse>>> response = fireblocks.transactions().getTransactions(next, prev, before, after, status, orderBy, sort, limit, sourceType, sourceId, destType, destId, assets, txHash, sourceWalletId, destWalletId);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.transactions.get_transactions(next, prev, before, after, status, order_by, sort, limit, source_type, source_id, dest_type, dest_id, assets, tx_hash, source_wallet_id, dest_wallet_id);
            name: Fireblocks SDK Python example
      parameters:
        - in: query
          name: next
          description: Cursor returned in next-page header that can be used to fetch the next page of results
          required: false
          schema:
            type: string
        - in: query
          name: prev
          description: Cursor returned in prev-page header that can be used to fetch the previous page of results
          required: false
          schema:
            type: string
        - in: query
          name: before
          description: |
            Unix timestamp in milliseconds. Returns only transactions created before the specified date.
            Provides an explicit end time. If not provided, default value will be applied, and may change over time. 
            The current default value is the past 90 days.
          required: false
          schema:
            type: string
        - in: query
          name: after
          description: |
            Unix timestamp in milliseconds. Returns only transactions created after the specified date.
            Provides an explicit start time. If not provided, default value will be applied, and may change over time. 
            The current default value is the past 90 days.
          required: false
          schema:
            type: string
        - in: query
          name: status
          description: You can filter by one of the statuses.
          required: false
          schema:
            type: string
        - in: query
          name: orderBy
          description: |
            The field to order the results by.

            **Note:** Ordering by a field that is not `createdAt` may result in transactions that receive updates as you request the next or previous pages of results, resulting in missing those transactions.
          required: false
          schema:
            type: string
            enum:
              - createdAt
              - lastUpdated
        - in: query
          name: sort
          description: The direction to order the results by
          required: false
          schema:
            type: string
            enum:
              - ASC
              - DESC
        - in: query
          name: limit
          description: Limits the number of results. If not provided, a limit of 200 will be used. The maximum allowed limit is 500
          required: false
          schema:
            type: integer
            minimum: 1
            default: 200
        - in: query
          name: sourceType
          description: The source type of the transaction
          required: false
          schema:
            type: string
            enum:
              - VAULT_ACCOUNT
              - EXCHANGE_ACCOUNT
              - INTERNAL_WALLET
              - EXTERNAL_WALLET
              - CONTRACT
              - FIAT_ACCOUNT
              - NETWORK_CONNECTION
              - COMPOUND
              - UNKNOWN
              - GAS_STATION
              - END_USER_WALLET
              - WALLET_POOL
        - in: query
          name: sourceId
          description: The source ID of the transaction
          required: false
          schema:
            type: string
        - in: query
          name: destType
          description: The destination type of the transaction
          required: false
          schema:
            type: string
            enum:
              - VAULT_ACCOUNT
              - EXCHANGE_ACCOUNT
              - INTERNAL_WALLET
              - EXTERNAL_WALLET
              - CONTRACT
              - FIAT_ACCOUNT
              - NETWORK_CONNECTION
              - COMPOUND
              - ONE_TIME_ADDRESS
              - END_USER_WALLET
        - in: query
          name: destId
          description: The destination ID of the transaction
          required: false
          schema:
            type: string
        - in: query
          name: assets
          description: A list of assets to filter by, seperated by commas
          required: false
          schema:
            type: string
        - in: query
          name: txHash
          description: Returns only results with a specified txHash
          required: false
          schema:
            type: string
        - in: query
          name: sourceWalletId
          description: Returns only results where the source is a specific end user wallet
          required: false
          schema:
            type: string
        - in: query
          name: destWalletId
          description: Returns only results where the destination is a specific end user wallet
          required: false
          schema:
            type: string
      responses:
        '200':
          description: A list of transactions
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
            next-page:
              $ref: '#/components/headers/next-page'
            prev-page:
              $ref: '#/components/headers/prev-page'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetTransactionsResponse'
        default:
          $ref: '#/components/responses/Error'
      operationId: getTransactions
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<GetTransactionsResponse>> = fireblocks.transactions.getTransactions(transactionsApiGetTransactionsRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<List<TransactionResponse>>> response = fireblocks.transactions().getTransactions(next, prev, before, after, status, orderBy, sort, limit, sourceType, sourceId, destType, destId, assets, txHash, sourceWalletId, destWalletId);
        - lang: Python
          source: response = fireblocks.transactions.get_transactions(next, prev, before, after, status, order_by, sort, limit, source_type, source_id, dest_type, dest_id, assets, tx_hash, source_wallet_id, dest_wallet_id);
    post:
      summary: Create a new transaction
      description: 'Creates a new transaction. This endpoint can be used for regular Transfers, Contract Calls, Raw & Typed message signing. - For Transfers, the required parameters are: `assetId`, `source`, `destination` and `amount`. - For Contract Calls, the required parameters are: `operation.CONTRACT_CALL`, `assetId` (Base Asset), `source`,'
      tags:
        - Transactions
      x-rate-limit-category: async
      parameters:
        - $ref: '#/components/parameters/X-End-User-Wallet-Id'
        - $ref: '#/components/parameters/X-Idempotency-Key'
      x-readme:
        code-samples:
          - language: python
            code: |
              tx_result = client.create_transaction( asset_id="BTC", amount="50", source=TransferPeerPath(VAULT_ACCOUNT, from_vault_account_id), destination=DestinationTransferPeerPath(VAULT_ACCOUNT, to_vault_account_id), external_tx_id="unique-id-123" )
            name: Fireblocks SDK Python example (Legacy)
          - language: javascript
            code: |
              const payload: TransactionArguments = { assetId: asset, source: { type: sourceType, id: sourceId || 0 }, destination: { type: destinationType, id: String(destinationId) }, amount: String(amount), fee: String(fee), note: "Created by fireblocks SDK", externalTxId: "unique-id-123" }; const result = await fireblocks.createTransaction(payload);
            name: Fireblocks SDK Javascript example
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<CreateTransactionResponse>> = fireblocks.transactions.createTransaction(transactionsApiCreateTransactionRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<CreateTransactionResponse>> response = fireblocks.transactions().createTransaction(transactionRequest, xEndUserWalletId, idempotencyKey);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.transactions.create_transaction(transaction_request, x_end_user_wallet_id, idempotency_key);
            name: Fireblocks SDK Python example
      responses:
        '200':
          description: A transaction object
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreateTransactionResponse'
        default:
          $ref: '#/components/responses/Error'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TransactionRequest'
      operationId: createTransaction
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<CreateTransactionResponse>> = fireblocks.transactions.createTransaction(transactionsApiCreateTransactionRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<CreateTransactionResponse>> response = fireblocks.transactions().createTransaction(transactionRequest, xEndUserWalletId, idempotencyKey);
        - lang: Python
          source: response = fireblocks.transactions.create_transaction(transaction_request, x_end_user_wallet_id, idempotency_key);
  /transactions/{txId}:
    get:
      summary: Get a specific transaction by Fireblocks transaction ID
      description: |-
        Get a specific transaction data by Fireblocks Transaction ID
        Endpoint Permission: Admin, Non-Signing Admin, Signer, Approver, Editor, Viewer.
      tags:
        - Transactions
      x-rate-limit-category: read
      x-readme:
        code-samples:
          - language: python
            code: tx = fireblocks.get_transaction_by_id(txId)
            name: Fireblocks SDK Python example (Legacy)
          - language: javascript
            code: const tx = await fireblocks.getTransactionById(txId);
            name: Fireblocks SDK Javascript example
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<TransactionResponse>> = fireblocks.transactions.getTransaction(transactionsApiGetTransactionRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<TransactionResponse>> response = fireblocks.transactions().getTransaction(txId);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.transactions.get_transaction(tx_id);
            name: Fireblocks SDK Python example
      parameters:
        - in: path
          name: txId
          required: true
          example: 00000000-0000-0000-0000-000000000000
          description: The ID of the transaction to return
          schema:
            type: string
      responses:
        '200':
          description: An Transaction object
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TransactionResponse'
        '400':
          $ref: '#/components/responses/Error'
        default:
          $ref: '#/components/responses/Error'
      operationId: getTransaction
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<TransactionResponse>> = fireblocks.transactions.getTransaction(transactionsApiGetTransactionRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<TransactionResponse>> response = fireblocks.transactions().getTransaction(txId);
        - lang: Python
          source: response = fireblocks.transactions.get_transaction(tx_id);
  /transactions/{txId}/cancel:
    post:
      summary: Cancel a transaction
      description: |-
        Cancels a transaction by Fireblocks Transaction ID.

        Can be used only for transactions that did not get to the BROADCASTING state.
        Endpoint Permission: Admin, Non-Signing Admin, Signer, Approver, Editor.
      tags:
        - Transactions
      x-rate-limit-category: write
      x-readme:
        code-samples:
          - language: python
            code: result = fireblocks.cancel_transaction_by_id(txId)
            name: Fireblocks SDK Python example (Legacy)
          - language: javascript
            code: const result = await fireblocks.cancelTransactionById(txId);
            name: Fireblocks SDK Javascript example
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<CancelTransactionResponse>> = fireblocks.transactions.cancelTransaction(transactionsApiCancelTransactionRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<CancelTransactionResponse>> response = fireblocks.transactions().cancelTransaction(txId, xEndUserWalletId, idempotencyKey);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.transactions.cancel_transaction(tx_id, x_end_user_wallet_id, idempotency_key);
            name: Fireblocks SDK Python example
      parameters:
        - in: path
          name: txId
          required: true
          description: The ID of the transaction to cancel
          schema:
            type: string
        - $ref: '#/components/parameters/X-End-User-Wallet-Id'
        - $ref: '#/components/parameters/X-Idempotency-Key'
      responses:
        '200':
          description: An Transaction object
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CancelTransactionResponse'
        default:
          $ref: '#/components/responses/Error'
      operationId: cancelTransaction
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<CancelTransactionResponse>> = fireblocks.transactions.cancelTransaction(transactionsApiCancelTransactionRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<CancelTransactionResponse>> response = fireblocks.transactions().cancelTransaction(txId, xEndUserWalletId, idempotencyKey);
        - lang: Python
          source: response = fireblocks.transactions.cancel_transaction(tx_id, x_end_user_wallet_id, idempotency_key);
  /transactions/{txId}/drop:
    post:
      summary: Drop ETH (EVM) transaction by ID
      description: |-
        Drops a stuck ETH (EVM) transaction and creates a replacement transaction with 0 amount.
        Endpoint Permission: Admin, Non-Signing Admin, Signer, Approver, Editor.
      tags:
        - Transactions
      x-rate-limit-category: write
      x-readme:
        code-samples:
          - language: python
            code: result = fireblocks.drop_transaction(txId, fee_level)
            name: Fireblocks SDK Python example (Legacy)
          - language: javascript
            code: const result = await fireblocks.dropTransaction(txId, feeLevel);
            name: Fireblocks SDK Javascript example
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<DropTransactionResponse>> = fireblocks.transactions.dropTransaction(transactionsApiDropTransactionRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<DropTransactionResponse>> response = fireblocks.transactions().dropTransaction(txId, dropTransactionRequest, xEndUserWalletId, idempotencyKey);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.transactions.drop_transaction(tx_id, drop_transaction_request, x_end_user_wallet_id, idempotency_key);
            name: Fireblocks SDK Python example
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DropTransactionRequest'
      parameters:
        - in: path
          name: txId
          required: true
          description: The ID of the transaction
          schema:
            type: string
        - $ref: '#/components/parameters/X-End-User-Wallet-Id'
        - $ref: '#/components/parameters/X-Idempotency-Key'
      responses:
        '200':
          description: Operation completed successfully
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DropTransactionResponse'
        default:
          $ref: '#/components/responses/Error'
      operationId: dropTransaction
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<DropTransactionResponse>> = fireblocks.transactions.dropTransaction(transactionsApiDropTransactionRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<DropTransactionResponse>> response = fireblocks.transactions().dropTransaction(txId, dropTransactionRequest, xEndUserWalletId, idempotencyKey);
        - lang: Python
          source: response = fireblocks.transactions.drop_transaction(tx_id, drop_transaction_request, x_end_user_wallet_id, idempotency_key);
  /transactions/{txId}/freeze:
    post:
      summary: Freeze a transaction
      description: |-
        Freezes a transaction by ID.

        Usually used for AML integrations when the incoming funds should be quarantined.
        For account based assets - the entire amount of the transaction is frozen 
        For UTXO based assets - all UTXOs of the specified transaction are frozen
        Endpoint Permission: Admin, Non-Signing Admin.
      tags:
        - Transactions
      x-rate-limit-category: write
      x-readme:
        code-samples:
          - language: python
            code: result = fireblocks.freeze_transaction_by_id(txId);
            name: Fireblocks SDK Python example (Legacy)
          - language: javascript
            code: const result = await fireblocks.freezeTransactionById(txId);
            name: Fireblocks SDK Javascript example
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<FreezeTransactionResponse>> = fireblocks.transactions.freezeTransaction(transactionsApiFreezeTransactionRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<FreezeTransactionResponse>> response = fireblocks.transactions().freezeTransaction(txId, xEndUserWalletId, idempotencyKey);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.transactions.freeze_transaction(tx_id, x_end_user_wallet_id, idempotency_key);
            name: Fireblocks SDK Python example
      parameters:
        - in: path
          name: txId
          required: true
          description: The ID of the transaction to freeze
          schema:
            type: string
        - $ref: '#/components/parameters/X-End-User-Wallet-Id'
        - $ref: '#/components/parameters/X-Idempotency-Key'
      responses:
        '200':
          description: freeze response
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FreezeTransactionResponse'
      operationId: freezeTransaction
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<FreezeTransactionResponse>> = fireblocks.transactions.freezeTransaction(transactionsApiFreezeTransactionRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<FreezeTransactionResponse>> response = fireblocks.transactions().freezeTransaction(txId, xEndUserWalletId, idempotencyKey);
        - lang: Python
          source: response = fireblocks.transactions.freeze_transaction(tx_id, x_end_user_wallet_id, idempotency_key);
  /transactions/{txId}/set_confirmation_threshold:
    post:
      summary: Set confirmation threshold by Fireblocks Transaction ID
      description: |-
        Overrides the required number of confirmations for transaction completion Fireblocks Transaction ID.
        Endpoint Permission: Admin, Non-Signing Admin, Signer, Approver, Editor.
      tags:
        - Transactions
      x-rate-limit-category: write
      x-readme:
        code-samples:
          - language: python
            code: set_conf_threshold = client.set_confirmation_threshold_by_tx_id(body)
            name: Fireblocks SDK Python example (Legacy)
          - language: javascript
            code: const setConfThreshold = await fireblocks.setConfirmationThresholdByTxId(body);
            name: Fireblocks SDK Javascript example
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<SetConfirmationsThresholdResponse>> = fireblocks.transactions.setTransactionConfirmationThreshold(transactionsApiSetTransactionConfirmationThresholdRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<SetConfirmationsThresholdResponse>> response = fireblocks.transactions().setTransactionConfirmationThreshold(txId, setConfirmationsThresholdRequest, idempotencyKey);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.transactions.set_transaction_confirmation_threshold(tx_id, set_confirmations_threshold_request, idempotency_key);
            name: Fireblocks SDK Python example
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SetConfirmationsThresholdRequest'
      parameters:
        - in: path
          name: txId
          required: true
          description: The ID of the transaction
          schema:
            type: string
        - $ref: '#/components/parameters/X-Idempotency-Key'
      responses:
        '200':
          description: Set successfully
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SetConfirmationsThresholdResponse'
        default:
          $ref: '#/components/responses/Error'
      operationId: setTransactionConfirmationThreshold
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<SetConfirmationsThresholdResponse>> = fireblocks.transactions.setTransactionConfirmationThreshold(transactionsApiSetTransactionConfirmationThresholdRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<SetConfirmationsThresholdResponse>> response = fireblocks.transactions().setTransactionConfirmationThreshold(txId, setConfirmationsThresholdRequest, idempotencyKey);
        - lang: Python
          source: response = fireblocks.transactions.set_transaction_confirmation_threshold(tx_id, set_confirmations_threshold_request, idempotency_key);
  /transactions/{txId}/unfreeze:
    post:
      summary: Unfreeze a transaction
      description: |-
        Unfreezes a transaction by Fireblocks Transaction ID and makes the transaction available again.
        Endpoint Permission: Admin, Non-Signing Admin.
      tags:
        - Transactions
      x-rate-limit-category: write
      x-readme:
        code-samples:
          - language: python
            code: result = fireblocks.unfreeze_transaction_by_id(txId)
            name: Fireblocks SDK Python example (Legacy)
          - language: javascript
            code: const result = await fireblocks.unfreezeTransactionById(txId);
            name: Fireblocks SDK Javascript example
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<UnfreezeTransactionResponse>> = fireblocks.transactions.unfreezeTransaction(transactionsApiUnfreezeTransactionRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<UnfreezeTransactionResponse>> response = fireblocks.transactions().unfreezeTransaction(txId, xEndUserWalletId, idempotencyKey);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.transactions.unfreeze_transaction(tx_id, x_end_user_wallet_id, idempotency_key);
            name: Fireblocks SDK Python example
      parameters:
        - in: path
          name: txId
          required: true
          description: The ID of the transaction to unfreeze
          schema:
            type: string
        - $ref: '#/components/parameters/X-End-User-Wallet-Id'
        - $ref: '#/components/parameters/X-Idempotency-Key'
      responses:
        '200':
          description: Unfreeze response
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnfreezeTransactionResponse'
      operationId: unfreezeTransaction
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<UnfreezeTransactionResponse>> = fireblocks.transactions.unfreezeTransaction(transactionsApiUnfreezeTransactionRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<UnfreezeTransactionResponse>> response = fireblocks.transactions().unfreezeTransaction(txId, xEndUserWalletId, idempotencyKey);
        - lang: Python
          source: response = fireblocks.transactions.unfreeze_transaction(tx_id, x_end_user_wallet_id, idempotency_key);
  /transactions/estimate_fee:
    post:
      summary: Estimate transaction fee
      description: |-
        Estimates the transaction fee for a specific transaction request.
        This endpoint simulates a transaction which means that the system will expect to have the requested asset and balance in the specified wallet.
        **Note**: Supports all Fireblocks assets except ZCash (ZEC).
        The PROGRAM_CALL operation is not supported by this endpoint — fee estimation for Solana program calls is not available.
        Learn more about Fireblocks Fee Management in the following [guide](https://developers.fireblocks.com/reference/estimate-transaction-fee).
        Endpoint Permission: Admin, Signer, Approver, Editor.
      tags:
        - Transactions
      x-rate-limit-category: async
      x-readme:
        code-samples:
          - language: python
            code: |
              estimated_fee = client.estimate_fee_for_transaction( asset_id="BTC", amount="50", source=TransferPeerPath(VAULT_ACCOUNT, from_vault_account_id), destination=DestinationTransferPeerPath(VAULT_ACCOUNT, to_vault_account_id) )
            name: Fireblocks SDK Python example (Legacy)
          - language: javascript
            code: |
              const payload: TransactionArguments = { assetId: asset, source: { type: sourceType, id: sourceId || 0 }, destination: { type: destinationType, id: String(destinationId) }, amount: Number(amount) }; const estimatedFee = await fireblocks.estimateFeeForTransaction(payload);
            name: Fireblocks SDK Javascript example
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<EstimatedTransactionFeeResponse>> = fireblocks.transactions.estimateTransactionFee(transactionsApiEstimateTransactionFeeRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<EstimatedTransactionFeeResponse>> response = fireblocks.transactions().estimateTransactionFee(transactionRequest, idempotencyKey);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.transactions.estimate_transaction_fee(transaction_request, idempotency_key);
            name: Fireblocks SDK Python example
      parameters:
        - $ref: '#/components/parameters/X-Idempotency-Key'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TransactionRequest'
      responses:
        '200':
          description: Estimated fees response
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EstimatedTransactionFeeResponse'
        default:
          $ref: '#/components/responses/Error'
      operationId: estimateTransactionFee
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<EstimatedTransactionFeeResponse>> = fireblocks.transactions.estimateTransactionFee(transactionsApiEstimateTransactionFeeRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<EstimatedTransactionFeeResponse>> response = fireblocks.transactions().estimateTransactionFee(transactionRequest, idempotencyKey);
        - lang: Python
          source: response = fireblocks.transactions.estimate_transaction_fee(transaction_request, idempotency_key);
  /transactions/external_tx_id/{externalTxId}:
    get:
      summary: Get a specific transaction by external transaction ID
      description: |-
        Returns transaction by external transaction ID.
        Endpoint Permission: Admin, Non-Signing Admin, Signer, Approver, Editor, Viewer.
      tags:
        - Transactions
      x-rate-limit-category: read
      x-readme:
        code-samples:
          - language: python
            code: tx = fireblocks.get_transaction_by_external_tx_id(externalTxId)
            name: Fireblocks SDK Python example (Legacy)
          - language: javascript
            code: const tx = await fireblocks.getTransactionByExternalTxId(externalTxId);
            name: Fireblocks SDK Javascript example
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<TransactionResponse>> = fireblocks.transactions.getTransactionByExternalId(transactionsApiGetTransactionByExternalIdRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<TransactionResponse>> response = fireblocks.transactions().getTransactionByExternalId(externalTxId);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.transactions.get_transaction_by_external_id(external_tx_id);
            name: Fireblocks SDK Python example
      parameters:
        - in: path
          name: externalTxId
          example: 00000000-0000-0000-0000-000000000000
          required: true
          description: The external ID of the transaction to return
          schema:
            type: string
      responses:
        '200':
          description: An Transaction object
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TransactionResponse'
        default:
          $ref: '#/components/responses/Error'
      operationId: getTransactionByExternalId
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<TransactionResponse>> = fireblocks.transactions.getTransactionByExternalId(transactionsApiGetTransactionByExternalIdRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<TransactionResponse>> response = fireblocks.transactions().getTransactionByExternalId(externalTxId);
        - lang: Python
          source: response = fireblocks.transactions.get_transaction_by_external_id(external_tx_id);
  /transactions/validate_address/{assetId}/{address}:
    get:
      summary: Validate destination address
      description: |-
        Checks if an address is valid and active (for XRP, DOT, XLM, and EOS).
        Endpoint Permission: Admin, Non-Signing Admin, Signer, Approver, Editor.
      tags:
        - Transactions
      x-rate-limit-category: read
      x-readme:
        code-samples:
          - language: python
            code: result = fireblocks.(asset_id, address)
            name: Fireblocks SDK Python example (Legacy)
          - language: javascript
            code: const result = await fireblocks.(assetId, address);
            name: Fireblocks SDK Javascript example
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<ValidateAddressResponse>> = fireblocks.transactions.validateAddress(transactionsApiValidateAddressRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<ValidateAddressResponse>> response = fireblocks.transactions().validateAddress(assetId, address);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.transactions.validate_address(asset_id, address);
            name: Fireblocks SDK Python example
      parameters:
        - in: path
          name: assetId
          required: true
          description: The asset of the address
          schema:
            type: string
            x-fb-entity: asset
        - in: path
          name: address
          required: true
          description: The address to validate
          schema:
            type: string
      responses:
        '200':
          description: An Transaction object
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidateAddressResponse'
        default:
          $ref: '#/components/responses/Error'
      operationId: validateAddress
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<ValidateAddressResponse>> = fireblocks.transactions.validateAddress(transactionsApiValidateAddressRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<ValidateAddressResponse>> response = fireblocks.transactions().validateAddress(assetId, address);
        - lang: Python
          source: response = fireblocks.transactions.validate_address(asset_id, address);
  /txHash/{txHash}/set_confirmation_threshold:
    post:
      summary: Set confirmation threshold by transaction hash
      description: |-
        Overrides the required number of confirmations for transaction completion by transaction hash.
        Endpoint Permission: Admin, Non-Signing Admin, Signer, Approver, Editor.
      tags:
        - Transactions
      x-rate-limit-category: write
      x-readme:
        code-samples:
          - language: python
            code: set_conf_threshold = client.set_confirmation_threshold_by_tx_hash(body)
            name: Fireblocks SDK Python example (Legacy)
          - language: javascript
            code: const setConfThreshold = await fireblocks.setConfirmationThresholdByTxHash(body);
            name: Fireblocks SDK Javascript example
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<SetConfirmationsThresholdResponse>> = fireblocks.transactions.setConfirmationThresholdByTransactionHash(transactionsApiSetConfirmationThresholdByTransactionHashRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<SetConfirmationsThresholdResponse>> response = fireblocks.transactions().setConfirmationThresholdByTransactionHash(txHash, setConfirmationsThresholdRequest, idempotencyKey);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.transactions.set_confirmation_threshold_by_transaction_hash(tx_hash, set_confirmations_threshold_request, idempotency_key);
            name: Fireblocks SDK Python example
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SetConfirmationsThresholdRequest'
      parameters:
        - in: path
          name: txHash
          required: true
          description: The TxHash
          schema:
            type: string
        - $ref: '#/components/parameters/X-Idempotency-Key'
      responses:
        '200':
          description: A list of transactions affected by the change
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SetConfirmationsThresholdResponse'
        default:
          $ref: '#/components/responses/Error'
      operationId: setConfirmationThresholdByTransactionHash
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<SetConfirmationsThresholdResponse>> = fireblocks.transactions.setConfirmationThresholdByTransactionHash(transactionsApiSetConfirmationThresholdByTransactionHashRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<SetConfirmationsThresholdResponse>> response = fireblocks.transactions().setConfirmationThresholdByTransactionHash(txHash, setConfirmationsThresholdRequest, idempotencyKey);
        - lang: Python
          source: response = fireblocks.transactions.set_confirmation_threshold_by_transaction_hash(tx_hash, set_confirmations_threshold_request, idempotency_key);
  /screening/travel_rule/providers/trust/proof_of_address:
    post:
      operationId: createTrustProofOfAddress
      summary: Create Trust Network Proof of Address
      description: Creates a cryptographic proof of address ownership for TRUST network.
      parameters:
        - $ref: '#/components/parameters/X-Idempotency-Key'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TrustProofOfAddressRequest'
      responses:
        '201':
          description: Proof of address transaction created successfully
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TrustProofOfAddressCreateResponse'
        default:
          $ref: '#/components/responses/Error'
      tags:
        - Travel Rule
      x-rate-limit-category: async
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<TrustProofOfAddressCreateResponse>> = fireblocks.travelRule.createTrustProofOfAddress(travelRuleApiCreateTrustProofOfAddressRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<TrustProofOfAddressCreateResponse>> response = fireblocks.travelRule().createTrustProofOfAddress(trustProofOfAddressRequest, idempotencyKey);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.travel_rule.create_trust_proof_of_address(trust_proof_of_address_request, idempotency_key);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<TrustProofOfAddressCreateResponse>> = fireblocks.travelRule.createTrustProofOfAddress(travelRuleApiCreateTrustProofOfAddressRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<TrustProofOfAddressCreateResponse>> response = fireblocks.travelRule().createTrustProofOfAddress(trustProofOfAddressRequest, idempotencyKey);
        - lang: Python
          source: response = fireblocks.travel_rule.create_trust_proof_of_address(trust_proof_of_address_request, idempotency_key);
  /screening/travel_rule/providers/trust/proof_of_address/{transactionId}:
    get:
      operationId: getTrustProofOfAddress
      summary: Retrieve Trust Network Proof of Address Signature
      description: Retrieves the TRUST-compatible encoded signature for a proof of address transaction. Send this signature directly to TRUST for verification.
      parameters:
        - in: path
          name: transactionId
          required: true
          description: Fireblocks transaction ID (UUID format)
          example: 550e8400-e29b-41d4-a716-446655440000
          schema:
            type: string
            format: uuid
      responses:
        '200':
          description: Encoded signature retrieved successfully
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TrustProofOfAddressResponse'
        default:
          $ref: '#/components/responses/Error'
      tags:
        - Travel Rule
      x-rate-limit-category: query
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<TrustProofOfAddressResponse>> = fireblocks.travelRule.getTrustProofOfAddress(travelRuleApiGetTrustProofOfAddressRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<TrustProofOfAddressResponse>> response = fireblocks.travelRule().getTrustProofOfAddress(transactionId);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.travel_rule.get_trust_proof_of_address(transaction_id);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<TrustProofOfAddressResponse>> = fireblocks.travelRule.getTrustProofOfAddress(travelRuleApiGetTrustProofOfAddressRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<TrustProofOfAddressResponse>> response = fireblocks.travelRule().getTrustProofOfAddress(transactionId);
        - lang: Python
          source: response = fireblocks.travel_rule.get_trust_proof_of_address(transaction_id);
  /screening/travel_rule/transaction/validate:
    post:
      x-internal: true
      operationId: validateTravelRuleTransaction
      summary: Validate Travel Rule Transaction
      description: |-
        Validate Travel Rule transactions.
        Checks what beneficiary VASP details are required by your jurisdiction and the beneficiary's jurisdiction.
        **Deprecation Notice** This endpoint will be deprecated soon in favor of the [validate full](https://developers.fireblocks.com/reference/validatefulltravelruletransaction) endpoint. Please update your integrations to use the  [validate full](https://developers.fireblocks.com/reference/validatefulltravelruletransaction) endpoint to ensure compatibility with future releases.
        Checks what beneficiary VASP details are required by your jurisdiction and the beneficiary's jurisdiction.
        Learn more about Fireblocks Travel Rule management in the following [guide](https://developers.fireblocks.com/docs/define-travel-rule-policies).

        Endpoint Permission: Admin, Non-Signing Admin, Signer, Approver, Editor, Viewer.
      parameters:
        - name: notation
          in: query
          description: |-
            Specifies the notation of the transaction. Possible values are: - `notabene`: Uses Notabene notation (default behavior). - `fireblocks`: Uses Fireblocks notation, with automatic translation of asset tickers and amounts. - `<none>`: Defaults to `notabene` for backward compatibility.
            **Note:** The default value for the `notation` parameter will change from `notabene` to `fireblocks` Update your integrations accordingly.
          required: false
          schema:
            $ref: '#/components/schemas/TravelRuleNotationEnum'
        - $ref: '#/components/parameters/X-Idempotency-Key'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TravelRuleValidateTransactionRequest'
      responses:
        '200':
          description: Transaction validated successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TravelRuleValidateTransactionResponse'
        default:
          $ref: '#/components/responses/Error'
      tags:
        - Travel Rule
      x-rate-limit-category: write
  /screening/travel_rule/transaction/validate/full:
    post:
      operationId: validateFullTravelRuleTransaction
      summary: Validate Full Travel Rule Transaction
      description: |-
        Validate Full Travel Rule transactions.

        Checks for all required information on the originator and beneficiary VASPs.
      parameters:
        - name: notation
          in: query
          description: |-
            Specifies the notation of the transaction. Possible values are: - `notabene`: Uses Notabene notation (default behavior). - `fireblocks`: Uses Fireblocks notation, with automatic translation of asset tickers and amounts. - `<none>`: Defaults to `notabene` for backward compatibility.
            **Note:** The default value for the `notation` parameter will change from `notabene` to `fireblocks` Update your integrations accordingly.
          required: false
          schema:
            $ref: '#/components/schemas/TravelRuleNotationEnum'
        - $ref: '#/components/parameters/X-Idempotency-Key'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TravelRuleValidateFullTransactionRequest'
      responses:
        '200':
          description: Transaction validated successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TravelRuleValidateTransactionResponse'
        default:
          $ref: '#/components/responses/Error'
      tags:
        - Travel Rule
      x-rate-limit-category: write
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<TravelRuleValidateTransactionResponse>> = fireblocks.travelRule.validateFullTravelRuleTransaction(travelRuleApiValidateFullTravelRuleTransactionRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<TravelRuleValidateTransactionResponse>> response = fireblocks.travelRule().validateFullTravelRuleTransaction(travelRuleValidateFullTransactionRequest, notation, idempotencyKey);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.travel_rule.validate_full_travel_rule_transaction(travel_rule_validate_full_transaction_request, notation, idempotency_key);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<TravelRuleValidateTransactionResponse>> = fireblocks.travelRule.validateFullTravelRuleTransaction(travelRuleApiValidateFullTravelRuleTransactionRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<TravelRuleValidateTransactionResponse>> response = fireblocks.travelRule().validateFullTravelRuleTransaction(travelRuleValidateFullTransactionRequest, notation, idempotencyKey);
        - lang: Python
          source: response = fireblocks.travel_rule.validate_full_travel_rule_transaction(travel_rule_validate_full_transaction_request, notation, idempotency_key);
  /screening/travel_rule/vasp:
    get:
      operationId: getVASPs
      summary: Get All VASPs
      description: |-
        Get All VASPs.

        Returns a list of VASPs. VASPs can be searched and sorted.
      parameters:
        - name: order
          required: false
          in: query
          description: Field to order by
          example: ASC
          schema:
            enum:
              - ASC
              - DESC
        - name: pageSize
          required: false
          in: query
          description: Records per page
          example: 10
          schema:
            minimum: 100
            maximum: 1000
            default: 500
            type: number
        - name: fields
          required: false
          in: query
          description: CSV of fields to return (all, "blank" or see list of all field names below)
          schema:
            $ref: '#/components/schemas/TravelRuleFieldsEnum'
        - name: search
          required: false
          in: query
          description: Search query
          example: Fireblocks
          schema:
            type: string
        - name: reviewValue
          required: false
          in: query
          description: 'Filter by the VASP''s review status. Possible values include: "TRUSTED", "BLOCKED", "MANUAL", or "NULL". When provided, only VASPs that match the specified reviewValue will be returned (i.e., VASPs that have already been reviewed to this status).'
          example: TRUSTED
          schema:
            enum:
              - TRUSTED
              - BLOCKED
              - MANUAL
              - null
        - name: pageCursor
          required: false
          in: query
          description: Cursor for pagination. When provided, the response will include the next page of results.
          example: 100
          schema:
            type: string
      responses:
        '200':
          description: Get all VASPs
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TravelRuleGetAllVASPsResponse'
        default:
          $ref: '#/components/responses/Error'
      tags:
        - Travel Rule
      x-rate-limit-category: query
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<TravelRuleGetAllVASPsResponse>> = fireblocks.travelRule.getVASPs(travelRuleApiGetVASPsRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<TravelRuleGetAllVASPsResponse>> response = fireblocks.travelRule().getVASPs(order, pageSize, fields, search, reviewValue, pageCursor);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.travel_rule.get_v_a_s_ps(order, page_size, fields, search, review_value, page_cursor);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<TravelRuleGetAllVASPsResponse>> = fireblocks.travelRule.getVASPs(travelRuleApiGetVASPsRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<TravelRuleGetAllVASPsResponse>> response = fireblocks.travelRule().getVASPs(order, pageSize, fields, search, reviewValue, pageCursor);
        - lang: Python
          source: response = fireblocks.travel_rule.get_v_a_s_ps(order, page_size, fields, search, review_value, page_cursor);
  /screening/travel_rule/vasp/{did}:
    get:
      operationId: getVASPByDID
      summary: Get VASP details
      description: |-
        Get VASP Details.

        Returns information about a VASP that has the specified DID.
      parameters:
        - name: did
          required: true
          in: path
          schema:
            type: string
        - name: fields
          required: false
          in: query
          description: 'A CSV of fields to return. Choose from the following options:'
          schema:
            $ref: '#/components/schemas/TravelRuleFieldsEnum'
      responses:
        '200':
          description: Transaction validated successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TravelRuleVASP'
        '400':
          description: Invalid request body
        '500':
          description: Internal server error
      tags:
        - Travel Rule
      x-rate-limit-category: query
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<TravelRuleVASP>> = fireblocks.travelRule.getVASPByDID(travelRuleApiGetVASPByDIDRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<TravelRuleVASP>> response = fireblocks.travelRule().getVASPByDID(did, fields);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.travel_rule.get_v_a_s_p_by_d_i_d(did, fields);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<TravelRuleVASP>> = fireblocks.travelRule.getVASPByDID(travelRuleApiGetVASPByDIDRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<TravelRuleVASP>> response = fireblocks.travelRule().getVASPByDID(did, fields);
        - lang: Python
          source: response = fireblocks.travel_rule.get_v_a_s_p_by_d_i_d(did, fields);
  /screening/travel_rule/vasp/update:
    put:
      operationId: updateVasp
      summary: Add jsonDidKey to VASP details
      description: |-
        Update VASP Details.

        Updates a VASP with the provided parameters. Use this endpoint to add your public jsonDIDkey generated by Notabene.
      parameters:
        - $ref: '#/components/parameters/X-Idempotency-Key'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TravelRuleUpdateVASPDetails'
      responses:
        '200':
          description: VASP updated successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TravelRuleUpdateVASPDetails'
        '400':
          description: Invalid request body
        '500':
          description: Internal server error
      tags:
        - Travel Rule
      x-rate-limit-category: write
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<TravelRuleUpdateVASPDetails>> = fireblocks.travelRule.updateVasp(travelRuleApiUpdateVaspRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<TravelRuleUpdateVASPDetails>> response = fireblocks.travelRule().updateVasp(travelRuleUpdateVASPDetails, idempotencyKey);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.travel_rule.update_vasp(travel_rule_update_v_a_s_p_details, idempotency_key);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<TravelRuleUpdateVASPDetails>> = fireblocks.travelRule.updateVasp(travelRuleApiUpdateVaspRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<TravelRuleUpdateVASPDetails>> response = fireblocks.travelRule().updateVasp(travelRuleUpdateVASPDetails, idempotencyKey);
        - lang: Python
          source: response = fireblocks.travel_rule.update_vasp(travel_rule_update_v_a_s_p_details, idempotency_key);
  /screening/travel_rule/vault/{vaultAccountId}/vasp:
    get:
      summary: Get assigned VASP to vault
      description: Get assigned VASP Did for a specific vault. Returns empty string vaspDid value in response if none assigned.
      x-rate-limit-category: read
      tags:
        - Travel Rule
      x-readme:
        code-samples:
          - language: javascript
            code: const vaultAsset = await fireblocks.getVaspForVault(vaultAccountId);
            name: Fireblocks SDK Javascript example
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<TravelRuleVaspForVault>> = fireblocks.travelRule.getVaspForVault(travelRuleApiGetVaspForVaultRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<TravelRuleVaspForVault>> response = fireblocks.travelRule().getVaspForVault(vaultAccountId);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.travel_rule.get_vasp_for_vault(vault_account_id);
            name: Fireblocks SDK Python example
      parameters:
        - in: path
          name: vaultAccountId
          required: true
          description: The ID of the vault account
          example: 1
          schema:
            type: string
            format: numeric
            x-fb-entity: vault_account
      responses:
        '200':
          description: OK
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TravelRuleVaspForVault'
        default:
          $ref: '#/components/responses/Error'
      operationId: getVaspForVault
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<TravelRuleVaspForVault>> = fireblocks.travelRule.getVaspForVault(travelRuleApiGetVaspForVaultRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<TravelRuleVaspForVault>> response = fireblocks.travelRule().getVaspForVault(vaultAccountId);
        - lang: Python
          source: response = fireblocks.travel_rule.get_vasp_for_vault(vault_account_id);
    post:
      summary: Assign VASP to vault
      description: Sets the VASP Did for a specific vault. Pass empty string to remove existing one.
      tags:
        - Travel Rule
      x-rate-limit-category: write
      x-readme:
        code-samples:
          - language: javascript
            code: const vaultAsset = await fireblocks.setVaspForVault(vaultAccountId, vaspDid);
            name: Fireblocks SDK Javascript example
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<TravelRuleVaspForVault>> = fireblocks.travelRule.setVaspForVault(travelRuleApiSetVaspForVaultRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<TravelRuleVaspForVault>> response = fireblocks.travelRule().setVaspForVault(travelRuleVaspForVault, vaultAccountId, idempotencyKey);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.travel_rule.set_vasp_for_vault(travel_rule_vasp_for_vault, vault_account_id, idempotency_key);
            name: Fireblocks SDK Python example
      parameters:
        - in: path
          name: vaultAccountId
          required: true
          description: The ID of the vault account
          schema:
            type: string
            format: numeric
            x-fb-entity: vault_account
        - $ref: '#/components/parameters/X-Idempotency-Key'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TravelRuleVaspForVault'
      responses:
        '201':
          description: OK
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TravelRuleVaspForVault'
        default:
          $ref: '#/components/responses/Error'
      operationId: setVaspForVault
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<TravelRuleVaspForVault>> = fireblocks.travelRule.setVaspForVault(travelRuleApiSetVaspForVaultRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<TravelRuleVaspForVault>> response = fireblocks.travelRule().setVaspForVault(travelRuleVaspForVault, vaultAccountId, idempotencyKey);
        - lang: Python
          source: response = fireblocks.travel_rule.set_vasp_for_vault(travel_rule_vasp_for_vault, vault_account_id, idempotency_key);
  /screening/trlink/customers:
    post:
      operationId: createTRLinkCustomer
      summary: Create customer
      description: Creates a new customer (legal entity/VASP) for TRSupport Travel Rule compliance operations. The customer represents your organization in the Travel Rule network and contains IVMS101-compliant identity information.
      parameters:
        - $ref: '#/components/parameters/X-Idempotency-Key'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TRLinkCreateCustomerRequest'
      responses:
        '201':
          description: Customer created successfully
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TRLinkCustomerResponse'
        default:
          $ref: '#/components/responses/Error'
      tags:
        - TRLink
      x-rate-limit-category: write
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<TRLinkCustomerResponse>> = fireblocks.tRLink.createTRLinkCustomer(tRLinkApiCreateTRLinkCustomerRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<TRLinkCustomerResponse>> response = fireblocks.tRLink().createTRLinkCustomer(tRLinkCreateCustomerRequest, idempotencyKey);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.t_r_link.create_t_r_link_customer(t_r_link_create_customer_request, idempotency_key);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<TRLinkCustomerResponse>> = fireblocks.tRLink.createTRLinkCustomer(tRLinkApiCreateTRLinkCustomerRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<TRLinkCustomerResponse>> response = fireblocks.tRLink().createTRLinkCustomer(tRLinkCreateCustomerRequest, idempotencyKey);
        - lang: Python
          source: response = fireblocks.t_r_link.create_t_r_link_customer(t_r_link_create_customer_request, idempotency_key);
    get:
      operationId: getTRLinkCustomers
      summary: Get all customers
      description: Retrieves all customers associated with the authenticated tenant. Returns a list of legal entities configured for Travel Rule compliance.
      responses:
        '200':
          description: Customers retrieved successfully
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TRLinkCustomersListResponse'
        default:
          $ref: '#/components/responses/Error'
      tags:
        - TRLink
      x-rate-limit-category: query
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<TRLinkCustomersListResponse>> = fireblocks.tRLink.getTRLinkCustomers();'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<List<TRLinkCustomerResponse>>> response = fireblocks.tRLink().getTRLinkCustomers();
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.t_r_link.get_t_r_link_customers();
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<TRLinkCustomersListResponse>> = fireblocks.tRLink.getTRLinkCustomers();'
        - lang: Java
          source: CompletableFuture<ApiResponse<List<TRLinkCustomerResponse>>> response = fireblocks.tRLink().getTRLinkCustomers();
        - lang: Python
          source: response = fireblocks.t_r_link.get_t_r_link_customers();
  /screening/trlink/customers/{customerId}:
    get:
      operationId: getTRLinkCustomerById
      summary: Get customer by ID
      description: Retrieves detailed information about a specific customer by their unique identifier.
      parameters:
        - name: customerId
          in: path
          required: true
          description: Customer unique identifier
          example: 550e8400-e29b-41d4-a716-446655440001
          schema:
            type: string
            format: uuid
      responses:
        '200':
          description: Customer retrieved successfully
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TRLinkCustomerResponse'
        default:
          $ref: '#/components/responses/Error'
      tags:
        - TRLink
      x-rate-limit-category: read
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<TRLinkCustomerResponse>> = fireblocks.tRLink.getTRLinkCustomerById(tRLinkApiGetTRLinkCustomerByIdRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<TRLinkCustomerResponse>> response = fireblocks.tRLink().getTRLinkCustomerById(customerId);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.t_r_link.get_t_r_link_customer_by_id(customer_id);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<TRLinkCustomerResponse>> = fireblocks.tRLink.getTRLinkCustomerById(tRLinkApiGetTRLinkCustomerByIdRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<TRLinkCustomerResponse>> response = fireblocks.tRLink().getTRLinkCustomerById(customerId);
        - lang: Python
          source: response = fireblocks.t_r_link.get_t_r_link_customer_by_id(customer_id);
    put:
      operationId: updateTRLinkCustomer
      summary: Update customer
      description: Updates an existing customer's information. All fields are optional - only provided fields will be updated.
      parameters:
        - name: customerId
          in: path
          required: true
          description: Customer unique identifier
          example: 550e8400-e29b-41d4-a716-446655440001
          schema:
            type: string
            format: uuid
        - $ref: '#/components/parameters/X-Idempotency-Key'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TRLinkUpdateCustomerRequest'
      responses:
        '200':
          description: Customer updated successfully
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TRLinkCustomerResponse'
        default:
          $ref: '#/components/responses/Error'
      tags:
        - TRLink
      x-rate-limit-category: write
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<TRLinkCustomerResponse>> = fireblocks.tRLink.updateTRLinkCustomer(tRLinkApiUpdateTRLinkCustomerRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<TRLinkCustomerResponse>> response = fireblocks.tRLink().updateTRLinkCustomer(tRLinkUpdateCustomerRequest, customerId, idempotencyKey);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.t_r_link.update_t_r_link_customer(t_r_link_update_customer_request, customer_id, idempotency_key);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<TRLinkCustomerResponse>> = fireblocks.tRLink.updateTRLinkCustomer(tRLinkApiUpdateTRLinkCustomerRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<TRLinkCustomerResponse>> response = fireblocks.tRLink().updateTRLinkCustomer(tRLinkUpdateCustomerRequest, customerId, idempotencyKey);
        - lang: Python
          source: response = fireblocks.t_r_link.update_t_r_link_customer(t_r_link_update_customer_request, customer_id, idempotency_key);
    delete:
      operationId: deleteTRLinkCustomer
      summary: Delete customer
      description: Deletes a customer and all associated integrations. This action cannot be undone.
      parameters:
        - name: customerId
          in: path
          required: true
          description: Customer unique identifier
          example: 550e8400-e29b-41d4-a716-446655440001
          schema:
            type: string
            format: uuid
      responses:
        '204':
          description: Customer deleted successfully
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
        default:
          $ref: '#/components/responses/Error'
      tags:
        - TRLink
      x-rate-limit-category: write
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<void>> = fireblocks.tRLink.deleteTRLinkCustomer(tRLinkApiDeleteTRLinkCustomerRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<Void>> response = fireblocks.tRLink().deleteTRLinkCustomer(customerId);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.t_r_link.delete_t_r_link_customer(customer_id);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<void>> = fireblocks.tRLink.deleteTRLinkCustomer(tRLinkApiDeleteTRLinkCustomerRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<Void>> response = fireblocks.tRLink().deleteTRLinkCustomer(customerId);
        - lang: Python
          source: response = fireblocks.t_r_link.delete_t_r_link_customer(customer_id);
  /screening/trlink/customers/{customerId}/integrations:
    get:
      operationId: getTRLinkCustomerIntegrations
      summary: Get customer integrations
      description: Retrieves all TRSupport integrations for a specific customer. Returns a list of partner integrations configured for Travel Rule compliance.
      parameters:
        - name: customerId
          in: path
          required: true
          description: Customer unique identifier
          example: 550e8400-e29b-41d4-a716-446655440001
          schema:
            type: string
            format: uuid
      responses:
        '200':
          description: Customer integrations retrieved successfully
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TRLinkCustomerIntegrationsListResponse'
        default:
          $ref: '#/components/responses/Error'
      tags:
        - TRLink
      x-rate-limit-category: query
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<TRLinkCustomerIntegrationsListResponse>> = fireblocks.tRLink.getTRLinkCustomerIntegrations(tRLinkApiGetTRLinkCustomerIntegrationsRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<List<TRLinkCustomerIntegrationResponse>>> response = fireblocks.tRLink().getTRLinkCustomerIntegrations(customerId);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.t_r_link.get_t_r_link_customer_integrations(customer_id);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<TRLinkCustomerIntegrationsListResponse>> = fireblocks.tRLink.getTRLinkCustomerIntegrations(tRLinkApiGetTRLinkCustomerIntegrationsRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<List<TRLinkCustomerIntegrationResponse>>> response = fireblocks.tRLink().getTRLinkCustomerIntegrations(customerId);
        - lang: Python
          source: response = fireblocks.t_r_link.get_t_r_link_customer_integrations(customer_id);
  /screening/trlink/customers/{customerId}/integrations/{customerIntegrationId}:
    get:
      operationId: getTRLinkCustomerIntegrationById
      summary: Get customer integration by ID
      description: Retrieves detailed information about a specific customer integration.
      parameters:
        - name: customerId
          in: path
          required: true
          description: Customer unique identifier
          example: 550e8400-e29b-41d4-a716-446655440001
          schema:
            type: string
            format: uuid
        - name: customerIntegrationId
          in: path
          required: true
          description: Customer integration unique identifier
          example: 123e4567-e89b-12d3-a456-426614174000
          schema:
            type: string
            format: uuid
      responses:
        '200':
          description: Customer integration retrieved successfully
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TRLinkCustomerIntegrationResponse'
        default:
          $ref: '#/components/responses/Error'
      tags:
        - TRLink
      x-rate-limit-category: read
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<TRLinkCustomerIntegrationResponse>> = fireblocks.tRLink.getTRLinkCustomerIntegrationById(tRLinkApiGetTRLinkCustomerIntegrationByIdRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<TRLinkCustomerIntegrationResponse>> response = fireblocks.tRLink().getTRLinkCustomerIntegrationById(customerId, customerIntegrationId);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.t_r_link.get_t_r_link_customer_integration_by_id(customer_id, customer_integration_id);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<TRLinkCustomerIntegrationResponse>> = fireblocks.tRLink.getTRLinkCustomerIntegrationById(tRLinkApiGetTRLinkCustomerIntegrationByIdRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<TRLinkCustomerIntegrationResponse>> response = fireblocks.tRLink().getTRLinkCustomerIntegrationById(customerId, customerIntegrationId);
        - lang: Python
          source: response = fireblocks.t_r_link.get_t_r_link_customer_integration_by_id(customer_id, customer_integration_id);
  /screening/trlink/customers/integration:
    post:
      operationId: createTRLinkIntegration
      summary: Create customer integration
      description: Creates a new TRSupport integration for a customer. This establishes a connection placeholder between a customer and a Travel Rule partner. Use the connect endpoint to provide credentials after creation. You may optionally supply `customerIntegrationId` in the request body when your tenant is enabled for client-provided integration ids.
      parameters:
        - $ref: '#/components/parameters/X-Idempotency-Key'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TRLinkCreateIntegrationRequest'
      responses:
        '201':
          description: Customer integration created successfully
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TRLinkCustomerIntegrationResponse'
        default:
          $ref: '#/components/responses/Error'
      tags:
        - TRLink
      x-rate-limit-category: write
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<TRLinkCustomerIntegrationResponse>> = fireblocks.tRLink.createTRLinkIntegration(tRLinkApiCreateTRLinkIntegrationRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<TRLinkCustomerIntegrationResponse>> response = fireblocks.tRLink().createTRLinkIntegration(tRLinkCreateIntegrationRequest, idempotencyKey);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.t_r_link.create_t_r_link_integration(t_r_link_create_integration_request, idempotency_key);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<TRLinkCustomerIntegrationResponse>> = fireblocks.tRLink.createTRLinkIntegration(tRLinkApiCreateTRLinkIntegrationRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<TRLinkCustomerIntegrationResponse>> response = fireblocks.tRLink().createTRLinkIntegration(tRLinkCreateIntegrationRequest, idempotencyKey);
        - lang: Python
          source: response = fireblocks.t_r_link.create_t_r_link_integration(t_r_link_create_integration_request, idempotency_key);
  /screening/trlink/customers/integration/{customerIntegrationId}:
    put:
      operationId: connectTRLinkIntegration
      summary: Connect customer integration
      description: Connects a customer integration by providing API credentials. Stores encrypted credentials and enables the integration for use.
      parameters:
        - name: customerIntegrationId
          in: path
          required: true
          description: Customer integration unique identifier
          example: 123e4567-e89b-12d3-a456-426614174000
          schema:
            type: string
            format: uuid
        - $ref: '#/components/parameters/X-Idempotency-Key'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TRLinkConnectIntegrationRequest'
      responses:
        '200':
          description: Customer integration connected successfully
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TRLinkCustomerIntegrationResponse'
        default:
          $ref: '#/components/responses/Error'
      tags:
        - TRLink
      x-rate-limit-category: write
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<TRLinkCustomerIntegrationResponse>> = fireblocks.tRLink.connectTRLinkIntegration(tRLinkApiConnectTRLinkIntegrationRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<TRLinkCustomerIntegrationResponse>> response = fireblocks.tRLink().connectTRLinkIntegration(tRLinkConnectIntegrationRequest, customerIntegrationId, idempotencyKey);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.t_r_link.connect_t_r_link_integration(t_r_link_connect_integration_request, customer_integration_id, idempotency_key);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<TRLinkCustomerIntegrationResponse>> = fireblocks.tRLink.connectTRLinkIntegration(tRLinkApiConnectTRLinkIntegrationRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<TRLinkCustomerIntegrationResponse>> response = fireblocks.tRLink().connectTRLinkIntegration(tRLinkConnectIntegrationRequest, customerIntegrationId, idempotencyKey);
        - lang: Python
          source: response = fireblocks.t_r_link.connect_t_r_link_integration(t_r_link_connect_integration_request, customer_integration_id, idempotency_key);
    delete:
      operationId: disconnectTRLinkIntegration
      summary: Disconnect customer integration
      description: 'Disconnects the integration for the authenticated workspace (tenant): removes stored credentials and deletes this tenant''s integration record. The operation is scoped to the caller''s tenant; it does not remove partner-side state for other workspaces that reuse the same logical customer integration. The record cannot be recovered after delete.'
      parameters:
        - name: customerIntegrationId
          in: path
          required: true
          description: Customer integration unique identifier
          example: 123e4567-e89b-12d3-a456-426614174000
          schema:
            type: string
            format: uuid
      responses:
        '204':
          description: Customer integration disconnected successfully
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
        default:
          $ref: '#/components/responses/Error'
      tags:
        - TRLink
      x-rate-limit-category: write
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<void>> = fireblocks.tRLink.disconnectTRLinkIntegration(tRLinkApiDisconnectTRLinkIntegrationRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<Void>> response = fireblocks.tRLink().disconnectTRLinkIntegration(customerIntegrationId);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.t_r_link.disconnect_t_r_link_integration(customer_integration_id);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<void>> = fireblocks.tRLink.disconnectTRLinkIntegration(tRLinkApiDisconnectTRLinkIntegrationRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<Void>> response = fireblocks.tRLink().disconnectTRLinkIntegration(customerIntegrationId);
        - lang: Python
          source: response = fireblocks.t_r_link.disconnect_t_r_link_integration(customer_integration_id);
  /screening/trlink/customers/integration/{customerIntegrationId}/assets:
    get:
      operationId: listTRLinkSupportedAssets
      summary: List supported assets
      description: Retrieves a paginated list of assets supported by the partner integration. Includes a flag indicating whether the partner can handle assets not explicitly listed. Supports cursor-based pagination.
      parameters:
        - name: customerIntegrationId
          in: path
          required: true
          description: Customer integration unique identifier
          schema:
            type: string
            format: uuid
        - name: pageSize
          in: query
          required: false
          description: Number of results per page (max 100)
          schema:
            type: integer
            minimum: 1
            maximum: 100
            default: 100
        - name: pageCursor
          in: query
          required: false
          description: Cursor for pagination (from previous response)
          schema:
            type: string
      responses:
        '200':
          description: Supported assets retrieved successfully
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TRLinkAssetsListPagedResponse'
        default:
          $ref: '#/components/responses/Error'
      tags:
        - TRLink
      x-rate-limit-category: query
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<TRLinkAssetsListPagedResponse>> = fireblocks.tRLink.listTRLinkSupportedAssets(tRLinkApiListTRLinkSupportedAssetsRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<TRLinkAssetsListPagedResponse>> response = fireblocks.tRLink().listTRLinkSupportedAssets(customerIntegrationId, pageSize, pageCursor);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.t_r_link.list_t_r_link_supported_assets(customer_integration_id, page_size, page_cursor);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<TRLinkAssetsListPagedResponse>> = fireblocks.tRLink.listTRLinkSupportedAssets(tRLinkApiListTRLinkSupportedAssetsRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<TRLinkAssetsListPagedResponse>> response = fireblocks.tRLink().listTRLinkSupportedAssets(customerIntegrationId, pageSize, pageCursor);
        - lang: Python
          source: response = fireblocks.t_r_link.list_t_r_link_supported_assets(customer_integration_id, page_size, page_cursor);
  /screening/trlink/customers/integration/{customerIntegrationId}/assets/{assetId}:
    get:
      operationId: getTRLinkSupportedAsset
      summary: Get supported asset by ID
      description: Retrieves detailed information about a specific asset by its Fireblocks asset ID. Returns the transformed Fireblocks asset data, raw partner response, and support status.
      parameters:
        - name: customerIntegrationId
          in: path
          required: true
          description: Customer integration unique identifier
          schema:
            type: string
            format: uuid
        - name: assetId
          in: path
          required: true
          description: Fireblocks asset ID
          schema:
            type: string
      responses:
        '200':
          description: Asset retrieved successfully
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TRLinkGetSupportedAssetResponse'
        default:
          $ref: '#/components/responses/Error'
      tags:
        - TRLink
      x-rate-limit-category: read
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<TRLinkGetSupportedAssetResponse>> = fireblocks.tRLink.getTRLinkSupportedAsset(tRLinkApiGetTRLinkSupportedAssetRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<TRLinkGetSupportedAssetResponse>> response = fireblocks.tRLink().getTRLinkSupportedAsset(customerIntegrationId, assetId);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.t_r_link.get_t_r_link_supported_asset(customer_integration_id, asset_id);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<TRLinkGetSupportedAssetResponse>> = fireblocks.tRLink.getTRLinkSupportedAsset(tRLinkApiGetTRLinkSupportedAssetRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<TRLinkGetSupportedAssetResponse>> response = fireblocks.tRLink().getTRLinkSupportedAsset(customerIntegrationId, assetId);
        - lang: Python
          source: response = fireblocks.t_r_link.get_t_r_link_supported_asset(customer_integration_id, asset_id);
  /screening/trlink/customers/integration/{customerIntegrationId}/public_key:
    get:
      operationId: getTRLinkIntegrationPublicKey
      summary: Get public key for PII encryption
      description: Retrieves the partner's public key in JWK format for encrypting PII data in Travel Rule Messages. Use this key to encrypt sensitive originator and beneficiary information before sending Travel Rule messages.
      parameters:
        - name: customerIntegrationId
          in: path
          required: true
          description: Customer integration unique identifier
          example: 123e4567-e89b-12d3-a456-426614174000
          schema:
            type: string
            format: uuid
      responses:
        '200':
          description: Public key retrieved successfully
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TRLinkPublicKeyResponse'
        default:
          $ref: '#/components/responses/Error'
      tags:
        - TRLink
      x-rate-limit-category: read
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<TRLinkPublicKeyResponse>> = fireblocks.tRLink.getTRLinkIntegrationPublicKey(tRLinkApiGetTRLinkIntegrationPublicKeyRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<TRLinkPublicKeyResponse>> response = fireblocks.tRLink().getTRLinkIntegrationPublicKey(customerIntegrationId);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.t_r_link.get_t_r_link_integration_public_key(customer_integration_id);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<TRLinkPublicKeyResponse>> = fireblocks.tRLink.getTRLinkIntegrationPublicKey(tRLinkApiGetTRLinkIntegrationPublicKeyRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<TRLinkPublicKeyResponse>> response = fireblocks.tRLink().getTRLinkIntegrationPublicKey(customerIntegrationId);
        - lang: Python
          source: response = fireblocks.t_r_link.get_t_r_link_integration_public_key(customer_integration_id);
  /screening/trlink/customers/integration/{customerIntegrationId}/test_connection:
    post:
      operationId: testTRLinkIntegrationConnection
      summary: Test connection
      description: Tests the connection to a customer integration by validating stored credentials and attempting communication with the Travel Rule partner. Returns connection status and any error messages.
      parameters:
        - name: customerIntegrationId
          in: path
          required: true
          description: Customer integration unique identifier
          example: 123e4567-e89b-12d3-a456-426614174000
          schema:
            type: string
            format: uuid
        - $ref: '#/components/parameters/X-Idempotency-Key'
      responses:
        '200':
          description: Connection test completed (success or failure details in response body)
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TRLinkTestConnectionResponse'
        default:
          $ref: '#/components/responses/Error'
      tags:
        - TRLink
      x-rate-limit-category: write
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<TRLinkTestConnectionResponse>> = fireblocks.tRLink.testTRLinkIntegrationConnection(tRLinkApiTestTRLinkIntegrationConnectionRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<TRLinkTestConnectionResponse>> response = fireblocks.tRLink().testTRLinkIntegrationConnection(customerIntegrationId, idempotencyKey);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.t_r_link.test_t_r_link_integration_connection(customer_integration_id, idempotency_key);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<TRLinkTestConnectionResponse>> = fireblocks.tRLink.testTRLinkIntegrationConnection(tRLinkApiTestTRLinkIntegrationConnectionRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<TRLinkTestConnectionResponse>> response = fireblocks.tRLink().testTRLinkIntegrationConnection(customerIntegrationId, idempotencyKey);
        - lang: Python
          source: response = fireblocks.t_r_link.test_t_r_link_integration_connection(customer_integration_id, idempotency_key);
  /screening/trlink/customers/integration/{customerIntegrationId}/transactions/{txId}/manual_decision:
    post:
      operationId: createTRLinkManualDecision
      summary: Manual decision for missing TRM
      description: Accept or reject destinations stuck in NoTRM step without waiting for TRP webhook or policy timeout.
      parameters:
        - name: customerIntegrationId
          in: path
          required: true
          description: Customer integration unique identifier
          schema:
            type: string
            format: uuid
          example: 3fa85f64-5717-4562-b3fc-2c963f66afa6
        - name: txId
          in: path
          required: true
          description: Fireblocks transaction unique identifier
          schema:
            type: string
            format: uuid
          example: b70701f4-d7b1-4795-a8ee-b09cdb5b850e
        - $ref: '#/components/parameters/X-Idempotency-Key'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TRLinkManualDecisionRequest'
      responses:
        '200':
          description: Decision applied successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TRLinkManualDecisionResponse'
        default:
          $ref: '#/components/responses/Error'
      tags:
        - TRLink
      x-rate-limit-category: write
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<TRLinkManualDecisionResponse>> = fireblocks.tRLink.createTRLinkManualDecision(tRLinkApiCreateTRLinkManualDecisionRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<TRLinkManualDecisionResponse>> response = fireblocks.tRLink().createTRLinkManualDecision(tRLinkManualDecisionRequest, customerIntegrationId, txId, idempotencyKey);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.t_r_link.create_t_r_link_manual_decision(t_r_link_manual_decision_request, customer_integration_id, tx_id, idempotency_key);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<TRLinkManualDecisionResponse>> = fireblocks.tRLink.createTRLinkManualDecision(tRLinkApiCreateTRLinkManualDecisionRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<TRLinkManualDecisionResponse>> response = fireblocks.tRLink().createTRLinkManualDecision(tRLinkManualDecisionRequest, customerIntegrationId, txId, idempotencyKey);
        - lang: Python
          source: response = fireblocks.t_r_link.create_t_r_link_manual_decision(t_r_link_manual_decision_request, customer_integration_id, tx_id, idempotency_key);
  /screening/trlink/customers/integration/{customerIntegrationId}/trm:
    post:
      operationId: createTRLinkTrm
      summary: Create Travel Rule Message
      description: Creates a new travel rule message with IVMS101-compliant PII data. Encrypts sensitive originator and beneficiary information before sending to partner.
      parameters:
        - name: customerIntegrationId
          in: path
          required: true
          description: Customer integration unique identifier
          schema:
            type: string
            format: uuid
        - $ref: '#/components/parameters/X-Idempotency-Key'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TRLinkCreateTrmRequest'
      responses:
        '201':
          description: TRM created successfully
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TRLinkTrmInfoResponse'
        default:
          $ref: '#/components/responses/Error'
      tags:
        - TRLink
      x-rate-limit-category: write
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<TRLinkTrmInfoResponse>> = fireblocks.tRLink.createTRLinkTrm(tRLinkApiCreateTRLinkTrmRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<TRLinkTrmInfoResponse>> response = fireblocks.tRLink().createTRLinkTrm(tRLinkCreateTrmRequest, customerIntegrationId, idempotencyKey);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.t_r_link.create_t_r_link_trm(t_r_link_create_trm_request, customer_integration_id, idempotency_key);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<TRLinkTrmInfoResponse>> = fireblocks.tRLink.createTRLinkTrm(tRLinkApiCreateTRLinkTrmRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<TRLinkTrmInfoResponse>> response = fireblocks.tRLink().createTRLinkTrm(tRLinkCreateTrmRequest, customerIntegrationId, idempotencyKey);
        - lang: Python
          source: response = fireblocks.t_r_link.create_t_r_link_trm(t_r_link_create_trm_request, customer_integration_id, idempotency_key);
  /screening/trlink/customers/integration/{customerIntegrationId}/trm/{trmId}:
    get:
      operationId: getTRLinkTrmById
      summary: Get TRM by ID
      description: Retrieves a Travel Rule Message by its unique identifier from the partner provider. Returns full TRM details including status, IVMS101 data, and transaction information.
      parameters:
        - name: customerIntegrationId
          in: path
          required: true
          description: Customer integration unique identifier
          schema:
            type: string
            format: uuid
        - name: trmId
          in: path
          required: true
          description: Travel Rule Message unique identifier
          schema:
            type: string
      responses:
        '200':
          description: TRM retrieved successfully
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TRLinkTrmInfoResponse'
        default:
          $ref: '#/components/responses/Error'
      tags:
        - TRLink
      x-rate-limit-category: read
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<TRLinkTrmInfoResponse>> = fireblocks.tRLink.getTRLinkTrmById(tRLinkApiGetTRLinkTrmByIdRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<TRLinkTrmInfoResponse>> response = fireblocks.tRLink().getTRLinkTrmById(customerIntegrationId, trmId);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.t_r_link.get_t_r_link_trm_by_id(customer_integration_id, trm_id);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<TRLinkTrmInfoResponse>> = fireblocks.tRLink.getTRLinkTrmById(tRLinkApiGetTRLinkTrmByIdRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<TRLinkTrmInfoResponse>> response = fireblocks.tRLink().getTRLinkTrmById(customerIntegrationId, trmId);
        - lang: Python
          source: response = fireblocks.t_r_link.get_t_r_link_trm_by_id(customer_integration_id, trm_id);
  /screening/trlink/customers/integration/{customerIntegrationId}/trm/{trmId}/cancel:
    post:
      operationId: cancelTRLinkTrm
      summary: Cancel Travel Rule Message
      description: Cancels a travel rule message. The TRM status will be updated to cancelled and the partner will be notified.
      parameters:
        - name: customerIntegrationId
          in: path
          required: true
          description: Customer integration unique identifier
          schema:
            type: string
            format: uuid
        - name: trmId
          in: path
          required: true
          description: Travel Rule Message unique identifier
          schema:
            type: string
        - $ref: '#/components/parameters/X-Idempotency-Key'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TRLinkCancelTrmRequest'
      responses:
        '202':
          description: Transaction cancellation request accepted
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TRLinkTrmInfoResponse'
        default:
          $ref: '#/components/responses/Error'
      tags:
        - TRLink
      x-rate-limit-category: write
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<TRLinkTrmInfoResponse>> = fireblocks.tRLink.cancelTRLinkTrm(tRLinkApiCancelTRLinkTrmRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<TRLinkTrmInfoResponse>> response = fireblocks.tRLink().cancelTRLinkTrm(tRLinkCancelTrmRequest, customerIntegrationId, trmId, idempotencyKey);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.t_r_link.cancel_t_r_link_trm(t_r_link_cancel_trm_request, customer_integration_id, trm_id, idempotency_key);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<TRLinkTrmInfoResponse>> = fireblocks.tRLink.cancelTRLinkTrm(tRLinkApiCancelTRLinkTrmRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<TRLinkTrmInfoResponse>> response = fireblocks.tRLink().cancelTRLinkTrm(tRLinkCancelTrmRequest, customerIntegrationId, trmId, idempotencyKey);
        - lang: Python
          source: response = fireblocks.t_r_link.cancel_t_r_link_trm(t_r_link_cancel_trm_request, customer_integration_id, trm_id, idempotency_key);
  /screening/trlink/customers/integration/{customerIntegrationId}/trm/{trmId}/redirect:
    post:
      operationId: redirectTRLinkTrm
      summary: Redirect Travel Rule Message
      description: Redirects a Travel Rule Message to a subsidiary VASP. This operation requires the partner to support nested VASPs functionality.
      parameters:
        - name: customerIntegrationId
          in: path
          required: true
          description: Customer integration unique identifier
          schema:
            type: string
            format: uuid
        - name: trmId
          in: path
          required: true
          description: Travel Rule Message unique identifier
          schema:
            type: string
        - $ref: '#/components/parameters/X-Idempotency-Key'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TRLinkRedirectTrmRequest'
      responses:
        '202':
          description: Transaction redirect request accepted
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TRLinkTrmInfoResponse'
        default:
          $ref: '#/components/responses/Error'
      tags:
        - TRLink
      x-rate-limit-category: write
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<TRLinkTrmInfoResponse>> = fireblocks.tRLink.redirectTRLinkTrm(tRLinkApiRedirectTRLinkTrmRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<TRLinkTrmInfoResponse>> response = fireblocks.tRLink().redirectTRLinkTrm(tRLinkRedirectTrmRequest, customerIntegrationId, trmId, idempotencyKey);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.t_r_link.redirect_t_r_link_trm(t_r_link_redirect_trm_request, customer_integration_id, trm_id, idempotency_key);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<TRLinkTrmInfoResponse>> = fireblocks.tRLink.redirectTRLinkTrm(tRLinkApiRedirectTRLinkTrmRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<TRLinkTrmInfoResponse>> response = fireblocks.tRLink().redirectTRLinkTrm(tRLinkRedirectTrmRequest, customerIntegrationId, trmId, idempotencyKey);
        - lang: Python
          source: response = fireblocks.t_r_link.redirect_t_r_link_trm(t_r_link_redirect_trm_request, customer_integration_id, trm_id, idempotency_key);
  /screening/trlink/customers/integration/{customerIntegrationId}/trm/{trmId}/required_actions:
    get:
      operationId: getTRLinkTrmRequiredActions
      summary: Get required actions for a TRM
      description: Retrieves the list of required actions (e.g., PII fields) needed to process the Travel Rule Message.
      parameters:
        - name: customerIntegrationId
          in: path
          required: true
          description: Customer integration unique identifier
          schema:
            type: string
            format: uuid
        - name: trmId
          in: path
          required: true
          description: Travel Rule Message unique identifier
          schema:
            type: string
      responses:
        '200':
          description: Required actions retrieved successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TRLinkGetRequiredActionsResponse'
        default:
          $ref: '#/components/responses/Error'
      tags:
        - TRLink
      x-rate-limit-category: query
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<TRLinkGetRequiredActionsResponse>> = fireblocks.tRLink.getTRLinkTrmRequiredActions(tRLinkApiGetTRLinkTrmRequiredActionsRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<TRLinkGetRequiredActionsResponse>> response = fireblocks.tRLink().getTRLinkTrmRequiredActions(customerIntegrationId, trmId);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.t_r_link.get_t_r_link_trm_required_actions(customer_integration_id, trm_id);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<TRLinkGetRequiredActionsResponse>> = fireblocks.tRLink.getTRLinkTrmRequiredActions(tRLinkApiGetTRLinkTrmRequiredActionsRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<TRLinkGetRequiredActionsResponse>> response = fireblocks.tRLink().getTRLinkTrmRequiredActions(customerIntegrationId, trmId);
        - lang: Python
          source: response = fireblocks.t_r_link.get_t_r_link_trm_required_actions(customer_integration_id, trm_id);
  /screening/trlink/customers/integration/{customerIntegrationId}/trm/{trmId}/resolve_action:
    post:
      operationId: resolveActionTRLinkTrm
      summary: Resolve action for a TRM
      description: Submits required data (e.g., beneficiary PII) to resolve a pending Travel Rule Message action.
      parameters:
        - name: customerIntegrationId
          in: path
          required: true
          description: Customer integration unique identifier
          schema:
            type: string
            format: uuid
        - name: trmId
          in: path
          required: true
          description: Travel Rule Message unique identifier
          schema:
            type: string
        - $ref: '#/components/parameters/X-Idempotency-Key'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TRLinkResolveActionRequest'
      responses:
        '200':
          description: Action resolved successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TRLinkTrmInfoResponse'
        default:
          $ref: '#/components/responses/Error'
      tags:
        - TRLink
      x-rate-limit-category: write
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<TRLinkTrmInfoResponse>> = fireblocks.tRLink.resolveActionTRLinkTrm(tRLinkApiResolveActionTRLinkTrmRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<TRLinkTrmInfoResponse>> response = fireblocks.tRLink().resolveActionTRLinkTrm(tRLinkResolveActionRequest, customerIntegrationId, trmId, idempotencyKey);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.t_r_link.resolve_action_t_r_link_trm(t_r_link_resolve_action_request, customer_integration_id, trm_id, idempotency_key);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<TRLinkTrmInfoResponse>> = fireblocks.tRLink.resolveActionTRLinkTrm(tRLinkApiResolveActionTRLinkTrmRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<TRLinkTrmInfoResponse>> response = fireblocks.tRLink().resolveActionTRLinkTrm(tRLinkResolveActionRequest, customerIntegrationId, trmId, idempotencyKey);
        - lang: Python
          source: response = fireblocks.t_r_link.resolve_action_t_r_link_trm(t_r_link_resolve_action_request, customer_integration_id, trm_id, idempotency_key);
  /screening/trlink/customers/integration/{customerIntegrationId}/trm/assess:
    post:
      operationId: assessTRLinkTravelRuleRequirement
      summary: Assess Travel Rule requirement
      description: Assesses travel rule requirement for a transaction by validating stored credentials and determining whether Travel Rule compliance is required based on amount, jurisdiction, and partner thresholds.
      parameters:
        - name: customerIntegrationId
          in: path
          required: true
          description: Customer integration unique identifier
          schema:
            type: string
            format: uuid
        - $ref: '#/components/parameters/X-Idempotency-Key'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TRLinkAssessTravelRuleRequest'
      responses:
        '200':
          description: Travel rule assessment completed
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TRLinkAssessTravelRuleResponse'
        default:
          $ref: '#/components/responses/Error'
      tags:
        - TRLink
      x-rate-limit-category: write
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<TRLinkAssessTravelRuleResponse>> = fireblocks.tRLink.assessTRLinkTravelRuleRequirement(tRLinkApiAssessTRLinkTravelRuleRequirementRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<TRLinkAssessTravelRuleResponse>> response = fireblocks.tRLink().assessTRLinkTravelRuleRequirement(tRLinkAssessTravelRuleRequest, customerIntegrationId, idempotencyKey);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.t_r_link.assess_t_r_link_travel_rule_requirement(t_r_link_assess_travel_rule_request, customer_integration_id, idempotency_key);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<TRLinkAssessTravelRuleResponse>> = fireblocks.tRLink.assessTRLinkTravelRuleRequirement(tRLinkApiAssessTRLinkTravelRuleRequirementRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<TRLinkAssessTravelRuleResponse>> response = fireblocks.tRLink().assessTRLinkTravelRuleRequirement(tRLinkAssessTravelRuleRequest, customerIntegrationId, idempotencyKey);
        - lang: Python
          source: response = fireblocks.t_r_link.assess_t_r_link_travel_rule_requirement(t_r_link_assess_travel_rule_request, customer_integration_id, idempotency_key);
  /screening/trlink/customers/integration/{customerIntegrationId}/vasps:
    get:
      operationId: listTRLinkVasps
      summary: List VASPs
      description: Retrieves a paginated list of VASPs (Virtual Asset Service Providers) available through the partner integration. Supports cursor-based pagination.
      parameters:
        - name: customerIntegrationId
          in: path
          required: true
          description: Customer integration unique identifier
          schema:
            type: string
            format: uuid
        - name: pageSize
          in: query
          required: false
          description: Number of results per page (max 100)
          schema:
            type: integer
            minimum: 1
            maximum: 100
            default: 100
        - name: pageCursor
          in: query
          required: false
          description: Cursor for pagination (from previous response)
          schema:
            type: string
      responses:
        '200':
          description: VASPs retrieved successfully
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TRLinkAPIPagedResponse'
        default:
          $ref: '#/components/responses/Error'
      tags:
        - TRLink
      x-rate-limit-category: query
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<TRLinkAPIPagedResponse>> = fireblocks.tRLink.listTRLinkVasps(tRLinkApiListTRLinkVaspsRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<TRLinkAPIPagedResponse>> response = fireblocks.tRLink().listTRLinkVasps(customerIntegrationId, pageSize, pageCursor);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.t_r_link.list_t_r_link_vasps(customer_integration_id, page_size, page_cursor);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<TRLinkAPIPagedResponse>> = fireblocks.tRLink.listTRLinkVasps(tRLinkApiListTRLinkVaspsRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<TRLinkAPIPagedResponse>> response = fireblocks.tRLink().listTRLinkVasps(customerIntegrationId, pageSize, pageCursor);
        - lang: Python
          source: response = fireblocks.t_r_link.list_t_r_link_vasps(customer_integration_id, page_size, page_cursor);
  /screening/trlink/customers/integration/{customerIntegrationId}/vasps/{vaspId}:
    get:
      operationId: getTRLinkVaspById
      summary: Get VASP by ID
      description: Retrieves detailed information about a specific VASP by its unique identifier. Returns VASP details including public key if available.
      parameters:
        - name: customerIntegrationId
          in: path
          required: true
          description: Customer integration unique identifier
          schema:
            type: string
            format: uuid
        - name: vaspId
          in: path
          required: true
          description: VASP unique identifier (DID format)
          schema:
            type: string
      responses:
        '200':
          description: VASP retrieved successfully
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TRLinkVaspDto'
        default:
          $ref: '#/components/responses/Error'
      tags:
        - TRLink
      x-rate-limit-category: read
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<TRLinkVaspDto>> = fireblocks.tRLink.getTRLinkVaspById(tRLinkApiGetTRLinkVaspByIdRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<TRLinkVaspDto>> response = fireblocks.tRLink().getTRLinkVaspById(customerIntegrationId, vaspId);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.t_r_link.get_t_r_link_vasp_by_id(customer_integration_id, vasp_id);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<TRLinkVaspDto>> = fireblocks.tRLink.getTRLinkVaspById(tRLinkApiGetTRLinkVaspByIdRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<TRLinkVaspDto>> response = fireblocks.tRLink().getTRLinkVaspById(customerIntegrationId, vaspId);
        - lang: Python
          source: response = fireblocks.t_r_link.get_t_r_link_vasp_by_id(customer_integration_id, vasp_id);
  /screening/trlink/partners:
    get:
      operationId: getTRLinkPartners
      summary: List available TRSupport partners
      description: Retrieves a list of all available Travel Rule Support integration partners. Partners provide Travel Rule compliance services such as VASP discovery, TRM exchange, and PII encryption.
      responses:
        '200':
          description: List of partners retrieved successfully
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TRLinkPartnersListResponse'
        default:
          $ref: '#/components/responses/Error'
      tags:
        - TRLink
      x-rate-limit-category: query
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<TRLinkPartnersListResponse>> = fireblocks.tRLink.getTRLinkPartners();'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<List<TRLinkPartnerResponse>>> response = fireblocks.tRLink().getTRLinkPartners();
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.t_r_link.get_t_r_link_partners();
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<TRLinkPartnersListResponse>> = fireblocks.tRLink.getTRLinkPartners();'
        - lang: Java
          source: CompletableFuture<ApiResponse<List<TRLinkPartnerResponse>>> response = fireblocks.tRLink().getTRLinkPartners();
        - lang: Python
          source: response = fireblocks.t_r_link.get_t_r_link_partners();
  /screening/trlink/policy:
    get:
      operationId: getTRLinkPolicy
      summary: Get TRLink policy
      description: Retrieves the complete TRSupport policy for the authenticated tenant, including pre-screening rules, post-screening rules, and missing TRM rules. Pre-screening rules determine whether transactions should be screened. Post-screening rules determine actions based on screening results. Missing TRM rules handle cases when screening data is unavailable.
      responses:
        '200':
          description: Policy retrieved successfully
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TRLinkPolicyResponse'
        default:
          $ref: '#/components/responses/Error'
      tags:
        - TRLink
      x-rate-limit-category: read
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<TRLinkPolicyResponse>> = fireblocks.tRLink.getTRLinkPolicy();'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<TRLinkPolicyResponse>> response = fireblocks.tRLink().getTRLinkPolicy();
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.t_r_link.get_t_r_link_policy();
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<TRLinkPolicyResponse>> = fireblocks.tRLink.getTRLinkPolicy();'
        - lang: Java
          source: CompletableFuture<ApiResponse<TRLinkPolicyResponse>> response = fireblocks.tRLink().getTRLinkPolicy();
        - lang: Python
          source: response = fireblocks.t_r_link.get_t_r_link_policy();
  /screening/trlink/transaction/{txId}/destination/travel_rule_message_id:
    post:
      operationId: setTRLinkDestinationTravelRuleMessageId
      summary: Set destination travel rule message ID
      description: Associates a Travel Rule Message ID with a specific destination in a multi-destination Fireblocks transaction. Matches destinations by amount and peer path.
      parameters:
        - name: txId
          in: path
          required: true
          description: Fireblocks transaction unique identifier
          schema:
            type: string
            format: uuid
        - $ref: '#/components/parameters/X-Idempotency-Key'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TRLinkSetDestinationTravelRuleMessageIdRequest'
      responses:
        '200':
          description: Destination travel rule message ID set successfully
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TRLinkSetDestinationTravelRuleMessageIdResponse'
        default:
          $ref: '#/components/responses/Error'
      tags:
        - TRLink
      x-rate-limit-category: write
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<TRLinkSetDestinationTravelRuleMessageIdResponse>> = fireblocks.tRLink.setTRLinkDestinationTravelRuleMessageId(tRLinkApiSetTRLinkDestinationTravelRuleMessageIdRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<TRLinkSetDestinationTravelRuleMessageIdResponse>> response = fireblocks.tRLink().setTRLinkDestinationTravelRuleMessageId(tRLinkSetDestinationTravelRuleMessageIdRequest, txId, idempotencyKey);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.t_r_link.set_t_r_link_destination_travel_rule_message_id(t_r_link_set_destination_travel_rule_message_id_request, tx_id, idempotency_key);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<TRLinkSetDestinationTravelRuleMessageIdResponse>> = fireblocks.tRLink.setTRLinkDestinationTravelRuleMessageId(tRLinkApiSetTRLinkDestinationTravelRuleMessageIdRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<TRLinkSetDestinationTravelRuleMessageIdResponse>> response = fireblocks.tRLink().setTRLinkDestinationTravelRuleMessageId(tRLinkSetDestinationTravelRuleMessageIdRequest, txId, idempotencyKey);
        - lang: Python
          source: response = fireblocks.t_r_link.set_t_r_link_destination_travel_rule_message_id(t_r_link_set_destination_travel_rule_message_id_request, tx_id, idempotency_key);
  /screening/trlink/transaction/{txId}/travel_rule_message_id:
    post:
      operationId: setTRLinkTransactionTravelRuleMessageId
      summary: Set transaction travel rule message ID
      description: Associates a Travel Rule Message ID with a Fireblocks transaction. This links the TRM compliance data to the blockchain transaction.
      parameters:
        - name: txId
          in: path
          required: true
          description: Fireblocks transaction unique identifier
          schema:
            type: string
            format: uuid
        - $ref: '#/components/parameters/X-Idempotency-Key'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TRLinkSetTransactionTravelRuleMessageIdRequest'
      responses:
        '200':
          description: Travel rule message ID set successfully
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TRLinkSetTransactionTravelRuleMessageIdResponse'
        default:
          $ref: '#/components/responses/Error'
      tags:
        - TRLink
      x-rate-limit-category: write
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<TRLinkSetTransactionTravelRuleMessageIdResponse>> = fireblocks.tRLink.setTRLinkTransactionTravelRuleMessageId(tRLinkApiSetTRLinkTransactionTravelRuleMessageIdRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<TRLinkSetTransactionTravelRuleMessageIdResponse>> response = fireblocks.tRLink().setTRLinkTransactionTravelRuleMessageId(tRLinkSetTransactionTravelRuleMessageIdRequest, txId, idempotencyKey);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.t_r_link.set_t_r_link_transaction_travel_rule_message_id(t_r_link_set_transaction_travel_rule_message_id_request, tx_id, idempotency_key);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<TRLinkSetTransactionTravelRuleMessageIdResponse>> = fireblocks.tRLink.setTRLinkTransactionTravelRuleMessageId(tRLinkApiSetTRLinkTransactionTravelRuleMessageIdRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<TRLinkSetTransactionTravelRuleMessageIdResponse>> response = fireblocks.tRLink().setTRLinkTransactionTravelRuleMessageId(tRLinkSetTransactionTravelRuleMessageIdRequest, txId, idempotencyKey);
        - lang: Python
          source: response = fireblocks.t_r_link.set_t_r_link_transaction_travel_rule_message_id(t_r_link_set_transaction_travel_rule_message_id_request, tx_id, idempotency_key);
  /management/user_groups:
    get:
      operationId: getUserGroups
      summary: List user groups
      description: |-
        Get all user groups in your workspace

        - Please note that this endpoint is available only for API keys with Admin/Non Signing Admin permissions.
        Endpoint Permission: Admin, Non-Signing Admin.
      tags:
        - User groups (Beta)
      x-rate-limit-category: query
      responses:
        '200':
          description: List of the user groups in your workspace
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UserGroupsResponse'
        default:
          $ref: '#/components/responses/Error'
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<UserGroupsResponse>> = fireblocks.userGroupsBeta.getUserGroups();'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<List<UserGroupResponse>>> response = fireblocks.userGroupsBeta().getUserGroups();
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.user_groups_beta.get_user_groups();
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<UserGroupsResponse>> = fireblocks.userGroupsBeta.getUserGroups();'
        - lang: Java
          source: CompletableFuture<ApiResponse<List<UserGroupResponse>>> response = fireblocks.userGroupsBeta().getUserGroups();
        - lang: Python
          source: response = fireblocks.user_groups_beta.get_user_groups();
    post:
      operationId: createUserGroup
      summary: Create user group
      description: |-
        Create a new user group. Users with the Viewer role cannot be added to groups.
        Endpoint Permission: Admin, Non-Signing Admin.
      tags:
        - User groups (Beta)
      x-rate-limit-category: write
      parameters:
        - $ref: '#/components/parameters/X-Idempotency-Key'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UserGroupCreateRequest'
      responses:
        '201':
          description: User group created and pending approval
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreateUserGroupResponse'
        default:
          $ref: '#/components/responses/Error'
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<CreateUserGroupResponse>> = fireblocks.userGroupsBeta.createUserGroup(userGroupsBetaApiCreateUserGroupRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<CreateUserGroupResponse>> response = fireblocks.userGroupsBeta().createUserGroup(userGroupCreateRequest, idempotencyKey);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.user_groups_beta.create_user_group(user_group_create_request, idempotency_key);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<CreateUserGroupResponse>> = fireblocks.userGroupsBeta.createUserGroup(userGroupsBetaApiCreateUserGroupRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<CreateUserGroupResponse>> response = fireblocks.userGroupsBeta().createUserGroup(userGroupCreateRequest, idempotencyKey);
        - lang: Python
          source: response = fireblocks.user_groups_beta.create_user_group(user_group_create_request, idempotency_key);
  /management/user_groups/{groupId}:
    get:
      operationId: getUserGroup
      summary: Get user group
      x-rate-limit-category: read
      description: |
        Get a user group by ID.

        **Note**:
        - This endpoint is now in Beta, disabled for general availability at this time.
        - Please note that this endpoint is available only for API keys with Admin permissions.
      tags:
        - User groups (Beta)
      parameters:
        - in: path
          required: true
          name: groupId
          description: The ID of the user group
          schema:
            type: string
      responses:
        '200':
          description: User group
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UserGroupResponse'
        default:
          $ref: '#/components/responses/Error'
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<UserGroupResponse>> = fireblocks.userGroupsBeta.getUserGroup(userGroupsBetaApiGetUserGroupRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<UserGroupResponse>> response = fireblocks.userGroupsBeta().getUserGroup(groupId);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.user_groups_beta.get_user_group(group_id);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<UserGroupResponse>> = fireblocks.userGroupsBeta.getUserGroup(userGroupsBetaApiGetUserGroupRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<UserGroupResponse>> response = fireblocks.userGroupsBeta().getUserGroup(groupId);
        - lang: Python
          source: response = fireblocks.user_groups_beta.get_user_group(group_id);
    put:
      operationId: updateUserGroup
      summary: Update user group
      x-rate-limit-category: write
      description: |
        Update a user group by ID.

        **Note**:
        - This endpoint is now in Beta, disabled for general availability at this time.
        - Please note that this endpoint is available only for API keys with Admin permissions.
      tags:
        - User groups (Beta)
      parameters:
        - in: path
          required: true
          name: groupId
          description: The ID of the user group
          schema:
            type: string
        - $ref: '#/components/parameters/X-Idempotency-Key'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UserGroupUpdateRequest'
      responses:
        '200':
          description: User group updated and the changes are pending approval
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UserGroupCreateResponse'
        default:
          $ref: '#/components/responses/Error'
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<UserGroupCreateResponse>> = fireblocks.userGroupsBeta.updateUserGroup(userGroupsBetaApiUpdateUserGroupRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<UserGroupCreateResponse>> response = fireblocks.userGroupsBeta().updateUserGroup(userGroupUpdateRequest, groupId, idempotencyKey);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.user_groups_beta.update_user_group(user_group_update_request, group_id, idempotency_key);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<UserGroupCreateResponse>> = fireblocks.userGroupsBeta.updateUserGroup(userGroupsBetaApiUpdateUserGroupRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<UserGroupCreateResponse>> response = fireblocks.userGroupsBeta().updateUserGroup(userGroupUpdateRequest, groupId, idempotencyKey);
        - lang: Python
          source: response = fireblocks.user_groups_beta.update_user_group(user_group_update_request, group_id, idempotency_key);
    delete:
      operationId: deleteUserGroup
      summary: Delete user group
      description: |
        Delete a user group by ID.

        **Note**:
        - This endpoint is now in Beta, disabled for general availability at this time.
        - Please note that this endpoint is available only for API keys with Admin permissions.
      tags:
        - User groups (Beta)
      x-rate-limit-category: write
      parameters:
        - in: path
          required: true
          name: groupId
          description: The ID of the user group
          schema:
            type: string
      responses:
        '204':
          description: Request to delete user group submitted for approval
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
        default:
          $ref: '#/components/responses/Error'
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<void>> = fireblocks.userGroupsBeta.deleteUserGroup(userGroupsBetaApiDeleteUserGroupRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<Void>> response = fireblocks.userGroupsBeta().deleteUserGroup(groupId);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.user_groups_beta.delete_user_group(group_id);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<void>> = fireblocks.userGroupsBeta.deleteUserGroup(userGroupsBetaApiDeleteUserGroupRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<Void>> response = fireblocks.userGroupsBeta().deleteUserGroup(groupId);
        - lang: Python
          source: response = fireblocks.user_groups_beta.delete_user_group(group_id);
  /users:
    get:
      summary: List users
      description: |
        List all users for the workspace.

        Please note that this endpoint is available only for API keys with Admin permissions.
      tags:
        - Users
      x-rate-limit-category: query
      x-readme:
        code-samples:
          - language: python
            code: users = fireblocks.get_users()
            name: Fireblocks SDK Python example (Legacy)
          - language: javascript
            code: const users = await fireblocks.getUsers();
            name: Fireblocks SDK Javascript example
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<GetUsersResponse>> = fireblocks.users.getUsers();'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<List<UserResponse>>> response = fireblocks.users().getUsers();
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.users.get_users();
            name: Fireblocks SDK Python example
      responses:
        '200':
          description: List of users
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetUsersResponse'
        default:
          $ref: '#/components/responses/Error'
      operationId: getUsers
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<GetUsersResponse>> = fireblocks.users.getUsers();'
        - lang: Java
          source: CompletableFuture<ApiResponse<List<UserResponse>>> response = fireblocks.users().getUsers();
        - lang: Python
          source: response = fireblocks.users.get_users();
  /utxo_management/{vaultAccountId}/{assetId}/labels:
    patch:
      operationId: updateUtxoLabels
      summary: Attach or detach labels to/from UTXOs
      description: |-
        Attach or detach labels to/from UTXOs in a vault account. Labels can be used for organizing and filtering UTXOs.
        Labels are applied additively — `labelsToAttach` adds to the existing label set and `labelsToDetach` removes from it. Neither operation replaces the full set.
        **Note:** These endpoints are currently in beta and might be subject to changes.
        Endpoint Permission: Admin, Non-Signing Admin, Signer, Approver, Editor.
      tags:
        - UTXO Management (Beta)
      x-rate-limit-category: write
      parameters:
        - in: path
          name: vaultAccountId
          required: true
          description: The ID of the vault account
          schema:
            type: string
            format: numeric
            x-fb-entity: vault_account
        - in: path
          name: assetId
          required: true
          description: The ID of the asset
          schema:
            type: string
            x-fb-entity: asset
        - $ref: '#/components/parameters/X-Idempotency-Key'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AttachDetachUtxoLabelsRequest'
      responses:
        '200':
          description: UTXOs with updated labels
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AttachDetachUtxoLabelsResponse'
        default:
          $ref: '#/components/responses/Error'
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<AttachDetachUtxoLabelsResponse>> = fireblocks.uTXOManagementBeta.updateUtxoLabels(uTXOManagementBetaApiUpdateUtxoLabelsRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<AttachDetachUtxoLabelsResponse>> response = fireblocks.uTXOManagementBeta().updateUtxoLabels(attachDetachUtxoLabelsRequest, vaultAccountId, assetId, idempotencyKey);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.u_t_x_o_management_beta.update_utxo_labels(attach_detach_utxo_labels_request, vault_account_id, asset_id, idempotency_key);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<AttachDetachUtxoLabelsResponse>> = fireblocks.uTXOManagementBeta.updateUtxoLabels(uTXOManagementBetaApiUpdateUtxoLabelsRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<AttachDetachUtxoLabelsResponse>> response = fireblocks.uTXOManagementBeta().updateUtxoLabels(attachDetachUtxoLabelsRequest, vaultAccountId, assetId, idempotencyKey);
        - lang: Python
          source: response = fireblocks.u_t_x_o_management_beta.update_utxo_labels(attach_detach_utxo_labels_request, vault_account_id, asset_id, idempotency_key);
  /utxo_management/{vaultAccountId}/{assetId}/unspent_outputs:
    get:
      operationId: getUtxos
      summary: List unspent outputs (UTXOs)
      description: |-
        Returns a paginated list of unspent transaction outputs (UTXOs) for a UTXO-based asset in a vault account, with optional filters for labels, statuses, amounts, and more.
        **Note:** These endpoints are currently in beta and might be subject to changes.
        Endpoint Permission: Admin, Non-Signing Admin, Signer, Approver, Editor, Viewer.
      tags:
        - UTXO Management (Beta)
      x-rate-limit-category: read
      parameters:
        - in: path
          name: vaultAccountId
          required: true
          description: The ID of the vault account
          schema:
            type: string
            format: numeric
            x-fb-entity: vault_account
        - in: path
          name: assetId
          required: true
          description: The ID of the asset
          schema:
            type: string
            x-fb-entity: asset
        - in: query
          name: pageCursor
          required: false
          description: Cursor for the next page of results
          schema:
            type: string
          example: MjAyNS0wNy0wOSAxMDo1MzoxMy40NTI=:NA==
        - in: query
          name: pageSize
          required: false
          description: Number of results per page (max 250, default 50)
          schema:
            type: integer
            minimum: 1
            maximum: 250
            default: 50
          example: 50
        - in: query
          name: sort
          required: false
          description: Field to sort by
          schema:
            type: string
            enum:
              - AMOUNT
              - CONFIRMATIONS
          example: AMOUNT
        - in: query
          name: order
          required: false
          description: Sort order
          schema:
            type: string
            enum:
              - ASC
              - DESC
          example: ASC
        - in: query
          name: includeAllLabels
          required: false
          description: Only return UTXOs that have ALL of these labels (AND logic).
          schema:
            type: array
            items:
              type: string
          example:
            - cold-storage
        - in: query
          name: includeAnyLabels
          required: false
          description: Return UTXOs that have ANY of these labels (OR logic).
          schema:
            type: array
            items:
              type: string
          example:
            - vip
            - high-value
        - in: query
          name: excludeAnyLabels
          required: false
          description: Exclude UTXOs that have ANY of these labels.
          schema:
            type: array
            items:
              type: string
          example:
            - deprecated
        - in: query
          name: includeStatuses
          required: false
          description: Filter by UTXO statuses to include.
          schema:
            type: array
            items:
              type: string
          example:
            - AVAILABLE
            - PENDING
        - in: query
          name: address
          required: false
          description: Filter by address
          schema:
            type: string
          example: 1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa
        - in: query
          name: minAmount
          required: false
          description: Minimum amount filter
          schema:
            type: string
          example: '0.001'
        - in: query
          name: maxAmount
          required: false
          description: Maximum amount filter
          schema:
            type: string
          example: '1.0'
      responses:
        '200':
          description: A paginated list of UTXOs
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListUtxosResponse'
        default:
          $ref: '#/components/responses/Error'
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<ListUtxosResponse>> = fireblocks.uTXOManagementBeta.getUtxos(uTXOManagementBetaApiGetUtxosRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<ListUtxosResponse>> response = fireblocks.uTXOManagementBeta().getUtxos(vaultAccountId, assetId, pageCursor, pageSize, sort, order, includeAllLabels, includeAnyLabels, excludeAnyLabels, includeStatuses, address, minAmount, maxAmount);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.u_t_x_o_management_beta.get_utxos(vault_account_id, asset_id, page_cursor, page_size, sort, order, include_all_labels, include_any_labels, exclude_any_labels, include_statuses, address, min_amount, max_amount);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<ListUtxosResponse>> = fireblocks.uTXOManagementBeta.getUtxos(uTXOManagementBetaApiGetUtxosRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<ListUtxosResponse>> response = fireblocks.uTXOManagementBeta().getUtxos(vaultAccountId, assetId, pageCursor, pageSize, sort, order, includeAllLabels, includeAnyLabels, excludeAnyLabels, includeStatuses, address, minAmount, maxAmount);
        - lang: Python
          source: response = fireblocks.u_t_x_o_management_beta.get_utxos(vault_account_id, asset_id, page_cursor, page_size, sort, order, include_all_labels, include_any_labels, exclude_any_labels, include_statuses, address, min_amount, max_amount);
  /vault/accounts:
    get:
      x-internal: true
      deprecated: true
      summary: Get vault accounts
      description: |-
        DEPRECATED - Please use `/vault/accounts_paged` endpoint instead.
        Endpoint Permission: Admin, Non-Signing Admin, Signer, Approver, Editor, Viewer.
      tags:
        - Vaults
      x-rate-limit-category: high_compute
      x-readme:
        code-samples:
          - language: python
            code: vault_accounts = fireblocks.get_vault_accounts()
            name: Fireblocks SDK Python example (Legacy)
          - language: javascript
            code: const vaultAccounts = await fireblocks.getVaultAccounts();
            name: Fireblocks SDK Javascript example
      parameters:
        - in: query
          name: namePrefix
          required: false
          schema:
            type: string
        - in: query
          name: nameSuffix
          required: false
          schema:
            type: string
        - in: query
          name: minAmountThreshold
          required: false
          schema:
            type: number
        - in: query
          name: assetId
          required: false
          schema:
            type: string
            x-fb-entity: asset
      responses:
        '200':
          description: A list of vault accounts
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetVaultAccountsResponse'
        default:
          $ref: '#/components/responses/Error'
      operationId: getVaultAccounts
    post:
      summary: Create a new vault account
      operationId: createVaultAccount
      description: |-
        Creates a new vault account with the requested name.
        **Note: ** Vault account names should consist of ASCII characters only.
        Learn more about Fireblocks Vault Accounts in the following [guide](https://developers.fireblocks.com/reference/create-vault-account).
        Endpoint Permission: Admin, Non-Signing Admin, Signer, Approver, Editor.
      tags:
        - Vaults
      x-rate-limit-category: write
      x-readme:
        code-samples:
          - language: python
            code: vaultAccount = fireblocks.create_vault_account(name, hiddenOnUI, customer_ref_id, auto_fueling)
            name: Fireblocks SDK Python example (Legacy)
          - language: javascript
            code: const vaultAccount = await fireblocks.createVaultAccount(name, hiddenOnUI, customerRefId, autoFueling);
            name: Fireblocks SDK Javascript example
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<VaultAccount>> = fireblocks.vaults.createVaultAccount(vaultsApiCreateVaultAccountRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<VaultAccount>> response = fireblocks.vaults().createVaultAccount(createVaultAccountRequest, idempotencyKey);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.vaults.create_vault_account(create_vault_account_request, idempotency_key);
            name: Fireblocks SDK Python example
      parameters:
        - $ref: '#/components/parameters/X-Idempotency-Key'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateVaultAccountRequest'
      responses:
        '200':
          description: A Vault Account object
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VaultAccount'
        default:
          $ref: '#/components/responses/Error'
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<VaultAccount>> = fireblocks.vaults.createVaultAccount(vaultsApiCreateVaultAccountRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<VaultAccount>> response = fireblocks.vaults().createVaultAccount(createVaultAccountRequest, idempotencyKey);
        - lang: Python
          source: response = fireblocks.vaults.create_vault_account(create_vault_account_request, idempotency_key);
  /vault/accounts_paged:
    get:
      summary: Get vault accounts (Paginated)
      description: |-
        Gets all vault accounts in your workspace. This endpoint returns a limited amount of results with a quick response time.
        Endpoint Permission: Admin, Non-Signing Admin, Signer, Approver, Editor, Viewer.
      tags:
        - Vaults
      x-rate-limit-category: external_query
      x-readme:
        code-samples:
          - language: python
            code: vault_accounts = fireblocks.get_vault_accounts_with_page_info(filters)
            name: Fireblocks SDK Python example (Legacy)
          - language: javascript
            code: const vaultAccounts = await fireblocks.getVaultAccountsWithPageInfo(filters);
            name: Fireblocks SDK Javascript example
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<VaultAccountsPagedResponse>> = fireblocks.vaults.getPagedVaultAccounts(vaultsApiGetPagedVaultAccountsRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<VaultAccountsPagedResponse>> response = fireblocks.vaults().getPagedVaultAccounts(namePrefix, nameSuffix, minAmountThreshold, assetId, orderBy, before, after, limit, tagIds, includeTagIds, excludeTagIds);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.vaults.get_paged_vault_accounts(name_prefix, name_suffix, min_amount_threshold, asset_id, order_by, before, after, limit, tag_ids, include_tag_ids, exclude_tag_ids);
            name: Fireblocks SDK Python example
      parameters:
        - in: query
          name: namePrefix
          required: false
          schema:
            type: string
        - in: query
          name: nameSuffix
          required: false
          schema:
            type: string
        - in: query
          name: minAmountThreshold
          required: false
          description: Specifying minAmountThreshold will filter accounts whose total balance is greater than this value; otherwise, it returns all accounts. The amount set in this parameter represents the native asset amount, not its USD value.
          schema:
            type: number
            example: 10
        - in: query
          name: assetId
          required: false
          schema:
            type: string
            x-fb-entity: asset
        - in: query
          name: orderBy
          required: false
          schema:
            type: string
            enum:
              - ASC
              - DESC
            default: DESC
        - in: query
          name: before
          required: false
          schema:
            type: string
        - in: query
          name: after
          required: false
          schema:
            type: string
        - in: query
          name: limit
          required: false
          schema:
            type: number
            minimum: 1
            maximum: 500
            default: 200
        - in: query
          name: tagIds
          required: false
          deprecated: true
          description: DEPRECATED - use includeTagIds instead
          schema:
            type: array
            items:
              type: string
              format: uuid
            maxItems: 50
        - in: query
          name: includeTagIds
          required: false
          description: List of tag IDs to include. Vault accounts with any of these tags will be included
          schema:
            type: array
            items:
              type: string
              format: uuid
            maxItems: 50
        - in: query
          name: excludeTagIds
          required: false
          description: List of tag IDs to exclude. Vault accounts with any of these tags will be filtered out
          schema:
            type: array
            items:
              type: string
              format: uuid
            maxItems: 50
      responses:
        '200':
          description: A VaultAccountsPagedResponse object
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VaultAccountsPagedResponse'
      operationId: getPagedVaultAccounts
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<VaultAccountsPagedResponse>> = fireblocks.vaults.getPagedVaultAccounts(vaultsApiGetPagedVaultAccountsRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<VaultAccountsPagedResponse>> response = fireblocks.vaults().getPagedVaultAccounts(namePrefix, nameSuffix, minAmountThreshold, assetId, orderBy, before, after, limit, tagIds, includeTagIds, excludeTagIds);
        - lang: Python
          source: response = fireblocks.vaults.get_paged_vault_accounts(name_prefix, name_suffix, min_amount_threshold, asset_id, order_by, before, after, limit, tag_ids, include_tag_ids, exclude_tag_ids);
  /vault/accounts/{vaultAccountId}:
    get:
      summary: Get a vault account by ID
      description: |-
        Get a vault account by its unique ID.
        Endpoint Permission: Admin, Non-Signing Admin, Signer, Approver, Editor, Viewer.
      tags:
        - Vaults
      x-rate-limit-category: external_query
      x-readme:
        code-samples:
          - language: python
            code: vault_account = fireblocks.get_vault_account(vault_account_id)
            name: Fireblocks SDK Python example (Legacy)
          - language: javascript
            code: const vaultAccount = await fireblocks.getVaultAccount(vault_account_id);
            name: Fireblocks SDK Javascript example
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<VaultAccount>> = fireblocks.vaults.getVaultAccount(vaultsApiGetVaultAccountRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<VaultAccount>> response = fireblocks.vaults().getVaultAccount(vaultAccountId);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.vaults.get_vault_account(vault_account_id);
            name: Fireblocks SDK Python example
      parameters:
        - in: path
          name: vaultAccountId
          required: true
          description: The ID of the vault account
          schema:
            type: string
            format: numeric
            x-fb-entity: vault_account
      responses:
        '200':
          description: A Vault Account object
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VaultAccount'
        default:
          $ref: '#/components/responses/Error'
      operationId: getVaultAccount
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<VaultAccount>> = fireblocks.vaults.getVaultAccount(vaultsApiGetVaultAccountRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<VaultAccount>> response = fireblocks.vaults().getVaultAccount(vaultAccountId);
        - lang: Python
          source: response = fireblocks.vaults.get_vault_account(vault_account_id);
    put:
      summary: Rename a vault account
      description: |-
        Renames the requested vault account.
        Endpoint Permission: Admin, Non-Signing Admin, Signer, Approver.
      tags:
        - Vaults
      x-rate-limit-category: write
      x-readme:
        code-samples:
          - language: python
            code: vaultAccount = fireblocks.update_vault_account(vault_account_id, name)
            name: Fireblocks SDK Python example (Legacy)
          - language: javascript
            code: const vaultAccount = await fireblocks.updateVaultAccount(vautlAccountId, name);
            name: Fireblocks SDK Javascript example
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<RenameVaultAccountResponse>> = fireblocks.vaults.updateVaultAccount(vaultsApiUpdateVaultAccountRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<RenameVaultAccountResponse>> response = fireblocks.vaults().updateVaultAccount(updateVaultAccountRequest, vaultAccountId, idempotencyKey);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.vaults.update_vault_account(update_vault_account_request, vault_account_id, idempotency_key);
            name: Fireblocks SDK Python example
      parameters:
        - in: path
          name: vaultAccountId
          required: true
          description: The ID of the vault account to edit
          schema:
            type: string
            format: numeric
            x-fb-entity: vault_account
        - $ref: '#/components/parameters/X-Idempotency-Key'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateVaultAccountRequest'
      responses:
        '201':
          description: OK
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RenameVaultAccountResponse'
        default:
          $ref: '#/components/responses/Error'
      operationId: updateVaultAccount
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<RenameVaultAccountResponse>> = fireblocks.vaults.updateVaultAccount(vaultsApiUpdateVaultAccountRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<RenameVaultAccountResponse>> response = fireblocks.vaults().updateVaultAccount(updateVaultAccountRequest, vaultAccountId, idempotencyKey);
        - lang: Python
          source: response = fireblocks.vaults.update_vault_account(update_vault_account_request, vault_account_id, idempotency_key);
  /vault/accounts/{vaultAccountId}/{assetId}:
    get:
      summary: Get the asset balance for a vault account
      description: |-
        Returns a specific vault wallet balance information for a specific asset.

        Endpoint Permission: Admin, Non-Signing Admin, Signer, Approver, Editor,
          Viewer.
      tags:
        - Vaults
      x-rate-limit-category: read
      x-readme:
        code-samples:
          - language: python
            code: vaultAsset = fireblocks.get_vault_account_asset(vault_account_id, asset_id)
            name: Fireblocks SDK Python example (Legacy)
          - language: javascript
            code: const vaultAsset = await fireblocks.getVaultAccountAsset(vaultAccountId, assetId);
            name: Fireblocks SDK Javascript example
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<VaultAsset>> = fireblocks.vaults.getVaultAccountAsset(vaultsApiGetVaultAccountAssetRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<VaultAsset>> response = fireblocks.vaults().getVaultAccountAsset(vaultAccountId, assetId);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.vaults.get_vault_account_asset(vault_account_id, asset_id);
            name: Fireblocks SDK Python example
      parameters:
        - in: path
          name: vaultAccountId
          required: true
          description: The ID of the vault account to return
          schema:
            type: string
            format: numeric
            x-fb-entity: vault_account
        - in: path
          name: assetId
          required: true
          description: The ID of the asset
          schema:
            type: string
            x-fb-entity: asset
      responses:
        '200':
          description: A VaultAsset object
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VaultAsset'
        default:
          $ref: '#/components/responses/Error'
      operationId: getVaultAccountAsset
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<VaultAsset>> = fireblocks.vaults.getVaultAccountAsset(vaultsApiGetVaultAccountAssetRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<VaultAsset>> response = fireblocks.vaults().getVaultAccountAsset(vaultAccountId, assetId);
        - lang: Python
          source: response = fireblocks.vaults.get_vault_account_asset(vault_account_id, asset_id);
    post:
      summary: Create a new vault wallet
      description: |-
        Creates a wallet for a specific asset in a vault account.
        Learn more about Fireblocks Vault Wallets in the following [guide](https://developers.fireblocks.com/reference/create-vault-wallet).
        Endpoint Permission: Admin, Non-Signing Admin, Signer, Approver, Editor.
      tags:
        - Vaults
      x-rate-limit-category: write
      x-readme:
        code-samples:
          - language: python
            code: vaultAsset = fireblocks.create_vault_asset(vault_account_id, asset_id)
            name: Fireblocks SDK Python example (Legacy)
          - language: javascript
            code: const vaultAsset = await fireblocks.createVaultAsset(vaultAccountId, assetId);
            name: Fireblocks SDK Javascript example
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<CreateVaultAssetResponse>> = fireblocks.vaults.createVaultAccountAsset(vaultsApiCreateVaultAccountAssetRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<CreateVaultAssetResponse>> response = fireblocks.vaults().createVaultAccountAsset(vaultAccountId, assetId, createAssetsRequest, blockchainWalletType, idempotencyKey);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.vaults.create_vault_account_asset(vault_account_id, asset_id, create_assets_request, blockchain_wallet_type, idempotency_key);
            name: Fireblocks SDK Python example
      parameters:
        - in: path
          name: vaultAccountId
          required: true
          description: The ID of the vault account to return, or 'default' for the default vault account
          schema:
            type: string
            format: numeric
            x-fb-entity: vault_account
        - in: path
          name: assetId
          required: true
          description: The ID of the asset
          schema:
            type: string
            x-fb-entity: asset
        - $ref: '#/components/parameters/X-Idempotency-Key'
        - in: query
          name: blockchainWalletType
          required: false
          description: Optional immutable blockchain wallet type to store per tenant+vault
          schema:
            type: string
      requestBody:
        required: false
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateAssetsRequest'
      responses:
        '200':
          description: OK
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreateVaultAssetResponse'
        default:
          $ref: '#/components/responses/Error'
      operationId: createVaultAccountAsset
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<CreateVaultAssetResponse>> = fireblocks.vaults.createVaultAccountAsset(vaultsApiCreateVaultAccountAssetRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<CreateVaultAssetResponse>> response = fireblocks.vaults().createVaultAccountAsset(vaultAccountId, assetId, createAssetsRequest, blockchainWalletType, idempotencyKey);
        - lang: Python
          source: response = fireblocks.vaults.create_vault_account_asset(vault_account_id, asset_id, create_assets_request, blockchain_wallet_type, idempotency_key);
  /vault/accounts/{vaultAccountId}/{assetId}/{change}/{addressIndex}/public_key_info:
    get:
      summary: Get an asset's public key
      description: |-
        Get the public key information for a specific asset in a vault account.
        Endpoint Permission: Admin, Non-Signing Admin.
      tags:
        - Vaults
      x-rate-limit-category: read
      x-readme:
        code-samples:
          - language: python
            code: pubKey = fireblocks.get_public_key_info_for_vault_account(asset_id, vault_account_id, change, address_index, compressed)
            name: Fireblocks SDK Python example (Legacy)
          - language: javascript
            code: |
              const PublicKeyInfoArgs = { assetId: 'ETH', vaultAccountId: 0, change: 0, addressIndex: 0, compressed: true } const pubKey = await fireblocks.getPublicKeyInfoForVaultAccount(PublicKeyInfoArgs);
            name: Fireblocks SDK Javascript example
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<PublicKeyInformation>> = fireblocks.vaults.getPublicKeyInfoForAddress(vaultsApiGetPublicKeyInfoForAddressRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<PublicKeyInformation>> response = fireblocks.vaults().getPublicKeyInfoForAddress(vaultAccountId, assetId, change, addressIndex, compressed);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.vaults.get_public_key_info_for_address(vault_account_id, asset_id, change, address_index, compressed);
            name: Fireblocks SDK Python example
      parameters:
        - in: path
          name: vaultAccountId
          required: true
          schema:
            type: string
            format: numeric
            x-fb-entity: vault_account
        - in: path
          name: assetId
          required: true
          schema:
            type: string
            x-fb-entity: asset
        - in: path
          name: change
          required: true
          schema:
            type: number
        - in: path
          name: addressIndex
          required: true
          schema:
            type: number
        - in: query
          name: compressed
          required: false
          schema:
            type: boolean
      responses:
        '200':
          description: Public Key Information
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PublicKeyInformation'
        default:
          $ref: '#/components/responses/Error'
      operationId: getPublicKeyInfoForAddress
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<PublicKeyInformation>> = fireblocks.vaults.getPublicKeyInfoForAddress(vaultsApiGetPublicKeyInfoForAddressRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<PublicKeyInformation>> response = fireblocks.vaults().getPublicKeyInfoForAddress(vaultAccountId, assetId, change, addressIndex, compressed);
        - lang: Python
          source: response = fireblocks.vaults.get_public_key_info_for_address(vault_account_id, asset_id, change, address_index, compressed);
  /vault/accounts/{vaultAccountId}/{assetId}/activate:
    post:
      summary: Activate a wallet in a vault account
      description: |-
        Initiates activation for a wallet in a vault account. 
        Activation is required for tokens that need an on-chain transaction for creation (XLM tokens, SOL tokens etc).
        Endpoint Permission: Admin, Non-Signing Admin, Signer, Approver, Editor.
      tags:
        - Vaults
      x-rate-limit-category: write
      parameters:
        - in: path
          name: vaultAccountId
          required: true
          description: The ID of the vault account to return, or 'default' for the default vault account
          schema:
            type: string
            format: numeric
            x-fb-entity: vault_account
        - in: path
          name: assetId
          required: true
          description: The ID of the asset
          schema:
            type: string
            x-fb-entity: asset
        - $ref: '#/components/parameters/X-Idempotency-Key'
        - in: query
          name: blockchainWalletType
          required: false
          description: Optional immutable blockchain wallet type to store per tenant+vault
          schema:
            type: string
      responses:
        '200':
          description: OK
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreateVaultAssetResponse'
        default:
          $ref: '#/components/responses/Error'
      operationId: activateAssetForVaultAccount
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<CreateVaultAssetResponse>> = fireblocks.vaults.activateAssetForVaultAccount(vaultsApiActivateAssetForVaultAccountRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<CreateVaultAssetResponse>> response = fireblocks.vaults().activateAssetForVaultAccount(vaultAccountId, assetId, blockchainWalletType, idempotencyKey);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.vaults.activate_asset_for_vault_account(vault_account_id, asset_id, blockchain_wallet_type, idempotency_key);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<CreateVaultAssetResponse>> = fireblocks.vaults.activateAssetForVaultAccount(vaultsApiActivateAssetForVaultAccountRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<CreateVaultAssetResponse>> response = fireblocks.vaults().activateAssetForVaultAccount(vaultAccountId, assetId, blockchainWalletType, idempotencyKey);
        - lang: Python
          source: response = fireblocks.vaults.activate_asset_for_vault_account(vault_account_id, asset_id, blockchain_wallet_type, idempotency_key);
  /vault/accounts/{vaultAccountId}/{assetId}/addresses:
    get:
      x-internal: true
      deprecated: true
      summary: Get asset addresses
      description: |-
        DEPRECATED!

        - If your application logic or scripts rely on the deprecated endpoint, you should update to account for GET/V1/vault/accounts/{vaultAccountId}/{assetId}/addresses_paginated before Mar 31,2024.
        - All workspaces created after Mar 31,2024. will have it disabled. If it is disabled for your workspace and you attempt to use it, you will receive the following error message: "This endpoint is unavailable.
        - Please use the GET /v1/vault/accounts/{vaultAccountId}/{assetId}/addresses_paginated endpoint to return all the wallet addresses associated with the specified vault account and asset in a paginated list.

        Endpoint Permission: Admin, Non-Signing Admin, Signer, Approver, Editor, Viewer.
      tags:
        - Vaults
      x-rate-limit-category: query
      x-readme:
        code-samples:
          - language: python
            code: depositAddresses = fireblocks.get_deposit_addresses(vault_account_id, asset_id)
            name: Fireblocks SDK Python example (Legacy)
          - language: javascript
            code: const depositAddresses = await fireblocks.getDepositAddresses(vaultAccountId, assetId);
            name: Fireblocks SDK Javascript example
      parameters:
        - in: path
          name: vaultAccountId
          required: true
          description: The ID of the vault account to return
          schema:
            type: string
            format: numeric
            x-fb-entity: vault_account
        - in: path
          name: assetId
          required: true
          description: The ID of the asset
          schema:
            type: string
            x-fb-entity: asset
      responses:
        '200':
          description: A list of deposit addresses
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetVaultAccountAssetAddressesResponse'
        default:
          $ref: '#/components/responses/Error'
      operationId: getVaultAccountAssetAddresses
    post:
      summary: Create new asset deposit address
      description: |-
        Creates a new deposit address for an asset of a vault account.
        Should be used for UTXO or Tag/Memo based assets ONLY.

        Requests with account based assets will fail.

        Endpoint Permission: Admin, Non-Signing Admin.
      tags:
        - Vaults
      x-rate-limit-category: write
      x-readme:
        code-samples:
          - language: python
            code: address = fireblocks.generate_new_address(vault_account_id, asset_id, description, customer_ref_id)
            name: Fireblocks SDK Python example (Legacy)
          - language: javascript
            code: const address = await fireblocks.generateNewAddress(vaultAccountId, assetId, description, customerRefId);
            name: Fireblocks SDK Javascript example
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<CreateAddressResponse>> = fireblocks.vaults.createVaultAccountAssetAddress(vaultsApiCreateVaultAccountAssetAddressRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<CreateAddressResponse>> response = fireblocks.vaults().createVaultAccountAssetAddress(vaultAccountId, assetId, createAddressRequest, idempotencyKey);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.vaults.create_vault_account_asset_address(vault_account_id, asset_id, create_address_request, idempotency_key);
            name: Fireblocks SDK Python example
      requestBody:
        required: false
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateAddressRequest'
      parameters:
        - in: path
          name: vaultAccountId
          required: true
          description: The ID of the vault account to return
          schema:
            type: string
            format: numeric
            x-fb-entity: vault_account
        - in: path
          name: assetId
          required: true
          description: The ID of the asset
          schema:
            type: string
            x-fb-entity: asset
        - $ref: '#/components/parameters/X-Idempotency-Key'
      responses:
        '200':
          description: The created address
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreateAddressResponse'
        default:
          $ref: '#/components/responses/Error'
      operationId: createVaultAccountAssetAddress
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<CreateAddressResponse>> = fireblocks.vaults.createVaultAccountAssetAddress(vaultsApiCreateVaultAccountAssetAddressRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<CreateAddressResponse>> response = fireblocks.vaults().createVaultAccountAssetAddress(vaultAccountId, assetId, createAddressRequest, idempotencyKey);
        - lang: Python
          source: response = fireblocks.vaults.create_vault_account_asset_address(vault_account_id, asset_id, create_address_request, idempotency_key);
  /vault/accounts/{vaultAccountId}/{assetId}/addresses_paginated:
    get:
      summary: Get addresses (Paginated)
      description: |-
        Returns a paginated response of the addresses for a given vault account and asset.
        Endpoint Permission: Admin, Non-Signing Admin, Signer, Approver, Editor, Viewer.
      tags:
        - Vaults
      x-rate-limit-category: query
      x-readme:
        code-samples:
          - language: python
            code: addresses = vault_accounts = fireblocks.get_paginated_addresses("0","ETH_TEST3")
            name: Fireblocks SDK Python example (Legacy)
          - language: javascript
            code: const addresses = await fireblocks.getPaginatedAddresses("0","ETH_TEST3");
            name: Fireblocks SDK Javascript example
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<PaginatedAddressResponse>> = fireblocks.vaults.getVaultAccountAssetAddressesPaginated(vaultsApiGetVaultAccountAssetAddressesPaginatedRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<PaginatedAddressResponse>> response = fireblocks.vaults().getVaultAccountAssetAddressesPaginated(vaultAccountId, assetId, limit, before, after);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.vaults.get_vault_account_asset_addresses_paginated(vault_account_id, asset_id, limit, before, after);
            name: Fireblocks SDK Python example
      parameters:
        - in: path
          name: vaultAccountId
          required: true
          description: The ID of the vault account to return
          schema:
            type: string
            format: numeric
            x-fb-entity: vault_account
        - in: path
          name: assetId
          required: true
          description: The ID of the asset
          schema:
            type: string
            x-fb-entity: asset
        - in: query
          name: limit
          required: false
          schema:
            type: number
        - in: query
          name: before
          required: false
          schema:
            type: string
        - in: query
          name: after
          required: false
          schema:
            type: string
      responses:
        '200':
          description: A paginated list of addresses, and pagination info.
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedAddressResponse'
        default:
          $ref: '#/components/responses/Error'
      operationId: getVaultAccountAssetAddressesPaginated
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<PaginatedAddressResponse>> = fireblocks.vaults.getVaultAccountAssetAddressesPaginated(vaultsApiGetVaultAccountAssetAddressesPaginatedRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<PaginatedAddressResponse>> response = fireblocks.vaults().getVaultAccountAssetAddressesPaginated(vaultAccountId, assetId, limit, before, after);
        - lang: Python
          source: response = fireblocks.vaults.get_vault_account_asset_addresses_paginated(vault_account_id, asset_id, limit, before, after);
  /vault/accounts/{vaultAccountId}/{assetId}/addresses/{addressId}:
    put:
      summary: Update address description
      description: |-
        Updates the description of an existing address of an asset in a vault account.
        Endpoint Permission: Admin, Non-Signing Admin, Signer, Approver, Editor.
      tags:
        - Vaults
      x-rate-limit-category: write
      x-readme:
        code-samples:
          - language: python
            code: address = fireblocks.set_address_description(vault_account_id, asset_id, address, tag, description)
            name: Fireblocks SDK Python example (Legacy)
          - language: javascript
            code: const address = await fireblocks.setAddressDescription(vaultAccountId, assetId, address, tag, description);
            name: Fireblocks SDK Javascript example
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<VaultActionStatus>> = fireblocks.vaults.updateVaultAccountAssetAddress(vaultsApiUpdateVaultAccountAssetAddressRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<VaultActionStatus>> response = fireblocks.vaults().updateVaultAccountAssetAddress(vaultAccountId, assetId, addressId, updateVaultAccountAssetAddressRequest, idempotencyKey);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.vaults.update_vault_account_asset_address(vault_account_id, asset_id, address_id, update_vault_account_asset_address_request, idempotency_key);
            name: Fireblocks SDK Python example
      requestBody:
        required: false
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateVaultAccountAssetAddressRequest'
      parameters:
        - in: path
          name: vaultAccountId
          required: true
          description: The ID of the vault account
          schema:
            type: string
            format: numeric
            x-fb-entity: vault_account
        - in: path
          name: assetId
          required: true
          description: The ID of the asset
          schema:
            type: string
            x-fb-entity: asset
        - in: path
          name: addressId
          required: true
          description: The address for which to add a description. For XRP, use <address>:<tag>, for all other assets, use only the address
          schema:
            type: string
        - $ref: '#/components/parameters/X-Idempotency-Key'
      responses:
        '201':
          description: OK
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VaultActionStatus'
        default:
          $ref: '#/components/responses/Error'
      operationId: updateVaultAccountAssetAddress
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<VaultActionStatus>> = fireblocks.vaults.updateVaultAccountAssetAddress(vaultsApiUpdateVaultAccountAssetAddressRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<VaultActionStatus>> response = fireblocks.vaults().updateVaultAccountAssetAddress(vaultAccountId, assetId, addressId, updateVaultAccountAssetAddressRequest, idempotencyKey);
        - lang: Python
          source: response = fireblocks.vaults.update_vault_account_asset_address(vault_account_id, asset_id, address_id, update_vault_account_asset_address_request, idempotency_key);
  /vault/accounts/{vaultAccountId}/{assetId}/addresses/{addressId}/create_legacy:
    post:
      summary: Convert a segwit address to legacy format
      description: |-
        Converts an existing segwit address to the legacy format.
        Endpoint Permission: Admin, Non-Signing Admin, Signer, Approver, Editor.
      tags:
        - Vaults
      x-rate-limit-category: write
      parameters:
        - in: path
          name: vaultAccountId
          required: true
          description: The ID of the vault account
          schema:
            type: string
            format: numeric
            x-fb-entity: vault_account
        - in: path
          name: assetId
          required: true
          description: The ID of the asset
          schema:
            type: string
            x-fb-entity: asset
        - in: path
          name: addressId
          required: true
          description: The segwit address to translate
          schema:
            type: string
        - $ref: '#/components/parameters/X-Idempotency-Key'
      responses:
        '200':
          description: The created address
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreateAddressResponse'
        default:
          $ref: '#/components/responses/Error'
      operationId: createLegacyAddress
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<CreateAddressResponse>> = fireblocks.vaults.createLegacyAddress(vaultsApiCreateLegacyAddressRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<CreateAddressResponse>> response = fireblocks.vaults().createLegacyAddress(vaultAccountId, assetId, addressId, idempotencyKey);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.vaults.create_legacy_address(vault_account_id, asset_id, address_id, idempotency_key);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<CreateAddressResponse>> = fireblocks.vaults.createLegacyAddress(vaultsApiCreateLegacyAddressRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<CreateAddressResponse>> response = fireblocks.vaults().createLegacyAddress(vaultAccountId, assetId, addressId, idempotencyKey);
        - lang: Python
          source: response = fireblocks.vaults.create_legacy_address(vault_account_id, asset_id, address_id, idempotency_key);
  /vault/accounts/{vaultAccountId}/{assetId}/addresses/{addressId}/set_customer_ref_id:
    post:
      summary: Assign AML customer reference ID
      description: |-
        Sets an AML/KYT customer reference ID for a specific address.
        Endpoint Permission: Admin, Non-Signing Admin.
      tags:
        - Vaults
      x-rate-limit-category: write
      x-readme:
        code-samples:
          - language: python
            code: vaultAsset = fireblocks.set_customer_ref_id_for_address(vault_account_id, asset_id, address_id, customer_ref_id)
            name: Fireblocks SDK Python example (Legacy)
          - language: javascript
            code: const vaultAsset = await fireblocks.setCustomerRefIdForAddress(vaultAccountId, assetId, addressId, customerRefId);
            name: Fireblocks SDK Javascript example
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<VaultActionStatus>> = fireblocks.vaults.setCustomerRefIdForAddress(vaultsApiSetCustomerRefIdForAddressRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<VaultActionStatus>> response = fireblocks.vaults().setCustomerRefIdForAddress(setCustomerRefIdForAddressRequest, vaultAccountId, assetId, addressId, idempotencyKey);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.vaults.set_customer_ref_id_for_address(set_customer_ref_id_for_address_request, vault_account_id, asset_id, address_id, idempotency_key);
            name: Fireblocks SDK Python example
      parameters:
        - in: path
          name: vaultAccountId
          required: true
          description: The ID of the vault account
          schema:
            type: string
            format: numeric
            x-fb-entity: vault_account
        - in: path
          name: assetId
          required: true
          description: The ID of the asset
          schema:
            type: string
            x-fb-entity: asset
        - in: path
          name: addressId
          required: true
          description: The address for which to add a description. For XRP, use <address>:<tag>, for all other assets, use only the address
          schema:
            type: string
        - $ref: '#/components/parameters/X-Idempotency-Key'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SetCustomerRefIdForAddressRequest'
      responses:
        '201':
          description: OK
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VaultActionStatus'
        default:
          $ref: '#/components/responses/Error'
      operationId: setCustomerRefIdForAddress
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<VaultActionStatus>> = fireblocks.vaults.setCustomerRefIdForAddress(vaultsApiSetCustomerRefIdForAddressRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<VaultActionStatus>> response = fireblocks.vaults().setCustomerRefIdForAddress(setCustomerRefIdForAddressRequest, vaultAccountId, assetId, addressId, idempotencyKey);
        - lang: Python
          source: response = fireblocks.vaults.set_customer_ref_id_for_address(set_customer_ref_id_for_address_request, vault_account_id, asset_id, address_id, idempotency_key);
  /vault/accounts/{vaultAccountId}/{assetId}/balance:
    post:
      summary: Refresh asset balance data
      description: |-
        Updates the balance of a specific asset in a vault account.

        This API endpoint is subject to a strict rate limit.
        Should be used by clients in very specific scenarios.

        Endpoint Permission: Admin, Non-Signing Admin, Signer, Approver, Editor.
      tags:
        - Vaults
      x-rate-limit-category: high_compute
      x-readme:
        code-samples:
          - language: python
            code: vaultAsset = fireblocks.refresh_vault_asset_balance(vault_account_id, asset_id)
            name: Fireblocks SDK Python example (Legacy)
          - language: javascript
            code: const vaultAsset = await fireblocks.refreshVaultAssetBalance(vaultAccountId, assetId);
            name: Fireblocks SDK Javascript example
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<VaultAsset>> = fireblocks.vaults.updateVaultAccountAssetBalance(vaultsApiUpdateVaultAccountAssetBalanceRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<VaultAsset>> response = fireblocks.vaults().updateVaultAccountAssetBalance(vaultAccountId, assetId, idempotencyKey);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.vaults.update_vault_account_asset_balance(vault_account_id, asset_id, idempotency_key);
            name: Fireblocks SDK Python example
      parameters:
        - in: path
          name: vaultAccountId
          required: true
          description: The ID of the vault account to return
          schema:
            type: string
            format: numeric
            x-fb-entity: vault_account
        - in: path
          name: assetId
          required: true
          description: The ID of the asset
          schema:
            type: string
            x-fb-entity: asset
        - $ref: '#/components/parameters/X-Idempotency-Key'
      responses:
        '200':
          description: A VaultAsset object
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VaultAsset'
        default:
          $ref: '#/components/responses/Error'
      operationId: updateVaultAccountAssetBalance
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<VaultAsset>> = fireblocks.vaults.updateVaultAccountAssetBalance(vaultsApiUpdateVaultAccountAssetBalanceRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<VaultAsset>> response = fireblocks.vaults().updateVaultAccountAssetBalance(vaultAccountId, assetId, idempotencyKey);
        - lang: Python
          source: response = fireblocks.vaults.update_vault_account_asset_balance(vault_account_id, asset_id, idempotency_key);
  /vault/accounts/{vaultAccountId}/{assetId}/max_bip44_index_used:
    get:
      summary: Get maximum BIP44 index used
      description: Retrieves the maximum BIP44 address index and change address index used for a specific asset in a vault account (BIP44 standard).
      tags:
        - Vaults
      x-rate-limit-category: read
      parameters:
        - in: path
          name: vaultAccountId
          required: true
          description: The ID of the vault account
          schema:
            type: string
            format: numeric
            x-fb-entity: vault_account
        - in: path
          name: assetId
          required: true
          description: The ID of the asset
          schema:
            type: string
            x-fb-entity: asset
      responses:
        '200':
          description: OK
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetMaxBipIndexUsedResponse'
        default:
          $ref: '#/components/responses/Error'
      operationId: getMaxBipIndexUsed
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<GetMaxBipIndexUsedResponse>> = fireblocks.vaults.getMaxBipIndexUsed(vaultsApiGetMaxBipIndexUsedRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<GetMaxBipIndexUsedResponse>> response = fireblocks.vaults().getMaxBipIndexUsed(vaultAccountId, assetId);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.vaults.get_max_bip_index_used(vault_account_id, asset_id);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<GetMaxBipIndexUsedResponse>> = fireblocks.vaults.getMaxBipIndexUsed(vaultsApiGetMaxBipIndexUsedRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<GetMaxBipIndexUsedResponse>> response = fireblocks.vaults().getMaxBipIndexUsed(vaultAccountId, assetId);
        - lang: Python
          source: response = fireblocks.vaults.get_max_bip_index_used(vault_account_id, asset_id);
  /vault/accounts/{vaultAccountId}/{assetId}/max_spendable_amount:
    get:
      summary: Get max spendable amount in a transaction
      description: |
        **UTXO assets only.**

        Retrieve the maximum amount of the specified asset that can be spent in a single transaction from the specified vault account.

        **Endpoint Permissions:** Admin, Non-Signing Admin, Signer, Approver, Editor, Viewer.
      tags:
        - Vaults
      x-rate-limit-category: read
      x-readme:
        code-samples:
          - language: python
            code: address = fireblocks.set_address_description(vault_account_id, asset_id, address, tag, description)
            name: Fireblocks SDK Python example (Legacy)
          - language: javascript
            code: const address = await fireblocks.setAddressDescription(vaultAccountId, assetId, address, tag, description);
            name: Fireblocks SDK Javascript example
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<GetMaxSpendableAmountResponse>> = fireblocks.vaults.getMaxSpendableAmount(vaultsApiGetMaxSpendableAmountRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<GetMaxSpendableAmountResponse>> response = fireblocks.vaults().getMaxSpendableAmount(vaultAccountId, assetId, manualSignging);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.vaults.get_max_spendable_amount(vault_account_id, asset_id, manual_signging);
            name: Fireblocks SDK Python example
      parameters:
        - in: path
          name: vaultAccountId
          required: true
          description: The ID of the vault account, or 'default' for the default vault account
          schema:
            type: string
            format: numeric
            x-fb-entity: vault_account
        - in: path
          name: assetId
          required: true
          description: The ID of the asset
          schema:
            type: string
            x-fb-entity: asset
        - in: query
          name: manualSignging
          required: false
          description: False by default. The maximum number of inputs depends if the transaction will be signed by an automated co-signer server or on a mobile device.
          schema:
            type: boolean
      responses:
        '200':
          description: OK
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetMaxSpendableAmountResponse'
        default:
          $ref: '#/components/responses/Error'
      operationId: getMaxSpendableAmount
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<GetMaxSpendableAmountResponse>> = fireblocks.vaults.getMaxSpendableAmount(vaultsApiGetMaxSpendableAmountRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<GetMaxSpendableAmountResponse>> response = fireblocks.vaults().getMaxSpendableAmount(vaultAccountId, assetId, manualSignging);
        - lang: Python
          source: response = fireblocks.vaults.get_max_spendable_amount(vault_account_id, asset_id, manual_signging);
  /vault/accounts/{vaultAccountId}/{assetId}/unspent_inputs:
    get:
      summary: Get UTXO unspent inputs information
      description: |-
        Returns unspent inputs information of an UTXO asset in a vault account.

        Endpoint Permission: Admin, Non-Signing Admin, Signer, Approver, Editor, Viewer.
      tags:
        - Vaults
      x-rate-limit-category: read
      x-readme:
        code-samples:
          - language: python
            code: vaultAsset = fireblocks.get_unspent_inputs(vault_account_id, asset_id)
            name: Fireblocks SDK Python example (Legacy)
          - language: javascript
            code: const vaultAsset = await fireblocks.getUnspentInputs(vaultAccountId, assetId);
            name: Fireblocks SDK Javascript example
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<GetUnspentInputsResponse>> = fireblocks.vaults.getUnspentInputs(vaultsApiGetUnspentInputsRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<List<UnspentInputsResponse>>> response = fireblocks.vaults().getUnspentInputs(vaultAccountId, assetId);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.vaults.get_unspent_inputs(vault_account_id, asset_id);
            name: Fireblocks SDK Python example
      parameters:
        - in: path
          name: vaultAccountId
          required: true
          description: The ID of the vault account
          schema:
            type: string
            format: numeric
            x-fb-entity: vault_account
        - in: path
          name: assetId
          required: true
          description: The ID of the asset
          schema:
            type: string
            x-fb-entity: asset
      responses:
        '200':
          description: List of Unspent information per input
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetUnspentInputsResponse'
        default:
          $ref: '#/components/responses/Error'
      operationId: getUnspentInputs
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<GetUnspentInputsResponse>> = fireblocks.vaults.getUnspentInputs(vaultsApiGetUnspentInputsRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<List<UnspentInputsResponse>>> response = fireblocks.vaults().getUnspentInputs(vaultAccountId, assetId);
        - lang: Python
          source: response = fireblocks.vaults.get_unspent_inputs(vault_account_id, asset_id);
  /vault/accounts/{vaultAccountId}/hide:
    post:
      summary: Hide a vault account in the console
      description: |-
        Hides the requested vault account from the web console view.
        This operation is required when creating thousands of vault accounts to serve your end-users.
        Used for preventing the web console to be swamped with too much vault accounts.
        Learn more in the following [guide](https://developers.fireblocks.com/docs/create-direct-custody-wallets#hiding-vault-accounts).
        NOTE: Hiding the vault account from the web console will also hide all the related transactions to/from this vault.
        Endpoint Permission: Admin, Non-Signing Admin, Signer, Approver, Editor.
      tags:
        - Vaults
      x-rate-limit-category: write
      x-readme:
        code-samples:
          - language: python
            code: vaultAsset = fireblocks.hide_vault_account(vault_account_id)
            name: Fireblocks SDK Python example (Legacy)
          - language: javascript
            code: const vaultAsset = await fireblocks.hideVaultAccount(vaultAccountId);
            name: Fireblocks SDK Javascript example
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<VaultActionStatus>> = fireblocks.vaults.hideVaultAccount(vaultsApiHideVaultAccountRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<VaultActionStatus>> response = fireblocks.vaults().hideVaultAccount(vaultAccountId, idempotencyKey);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.vaults.hide_vault_account(vault_account_id, idempotency_key);
            name: Fireblocks SDK Python example
      parameters:
        - in: path
          name: vaultAccountId
          required: true
          description: The vault account to hide
          schema:
            type: string
            format: numeric
            x-fb-entity: vault_account
        - $ref: '#/components/parameters/X-Idempotency-Key'
      responses:
        '201':
          description: OK
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VaultActionStatus'
        default:
          $ref: '#/components/responses/Error'
      operationId: hideVaultAccount
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<VaultActionStatus>> = fireblocks.vaults.hideVaultAccount(vaultsApiHideVaultAccountRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<VaultActionStatus>> response = fireblocks.vaults().hideVaultAccount(vaultAccountId, idempotencyKey);
        - lang: Python
          source: response = fireblocks.vaults.hide_vault_account(vault_account_id, idempotency_key);
  /vault/accounts/{vaultAccountId}/set_auto_fuel:
    post:
      summary: Set auto fueling to on or off
      description: |-
        Toggles the auto fueling property of the vault account to enabled or disabled.
        Vault Accounts with 'autoFuel=true' are monitored and auto fueled by the Fireblocks Gas Station.
        Learn more about the Fireblocks Gas Station in the following [guide](https://developers.fireblocks.com/docs/work-with-gas-station).
        Endpoint Permission: Admin, Non-Signing Admin, Signer, Approver, Editor.
      tags:
        - Vaults
      x-rate-limit-category: write
      parameters:
        - in: path
          name: vaultAccountId
          required: true
          description: The vault account ID
          schema:
            type: string
            format: numeric
            x-fb-entity: vault_account
        - $ref: '#/components/parameters/X-Idempotency-Key'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SetAutoFuelRequest'
      responses:
        '201':
          description: OK
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VaultActionStatus'
        default:
          $ref: '#/components/responses/Error'
      operationId: setVaultAccountAutoFuel
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<VaultActionStatus>> = fireblocks.vaults.setVaultAccountAutoFuel(vaultsApiSetVaultAccountAutoFuelRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<VaultActionStatus>> response = fireblocks.vaults().setVaultAccountAutoFuel(setAutoFuelRequest, vaultAccountId, idempotencyKey);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.vaults.set_vault_account_auto_fuel(set_auto_fuel_request, vault_account_id, idempotency_key);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<VaultActionStatus>> = fireblocks.vaults.setVaultAccountAutoFuel(vaultsApiSetVaultAccountAutoFuelRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<VaultActionStatus>> response = fireblocks.vaults().setVaultAccountAutoFuel(setAutoFuelRequest, vaultAccountId, idempotencyKey);
        - lang: Python
          source: response = fireblocks.vaults.set_vault_account_auto_fuel(set_auto_fuel_request, vault_account_id, idempotency_key);
  /vault/accounts/{vaultAccountId}/set_customer_ref_id:
    post:
      summary: Set an AML/KYT ID for a vault account
      description: 'Assigns an AML/KYT customer reference ID for the vault account. Learn more about Fireblocks AML management in the following [guide](https://developers.fireblocks.com/docs/define-aml-policies). Endpoint Permission: Admin, Non-Signing Admin.'
      tags:
        - Vaults
      x-rate-limit-category: write
      x-readme:
        code-samples:
          - language: python
            code: vaultAsset = fireblocks.set_vault_account_customer_ref_id(vault_account_id, customer_ref_id)
            name: Fireblocks SDK Python example (Legacy)
          - language: javascript
            code: const vaultAsset = await fireblocks.setCustomerRefIdForVaultAccount(vaultAccountId, customerRefId);
            name: Fireblocks SDK Javascript example
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<VaultActionStatus>> = fireblocks.vaults.setVaultAccountCustomerRefId(vaultsApiSetVaultAccountCustomerRefIdRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<VaultActionStatus>> response = fireblocks.vaults().setVaultAccountCustomerRefId(setCustomerRefIdRequest, vaultAccountId, idempotencyKey);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.vaults.set_vault_account_customer_ref_id(set_customer_ref_id_request, vault_account_id, idempotency_key);
            name: Fireblocks SDK Python example
      parameters:
        - in: path
          name: vaultAccountId
          required: true
          description: The vault account ID
          schema:
            type: string
            format: numeric
            x-fb-entity: vault_account
        - $ref: '#/components/parameters/X-Idempotency-Key'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SetCustomerRefIdRequest'
      responses:
        '201':
          description: OK
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VaultActionStatus'
        default:
          $ref: '#/components/responses/Error'
      operationId: setVaultAccountCustomerRefId
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<VaultActionStatus>> = fireblocks.vaults.setVaultAccountCustomerRefId(vaultsApiSetVaultAccountCustomerRefIdRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<VaultActionStatus>> response = fireblocks.vaults().setVaultAccountCustomerRefId(setCustomerRefIdRequest, vaultAccountId, idempotencyKey);
        - lang: Python
          source: response = fireblocks.vaults.set_vault_account_customer_ref_id(set_customer_ref_id_request, vault_account_id, idempotency_key);
  /vault/accounts/{vaultAccountId}/unhide:
    post:
      summary: Unhide a vault account in the console
      description: |-
        Makes a hidden vault account visible in web console view.
        Endpoint Permission: Admin, Non-Signing Admin, Signer, Approver, Editor.
      tags:
        - Vaults
      x-rate-limit-category: write
      x-readme:
        code-samples:
          - language: python
            code: vaultAsset = fireblocks.unhide_vault_account(vault_account_id)
            name: Fireblocks SDK Python example (Legacy)
          - language: javascript
            code: const vaultAsset = await fireblocks.unhideVaultAccount(vaultAccountId);
            name: Fireblocks SDK Javascript example
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<VaultActionStatus>> = fireblocks.vaults.unhideVaultAccount(vaultsApiUnhideVaultAccountRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<VaultActionStatus>> response = fireblocks.vaults().unhideVaultAccount(vaultAccountId, idempotencyKey);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.vaults.unhide_vault_account(vault_account_id, idempotency_key);
            name: Fireblocks SDK Python example
      parameters:
        - in: path
          name: vaultAccountId
          required: true
          description: The vault account to unhide
          schema:
            type: string
            format: numeric
            x-fb-entity: vault_account
        - $ref: '#/components/parameters/X-Idempotency-Key'
      responses:
        '201':
          description: OK
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VaultActionStatus'
        default:
          $ref: '#/components/responses/Error'
      operationId: unhideVaultAccount
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<VaultActionStatus>> = fireblocks.vaults.unhideVaultAccount(vaultsApiUnhideVaultAccountRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<VaultActionStatus>> response = fireblocks.vaults().unhideVaultAccount(vaultAccountId, idempotencyKey);
        - lang: Python
          source: response = fireblocks.vaults.unhide_vault_account(vault_account_id, idempotency_key);
  /vault/accounts/{vaultAccountId}/usdc_gateway:
    get:
      summary: Get USDC Gateway wallet info
      description: |-
        Returns the USDC Gateway wallet information associated with the given vault account.
        **Note:** This endpoint is currently in beta and might be subject to changes.
        Endpoint Permission: Admin, Non-Signing Admin, Signer, Approver, Editor, Viewer.
      tags:
        - Vaults
      x-rate-limit-category: read
      parameters:
        - in: path
          name: vaultAccountId
          required: true
          description: The ID of the vault account
          schema:
            type: string
            format: numeric
            x-fb-entity: vault_account
      responses:
        '200':
          description: USDC Gateway wallet information
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UsdcGatewayWalletInfoResponse'
        default:
          $ref: '#/components/responses/Error'
      operationId: getUsdcGatewayWalletInfoBeta
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<UsdcGatewayWalletInfoResponse>> = fireblocks.vaults.getUsdcGatewayWalletInfoBeta(vaultsApiGetUsdcGatewayWalletInfoBetaRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<UsdcGatewayWalletInfoResponse>> response = fireblocks.vaults().getUsdcGatewayWalletInfoBeta(vaultAccountId);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.vaults.get_usdc_gateway_wallet_info_beta(vault_account_id);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<UsdcGatewayWalletInfoResponse>> = fireblocks.vaults.getUsdcGatewayWalletInfoBeta(vaultsApiGetUsdcGatewayWalletInfoBetaRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<UsdcGatewayWalletInfoResponse>> response = fireblocks.vaults().getUsdcGatewayWalletInfoBeta(vaultAccountId);
        - lang: Python
          source: response = fireblocks.vaults.get_usdc_gateway_wallet_info_beta(vault_account_id);
  /vault/accounts/{vaultAccountId}/usdc_gateway/activate:
    post:
      summary: Activate a USDC Gateway wallet
      description: |-
        Activates the USDC Gateway wallet associated with the given vault account. If the wallet does not yet exist it is created in an activated state.
        **Note:** This endpoint is currently in beta and might be subject to changes.
        Endpoint Permission: Admin, Non-Signing Admin, Signer, Approver.
      tags:
        - Vaults
      x-rate-limit-category: write
      parameters:
        - in: path
          name: vaultAccountId
          required: true
          description: The ID of the vault account
          schema:
            type: string
            format: numeric
            x-fb-entity: vault_account
        - $ref: '#/components/parameters/X-Idempotency-Key'
      responses:
        '200':
          description: USDC Gateway wallet activated successfully
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UsdcGatewayWalletStatusResponse'
        default:
          $ref: '#/components/responses/Error'
      operationId: activateUsdcGatewayWalletBeta
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<UsdcGatewayWalletStatusResponse>> = fireblocks.vaults.activateUsdcGatewayWalletBeta(vaultsApiActivateUsdcGatewayWalletBetaRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<UsdcGatewayWalletStatusResponse>> response = fireblocks.vaults().activateUsdcGatewayWalletBeta(vaultAccountId, idempotencyKey);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.vaults.activate_usdc_gateway_wallet_beta(vault_account_id, idempotency_key);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<UsdcGatewayWalletStatusResponse>> = fireblocks.vaults.activateUsdcGatewayWalletBeta(vaultsApiActivateUsdcGatewayWalletBetaRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<UsdcGatewayWalletStatusResponse>> response = fireblocks.vaults().activateUsdcGatewayWalletBeta(vaultAccountId, idempotencyKey);
        - lang: Python
          source: response = fireblocks.vaults.activate_usdc_gateway_wallet_beta(vault_account_id, idempotency_key);
  /vault/accounts/{vaultAccountId}/usdc_gateway/deactivate:
    post:
      summary: Deactivate a USDC Gateway wallet
      description: |-
        Deactivates the USDC Gateway wallet associated with the given vault account.
        **Note:** This endpoint is currently in beta and might be subject to changes.
        Endpoint Permission: Admin, Non-Signing Admin, Signer, Approver.
      tags:
        - Vaults
      x-rate-limit-category: write
      parameters:
        - in: path
          name: vaultAccountId
          required: true
          description: The ID of the vault account
          schema:
            type: string
            format: numeric
            x-fb-entity: vault_account
        - $ref: '#/components/parameters/X-Idempotency-Key'
      responses:
        '200':
          description: USDC Gateway wallet deactivated successfully
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UsdcGatewayWalletStatusResponse'
        default:
          $ref: '#/components/responses/Error'
      operationId: deactivateUsdcGatewayWalletBeta
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<UsdcGatewayWalletStatusResponse>> = fireblocks.vaults.deactivateUsdcGatewayWalletBeta(vaultsApiDeactivateUsdcGatewayWalletBetaRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<UsdcGatewayWalletStatusResponse>> response = fireblocks.vaults().deactivateUsdcGatewayWalletBeta(vaultAccountId, idempotencyKey);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.vaults.deactivate_usdc_gateway_wallet_beta(vault_account_id, idempotency_key);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<UsdcGatewayWalletStatusResponse>> = fireblocks.vaults.deactivateUsdcGatewayWalletBeta(vaultsApiDeactivateUsdcGatewayWalletBetaRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<UsdcGatewayWalletStatusResponse>> response = fireblocks.vaults().deactivateUsdcGatewayWalletBeta(vaultAccountId, idempotencyKey);
        - lang: Python
          source: response = fireblocks.vaults.deactivate_usdc_gateway_wallet_beta(vault_account_id, idempotency_key);
  /vault/accounts/addresses/bulk:
    post:
      operationId: createMultipleDepositAddresses
      summary: Bulk creation of new deposit addresses
      description: |
        **For UTXO blockchains only.**

        Create multiple deposit addresses by running an async job.
        - The target Vault account should already have a UTXO asset wallet with a permanent address.
        - Limited to a maximum of 10,000 addresses per operation. Use multiple operations for the same Vault account/permanent address if needed.

        **Endpoint Permissions:** Admin, Non-Signing Admin.
      tags:
        - Vaults
      x-rate-limit-category: async
      parameters:
        - $ref: '#/components/parameters/X-Idempotency-Key'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateMultipleDepositAddressesRequest'
      responses:
        '200':
          description: A JobCreated object
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/JobCreated'
        default:
          $ref: '#/components/responses/Error'
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<JobCreated>> = fireblocks.vaults.createMultipleDepositAddresses(vaultsApiCreateMultipleDepositAddressesRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<JobCreated>> response = fireblocks.vaults().createMultipleDepositAddresses(createMultipleDepositAddressesRequest, idempotencyKey);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.vaults.create_multiple_deposit_addresses(create_multiple_deposit_addresses_request, idempotency_key);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<JobCreated>> = fireblocks.vaults.createMultipleDepositAddresses(vaultsApiCreateMultipleDepositAddressesRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<JobCreated>> response = fireblocks.vaults().createMultipleDepositAddresses(createMultipleDepositAddressesRequest, idempotencyKey);
        - lang: Python
          source: response = fireblocks.vaults.create_multiple_deposit_addresses(create_multiple_deposit_addresses_request, idempotency_key);
  /vault/accounts/addresses/bulk/{jobId}:
    get:
      summary: Get the job status of the bulk deposit address creation
      description: |
        Returns the current status of (or an error for) the specified deposit addresss bulk creation job.

        **Endpoint Permissions:** Admin, Non-Signing Admin, Signer, Approver, Editor, and Viewer.
      tags:
        - Vaults
      x-rate-limit-category: read
      parameters:
        - in: path
          name: jobId
          required: true
          description: The ID of the job to create addresses
          schema:
            type: string
          example: 019681b4-107d-7243-942d-4c3c30e36fae
      responses:
        '200':
          description: A Job with status
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreateMultipleDepositAddressesJobStatus'
        default:
          $ref: '#/components/responses/Error'
      operationId: getCreateMultipleDepositAddressesJobStatus
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<CreateMultipleDepositAddressesJobStatus>> = fireblocks.vaults.getCreateMultipleDepositAddressesJobStatus(vaultsApiGetCreateMultipleDepositAddressesJobStatusRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<CreateMultipleDepositAddressesJobStatus>> response = fireblocks.vaults().getCreateMultipleDepositAddressesJobStatus(jobId);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.vaults.get_create_multiple_deposit_addresses_job_status(job_id);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<CreateMultipleDepositAddressesJobStatus>> = fireblocks.vaults.getCreateMultipleDepositAddressesJobStatus(vaultsApiGetCreateMultipleDepositAddressesJobStatusRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<CreateMultipleDepositAddressesJobStatus>> response = fireblocks.vaults().getCreateMultipleDepositAddressesJobStatus(jobId);
        - lang: Python
          source: response = fireblocks.vaults.get_create_multiple_deposit_addresses_job_status(job_id);
  /vault/accounts/attached_tags:
    post:
      summary: Attach or detach tags from vault accounts
      description: |-
        Attach or detach one or more tags from the requested vault accounts.
        Endpoint Permission: For protected tags: Owner, Admin, Non-Signing Admin. For non protected tags: Owner, Admin, Non-Signing Admin, Signer, Editor, Approver.
      tags:
        - Vaults
      x-rate-limit-category: write
      parameters:
        - $ref: '#/components/parameters/X-Idempotency-Key'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/VaultAccountsTagAttachmentOperationsRequest'
      responses:
        '200':
          description: Tags were attached/detached successfully
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VaultAccountsTagAttachmentOperationsResponse'
        '400':
          description: |
            - Invalid request parameters.
            - Same tag ID is provided in both tagIdsToAttach and tagIdsToDetach.
            - Vault accounts are archived.
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorSchema'
        '404':
          description: |
            - Tags with the requested ID not found.
            - Vault accounts with the requested ID not found.
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorSchema'
      operationId: attachOrDetachTagsFromVaultAccounts
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<VaultAccountsTagAttachmentOperationsResponse>> = fireblocks.vaults.attachOrDetachTagsFromVaultAccounts(vaultsApiAttachOrDetachTagsFromVaultAccountsRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<VaultAccountsTagAttachmentOperationsResponse>> response = fireblocks.vaults().attachOrDetachTagsFromVaultAccounts(vaultAccountsTagAttachmentOperationsRequest, idempotencyKey);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.vaults.attach_or_detach_tags_from_vault_accounts(vault_accounts_tag_attachment_operations_request, idempotency_key);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<VaultAccountsTagAttachmentOperationsResponse>> = fireblocks.vaults.attachOrDetachTagsFromVaultAccounts(vaultsApiAttachOrDetachTagsFromVaultAccountsRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<VaultAccountsTagAttachmentOperationsResponse>> response = fireblocks.vaults().attachOrDetachTagsFromVaultAccounts(vaultAccountsTagAttachmentOperationsRequest, idempotencyKey);
        - lang: Python
          source: response = fireblocks.vaults.attach_or_detach_tags_from_vault_accounts(vault_accounts_tag_attachment_operations_request, idempotency_key);
  /vault/accounts/bulk:
    post:
      operationId: createMultipleAccounts
      summary: Bulk creation of new vault accounts
      description: |
        Create multiple vault accounts by running an async job.      
        - The HBAR, TON, SUI, TERRA, ALGO, and DOT blockchains are not supported.
        - These endpoints are currently in beta and might be subject to changes.
        - Limited to a maximum of 10,000 accounts per operation.

        **Endpoint Permissions:** Admin, Non-Signing Admin, Signer, Approver, Editor.
      tags:
        - Vaults
      x-rate-limit-category: write
      parameters:
        - $ref: '#/components/parameters/X-Idempotency-Key'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateMultipleAccountsRequest'
      responses:
        '200':
          description: A JobCreated object
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/JobCreated'
        default:
          $ref: '#/components/responses/Error'
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<JobCreated>> = fireblocks.vaults.createMultipleAccounts(vaultsApiCreateMultipleAccountsRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<JobCreated>> response = fireblocks.vaults().createMultipleAccounts(createMultipleAccountsRequest, idempotencyKey);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.vaults.create_multiple_accounts(create_multiple_accounts_request, idempotency_key);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<JobCreated>> = fireblocks.vaults.createMultipleAccounts(vaultsApiCreateMultipleAccountsRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<JobCreated>> response = fireblocks.vaults().createMultipleAccounts(createMultipleAccountsRequest, idempotencyKey);
        - lang: Python
          source: response = fireblocks.vaults.create_multiple_accounts(create_multiple_accounts_request, idempotency_key);
  /vault/accounts/bulk/{jobId}:
    get:
      summary: Get job status of bulk creation of new vault accounts
      description: |
        Returns the current status of (or error for) the specified vault account bulk creation job.

        **Endpoint Permissions:** Admin, Non-Signing Admin, Signer, Approver, Editor, Viewer.
      tags:
        - Vaults
      x-rate-limit-category: async
      parameters:
        - in: path
          name: jobId
          required: true
          description: The ID of the job to create addresses
          schema:
            type: string
          example: 019681b4-107d-7243-942d-4c3c30e36fae
      responses:
        '200':
          description: A Job with status
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreateMultipleVaultAccountsJobStatus'
        default:
          $ref: '#/components/responses/Error'
      operationId: getCreateMultipleVaultAccountsJobStatus
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<CreateMultipleVaultAccountsJobStatus>> = fireblocks.vaults.getCreateMultipleVaultAccountsJobStatus(vaultsApiGetCreateMultipleVaultAccountsJobStatusRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<CreateMultipleVaultAccountsJobStatus>> response = fireblocks.vaults().getCreateMultipleVaultAccountsJobStatus(jobId);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.vaults.get_create_multiple_vault_accounts_job_status(job_id);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<CreateMultipleVaultAccountsJobStatus>> = fireblocks.vaults.getCreateMultipleVaultAccountsJobStatus(vaultsApiGetCreateMultipleVaultAccountsJobStatusRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<CreateMultipleVaultAccountsJobStatus>> response = fireblocks.vaults().getCreateMultipleVaultAccountsJobStatus(jobId);
        - lang: Python
          source: response = fireblocks.vaults.get_create_multiple_vault_accounts_job_status(job_id);
  /vault/asset_wallets:
    get:
      summary: Get vault wallets (Paginated)
      description: |-
        Get all vault wallets of the vault accounts in your workspace. 
        A vault wallet is an asset in a vault account. 

        This method allows fast traversal of all account balances.
        Endpoint Permission: Admin, Non-Signing Admin, Signer, Approver, Editor, Viewer.
      tags:
        - Vaults
      x-rate-limit-category: query
      x-readme:
        code-samples:
          - language: python
            code: vault_accounts = fireblocks.get_asset_wallets(filters)
            name: Fireblocks SDK Python example (Legacy)
          - language: javascript
            code: const vaultAccounts = await fireblocks.getAssetWallets(filters);
            name: Fireblocks SDK Javascript example
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<PaginatedAssetWalletResponse>> = fireblocks.vaults.getAssetWallets(vaultsApiGetAssetWalletsRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<PaginatedAssetWalletResponse>> response = fireblocks.vaults().getAssetWallets(totalAmountLargerThan, assetId, orderBy, before, after, limit);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.vaults.get_asset_wallets(total_amount_larger_than, asset_id, order_by, before, after, limit);
            name: Fireblocks SDK Python example
      parameters:
        - in: query
          name: totalAmountLargerThan
          description: When specified, only vault wallets with total balance greater than this amount are returned.
          required: false
          schema:
            type: number
        - in: query
          name: assetId
          required: false
          description: When specified, only vault wallets with the specified ID are returned.
          schema:
            type: string
            x-fb-entity: asset
        - in: query
          name: orderBy
          required: false
          schema:
            type: string
            enum:
              - ASC
              - DESC
            default: DESC
        - in: query
          name: before
          required: false
          description: |
            Fetches the next paginated response before this element. 
            This element is a cursor and is returned at the response of the previous page.
          schema:
            type: string
        - in: query
          name: after
          required: false
          description: Fetches the next paginated response after this element. This element is a cursor and is returned at the response of the previous page.
          schema:
            type: string
        - in: query
          name: limit
          required: false
          description: |
            The maximum number of vault wallets in a single response. 

            The default is 200 and the maximum is 1000.
          schema:
            type: number
            minimum: 1
            maximum: 1000
            default: 200
      responses:
        '200':
          description: A PaginatedAssetWalletResponse object
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedAssetWalletResponse'
      operationId: getAssetWallets
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<PaginatedAssetWalletResponse>> = fireblocks.vaults.getAssetWallets(vaultsApiGetAssetWalletsRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<PaginatedAssetWalletResponse>> response = fireblocks.vaults().getAssetWallets(totalAmountLargerThan, assetId, orderBy, before, after, limit);
        - lang: Python
          source: response = fireblocks.vaults.get_asset_wallets(total_amount_larger_than, asset_id, order_by, before, after, limit);
  /vault/assets:
    get:
      summary: Get asset balance for chosen assets
      description: |-
        Gets the assets amount summary for all accounts or filtered accounts.

        Endpoint Permission: Admin, Non-Signing Admin, Signer, Approver, Editor, Viewer.
      tags:
        - Vaults
      x-rate-limit-category: read
      x-readme:
        code-samples:
          - language: python
            code: assets_balance = fireblocks.get_vault_assets_balance(accout_name_prefix, account_name_suffix)
            name: Fireblocks SDK Python example (Legacy)
          - language: javascript
            code: const assetsBalance = await fireblocks.getVaultAssetsBalance(accountNamePrefix, accountNameSuffix);
            name: Fireblocks SDK Javascript example
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<GetVaultAssetsResponse>> = fireblocks.vaults.getVaultAssets(vaultsApiGetVaultAssetsRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<List<VaultAsset>>> response = fireblocks.vaults().getVaultAssets(accountNamePrefix, accountNameSuffix);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.vaults.get_vault_assets(account_name_prefix, account_name_suffix);
            name: Fireblocks SDK Python example
      parameters:
        - in: query
          name: accountNamePrefix
          required: false
          schema:
            type: string
        - in: query
          name: accountNameSuffix
          required: false
          schema:
            type: string
      responses:
        '200':
          description: Amount by asset
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetVaultAssetsResponse'
        default:
          $ref: '#/components/responses/Error'
      operationId: getVaultAssets
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<GetVaultAssetsResponse>> = fireblocks.vaults.getVaultAssets(vaultsApiGetVaultAssetsRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<List<VaultAsset>>> response = fireblocks.vaults().getVaultAssets(accountNamePrefix, accountNameSuffix);
        - lang: Python
          source: response = fireblocks.vaults.get_vault_assets(account_name_prefix, account_name_suffix);
  /vault/assets/{assetId}:
    get:
      summary: Get vault balance by an asset
      description: |-
        Get the total balance of an asset across all the vault accounts.

        Endpoint Permission: Admin, Non-Signing Admin, Signer, Approver, Editor, Viewer.
      tags:
        - Vaults
      x-rate-limit-category: read
      x-readme:
        code-samples:
          - language: python
            code: assets_balance = fireblocks.get_vault_balance_by_asset(asset_id)
            name: Fireblocks SDK Python example (Legacy)
          - language: javascript
            code: const assetsBalance = await fireblocks.getVaultBalanceByAsset(assetId);
            name: Fireblocks SDK Javascript example
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<VaultAsset>> = fireblocks.vaults.getVaultBalanceByAsset(vaultsApiGetVaultBalanceByAssetRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<VaultAsset>> response = fireblocks.vaults().getVaultBalanceByAsset(assetId);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.vaults.get_vault_balance_by_asset(asset_id);
            name: Fireblocks SDK Python example
      parameters:
        - in: path
          name: assetId
          required: true
          schema:
            type: string
            x-fb-entity: asset
      responses:
        '200':
          description: Vault amount by asset
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VaultAsset'
        default:
          $ref: '#/components/responses/Error'
      operationId: getVaultBalanceByAsset
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<VaultAsset>> = fireblocks.vaults.getVaultBalanceByAsset(vaultsApiGetVaultBalanceByAssetRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<VaultAsset>> response = fireblocks.vaults().getVaultBalanceByAsset(assetId);
        - lang: Python
          source: response = fireblocks.vaults.get_vault_balance_by_asset(asset_id);
  /vault/lookup_by_address:
    get:
      operationId: lookupVaultByAddress
      summary: Look up a vault account by blockchain address
      description: |
        Resolves a blockchain address to the vault account that owns it. Returns the vault account ID and the blockchains associated with the address.
        **Note:** This endpoint is currently in beta and might be subject to changes.
      tags:
        - Vaults
      x-rate-limit-category: read
      parameters:
        - in: query
          name: address
          required: true
          description: The blockchain address to resolve.
          schema:
            type: string
      responses:
        '200':
          description: Vault account that owns the address, with associated blockchains.
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AddressReverseLookupResponse'
        '401':
          description: Unauthorized. Missing / invalid JWT token in Authorization header.
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
        '403':
          description: Feature is not enabled for the workspace.
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
        '404':
          description: Vault account not found for the supplied address
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorSchema'
        default:
          $ref: '#/components/responses/Error'
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<AddressReverseLookupResponse>> = fireblocks.vaults.lookupVaultByAddress(vaultsApiLookupVaultByAddressRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<AddressReverseLookupResponse>> response = fireblocks.vaults().lookupVaultByAddress(address);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.vaults.lookup_vault_by_address(address);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<AddressReverseLookupResponse>> = fireblocks.vaults.lookupVaultByAddress(vaultsApiLookupVaultByAddressRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<AddressReverseLookupResponse>> response = fireblocks.vaults().lookupVaultByAddress(address);
        - lang: Python
          source: response = fireblocks.vaults.lookup_vault_by_address(address);
  /vault/public_key_info:
    get:
      summary: Get the public key for a derivation path
      description: |-
        Gets the public key information based on derivation path and signing algorithm.
        Endpoint Permission: Admin, Non-Signing Admin.
      tags:
        - Vaults
      x-rate-limit-category: read
      x-readme:
        code-samples:
          - language: python
            code: pubKey = fireblocks.get_public_key_info(algorithm, derivation_path, compressed)
            name: Fireblocks SDK Python example (Legacy)
          - language: javascript
            code: |
              const PublicKeyInfoArgs = { algorithm: 'MPC_ECDSA_SECP256K1', derivationPath: '[44,0,0,0,0]' } const pubKey = await fireblocks.getPublicKeyInfo(PublicKeyInfoArgs);
            name: Fireblocks SDK Javascript example
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<PublicKeyInformation>> = fireblocks.vaults.getPublicKeyInfo(vaultsApiGetPublicKeyInfoRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<PublicKeyInformation>> response = fireblocks.vaults().getPublicKeyInfo(derivationPath, algorithm, compressed);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.vaults.get_public_key_info(derivation_path, algorithm, compressed);
            name: Fireblocks SDK Python example
      parameters:
        - in: query
          name: derivationPath
          required: true
          schema:
            type: string
        - in: query
          name: algorithm
          required: true
          schema:
            type: string
        - in: query
          name: compressed
          schema:
            type: boolean
      responses:
        '200':
          description: Public key information
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PublicKeyInformation'
        default:
          $ref: '#/components/responses/Error'
      operationId: getPublicKeyInfo
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<PublicKeyInformation>> = fireblocks.vaults.getPublicKeyInfo(vaultsApiGetPublicKeyInfoRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<PublicKeyInformation>> response = fireblocks.vaults().getPublicKeyInfo(derivationPath, algorithm, compressed);
        - lang: Python
          source: response = fireblocks.vaults.get_public_key_info(derivation_path, algorithm, compressed);
  /connections:
    get:
      operationId: get
      summary: List all open Web3 connections.
      description: Get open Web3 connections.
      x-rate-limit-category: query
      parameters:
        - $ref: '#/components/parameters/X-End-User-Wallet-Id'
        - name: order
          required: false
          in: query
          description: List order; ascending or descending.
          schema:
            type: string
            enum:
              - ASC
              - DESC
            default: ASC
        - name: filter
          required: false
          in: query
          description: Parsed filter object
          examples:
            object:
              summary: The filter object
              description: ''
              value:
                id: string
                userId: string
                vaultAccountId: number
                connectionMethod: string
                feeLevel: string
                appUrl: string
                appName: string
            stringified:
              summary: The stringified parsed object
              description: |-
                About stringified parsed objects:

                * Each key-value pair is separated by '=', and each pair is separated by ',' (you can use [`qs`](https://www.npmjs.com/package/qs) package for this)
              value: id=string,userId=string,vaultAccountId=number,connectionMethod=string,feeLevel=string,appUrl=string,appName=string
          schema:
            type: object
            properties:
              id:
                type: string
              userId:
                type: string
              vaultAccountId:
                type: number
              connectionMethod:
                type: string
              feeLevel:
                type: string
              appUrl:
                type: string
              appName:
                type: string
        - name: sort
          required: false
          in: query
          description: Property to sort Web3 connections by.
          schema:
            type: string
            enum:
              - id
              - userId
              - vaultAccountId
              - createdAt
              - feeLevel
              - appUrl
              - appName
            default: createdAt
        - name: pageSize
          required: false
          in: query
          description: Amount of results to return in the next page.
          schema:
            type: number
            default: 10
            maximum: 50
        - name: next
          required: false
          in: query
          description: Cursor to the next page
          schema:
            type: string
      responses:
        '200':
          description: ''
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetConnectionsResponse'
        '400':
          description: Query parameters were invalid
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
        '500':
          description: Something went wrong
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
      tags:
        - Web3 connections
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<GetConnectionsResponse>> = fireblocks.web3Connections.get(web3ConnectionsApiGetRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<GetConnectionsResponse>> response = fireblocks.web3Connections().get(order, filter, sort, pageSize, next, xEndUserWalletId);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.web3_connections.get(order, filter, sort, page_size, next, x_end_user_wallet_id);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<GetConnectionsResponse>> = fireblocks.web3Connections.get(web3ConnectionsApiGetRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<GetConnectionsResponse>> response = fireblocks.web3Connections().get(order, filter, sort, pageSize, next, xEndUserWalletId);
        - lang: Python
          source: response = fireblocks.web3_connections.get(order, filter, sort, page_size, next, x_end_user_wallet_id);
  /connections/wc:
    post:
      operationId: create
      summary: Create a new Web3 connection.
      description: |-
        Initiate a new Web3 connection.

        * Note: After this succeeds, make a request to `PUT /v1/connections/wc/{id}` (below) to approve or reject the new Web3 connection.
      x-rate-limit-category: high_compute
      parameters:
        - $ref: '#/components/parameters/X-Idempotency-Key'
        - $ref: '#/components/parameters/X-End-User-Wallet-Id'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateConnectionRequest'
      responses:
        '201':
          description: Web3 connection initiated successfully
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreateConnectionResponse'
        '400':
          description: Invalid data sent
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
        '500':
          description: Something went wrong
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
      tags:
        - Web3 connections
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<CreateConnectionResponse>> = fireblocks.web3Connections.create(web3ConnectionsApiCreateRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<CreateConnectionResponse>> response = fireblocks.web3Connections().create(createConnectionRequest, idempotencyKey, xEndUserWalletId);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.web3_connections.create(create_connection_request, idempotency_key, x_end_user_wallet_id);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<CreateConnectionResponse>> = fireblocks.web3Connections.create(web3ConnectionsApiCreateRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<CreateConnectionResponse>> response = fireblocks.web3Connections().create(createConnectionRequest, idempotencyKey, xEndUserWalletId);
        - lang: Python
          source: response = fireblocks.web3_connections.create(create_connection_request, idempotency_key, x_end_user_wallet_id);
  /connections/wc/{id}:
    put:
      operationId: submit
      summary: Respond to a pending Web3 connection request.
      description: |-
        Submit a response to *approve* or *reject* an initiated Web3 connection.
        * Note: This call is used to complete your `POST /v1/connections/wc/` request.

        After this succeeds, your new Web3 connection is created and functioning.
      x-rate-limit-category: high_compute
      parameters:
        - name: id
          description: The ID of the initiated Web3 connection to approve.
          required: true
          in: path
          schema:
            type: string
        - $ref: '#/components/parameters/X-Idempotency-Key'
        - $ref: '#/components/parameters/X-End-User-Wallet-Id'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RespondToConnectionRequest'
      responses:
        '200':
          description: Connection submitted successfully
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
        '400':
          description: Invalid data sent
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
        '404':
          description: Connection not found
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
        '500':
          description: Something went wrong
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
      tags:
        - Web3 connections
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<void>> = fireblocks.web3Connections.submit(web3ConnectionsApiSubmitRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<Void>> response = fireblocks.web3Connections().submit(respondToConnectionRequest, id, idempotencyKey, xEndUserWalletId);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.web3_connections.submit(respond_to_connection_request, id, idempotency_key, x_end_user_wallet_id);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<void>> = fireblocks.web3Connections.submit(web3ConnectionsApiSubmitRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<Void>> response = fireblocks.web3Connections().submit(respondToConnectionRequest, id, idempotencyKey, xEndUserWalletId);
        - lang: Python
          source: response = fireblocks.web3_connections.submit(respond_to_connection_request, id, idempotency_key, x_end_user_wallet_id);
    delete:
      operationId: remove
      summary: Remove an existing Web3 connection.
      description: Remove a Web3 connection
      x-rate-limit-category: high_compute
      parameters:
        - $ref: '#/components/parameters/X-End-User-Wallet-Id'
        - name: id
          description: The ID of the existing Web3 connection to remove.
          required: true
          in: path
          schema:
            type: string
      responses:
        '200':
          description: Connection removed successfully
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
        '404':
          description: Connection not found
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
        '500':
          description: Something went wrong
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
      tags:
        - Web3 connections
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<void>> = fireblocks.web3Connections.remove(web3ConnectionsApiRemoveRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<Void>> response = fireblocks.web3Connections().remove(id, xEndUserWalletId);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.web3_connections.remove(id, x_end_user_wallet_id);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<void>> = fireblocks.web3Connections.remove(web3ConnectionsApiRemoveRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<Void>> response = fireblocks.web3Connections().remove(id, xEndUserWalletId);
        - lang: Python
          source: response = fireblocks.web3_connections.remove(id, x_end_user_wallet_id);
  /webhooks/resend:
    post:
      summary: Resend failed webhooks
      description: |-
        Resends all failed webhook notifications.

        Learn more about Fireblocks Webhooks in the following [guide](https://developers.fireblocks.com/docs/configure-webhooks).

        Endpoint Permission: Admin, Non-Signing Admin, Signer, Approver, Editor.
      tags:
        - Webhooks
      x-rate-limit-category: async
      x-readme:
        code-samples:
          - language: python
            code: result = fireblocks.resend_webhooks()
            name: Fireblocks SDK Python example (Legacy)
          - language: javascript
            code: const result = await fireblocks.resendWebhooks();
            name: Fireblocks SDK Javascript example
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<ResendWebhooksResponse>> = fireblocks.webhooks.resendWebhooks(webhooksApiResendWebhooksRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<ResendWebhooksResponse>> response = fireblocks.webhooks().resendWebhooks(idempotencyKey);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.webhooks.resend_webhooks(idempotency_key);
            name: Fireblocks SDK Python example
      parameters:
        - $ref: '#/components/parameters/X-Idempotency-Key'
      responses:
        '200':
          description: OK
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResendWebhooksResponse'
        default:
          $ref: '#/components/responses/Error'
      operationId: resendWebhooks
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<ResendWebhooksResponse>> = fireblocks.webhooks.resendWebhooks(webhooksApiResendWebhooksRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<ResendWebhooksResponse>> response = fireblocks.webhooks().resendWebhooks(idempotencyKey);
        - lang: Python
          source: response = fireblocks.webhooks.resend_webhooks(idempotency_key);
  /webhooks/resend/{txId}:
    post:
      summary: Resend webhooks for a transaction by ID
      description: |
        Resends webhook notifications for a transaction by its unique identifier.

        Learn more about Fireblocks Webhooks in the following [guide](https://developers.fireblocks.com/docs/configure-webhooks).

        **Endpoint Permissions:** Admin, Non-Signing Admin, Signer, Approver, Editor.
      tags:
        - Webhooks
      x-rate-limit-category: async
      x-readme:
        code-samples:
          - language: python
            code: result = fireblocks.resend_transaction_webhooks_by_id(txId, resend_created, resend_status_updated)
            name: Fireblocks SDK Python example (Legacy)
          - language: javascript
            code: const result = await fireblocks.resendTransactionWebhooksById(txId, resendCreated, resendStatusUpdated);
            name: Fireblocks SDK Javascript example
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<ResendWebhooksByTransactionIdResponse>> = fireblocks.webhooks.resendTransactionWebhooks(webhooksApiResendTransactionWebhooksRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<ResendWebhooksByTransactionIdResponse>> response = fireblocks.webhooks().resendTransactionWebhooks(resendTransactionWebhooksRequest, txId, idempotencyKey);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.webhooks.resend_transaction_webhooks(resend_transaction_webhooks_request, tx_id, idempotency_key);
            name: Fireblocks SDK Python example
      parameters:
        - in: path
          name: txId
          required: true
          description: The ID of the transaction for webhooks
          schema:
            type: string
        - $ref: '#/components/parameters/X-Idempotency-Key'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ResendTransactionWebhooksRequest'
      responses:
        '200':
          description: OK
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResendWebhooksByTransactionIdResponse'
        default:
          $ref: '#/components/responses/Error'
      operationId: resendTransactionWebhooks
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<ResendWebhooksByTransactionIdResponse>> = fireblocks.webhooks.resendTransactionWebhooks(webhooksApiResendTransactionWebhooksRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<ResendWebhooksByTransactionIdResponse>> response = fireblocks.webhooks().resendTransactionWebhooks(resendTransactionWebhooksRequest, txId, idempotencyKey);
        - lang: Python
          source: response = fireblocks.webhooks.resend_transaction_webhooks(resend_transaction_webhooks_request, tx_id, idempotency_key);
  /webhooks:
    post:
      operationId: createWebhook
      summary: Create a new webhook
      description: |
        Creates a new webhook, which will be triggered on the specified events

        **Endpoint Permissions:** Owner, Admin, Non-Signing Admin.
      x-rate-limit-category: write
      parameters:
        - $ref: '#/components/parameters/X-Idempotency-Key'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateWebhookRequest'
      responses:
        '201':
          description: created new webhook successfully
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Webhook'
        default:
          $ref: '#/components/responses/Error'
      tags:
        - Webhooks V2
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<Webhook>> = fireblocks.webhooksV2.createWebhook(webhooksV2ApiCreateWebhookRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<Webhook>> response = fireblocks.webhooksV2().createWebhook(createWebhookRequest, idempotencyKey);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.webhooks_v2.create_webhook(create_webhook_request, idempotency_key);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<Webhook>> = fireblocks.webhooksV2.createWebhook(webhooksV2ApiCreateWebhookRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<Webhook>> response = fireblocks.webhooksV2().createWebhook(createWebhookRequest, idempotencyKey);
        - lang: Python
          source: response = fireblocks.webhooks_v2.create_webhook(create_webhook_request, idempotency_key);
    get:
      operationId: getWebhooks
      summary: Get all webhooks
      description: |
        Get all webhooks (paginated).
      x-rate-limit-category: query
      parameters:
        - name: order
          required: false
          in: query
          description: ASC / DESC ordering (default DESC)
          schema:
            default: DESC
            example: ASC
            enum:
              - ASC
              - DESC
            type: string
        - name: pageCursor
          required: false
          in: query
          description: Cursor of the required page
          schema:
            type: string
        - name: pageSize
          required: false
          in: query
          description: Maximum number of items in the page
          schema:
            minimum: 1
            maximum: 100
            default: 10
            example: 10
            type: number
      responses:
        '200':
          description: A paginated response containing WebhookDto objects
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WebhookPaginatedResponse'
        default:
          $ref: '#/components/responses/Error'
      tags:
        - Webhooks V2
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<WebhookPaginatedResponse>> = fireblocks.webhooksV2.getWebhooks(webhooksV2ApiGetWebhooksRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<WebhookPaginatedResponse>> response = fireblocks.webhooksV2().getWebhooks(order, pageCursor, pageSize);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.webhooks_v2.get_webhooks(order, page_cursor, page_size);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<WebhookPaginatedResponse>> = fireblocks.webhooksV2.getWebhooks(webhooksV2ApiGetWebhooksRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<WebhookPaginatedResponse>> response = fireblocks.webhooksV2().getWebhooks(order, pageCursor, pageSize);
        - lang: Python
          source: response = fireblocks.webhooks_v2.get_webhooks(order, page_cursor, page_size);
  /webhooks/{webhookId}:
    get:
      operationId: getWebhook
      summary: Get webhook by id
      description: |
        Retrieve a webhook by its id
      parameters:
        - name: webhookId
          required: true
          in: path
          description: The unique identifier of the webhook
          schema:
            format: uuid
            example: 44fcead0-7053-4831-a53a-df7fb90d440f
            type: string
      responses:
        '200':
          description: A webhook object
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Webhook'
        default:
          $ref: '#/components/responses/Error'
      tags:
        - Webhooks V2
      x-rate-limit-category: read
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<Webhook>> = fireblocks.webhooksV2.getWebhook(webhooksV2ApiGetWebhookRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<Webhook>> response = fireblocks.webhooksV2().getWebhook(webhookId);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.webhooks_v2.get_webhook(webhook_id);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<Webhook>> = fireblocks.webhooksV2.getWebhook(webhooksV2ApiGetWebhookRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<Webhook>> response = fireblocks.webhooksV2().getWebhook(webhookId);
        - lang: Python
          source: response = fireblocks.webhooks_v2.get_webhook(webhook_id);
    patch:
      operationId: updateWebhook
      summary: Update webhook
      description: |
        Update a webhook by its id

        Endpoint Permission: Owner, Admin, Non-Signing Admin.
      parameters:
        - name: webhookId
          required: true
          in: path
          description: The unique identifier of the webhook
          schema:
            format: uuid
            example: 44fcead0-7053-4831-a53a-df7fb90d440f
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateWebhookRequest'
      responses:
        '200':
          description: Updated webhook object
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Webhook'
        default:
          $ref: '#/components/responses/Error'
      tags:
        - Webhooks V2
      x-rate-limit-category: write
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<Webhook>> = fireblocks.webhooksV2.updateWebhook(webhooksV2ApiUpdateWebhookRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<Webhook>> response = fireblocks.webhooksV2().updateWebhook(updateWebhookRequest, webhookId);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.webhooks_v2.update_webhook(update_webhook_request, webhook_id);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<Webhook>> = fireblocks.webhooksV2.updateWebhook(webhooksV2ApiUpdateWebhookRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<Webhook>> response = fireblocks.webhooksV2().updateWebhook(updateWebhookRequest, webhookId);
        - lang: Python
          source: response = fireblocks.webhooks_v2.update_webhook(update_webhook_request, webhook_id);
    delete:
      operationId: deleteWebhook
      summary: Delete webhook
      description: |
        Delete a webhook by its id

        Endpoint Permission: Owner, Admin, Non-Signing Admin.
      parameters:
        - name: webhookId
          required: true
          in: path
          description: The unique identifier of the webhook
          schema:
            format: uuid
            example: 44fcead0-7053-4831-a53a-df7fb90d440f
            type: string
      responses:
        '200':
          description: Deleted webhook object
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Webhook'
        default:
          $ref: '#/components/responses/Error'
      tags:
        - Webhooks V2
      x-rate-limit-category: write
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<Webhook>> = fireblocks.webhooksV2.deleteWebhook(webhooksV2ApiDeleteWebhookRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<Webhook>> response = fireblocks.webhooksV2().deleteWebhook(webhookId);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.webhooks_v2.delete_webhook(webhook_id);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<Webhook>> = fireblocks.webhooksV2.deleteWebhook(webhooksV2ApiDeleteWebhookRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<Webhook>> response = fireblocks.webhooksV2().deleteWebhook(webhookId);
        - lang: Python
          source: response = fireblocks.webhooks_v2.delete_webhook(webhook_id);
  /webhooks/{webhookId}/metrics/{metricName}:
    get:
      operationId: getMetrics
      summary: Get webhook metrics
      description: |
        Get webhook metrics by webhook id and metric name
      parameters:
        - name: webhookId
          required: true
          in: path
          schema:
            format: uuid
            example: 44fcead0-7053-4831-a53a-df7fb90d440f
            type: string
        - name: metricName
          required: true
          in: path
          description: Name of the metric to retrieve
          schema:
            type: string
            example: LAST_ACTIVE_HOUR_ERROR_RATE
            enum:
              - LAST_ACTIVE_HOUR_ERROR_RATE
      responses:
        '200':
          description: Webhook metrics
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WebhookMetric'
        default:
          $ref: '#/components/responses/Error'
      tags:
        - Webhooks V2
      x-rate-limit-category: read
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<WebhookMetric>> = fireblocks.webhooksV2.getMetrics(webhooksV2ApiGetMetricsRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<WebhookMetric>> response = fireblocks.webhooksV2().getMetrics(webhookId, metricName);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.webhooks_v2.get_metrics(webhook_id, metric_name);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<WebhookMetric>> = fireblocks.webhooksV2.getMetrics(webhooksV2ApiGetMetricsRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<WebhookMetric>> response = fireblocks.webhooksV2().getMetrics(webhookId, metricName);
        - lang: Python
          source: response = fireblocks.webhooks_v2.get_metrics(webhook_id, metric_name);
  /webhooks/{webhookId}/notifications:
    get:
      operationId: getNotifications
      summary: Get all notifications by webhook id
      description: |
        Get all notifications by webhook id (paginated)
      parameters:
        - name: webhookId
          required: true
          in: path
          schema:
            format: uuid
            example: 44fcead0-7053-4831-a53a-df7fb90d440f
            type: string
        - name: order
          required: false
          in: query
          description: ASC / DESC ordering (default DESC)
          schema:
            default: DESC
            example: ASC
            enum:
              - ASC
              - DESC
            type: string
        - name: sortBy
          required: false
          in: query
          description: Sort by field
          schema:
            default: updatedAt
            example: id
            enum:
              - id
              - createdAt
              - updatedAt
              - status
              - eventType
              - resourceId
            type: string
        - name: pageCursor
          required: false
          in: query
          description: Cursor of the required page
          schema:
            type: string
        - name: pageSize
          required: false
          in: query
          description: Maximum number of items in the page
          schema:
            minimum: 1
            maximum: 100
            default: 100
            example: 10
            type: number
        - name: startTime
          required: false
          in: query
          description: Start time in milliseconds since epoch to filter by notifications created after this time (default 31 days ago)
          schema:
            example: 1625097600000
            type: number
        - name: endTime
          required: false
          in: query
          description: End time in milliseconds since epoch to filter by notifications created before this time (default current time)
          schema:
            example: 1625017600000
            type: number
        - name: statuses
          required: false
          in: query
          description: List of notification statuses to filter by
          schema:
            type: array
            items:
              $ref: '#/components/schemas/NotificationStatus'
        - name: events
          required: false
          in: query
          description: List of webhook event types to filter by
          schema:
            type: array
            items:
              $ref: '#/components/schemas/WebhookEvent'
        - name: resourceId
          required: false
          in: query
          description: Resource ID to filter by
          schema:
            type: string
            example: 44fcead0-7053-4831-a53a-df7fb90d440f
      responses:
        '200':
          description: A paginated response containing NotificationExternalDTO objects
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotificationPaginatedResponse'
        default:
          $ref: '#/components/responses/Error'
      tags:
        - Webhooks V2
      x-rate-limit-category: query
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<NotificationPaginatedResponse>> = fireblocks.webhooksV2.getNotifications(webhooksV2ApiGetNotificationsRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<NotificationPaginatedResponse>> response = fireblocks.webhooksV2().getNotifications(webhookId, order, sortBy, pageCursor, pageSize, startTime, endTime, statuses, events, resourceId);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.webhooks_v2.get_notifications(webhook_id, order, sort_by, page_cursor, page_size, start_time, end_time, statuses, events, resource_id);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<NotificationPaginatedResponse>> = fireblocks.webhooksV2.getNotifications(webhooksV2ApiGetNotificationsRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<NotificationPaginatedResponse>> response = fireblocks.webhooksV2().getNotifications(webhookId, order, sortBy, pageCursor, pageSize, startTime, endTime, statuses, events, resourceId);
        - lang: Python
          source: response = fireblocks.webhooks_v2.get_notifications(webhook_id, order, sort_by, page_cursor, page_size, start_time, end_time, statuses, events, resource_id);
  /webhooks/{webhookId}/notifications/{notificationId}:
    get:
      operationId: getNotification
      summary: Get notification by id
      description: |
        Get notification by id
      parameters:
        - name: includeData
          description: Include the data of the notification
          required: false
          in: query
          schema:
            type: boolean
        - name: webhookId
          description: The ID of the webhook to fetch
          required: true
          in: path
          schema:
            type: string
        - name: notificationId
          description: The ID of the notification to fetch
          required: true
          in: path
          schema:
            type: string
      responses:
        '200':
          description: OK
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotificationWithData'
        default:
          $ref: '#/components/responses/Error'
      tags:
        - Webhooks V2
      x-rate-limit-category: read
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<NotificationWithData>> = fireblocks.webhooksV2.getNotification(webhooksV2ApiGetNotificationRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<NotificationWithData>> response = fireblocks.webhooksV2().getNotification(webhookId, notificationId, includeData);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.webhooks_v2.get_notification(webhook_id, notification_id, include_data);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<NotificationWithData>> = fireblocks.webhooksV2.getNotification(webhooksV2ApiGetNotificationRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<NotificationWithData>> response = fireblocks.webhooksV2().getNotification(webhookId, notificationId, includeData);
        - lang: Python
          source: response = fireblocks.webhooks_v2.get_notification(webhook_id, notification_id, include_data);
  /webhooks/{webhookId}/notifications/{notificationId}/attempts:
    get:
      operationId: getNotificationAttempts
      summary: Get notification attempts
      description: |
        Get notification attempts by notification id
      parameters:
        - name: webhookId
          description: The ID of the webhook to fetch
          required: true
          in: path
          schema:
            type: string
        - name: notificationId
          description: The ID of the notification to fetch
          required: true
          in: path
          schema:
            type: string
        - name: pageCursor
          required: false
          in: query
          description: Cursor of the required page
          schema:
            type: string
        - name: pageSize
          required: false
          in: query
          description: Maximum number of items in the page
          schema:
            minimum: 1
            maximum: 100
            default: 10
            example: 10
            type: number
      responses:
        '200':
          description: OK
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotificationAttemptsPaginatedResponse'
        default:
          $ref: '#/components/responses/Error'
      tags:
        - Webhooks V2
      x-rate-limit-category: query
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<NotificationAttemptsPaginatedResponse>> = fireblocks.webhooksV2.getNotificationAttempts(webhooksV2ApiGetNotificationAttemptsRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<NotificationAttemptsPaginatedResponse>> response = fireblocks.webhooksV2().getNotificationAttempts(webhookId, notificationId, pageCursor, pageSize);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.webhooks_v2.get_notification_attempts(webhook_id, notification_id, page_cursor, page_size);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<NotificationAttemptsPaginatedResponse>> = fireblocks.webhooksV2.getNotificationAttempts(webhooksV2ApiGetNotificationAttemptsRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<NotificationAttemptsPaginatedResponse>> response = fireblocks.webhooksV2().getNotificationAttempts(webhookId, notificationId, pageCursor, pageSize);
        - lang: Python
          source: response = fireblocks.webhooks_v2.get_notification_attempts(webhook_id, notification_id, page_cursor, page_size);
  /webhooks/{webhookId}/notifications/{notificationId}/resend:
    post:
      operationId: resendNotificationById
      summary: Resend notification by id
      description: |
        Resend notification by ID

        Endpoint Permission: Owner, Admin, Non-Signing Admin, Editor, Signer.
      parameters:
        - name: webhookId
          description: The ID of the webhook
          required: true
          in: path
          schema:
            type: string
        - name: notificationId
          description: The ID of the notification
          required: true
          in: path
          schema:
            type: string
        - $ref: '#/components/parameters/X-Idempotency-Key'
      responses:
        '202':
          description: Resend notification request was accepted and is being processed
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
        default:
          $ref: '#/components/responses/Error'
      tags:
        - Webhooks V2
      x-rate-limit-category: async
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<void>> = fireblocks.webhooksV2.resendNotificationById(webhooksV2ApiResendNotificationByIdRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<Void>> response = fireblocks.webhooksV2().resendNotificationById(webhookId, notificationId, idempotencyKey);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.webhooks_v2.resend_notification_by_id(webhook_id, notification_id, idempotency_key);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<void>> = fireblocks.webhooksV2.resendNotificationById(webhooksV2ApiResendNotificationByIdRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<Void>> response = fireblocks.webhooksV2().resendNotificationById(webhookId, notificationId, idempotencyKey);
        - lang: Python
          source: response = fireblocks.webhooks_v2.resend_notification_by_id(webhook_id, notification_id, idempotency_key);
  /webhooks/{webhookId}/notifications/resend_by_query:
    post:
      operationId: resendNotificationsByQuery
      summary: Resend notifications by query
      description: |
        Resend notifications matching the given query filters (statuses, events, time range, resource ID)

        Endpoint Permission: Owner, Admin, Non-Signing Admin, Editor, Signer.
      parameters:
        - $ref: '#/components/parameters/X-Idempotency-Key'
        - name: webhookId
          description: The ID of the webhook
          required: true
          in: path
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ResendByQueryRequest'
      responses:
        '200':
          description: No matching notifications to resend
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResendByQueryResponse'
        '202':
          description: Resend notifications request was accepted and is being processed
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
            Location:
              $ref: '#/components/headers/Location'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResendByQueryResponse'
        default:
          $ref: '#/components/responses/Error'
      tags:
        - Webhooks V2
      x-rate-limit-category: high_compute
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<ResendByQueryResponse>> = fireblocks.webhooksV2.resendNotificationsByQuery(webhooksV2ApiResendNotificationsByQueryRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<ResendByQueryResponse>> response = fireblocks.webhooksV2().resendNotificationsByQuery(resendByQueryRequest, webhookId, idempotencyKey);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.webhooks_v2.resend_notifications_by_query(resend_by_query_request, webhook_id, idempotency_key);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<ResendByQueryResponse>> = fireblocks.webhooksV2.resendNotificationsByQuery(webhooksV2ApiResendNotificationsByQueryRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<ResendByQueryResponse>> response = fireblocks.webhooksV2().resendNotificationsByQuery(resendByQueryRequest, webhookId, idempotencyKey);
        - lang: Python
          source: response = fireblocks.webhooks_v2.resend_notifications_by_query(resend_by_query_request, webhook_id, idempotency_key);
  /webhooks/{webhookId}/notifications/resend_by_query/jobs/{jobId}:
    get:
      operationId: getResendByQueryJobStatus
      summary: Get resend by query job status
      description: |
        Get the status of a resend by query job
      parameters:
        - name: webhookId
          description: The ID of the webhook
          required: true
          in: path
          schema:
            type: string
        - name: jobId
          description: The ID of the resend job
          required: true
          in: path
          schema:
            type: string
      responses:
        '200':
          description: Job status
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResendFailedNotificationsJobStatusResponse'
        default:
          $ref: '#/components/responses/Error'
      tags:
        - Webhooks V2
      x-rate-limit-category: read
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<ResendFailedNotificationsJobStatusResponse>> = fireblocks.webhooksV2.getResendByQueryJobStatus(webhooksV2ApiGetResendByQueryJobStatusRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<ResendFailedNotificationsJobStatusResponse>> response = fireblocks.webhooksV2().getResendByQueryJobStatus(webhookId, jobId);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.webhooks_v2.get_resend_by_query_job_status(webhook_id, job_id);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<ResendFailedNotificationsJobStatusResponse>> = fireblocks.webhooksV2.getResendByQueryJobStatus(webhooksV2ApiGetResendByQueryJobStatusRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<ResendFailedNotificationsJobStatusResponse>> response = fireblocks.webhooksV2().getResendByQueryJobStatus(webhookId, jobId);
        - lang: Python
          source: response = fireblocks.webhooks_v2.get_resend_by_query_job_status(webhook_id, job_id);
  /webhooks/{webhookId}/notifications/resend_by_resource:
    post:
      operationId: resendNotificationsByResourceId
      summary: Resend notifications by resource Id
      description: |
        Resend notifications by resource Id

        Endpoint Permission: Owner, Admin, Non-Signing Admin, Editor, Signer.
      parameters:
        - $ref: '#/components/parameters/X-Idempotency-Key'
        - name: webhookId
          description: The ID of the webhook
          required: true
          in: path
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ResendNotificationsByResourceIdRequest'
      responses:
        '202':
          description: Resend notifications by resource request was accepted and is being processed
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
        default:
          $ref: '#/components/responses/Error'
      tags:
        - Webhooks V2
      x-rate-limit-category: async
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<void>> = fireblocks.webhooksV2.resendNotificationsByResourceId(webhooksV2ApiResendNotificationsByResourceIdRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<Void>> response = fireblocks.webhooksV2().resendNotificationsByResourceId(resendNotificationsByResourceIdRequest, webhookId, idempotencyKey);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.webhooks_v2.resend_notifications_by_resource_id(resend_notifications_by_resource_id_request, webhook_id, idempotency_key);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<void>> = fireblocks.webhooksV2.resendNotificationsByResourceId(webhooksV2ApiResendNotificationsByResourceIdRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<Void>> response = fireblocks.webhooksV2().resendNotificationsByResourceId(resendNotificationsByResourceIdRequest, webhookId, idempotencyKey);
        - lang: Python
          source: response = fireblocks.webhooks_v2.resend_notifications_by_resource_id(resend_notifications_by_resource_id_request, webhook_id, idempotency_key);
  /webhooks/{webhookId}/notifications/resend_failed:
    post:
      operationId: resendFailedNotifications
      summary: Resend failed notifications
      description: |
        Resend all failed notifications for a webhook in the last 24 hours

        Endpoint Permission: Owner, Admin, Non-Signing Admin, Editor, Signer.
      parameters:
        - $ref: '#/components/parameters/X-Idempotency-Key'
        - name: webhookId
          description: The ID of the webhook
          required: true
          in: path
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ResendFailedNotificationsRequest'
      responses:
        '200':
          description: No failed notifications to resend
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResendFailedNotificationsResponse'
        '202':
          description: Resend failed notifications request was accepted and is being processed
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
            Location:
              $ref: '#/components/headers/Location'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResendFailedNotificationsResponse'
        default:
          $ref: '#/components/responses/Error'
      tags:
        - Webhooks V2
      x-rate-limit-category: high_compute
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<ResendFailedNotificationsResponse>> = fireblocks.webhooksV2.resendFailedNotifications(webhooksV2ApiResendFailedNotificationsRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<ResendFailedNotificationsResponse>> response = fireblocks.webhooksV2().resendFailedNotifications(resendFailedNotificationsRequest, webhookId, idempotencyKey);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.webhooks_v2.resend_failed_notifications(resend_failed_notifications_request, webhook_id, idempotency_key);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<ResendFailedNotificationsResponse>> = fireblocks.webhooksV2.resendFailedNotifications(webhooksV2ApiResendFailedNotificationsRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<ResendFailedNotificationsResponse>> response = fireblocks.webhooksV2().resendFailedNotifications(resendFailedNotificationsRequest, webhookId, idempotencyKey);
        - lang: Python
          source: response = fireblocks.webhooks_v2.resend_failed_notifications(resend_failed_notifications_request, webhook_id, idempotency_key);
  /webhooks/{webhookId}/notifications/resend_failed/jobs/{jobId}:
    get:
      operationId: getResendJobStatus
      summary: Get resend job status
      description: |
        Get the status of a resend job
      parameters:
        - name: webhookId
          description: The ID of the webhook
          required: true
          in: path
          schema:
            type: string
        - name: jobId
          description: The ID of the resend job
          required: true
          in: path
          schema:
            type: string
      responses:
        '200':
          description: Job status
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResendFailedNotificationsJobStatusResponse'
        default:
          $ref: '#/components/responses/Error'
      tags:
        - Webhooks V2
      x-rate-limit-category: read
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<ResendFailedNotificationsJobStatusResponse>> = fireblocks.webhooksV2.getResendJobStatus(webhooksV2ApiGetResendJobStatusRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<ResendFailedNotificationsJobStatusResponse>> response = fireblocks.webhooksV2().getResendJobStatus(webhookId, jobId);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.webhooks_v2.get_resend_job_status(webhook_id, job_id);
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<ResendFailedNotificationsJobStatusResponse>> = fireblocks.webhooksV2.getResendJobStatus(webhooksV2ApiGetResendJobStatusRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<ResendFailedNotificationsJobStatusResponse>> response = fireblocks.webhooksV2().getResendJobStatus(webhookId, jobId);
        - lang: Python
          source: response = fireblocks.webhooks_v2.get_resend_job_status(webhook_id, job_id);
  /webhooks/mtls/csr:
    get:
      operationId: getMtlsCsr
      summary: Get mTLS CSR
      description: |
        Returns the Fireblocks Certificate Signing Request (CSR) PEM that customers use to generate their signed client certificate.
      x-rate-limit-category: read
      responses:
        '200':
          description: The mTLS CSR PEM
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WebhookMtlsCsrResponse'
        default:
          $ref: '#/components/responses/Error'
      tags:
        - Webhooks V2
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<WebhookMtlsCsrResponse>> = fireblocks.webhooksV2.getMtlsCsr();'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<WebhookMtlsCsrResponse>> response = fireblocks.webhooksV2().getMtlsCsr();
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.webhooks_v2.get_mtls_csr();
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<WebhookMtlsCsrResponse>> = fireblocks.webhooksV2.getMtlsCsr();'
        - lang: Java
          source: CompletableFuture<ApiResponse<WebhookMtlsCsrResponse>> response = fireblocks.webhooksV2().getMtlsCsr();
        - lang: Python
          source: response = fireblocks.webhooks_v2.get_mtls_csr();
  /management/api_users/{userId}/whitelist_ip_addresses:
    get:
      operationId: getWhitelistIpAddresses
      summary: Get whitelisted ip addresses for an API Key
      description: |-
        Get a list of the whitelisted IP addresses for a specific API Key
        - Please note that this endpoint is available only for API keys with Admin/Non Signing Admin permissions.
        Endpoint Permission: Admin, Non-Signing Admin.
      tags:
        - whitelist ip addresses
      x-rate-limit-category: read
      x-readme:
        code-samples:
          - language: javascript
            code: const whitelistedAddresses = await fireblocks.getWhitelistedAddresses(apiUserId);
            name: Fireblocks SDK Javascript example
          - language: python
            code: whitelisted_addresses = fireblocks.get_whitelisted_ip_addresses(api_user_id)
            name: Fireblocks SDK Python example (Legacy)
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<GetWhitelistIpAddressesResponse>> = fireblocks.whitelistIpAddresses.getWhitelistIpAddresses(whitelistIpAddressesApiGetWhitelistIpAddressesRequest);'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<GetWhitelistIpAddressesResponse>> response = fireblocks.whitelistIpAddresses().getWhitelistIpAddresses(userId);
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.whitelist_ip_addresses.get_whitelist_ip_addresses(user_id);
            name: Fireblocks SDK Python example
      parameters:
        - in: path
          name: userId
          required: true
          description: The ID of the api user
          schema:
            type: string
      responses:
        '200':
          description: successfully got whitelisted ip addresses
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetWhitelistIpAddressesResponse'
        '401':
          description: Unauthorized. Missing / invalid JWT token in Authorization header.
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '403':
          description: Lacking permissions.
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        5XX:
          description: Internal error.
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        default:
          $ref: '#/components/responses/Error'
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<GetWhitelistIpAddressesResponse>> = fireblocks.whitelistIpAddresses.getWhitelistIpAddresses(whitelistIpAddressesApiGetWhitelistIpAddressesRequest);'
        - lang: Java
          source: CompletableFuture<ApiResponse<GetWhitelistIpAddressesResponse>> response = fireblocks.whitelistIpAddresses().getWhitelistIpAddresses(userId);
        - lang: Python
          source: response = fireblocks.whitelist_ip_addresses.get_whitelist_ip_addresses(user_id);
  /workspace:
    get:
      operationId: getWorkspace
      summary: Get workspace
      description: |
        Returns the workspace ID and name for the authenticated user.
      x-rate-limit-category: read
      responses:
        '200':
          description: Workspace details
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Workspace'
        default:
          $ref: '#/components/responses/Error'
      tags:
        - Workspace
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<Workspace>> = fireblocks.workspace.getWorkspace();'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<Workspace>> response = fireblocks.workspace().getWorkspace();
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.workspace.get_workspace();
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<Workspace>> = fireblocks.workspace.getWorkspace();'
        - lang: Java
          source: CompletableFuture<ApiResponse<Workspace>> response = fireblocks.workspace().getWorkspace();
        - lang: Python
          source: response = fireblocks.workspace.get_workspace();
  /workspace/freeze:
    post:
      x-internal: true
      operationId: freezeWorkspace
      summary: Freeze
      description: |-
        Freezes a Workspace so that ALL operations by ANY user are blocked.
        You should only perform this action when the workspace faces imminent risk, such as when you have a security breach.
        To unfreeze a workspace, the workspace Owner must submit a request to Fireblocks Support.
        **NOTE:** 
        - This operation can only be performed by the workspace Admins - Your workspace continues to receive incoming transfers during this time.
        Endpoint Permission: Admin, Non-Signing Admin.
      tags:
        - Workspace
      x-rate-limit-category: write
      parameters:
        - $ref: '#/components/parameters/X-Idempotency-Key'
      responses:
        '204':
          description: Indicates that the workspace is now frozen
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
        default:
          $ref: '#/components/responses/Error'
  /management/workspace_status:
    get:
      operationId: getWorkspaceStatus
      summary: Returns current workspace status
      description: |-
        Returns current workspace status (Beta).
        **Note**:
        - This endpoint is now in Beta, disabled for general availability at this time.
        - Please note that this endpoint is available only for API keys with Admin/Non Signing Admin permissions.

        Endpoint Permission: Admin, Non-Signing Admin.
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetWorkspaceStatusResponse'
          description: Current workspace status
        '404':
          description: Workspace not found
      tags:
        - Workspace Status (Beta)
      x-rate-limit-category: query
      x-readme:
        code-samples:
          - language: typescript
            code: 'const response: Promise<FireblocksResponse<GetWorkspaceStatusResponse>> = fireblocks.workspaceStatusBeta.getWorkspaceStatus();'
            name: Fireblocks SDK TypeScript example
          - language: java
            code: CompletableFuture<ApiResponse<GetWorkspaceStatusResponse>> response = fireblocks.workspaceStatusBeta().getWorkspaceStatus();
            name: Fireblocks SDK Java example
          - language: python
            code: response = fireblocks.workspace_status_beta.get_workspace_status();
            name: Fireblocks SDK Python example
      x-codeSamples:
        - lang: TypeScript
          source: 'const response: Promise<FireblocksResponse<GetWorkspaceStatusResponse>> = fireblocks.workspaceStatusBeta.getWorkspaceStatus();'
        - lang: Java
          source: CompletableFuture<ApiResponse<GetWorkspaceStatusResponse>> response = fireblocks.workspaceStatusBeta().getWorkspaceStatus();
        - lang: Python
          source: response = fireblocks.workspace_status_beta.get_workspace_status();
components:
  securitySchemes:
    bearerTokenAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT
    ApiKeyAuth:
      type: apiKey
      in: header
      name: X-API-Key
  headers:
    X-Request-ID:
      schema:
        type: string
      description: Unique ID correlated to the API request. Please provide it in any support ticket you create or on Github issues related to Fireblocks SDKs
    next-page:
      schema:
        type: string
      description: URL representing a new request to this API endpoint to receive the next page of results.
    prev-page:
      schema:
        type: string
      description: URL representing a new request to this API endpoint to receive the previous page of results.
    Location:
      schema:
        type: string
      description: The location URL of the request status
  schemas:
    ErrorSchema:
      type: object
      properties:
        message:
          type: string
        code:
          type: number
    RewardsInfo:
      type: object
      properties:
        pendingRewards:
          description: Amount that is pending for rewards
          type: string
    VaultAsset:
      type: object
      properties:
        id:
          type: string
        total:
          description: The total wallet balance. In EOS this value includes the network balance, self staking and pending refund. For all other coins it is the balance as it appears on the blockchain.
          type: string
        balance:
          deprecated: true
          description: Deprecated - replaced by "total"
          type: string
        available:
          description: Funds available for transfer. Equals the blockchain balance minus any locked amounts
          type: string
        pending:
          description: The cumulative balance of all transactions pending to be cleared
          type: string
        frozen:
          description: The cumulative frozen balance
          type: string
        lockedAmount:
          description: Funds in outgoing transactions that are not yet published to the network
          type: string
        staked:
          description: Staked balance
          type: string
        totalStakedCPU:
          type: string
          description: Deprecated
        totalStakedNetwork:
          type: string
          description: Deprecated
        selfStakedCPU:
          type: string
          description: Deprecated
        selfStakedNetwork:
          type: string
          description: Deprecated
        pendingRefundCPU:
          type: string
          description: Deprecated
        pendingRefundNetwork:
          type: string
          description: Deprecated
        blockHeight:
          type: string
        blockHash:
          type: string
        rewardsInfo:
          $ref: '#/components/schemas/RewardsInfo'
    TagType:
      type: string
      description: The tag type, indicating the domain that owns the tag
      enum:
        - WALLET_POOL
    ApprovalRequest:
      type: object
      description: Approval request details
      properties:
        id:
          type: string
          format: numeric
          description: The approval request identifier
          example: '12345'
        type:
          type: string
          description: The approval request type
          enum:
            - TAG_UPDATE
            - TAG_DELETE
            - TAG_ATTACH_DETACH
        state:
          type: string
          description: The approval request state
          enum:
            - PENDING
            - APPROVED
            - REJECTED
            - FAILED
            - CANCELLED
            - EXPIRED
      required:
        - id
        - type
        - state
    Tag:
      type: object
      properties:
        id:
          description: The unique identifier of the tag
          type: string
          format: uuid
          example: df4c0987-30da-4976-8dcf-bc2dd41ae331
        label:
          type: string
          description: The tag label
          example: VIP
        description:
          type: string
          description: Description for the tag
          example: Tag for VIP customers
        color:
          type: string
          description: The tag color in hex format
          example: '#FF5733'
        isProtected:
          type: boolean
          description: Indication if the tag is a protected tag
          default: false
        updatedAt:
          type: number
          description: The date and time the tag was last updated
          example: 1717084800000
        type:
          $ref: '#/components/schemas/TagType'
        pendingApprovalRequest:
          $ref: '#/components/schemas/ApprovalRequest'
      required:
        - id
        - label
        - isProtected
        - updatedAt
    VaultAccount:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
        assets:
          type: array
          items:
            $ref: '#/components/schemas/VaultAsset'
        hiddenOnUI:
          type: boolean
        customerRefId:
          type: string
        autoFuel:
          type: boolean
        tags:
          type: array
          description: List of tags attached to the vault account
          items:
            $ref: '#/components/schemas/Tag'
    GetVaultAccountsResponse:
      type: array
      items:
        $ref: '#/components/schemas/VaultAccount'
    CreateVaultAccountRequest:
      type: object
      properties:
        name:
          description: Account Name
          type: string
        hiddenOnUI:
          description: Optional - if true, the created account and all related transactions will not be shown on Fireblocks console
          type: boolean
        customerRefId:
          description: Optional - Sets a customer reference ID
          type: string
        autoFuel:
          description: Optional - Sets the autoFuel property of the vault account
          type: boolean
        vaultType:
          default: MPC
          description: |
            Type of vault account. The default type will be set to MPC.
            If the workspace does not support the selected type, it will return an error.
          type: string
          enum:
            - MPC
            - KEY_LINK
        autoAssign:
          default: false
          description: |
            Applicable only when the vault account type is KEY_LINK. For MPC, this parameter will be ignored.
            If set to true and there are available keys, random keys will be assigned to the newly created vault account.
            If set to true and there are no available keys to be assigned, it will return an error.
            If set to false, the vault account will be created without any keys.
          type: boolean
    VaultAccountsPagedResponse:
      type: object
      properties:
        accounts:
          type: array
          items:
            $ref: '#/components/schemas/VaultAccount'
        paging:
          type: object
          properties:
            before:
              type: string
            after:
              type: string
        previousUrl:
          type: string
        nextUrl:
          type: string
    UpdateVaultAccountRequest:
      type: object
      properties:
        name:
          description: Account Name
          type: string
    RenameVaultAccountResponse:
      type: object
      properties:
        name:
          type: string
          description: The new name of the vault account
        id:
          type: string
          description: The ID of the vault account
    AssetWallet:
      type: object
      properties:
        vaultId:
          description: ID of the vault account. You can [get the vault account by this ID](https://developers.fireblocks.com/reference/get_vault-accounts-vaultaccountid) to retrieve vault properties such as its name, auto fueling, hidden on UI or customer reference ID.
          type: string
        assetId:
          description: ID of the asset. You can get more information about this asset by using the [supported assets API](https://developers.fireblocks.com/reference/get_supported-assets)
          type: string
        available:
          description: Available balance, available to use in a transaction.
          type: string
        total:
          description: Total balance at the asset wallet, as seen at the blockchain explorers. This includes balance available, and any kind of unavailable balance such as locked, frozen, or others.
          type: string
        pending:
          description: Pending balance.
          type: string
        staked:
          description: Staked balance.
          type: string
        frozen:
          description: Funds frozen due to the anti-money laundering policy at this workspace.
          type: string
        lockedAmount:
          description: Locked balance.
          type: string
        blockHeight:
          description: The height (number) of the block of the balance. Can by empty.
          type: string
        blockHash:
          description: The hash of the block of the balance. Can by empty.
          type: string
        creationTimestamp:
          description: Unix timestamp of the time the asset wallet was created.
          type: string
    PaginatedAssetWalletResponse:
      type: object
      properties:
        assetWallets:
          type: array
          items:
            $ref: '#/components/schemas/AssetWallet'
        paging:
          type: object
          properties:
            before:
              description: A string representing a cursor. Users can use this with a new request to this API endpoint as the “before” request parameter to fetch the previous page of results.
              type: string
            after:
              description: A string representing a cursor. Users can use this with a new request to this API endpoint as the “before” request parameter to fetch the next page of results.
              type: string
    VaultActionStatus:
      type: object
      properties:
        success:
          type: boolean
    CreateVaultAssetResponse:
      type: object
      properties:
        id:
          type: string
        address:
          type: string
        legacyAddress:
          type: string
        enterpriseAddress:
          type: string
        tag:
          type: string
        eosAccountName:
          type: string
        status:
          type: string
        activationTxId:
          type: string
    SetCustomerRefIdRequest:
      type: object
      properties:
        customerRefId:
          description: Customer reference ID
          type: string
    SetAutoFuelRequest:
      type: object
      properties:
        autoFuel:
          description: Auto Fuel
          type: boolean
    UsdcGatewayWalletAsset:
      type: object
      required:
        - id
        - balance
        - chain
        - network
      properties:
        id:
          type: string
          description: Fireblocks asset ID
          example: USDC
        balance:
          type: string
          description: Asset balance
          example: '100'
        chain:
          type: string
          description: Blockchain name
          example: Ethereum
        network:
          type: string
          description: Network name
          example: Mainnet
    UsdcGatewayWalletInfoResponse:
      type: object
      required:
        - walletId
        - type
        - status
        - symbol
        - totalBalance
        - assets
        - virtualAssetId
      properties:
        walletId:
          type: string
          description: The USDC Gateway wallet identifier
          example: b68a9e08-b59c-4ff9-893f-52d4f78c21e6
        type:
          type: string
          description: The USDC Gateway provider identifier
          example: CIRCLEGATEWAY
        status:
          type: string
          enum:
            - ACTIVATED
            - DEACTIVATED
          description: Current activation status of the USDC Gateway wallet
          example: ACTIVATED
        symbol:
          type: string
          description: The token symbol supported by this wallet (e.g. USDC)
          example: USDC
        totalBalance:
          type: string
          description: Aggregate USDC balance across all assets
          example: '150'
        assets:
          type: array
          description: Per-chain USDC asset balances
          example:
            - id: USDC
              balance: '100'
              chain: Ethereum
              network: Mainnet
          items:
            $ref: '#/components/schemas/UsdcGatewayWalletAsset'
        virtualAssetId:
          type: string
          description: The id of the virtual asset
          example: 0e7e2ab4-544e-40aa-a7d2-93b6f6a1516e
    UsdcGatewayWalletStatusResponse:
      type: object
      required:
        - walletId
        - status
      properties:
        walletId:
          type: string
          description: The USDC Gateway wallet identifier
          example: b68a9e08-b59c-4ff9-893f-52d4f78c21e6
        status:
          type: string
          enum:
            - ACTIVATED
            - DEACTIVATED
          description: Current activation status of the USDC Gateway wallet
          example: ACTIVATED
    CreateAssetsRequest:
      type: object
      properties:
        eosAccountName:
          description: Optional - when creating an EOS wallet, the account name. If not provided, a random name will be generated
          type: string
    VaultWalletAddress:
      type: object
      properties:
        assetId:
          type: string
          x-fb-entity: asset
        address:
          type: string
        description:
          type: string
        tag:
          type: string
        type:
          type: string
        customerRefId:
          type: string
        addressFormat:
          type: string
          enum:
            - SEGWIT
            - LEGACY
            - BASE
            - PAYMENT
        legacyAddress:
          type: string
        enterpriseAddress:
          type: string
        bip44AddressIndex:
          type: integer
        userDefined:
          type: boolean
    GetVaultAccountAssetAddressesResponse:
      type: array
      items:
        $ref: '#/components/schemas/VaultWalletAddress'
    CreateAddressRequest:
      type: object
      properties:
        description:
          description: (Optional) Attach a description to the new address
          type: string
        customerRefId:
          description: Optional - Sets a customer reference ID
          type: string
    CreateAddressResponse:
      type: object
      properties:
        address:
          type: string
        legacyAddress:
          type: string
        enterpriseAddress:
          type: string
        tag:
          type: string
        bip44AddressIndex:
          type: integer
    PaginatedAddressResponse:
      type: object
      properties:
        addresses:
          type: array
          items:
            $ref: '#/components/schemas/VaultWalletAddress'
        paging:
          type: object
          properties:
            before:
              description: A string representing a cursor. Users can use this with a new request to this API endpoint as the “before” request parameter to fetch the previous page of results.
              type: string
            after:
              description: A string representing a cursor. Users can use this with a new request to this API endpoint as the “after” request parameter to fetch the next page of results.
              type: string
    GetMaxSpendableAmountResponse:
      type: object
      properties:
        maxSpendableAmount:
          type: string
          description: The maximum amount that can be spent from the vault account
    GetMaxBipIndexUsedResponse:
      type: object
      properties:
        maxBip44AddressIndexUsed:
          type: integer
          description: The maximum BIP44 address index used for the vault account and asset
          example: 42
        maxBip44ChangeAddressIndexUsed:
          type: integer
          description: The maximum BIP44 change address index used for the vault account and asset
          example: 50
    UpdateVaultAccountAssetAddressRequest:
      type: object
      properties:
        description:
          description: The address description
          type: string
    SetCustomerRefIdForAddressRequest:
      type: object
      properties:
        customerRefId:
          description: Customer reference ID
          type: string
    UnspentInput:
      type: object
      properties:
        txHash:
          type: string
        index:
          type: number
    UnspentInputsResponse:
      type: object
      properties:
        input:
          $ref: '#/components/schemas/UnspentInput'
        address:
          type: string
        amount:
          type: string
        confirmations:
          type: number
        status:
          type: string
    GetUnspentInputsResponse:
      type: array
      items:
        $ref: '#/components/schemas/UnspentInputsResponse'
    CreateMultipleAccountsRequest:
      type: object
      properties:
        count:
          description: Count
          type: integer
          example: 1000
        baseAssetIds:
          description: Array of base asset IDs
          type: array
          items:
            type: string
          example:
            - BTC
            - ETH
            - SOL
        names:
          description: Names to assign to vault accounts. if vaultAccountNamesStartingIndex or prefix is used it'll fail
          type: array
          items:
            type: string
          example:
            - first va
            - client 65502e71-ecdf-48da-a074-c1753befc7fb
        vaultAccountNamesStartingIndex:
          description: Copy vault accounts names starting from this index. If names array is used it'll fail
          type: integer
          example: 0
        prefix:
          description: When copying from existing vault accounts (vaultAccountNamesStartingIndex) then adding a prefix to the names. If names array is used it'll fail
          type: string
          example: 'Copied from: '
        tagIds:
          description: Optional list of tag IDs to attach to all created vault accounts
          type: array
          items:
            type: string
            format: uuid
          maxItems: 20
          example:
            - a1b2c3d4-e5f6-7890-abcd-ef1234567890
            - b2c3d4e5-f6a7-8901-bcde-f12345678901
      required:
        - baseAssetIds
        - count
    JobCreated:
      type: object
      properties:
        jobId:
          type: string
        approvalRequestId:
          description: Approval request ID. Returned when a tag triggers an approval flow.
          type: string
    CreateMultipleVaultAccountsJobStatus:
      type: object
      properties:
        status:
          type: string
          description: Status of the job. Possible values - Success, In Progress, Error, Pending Approval, Canceled
          example: Success
        vaultAccounts:
          type: object
          description: Mapping between VaultAccountId to a mapping of asset to address, and the vault account name
          additionalProperties:
            type: object
            description: Mapping between asset (key) to address (value). Also includes a "name" key holding the vault account name.
            additionalProperties:
              type: string
          example:
            '0':
              BTC_TEST: bcrt1qs0zzqytuw49w2jqkmfhzgdh2lylzde2uw4zncz
              ETH_TEST: '0x460395Edb2338023c6f137259C6e20B6C37dDE95'
              name: My Vault Account
        tagIds:
          description: List of tag IDs successfully attached to each of the created vault accounts
          type: array
          items:
            type: string
            format: uuid
          example:
            - a1b2c3d4-e5f6-7890-abcd-ef1234567890
            - b2c3d4e5-f6a7-8901-bcde-f12345678901
        errorMessage:
          type: string
          example: Asset not supported
        approvalRequestId:
          description: Approval request ID if the job has protected tags to attach to the vault accounts
          type: string
          example: '12345'
      required:
        - status
    CreateMultipleDepositAddressesRequest:
      type: object
      properties:
        vaultAccountId:
          description: Existing Vault account ID to add deposit addresses to
          type: integer
          example: 5
        assetId:
          description: asset ID
          type: string
          example: ADA
        count:
          description: Count of deposit addresses to issue
          type: integer
          example: 10
        descriptions:
          description: Desctiptions of the newly created addresses
          type: array
          items:
            type: string
          example:
            - First address
            - Second address
            - df4c0987-30da-4976-8dcf-bc2dd41ae331
        vaultAccountToCopyDescFrom:
          description: Existing Vault Account ID to copy deposit addresses descriptions from in case no descriptions were provided
          type: integer
          example: 0
        vaultAccountToCopyDescFromIndex:
          description: Existing length within the vault account to copy deposit addresses descriptions from
          type: integer
          example: 1000
      required:
        - vaultAccountId
        - assetId
        - count
    VaultAccountsTagAttachmentOperationsRequest:
      type: object
      properties:
        vaultAccountIds:
          description: The IDs of the vault accounts to attach tags to
          example:
            - '0'
            - '1'
          type: array
          minItems: 1
          maxItems: 100
          items:
            type: string
            format: numeric
        tagIdsToAttach:
          description: The IDs of the tags to attach
          example:
            - df4c0987-30da-4976-8dcf-bc2dd41ae331
            - a1b2c3d4-e5f6-7890-abcd-ef1234567890
          type: array
          minItems: 1
          maxItems: 20
          items:
            type: string
            format: uuid
        tagIdsToDetach:
          description: The IDs of the tags to detach
          example:
            - df4c0987-30da-4976-8dcf-bc2dd41ae331
            - a1b2c3d4-e5f6-7890-abcd-ef1234567890
          type: array
          minItems: 1
          maxItems: 20
          items:
            type: string
            format: uuid
      required:
        - vaultAccountIds
    TagAttachmentOperationAction:
      type: string
      enum:
        - ATTACH
        - DETACH
    VaultAccountTagAttachmentOperation:
      type: object
      properties:
        vaultAccountId:
          description: The ID of the vault account
          example: '1'
          type: string
          format: numeric
        tagId:
          description: Tag ID
          example: f0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11
          type: string
          format: uuid
        action:
          $ref: '#/components/schemas/TagAttachmentOperationAction'
      required:
        - vaultAccountId
        - tagId
        - action
    VaultAccountTagAttachmentPendingOperation:
      type: object
      properties:
        vaultAccountId:
          description: The ID of the vault account
          example: '1'
          type: string
          format: numeric
        tagId:
          description: Tag ID
          example: f0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11
          type: string
          format: uuid
        action:
          $ref: '#/components/schemas/TagAttachmentOperationAction'
        approvalRequestId:
          description: Pending approval request ID
          example: '12345'
          type: string
      required:
        - vaultAccountId
        - tagId
        - action
        - approvalRequestId
    VaultAccountTagAttachmentRejectedOperation:
      type: object
      properties:
        vaultAccountId:
          description: The ID of the vault account
          example: '1'
          type: string
          format: numeric
        tagId:
          description: Tag ID
          example: f0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11
          type: string
          format: uuid
        action:
          $ref: '#/components/schemas/TagAttachmentOperationAction'
        reason:
          description: Reason for rejection
          type: string
          enum:
            - CAPACITY_EXCEEDED
            - ATTACHMENT_ALREADY_EXISTS
            - ATTACHMENT_DOES_NOT_EXIST
            - PENDING_REQUEST_EXISTS
      required:
        - vaultAccountId
        - tagId
        - action
        - reason
    VaultAccountsTagAttachmentOperationsResponse:
      type: object
      properties:
        appliedOperations:
          description: The operations that were applied
          type: array
          items:
            $ref: '#/components/schemas/VaultAccountTagAttachmentOperation'
        pendingOperations:
          description: The operations that are pending
          type: array
          items:
            $ref: '#/components/schemas/VaultAccountTagAttachmentPendingOperation'
        rejectedOperations:
          description: The operations that were rejected
          type: array
          items:
            $ref: '#/components/schemas/VaultAccountTagAttachmentRejectedOperation'
    NewAddress:
      type: object
      properties:
        address:
          type: string
          description: The address string.
          example: addr_test1qp07k5kdwdfx4rpfqud8ry65acxgtgfgrxw0t35cwvl4uasjneqjdc868eqlex5p2f0nyekyyk4ze5xuanvj50ysrj3qqxqhsn
        index:
          type: integer
          description: The index of the address in the list.
          example: 0
        description:
          type: string
          description: A description of the address.
          example: Address one
      required:
        - address
        - index
        - description
    CreateMultipleDepositAddressesJobStatus:
      type: object
      properties:
        status:
          type: string
          description: Status of the job. Possible values - Success, In Progress, Failed
          example: Success
        addresses:
          type: array
          items:
            $ref: '#/components/schemas/NewAddress'
          example:
            - address: addr_test1qp07k5kdwdfx4rpfqud8ry65acxgtgfgrxw0t35cwvl4uasjneqjdc868eqlex5p2f0nyekyyk4ze5xuanvj50ysrj3qqxqhsn
              index: 0
              description: Address one
        errorMessage:
          type: string
          example: Asset not supported
      required:
        - status
    PublicKeyInformation:
      type: object
      properties:
        algorithm:
          type: string
          description: Elliptic Curve
          enum:
            - MPC_ECDSA_SECP256K1
            - MPC_EDDSA_ED25519
        derivationPath:
          example:
            - 44
            - 0
            - 0
            - 0
            - 0
          description: BIP44 derivation path
          type: array
          items:
            type: integer
        publicKey:
          description: Compressed/Uncompressed public key value in hex representation
          example: 1044c36403c1802818b472398f546a43a0d91569d5583a6e807c3825b155c7bd
          type: string
    GetVaultAssetsResponse:
      type: array
      items:
        $ref: '#/components/schemas/VaultAsset'
    AddressReverseLookupResponse:
      type: object
      description: Reverse-lookup result mapping a blockchain address to its owning vault account.
      properties:
        address:
          type: string
          description: The queried blockchain address.
        type:
          type: string
          description: Source type of the resolved address.
          enum:
            - VAULT_ACCOUNT
          example: VAULT_ACCOUNT
        vaultAccountId:
          type: string
          description: Vault account ID that owns the address.
          example: '0'
        blockchains:
          type: array
          description: Blockchain assets associated with this address in the vault account.
          items:
            type: string
          example:
            - ETH
            - MATIC
      required:
        - address
        - type
        - vaultAccountId
        - blockchains
    EmbeddedWalletAssetResponse:
      type: object
      properties:
        id:
          type: string
        symbol:
          type: string
          description: The asset symbol
          example: USDT
        name:
          type: string
          description: The asset name
          example: Tether USD
        decimals:
          type: number
          description: Number of decimals
          example: 6
        networkProtocol:
          type: string
          description: Netowrk protocol of the blockchain (BTC, ETH)
          example: ETH
        testnet:
          type: boolean
          description: Is in testnet
          example: true
        hasFee:
          type: boolean
          description: Has fee
          example: true
        baseAsset:
          type: string
          description: Base asset symbol BTC_TEST, ETH_TEST5)
          example: ETH_TEST5
        ethNetwork:
          type: string
        ethContractAddress:
          type: string
        issuerAddress:
          type: string
          example: rnDV4JiwgRNhudPY2sm65AzECpRXaasL4r
          description: The address of the issuer of this token. Will be part of the identifier of this token on chain.
        blockchainSymbol:
          type: string
          description: Name of blockchain
          example: BTH
        deprecated:
          type: boolean
          description: Is blockchain deprecated
          example: false
        coinType:
          type: number
          description: Unique identifier of an asset (0 for BTC, 60 for ETH, etc.)
          example: 0
        blockchain:
          type: string
          description: The blockchain native asset id which the token is deployed on
          example: ETH_TEST5
        blockchainDisplayName:
          type: string
          description: Name of blockchain
          example: BTH
        algorithm:
          type: string
          enum:
            - MPC_ECDSA_SECP256K1
            - MPC_EDDSA_ED25519
      required:
        - id
        - symbol
        - name
        - decimals
        - networkProtocol
        - testnet
        - hasFee
        - type
        - baseAsset
        - coinType
        - blockchain
    EmbeddedWalletPaginatedAssetsResponse:
      type: object
      properties:
        data:
          type: array
          description: The data of the current page
          items:
            $ref: '#/components/schemas/EmbeddedWalletAssetResponse'
        next:
          type: string
          description: The ID of the next page
          example: eJ0eXAiOiJKV1QiLCJhbGcOiJIUzI1NiJ9
          nullable: true
      required:
        - data
    EmbeddedWallet:
      type: object
      properties:
        walletId:
          type: string
          description: walletId
          example: 550e8400-e29b-41d4-a716-446655440000
        enabled:
          type: boolean
          description: enabled
          example: true
      required:
        - walletId
        - enabled
    EmbeddedWalletPaginatedWalletsResponse:
      type: object
      properties:
        data:
          type: array
          description: The data of the current page
          items:
            $ref: '#/components/schemas/EmbeddedWallet'
        next:
          type: string
          description: The ID of the next page
          example: eJ0eXAiOiJKV1QiLCJhbGcOiJIUzI1NiJ9
          nullable: true
      required:
        - data
    EnableWallet:
      type: object
      properties:
        enabled:
          type: boolean
          description: Whether the wallet should be enabled or disabled
          example: true
      required:
        - enabled
    EmbeddedWalletAddressDetails:
      type: object
      properties:
        accountName:
          type: string
          description: accountName
          example: accountName
        accountId:
          type: string
          description: accountId
          example: accountIdName
        asset:
          type: string
          description: asset
          example: assetName
        address:
          type: string
          description: address
          example: addressName
        addressType:
          type: string
          description: addressType
          example: addressType
          enum:
            - PERMANENT
            - CHANGE
            - DEFAULT
            - ADDRESS
        addressDescription:
          type: string
          description: addressDescription
          example: addressDescriptionName
        tag:
          type: string
          description: tag
          example: tagName
        addressIndex:
          type: number
          description: addressIndex
          example: addressIndexName
        change:
          type: number
          description: change
          example: changeName
        coinType:
          type: number
          description: Unique identifier of an asset (0 for BTC, 60 for ETH, etc.)
          example: BTC
        customerRefId:
          type: string
          description: customerRefId
          example: customerRefIdName
        addressFormat:
          type: string
          description: addressFormat
          example: addressFormatName
        legacyAddress:
          type: string
          description: legacyAddress
          example: legacyAddressName
        paymentAddress:
          type: string
          description: paymentAddress
          example: paymentAddressName
        userDefined:
          type: boolean
          description: userDefined
          example: true
        state:
          type: string
          description: state
          example: stateName
          enum:
            - PENDING_ACTIVATION
            - ACTIVATION_FAILED
            - READY
      required:
        - accountName
        - accountId
        - asset
        - address
        - addressType
        - addressDescription
        - tag
    EmbeddedWalletAssetRewardInfo:
      type: object
      properties:
        pendingRewards:
          type: string
          description: Amount that is pending for rewards
          example: '5'
      required:
        - pendingRewards
    EmbeddedWalletAssetBalance:
      type: object
      properties:
        id:
          type: string
          description: Unique identifier of the asset balance entry
          example: BTC-mainnet-acc-01
        total:
          type: string
          description: Total balance amount for the asset in the account (including pending, locked, and available)
          example: '0.87500000'
        available:
          type: string
          description: The balance available for use or withdrawal
          example: '0.84500000'
        pending:
          type: string
          description: Amount pending confirmation from blockchain (e.g., unconfirmed deposits)
          example: '0.01500000'
        frozen:
          type: string
          description: Balance that is frozen due to policy or regulatory lock
          example: '0.00500000'
        lockedAmount:
          type: string
          description: Funds locked for operations such as staking or delegation
          example: '0.01000000'
        blockHeight:
          type: string
          description: Latest known blockchain height when balance was fetched
          example: '8459341'
        blockHash:
          type: string
          description: Hash of the blockchain block associated with the current balance state
          example: 0000000000000000000769e73a0b8f32a6c5d55e0d64f9ec20c6c3d4e5a9a3f1
        rewardInfo:
          $ref: '#/components/schemas/EmbeddedWalletAssetRewardInfo'
      required:
        - id
        - total
        - available
        - pending
        - frozen
        - lockedAmount
    EmbeddedWalletPaginatedAddressesResponse:
      type: object
      properties:
        data:
          type: array
          description: The data of the current page
          items:
            $ref: '#/components/schemas/EmbeddedWalletAddressDetails'
        next:
          type: string
          description: The ID of the next page
          example: eJ0eXAiOiJKV1QiLCJhbGcOiJIUzI1NiJ9
          nullable: true
      required:
        - data
    EmbeddedWalletAccount:
      type: object
      properties:
        accountId:
          type: string
          description: The ID of the account
          example: '0'
        walletId:
          type: string
          description: Unique identifier of the Non-Custodial Wallet (UUID)
          example: 550e8400-e29b-41d4-a716-446655440000
      required:
        - walletId
        - accountId
    EmbeddedWalletLatestBackupKey:
      type: object
      properties:
        deviceId:
          type: string
          description: deviceId
          example: deviceIdValue
        publicKey:
          type: string
          description: publicKey
          example: publicKeyValue
        keyId:
          type: string
          description: keyId
          example: keyIdValue
        algorithm:
          type: string
          description: algorithm
          example: algorithm
          enum:
            - MPC_CMP_ECDSA_SECP256K1
            - MPC_CMP_EDDSA_ED25519
            - MPC_ECDSA_SECP256K1
      required:
        - deviceId
        - publicKey
        - keyId
        - algorithm
    EmbeddedWalletLatestBackupResponse:
      type: object
      properties:
        passphraseId:
          type: string
          description: passphraseId
          example: passphraseId
        createdAt:
          type: number
          description: createdAt
          example: 1713789296
        keys:
          type: array
          description: keys
          items:
            $ref: '#/components/schemas/EmbeddedWalletLatestBackupKey'
      required:
        - passphraseId
        - createdAt
        - keys
    EmbeddedWalletDevice:
      type: object
      properties:
        deviceId:
          type: string
          description: deviceId
          example: deviceIdValue
        enabled:
          type: boolean
          description: enabled
          example: true
        physicalDeviceId:
          type: string
          description: physicalDeviceId
          example: physicalDeviceIdValue
      required:
        - deviceId
        - enabled
        - physicalDeviceId
    EmbeddedWalletSetUpStatus:
      type: object
      description: embedded wallet setup status
      properties:
        status:
          type: string
          description: status
          example: COMPLETE
          enum:
            - COMPLETE
            - INCOMPLETE
      required:
        - status
    EmbeddedWalletAlgoritm:
      type: object
      description: algorithm name
      properties:
        algorithm:
          type: string
          description: algorithm
          example: MPC_EDDSA_ED25519
          enum:
            - MPC_ECDSA_SECP256K1
            - MPC_EDDSA_ED25519
      required:
        - algorithm
    EmbeddedWalletDeviceKeySetupResponse:
      type: object
      properties:
        status:
          $ref: '#/components/schemas/EmbeddedWalletSetUpStatus'
        deviceId:
          type: string
          description: deviceId
          example: deviceIdValue
        enabled:
          type: boolean
          description: enabled
          example: true
        setupStatus:
          type: array
          description: setupStatus
          example:
            - setupStatus: setupStatusValue
              confirmed: true
              backedUp: true
          items:
            type: object
            properties:
              algorithmName:
                $ref: '#/components/schemas/EmbeddedWalletAlgoritm'
              confirmed:
                type: boolean
                description: confirmed
                example: true
              backedUp:
                type: boolean
                description: backedUp
                example: true
            required:
              - algorithmName
              - confirmed
              - backedUp
      required:
        - status
        - deviceId
        - enabled
        - setupStatus
    EnableDevice:
      type: object
      properties:
        enabled:
          type: boolean
          description: Whether the device should be enabled or disabled
          example: true
      required:
        - enabled
    EmbeddedWalletPaginatedDevicesResponse:
      type: object
      properties:
        data:
          type: array
          description: The data of the current page
          example:
            - deviceId: 9ee1bff0-6dba-4f0c-9b75-03fe90e66fa3
              enabled: true
              physicalDeviceId: ee1bff0-6dba-4f0c-9b75-03fe90e66fa3
          items:
            $ref: '#/components/schemas/EmbeddedWalletDevice'
        next:
          type: string
          description: The ID of the next page
          example: eJ0eXAiOiJKV1QiLCJhbGcOiJIUzI1NiJ9
          nullable: true
      required:
        - data
    EmbeddedWalletRequiredAlgorithms:
      type: string
      enum:
        - MPC_ECDSA_SECP256K1
        - MPC_EDDSA_ED25519
    EmbeddedWalletSetupStatusResponse:
      type: object
      properties:
        status:
          $ref: '#/components/schemas/EmbeddedWalletSetUpStatus'
        requiredAlgorithms:
          type: array
          description: Required algorithms for the wallet
          example:
            - MPC_ECDSA_SECP256K1
            - MPC_EDDSA_ED25519
          items:
            $ref: '#/components/schemas/EmbeddedWalletRequiredAlgorithms'
        deviceSetupStatus:
          type: array
          description: Setup status for each device
          example:
            - status:
                status: COMPLETE
              deviceId: 9ee1bff0-6dba-4f0c-9b75-03fe90e66fa3
              enabled: true
              setupStatus:
                - algorithmName:
                    algorithm: MPC_ECDSA_SECP256K1
                  confirmed: true
                  backedUp: true
          items:
            $ref: '#/components/schemas/EmbeddedWalletDeviceKeySetupResponse'
      required:
        - status
        - requiredAlgorithms
        - deviceSetupStatus
    Workspace:
      type: object
      properties:
        id:
          type: string
          description: The ID of the workspace
          example: 123e4567-e89b-12d3-a456-426614174000
        name:
          type: string
          description: The name of the workspace
          example: My Workspace
      required:
        - id
        - name
    ExchangeType:
      description: Exchange account's type
      type: string
      enum:
        - INDEPENDENT_RESERVE
        - ENCLAVE_MARKETS
        - BIT
        - COINFLEX
        - KUCOIN
        - PXS
        - LIQUID
        - BITHUMB
        - BITFINEX
        - BITSO
        - BITSTAMP
        - KRAKEN
        - KRAKENINTL
        - BINANCE
        - BINANCEUS
        - CRYPTOCOM
        - BYBIT_V2
        - COINBASEPRO
        - COINBASEPRIME
        - COINBASEINTERNATIONAL
        - WHITEBIT
        - COINBASEEXCHANGE
        - KORBIT
        - HITBTC
        - GEMINI
        - CIRCLE
        - BITMEX
        - HUOBI
        - DERIBIT
        - OKCOIN_V5
        - OKEX
        - COINMETRO
        - GATEIO
        - SCRYPT
        - COINHAKO
        - LIGHTBIT
        - BULLISH
        - CANVAS_CONNECT
        - BITGET
        - LUNO
        - BIT_GENERA
        - TRANSFERO
    ExchangeAsset:
      type: object
      properties:
        id:
          type: string
          deprecated: true
          description: Deprecated. Use assetId or assetLegacyId instead.
        balance:
          type: string
        lockedAmount:
          type: string
        total:
          type: string
        available:
          type: string
        credit:
          type: string
        assetId:
          type: string
          example: 2306088f-97ed-4293-8d28-8ab627f272d7
          description: The Fireblocks asset id. Present only when Fireblocks can identify the exchange asset.
        providerSymbol:
          type: string
          example: BTC
          description: The symbol used by the exchange provider to identify the asset.
        assetSymbol:
          type: string
          example: BTC
          description: The Fireblocks asset symbol. Present only when Fireblocks can identify the exchange asset.
        assetLegacyId:
          type: string
          example: BTC
          description: The Fireblocks legacy asset id. Present only when Fireblocks can identify the exchange asset.
    ExchangeTradingAccount:
      type: object
      properties:
        type:
          type: string
        name:
          type: string
        assets:
          type: array
          items:
            $ref: '#/components/schemas/ExchangeAsset'
    ExchangeAccount:
      type: object
      properties:
        id:
          type: string
        type:
          $ref: '#/components/schemas/ExchangeType'
        name:
          type: string
          description: Display name of the exchange account
        status:
          type: string
        assets:
          type: array
          items:
            $ref: '#/components/schemas/ExchangeAsset'
        success:
          type: boolean
          description: Did succeed in retrieve balance data
        tradingAccounts:
          type: array
          items:
            $ref: '#/components/schemas/ExchangeTradingAccount'
        isSubaccount:
          description: True if the account is a subaccount in an exchange
          type: boolean
        mainAccountId:
          description: if the account is a sub-account, the ID of the main account
          type: string
    GetExchangeAccountsResponse:
      type: array
      items:
        $ref: '#/components/schemas/ExchangeAccount'
    AddExchangeAccountRequest:
      type: object
      properties:
        exchangeType:
          $ref: '#/components/schemas/ExchangeType'
        name:
          description: Display name of the exchange account
          type: string
        creds:
          description: Encrypted credentials
          type: string
        key:
          description: Api key of the exchange
          type: string
        mainAccountId:
          description: Optional - main account id of the exchange
          type: string
      required:
        - exchangeType
        - name
    AddExchangeAccountResponse:
      type: object
      properties:
        id:
          description: Exchange account's identifier
          type: string
        name:
          description: Display name of the exchange account
          type: string
        exchangeType:
          $ref: '#/components/schemas/ExchangeType'
    GetPagedExchangeAccountsResponse:
      type: object
      properties:
        exchanges:
          type: array
          items:
            $ref: '#/components/schemas/ExchangeAccount'
        paging:
          type: object
          properties:
            after:
              type: string
              description: Query value to the after page
            before:
              type: string
              description: Query value to the before page
        prevUrl:
          type: string
        nextUrl:
          type: string
      required:
        - exchanges
    TradingAccountType:
      type: string
      enum:
        - COIN_FUTURES
        - COIN_MARGINED_SWAP
        - EXCHANGE
        - FUNDING
        - FUNDABLE
        - FUTURES
        - FUTURES_CROSS
        - MARGIN
        - MARGIN_CROSS
        - OPTIONS
        - SPOT
        - USDT_MARGINED_SWAP_CROSS
        - USDT_FUTURES
        - UNIFIED
        - INTERNAL_BALANCE_1
        - INTERNAL_BALANCE_2
        - INTERNAL_BALANCE_3
        - INTERNAL_BALANCE_4
        - INTERNAL_BALANCE_5
        - INTERNAL_BALANCE_6
        - INTERNAL_BALANCE_7
        - INTERNAL_BALANCE_8
        - INTERNAL_BALANCE_9
        - INTERNAL_BALANCE_10
        - INTERNAL_BALANCE_11
    CreateInternalTransferRequest:
      type: object
      properties:
        asset:
          type: string
        amount:
          type: string
        sourceType:
          $ref: '#/components/schemas/TradingAccountType'
        destType:
          $ref: '#/components/schemas/TradingAccountType'
      required:
        - asset
        - amount
        - sourceType
        - destType
    InternalTransferResponse:
      type: object
      properties:
        success:
          type: boolean
          description: Indicates whether the transfer was successful
        id:
          type: string
          nullable: true
          description: The transaction ID of the internal transfer
      required:
        - success
    ConvertAssetsRequest:
      type: object
      properties:
        srcAsset:
          type: string
          description: Name of the source asset (must be in a currency that is supported for conversions in the selected exchange type that corresponds to your exchange ID)
        destAsset:
          type: string
          description: Name of the destination asset (must be in a currency that is supported for conversions in the selected exchange type that corresponds to your exchange ID)
        amount:
          type: number
          description: The amount to transfer (in the currency of the source asset)
      required:
        - srcAsset
        - destAsset
        - amount
    ConvertAssetsResponse:
      type: object
      properties:
        success:
          type: boolean
          description: Indicates whether the conversion was successful
      required:
        - success
    GetExchangeAccountsCredentialsPublicKeyResponse:
      type: object
      properties:
        publicKey:
          type: string
          description: Public key string
        tenantId:
          type: string
          description: Tenant identifier
      required:
        - publicKey
        - tenantId
    FiatAccountType:
      type: string
      enum:
        - BLINC
    FiatAsset:
      type: object
      properties:
        id:
          type: string
        balance:
          type: string
    FiatAccount:
      type: object
      properties:
        id:
          type: string
        type:
          $ref: '#/components/schemas/FiatAccountType'
        name:
          type: string
          description: Display name of the fiat account
        address:
          type: string
          nullable: true
        assets:
          type: array
          items:
            $ref: '#/components/schemas/FiatAsset'
    GetFiatAccountsResponse:
      type: array
      items:
        $ref: '#/components/schemas/FiatAccount'
    Funds:
      type: object
      properties:
        amount:
          type: number
    RedeemFundsToLinkedDDAResponse:
      type: object
      properties:
        success:
          type: boolean
          description: Indicates whether the funds were successfully redeemed to the linked DDA
      required:
        - success
    DepositFundsFromLinkedDDAResponse:
      type: object
      properties:
        success:
          type: boolean
          description: Indicates whether the funds were successfully deposited from the linked DDA
      required:
        - success
    ConnectedAccountApprovalStatus:
      type: string
      enum:
        - WAITING_FOR_APPROVAL
        - APPROVED
        - REJECTED
        - CANCELLED
        - FAILED
    ConnectedAccountTotalBalance:
      type: object
      properties:
        amount:
          type: string
          description: The denominated currency value of the account.
          example: '1201.15'
        denominatedAssetId:
          type: string
          description: The asset ID of the total balance.
          example: ea6c3cb7-355a-4ee3-82ff-267c69970214
        hasFullAssetCoverage:
          type: boolean
          description: Indicates whether the total amount represents the complete balance of all assets in the account. When true, all asset balances have been successfully converted to the denominated currency. When false, some assets could not be included in the total due to missing exchange rates or non-convertible assets.
          default: false
          example: true
      required:
        - amount
        - denominatedAssetId
        - hasFullAssetCoverage
    ConnectedAccountAssetType:
      type: string
      enum:
        - DIGITAL
        - FIAT
    ConnectedAccountCapability:
      type: string
      enum:
        - WITHDRAWALS
        - DEPOSITS
        - TRADING
    ConnectedAccountManifest:
      type: object
      properties:
        assetTypes:
          type: array
          description: Asset types supported by the connected account.
          items:
            $ref: '#/components/schemas/ConnectedAccountAssetType'
          example: []
        capabilities:
          type: array
          description: |
            Features supported for the connected account. Logic: - If account capabilities include ramp -> TRADING - If account capabilities include transfers -> DEPOSITS - If account capabilities include transfersBlockchain / transfersFiat / transfersPeerAccounts / transfersInternal -> WITHDRAWALS
          items:
            $ref: '#/components/schemas/ConnectedAccountCapability'
          example:
            - WITHDRAWALS
      required:
        - assetTypes
        - capabilities
    ConnectedAccountType:
      type: string
      enum:
        - EXCHANGE
        - FIAT
        - CONNECTED_ACCOUNT
      example: CONNECTED_ACCOUNT
    ConnectedAccount:
      type: object
      properties:
        id:
          type: string
          description: Unique identifier of the connected account.
          example: acc-123456
        name:
          type: string
          description: Human-readable name of the connected account.
          example: Main Venue Account
        providerId:
          type: string
          description: The ID of the venue the account belongs to.
          example: BRIDGE
        status:
          $ref: '#/components/schemas/ConnectedAccountApprovalStatus'
        totalBalance:
          $ref: '#/components/schemas/ConnectedAccountTotalBalance'
        manifest:
          $ref: '#/components/schemas/ConnectedAccountManifest'
        parentId:
          type: string
          description: The ID of the parent main account, if this is a sub account.
          example: acc-parent-001
        apiKey:
          type: string
          description: The API key identifier used to connect this account.
          example: rk_live_abc123
        providerAccountName:
          type: string
          description: The account name provided by the provider.
          example: Main Account
        accountType:
          $ref: '#/components/schemas/ConnectedAccountType'
      required:
        - id
        - name
        - providerId
        - status
        - totalBalance
        - manifest
        - accountType
    ConnectedAccountsResponse:
      type: object
      properties:
        data:
          type: array
          description: List of connected accounts matching the query.
          items:
            $ref: '#/components/schemas/ConnectedAccount'
          example:
            - id: acc-123456
              name: Main Venue Account
              providerId: BRIDGE
              status: APPROVED
              totalBalance:
                amount: '1201.15'
                denominatedAssetId: ea6c3cb7-355a-4ee3-82ff-267c69970214
                hasFullAssetCoverage: true
              manifest:
                assetTypes: []
                capabilities:
                  - DEPOSITS
                  - WITHDRAWALS
              accountType: CONNECTED_ACCOUNT
            - id: acc-654321
              name: Secondary Account
              providerId: BRIDGE
              status: WAITING_FOR_APPROVAL
              totalBalance:
                amount: '0.00'
                denominatedAssetId: ea6c3cb7-355a-4ee3-82ff-267c69970214
                hasFullAssetCoverage: false
              manifest:
                assetTypes: []
                capabilities:
                  - WITHDRAWALS
              accountType: CONNECTED_ACCOUNT
        total:
          type: integer
          description: Total number of accounts by query.
          example: 2
        next:
          type: string
          description: A cursor for the next page of results, if available.
          example: eyJwYWdlIjoyfQ==
      required:
        - data
    AddConnectedAccountRequest:
      type: object
      required:
        - providerId
        - creds
        - apiKey
      properties:
        providerId:
          type: string
          description: Integration key identifying the provider (e.g. BINANCE, KINGDOM_BANK, GEMINI_NLV2).
          example: BINANCE
        displayName:
          type: string
          description: Human-readable account name. Required for non-NLV2 providers.
          example: My Binance Account
        creds:
          type: string
          format: byte
          description: Base64-encoded RSA-encrypted credential blob. Encrypt using the public key from GET /exchange_accounts/credentials_public_key.
          example: base64encodedencryptedcredentials==
        apiKey:
          type: string
          description: Account-level API key.
          example: api_key_abc123
        mainAccountId:
          type: string
          description: Parent main account ID for sub-account creation. Not allowed for NLV2 providers.
          example: acc-parent-001
        accountId:
          type: string
          description: Optional provider-side account ID to associate with the created account.
          example: provider-acc-001
        onPremiseServerId:
          type: string
          description: On-premise server ID for self-hosted integrations.
          example: on-prem-server-001
    AddedConnectedAccountItem:
      type: object
      required:
        - accountId
        - name
        - status
      properties:
        accountId:
          type: string
          description: ID of the created account.
          example: acc-789012
        name:
          type: string
          description: Human-readable account name.
          example: My Exchange Account
        parentAccountId:
          type: string
          description: Parent account ID — present only for sub-accounts in an NLV2 hierarchy.
          example: acc-parent-001
        status:
          $ref: '#/components/schemas/ConnectedAccountApprovalStatus'
    AddConnectedAccountResponse:
      type: object
      required:
        - accounts
      properties:
        accounts:
          type: array
          description: Created accounts — main account first, sub-accounts after (NLV2 hierarchy).
          example:
            - accountId: acc-789012
              name: My Exchange Account
              status: WAITING_FOR_APPROVAL
          items:
            $ref: '#/components/schemas/AddedConnectedAccountItem'
    ConnectedAccountErrorResponse:
      type: object
      required:
        - message
        - code
      properties:
        message:
          type: string
          description: Error message describing what went wrong.
          example: Provider 'BINANCE' not found
        code:
          type: integer
          description: Numeric error code identifying the type of error.
          example: 3228
        errorMessage:
          type: string
          description: Error message describing what went wrong
          example: Insufficient permissions to rename connected account
        errorCode:
          type: string
          description: Error code identifying the type of error
          example: INSUFFICIENT_PERMISSIONS
    ConnectedSingleAccount:
      type: object
      properties:
        subAccountsIds:
          type: array
          description: IDs of sub-accounts associated with this connected account.
          items:
            type: string
          example:
            - acc-sub-001
            - acc-sub-002
    ConnectedSingleAccountResponse:
      allOf:
        - $ref: '#/components/schemas/ConnectedAccount'
        - $ref: '#/components/schemas/ConnectedSingleAccount'
    RenameConnectedAccountRequest:
      type: object
      required:
        - accountName
      properties:
        accountName:
          type: string
          description: The new name for the connected account
          example: My Trading Account
    RenameConnectedAccountResponse:
      type: string
      description: Status of the rename operation
      enum:
        - SUCCESS
        - UNAUTHORISED__USER
        - UNAUTHORISED__DEVICE
        - INVALID_UNMANAGED_WALLET
        - INVALID_EXCHANGE_ACCOUNT
        - NO_ACTIVE_ADMINS
        - TIMEOUT
        - INVALID_PARAMETERS
        - INTERNAL_ERROR
        - INVALID_CREDENTIALS
        - INVALID_OTP
        - INVALID_OTP_METHOD
        - INVALID_NETWORK_CONNECTION
        - NETWORK_CONNECTION_EXISTS
        - INVALID_CREDENTIALS__UNSUPPORTED_PROVIDER
        - UNSUPPORTED_ALGORITHM
        - INVALID_CREDENTIALS__IP_WHITELISTING
        - INVALID_CREDENTIALS__OTP_FAILED
        - UNSUPPORTED_ASSET
        - ASSET_ALREADY_EXISTS
        - ENV_UNSUPPORTED_ASSET
        - NO_CONFIG_CHANGE_NEEDED
        - SIMILAR_REQUEST_ALREADY_PENDING
        - CLOUD_COSIGNER_ALREADY_EXISTS
        - ILLEGAL_OPERATION
        - OVERRIDING_PENDING_REQUEST
        - OWNER_NOT_IN_GROUP
        - INVALID_THIRD_PARTY_ACCOUNT_HIERARCHY
        - EXTERNAL_KEY_VALIDATION_FAILED
        - NO_AVAILABLE_EXTERNAL_KEYS
        - INVALID_PROOF_OF_OWNERSHIP_SIGNATURE
        - USER_HAS_EXTERNAL_KEYS
        - SCHEMA_ALREADY_EXISTS
        - SCHEMA_ID_OUT_OF_RANGE
        - FORBIDDEN_SSO_IDP_DOMAIN
        - UNKNOWN_ERROR
      example: SUCCESS
    ConnectedAccountBalances:
      type: object
      properties:
        assetId:
          type: string
          description: Asset identifier (e.g., BTC, ETH, USDC).
          example: BTC
        availableAmount:
          type: string
          description: Amount available for use.
          example: '100.00'
        totalAmount:
          type: string
          description: Total amount including locked/held balances.
          example: '120.00'
        lockedAmount:
          type: string
          description: Amount currently locked/held.
          example: '20.00'
        creditAmount:
          type: string
          description: Credit line amount, if applicable (0 when not used).
          example: '0'
        balanceType:
          type: string
          description: Wallet type/category (e.g., SPOT, MARGIN, FUNDING).
          example: FUNDING
        balanceName:
          type: string
          description: Display name for the balance type (at the provider)
          example: Trader1 Wallet
      required:
        - assetId
        - availableAmount
        - totalAmount
        - balanceType
    ConnectedAccountBalancesResponse:
      type: object
      properties:
        data:
          type: array
          description: Flat balance row for a single asset within an account and wallet type. One row per (assetId, balanceType).
          items:
            $ref: '#/components/schemas/ConnectedAccountBalances'
          example:
            - assetId: BTC
              availableAmount: '100.00'
              totalAmount: '120.00'
              balanceType: FUNDING
              balanceName: Trader1 Wallet
        total:
          type: integer
          description: Total number of balance rows by query.
          example: 2
        next:
          type: string
          description: A cursor for the next page of results, if available.
          example: eyJwYWdlIjoyfQ==
      required:
        - data
    ConnectedAccountRateResponse:
      type: object
      properties:
        accountId:
          type: string
          description: The ID of the account that generated the quote.
          example: ea6c3cb7-355a-4ee3-82ff-267c69970210
        baseAssetId:
          type: string
          description: The source asset identifier
          example: BTC
        quoteAssetId:
          type: string
          description: The target asset identifier
          example: USD
        rate:
          type: string
          description: The exchange rate value
          example: '1.2345'
      required:
        - accountId
        - baseAssetId
        - quoteAssetId
        - rate
    ConnectedAccountTradingPairSupportedType:
      type: string
      enum:
        - QUOTE
        - MARKET
        - LIMIT
    ConnectedAccountTradingPair:
      type: object
      properties:
        id:
          type: string
          description: The ID of the trading pair.
          example: ea6c3cb7-355a-4ee3-82ff-267c69970210
        baseAssetId:
          type: string
          description: The Symbol of the base asset.
          example: BTC
        quoteAssetId:
          type: string
          description: The symbol of the quote asset.
          example: USD
        supportedTypes:
          type: array
          items:
            $ref: '#/components/schemas/ConnectedAccountTradingPairSupportedType'
      required:
        - id
        - baseAssetId
        - quoteAssetId
        - supportedTypes
    ConnectedAccountTradingPairsResponse:
      type: object
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/ConnectedAccountTradingPair'
          example:
            - id: ea6c3cb7-355a-4ee3-82ff-267c69970210
              baseAssetId: BTC
              quoteAssetId: USD
              supportedTypes:
                - MARKET
            - id: ea6c3cb7-355a-4ee3-82ff-267c69970211
              baseAssetId: ETH
              quoteAssetId: USDC
              supportedTypes:
                - QUOTE
                - MARKET
        total:
          type: integer
          description: Total number of asset pairs matching the query.
          example: 2
        next:
          type: string
          description: A cursor for the next page of results, if available.
          nullable: true
          example: null
      required:
        - data
    AllowlistEntryStatus:
      type: string
      enum:
        - ACTIVE
        - PENDING_PROVIDER_COOLDOWN
        - PENDING_PROVIDER_REVIEW
        - PENDING_APPROVAL
        - REJECTED
        - REMOVED
      description: |
        Current status of the allowlist entry.
          - `ACTIVE` — Entry is approved and usable.
          - `PENDING_PROVIDER_COOLDOWN` — Entry was recently added or modified and is in the provider-enforced cooldown window before becoming active.
          - `PENDING_PROVIDER_REVIEW` — Entry is awaiting provider-side review.
          - `PENDING_APPROVAL` — Entry is awaiting customer/admin approval on the Fireblocks side.
          - `REJECTED` — Entry was rejected at submission time and will not become active.
          - `REMOVED` — Entry was deactivated after previously being active. May still appear in results for audit purposes.
      example: ACTIVE
    AllowlistEntryProviderMetadata:
      type: object
      description: |
        Provider-specific pass-through data for this address. Treat as an opaque blob: the shape, set of keys, and value types vary by provider, by entry, and over time. Keys may be added, renamed, or removed without notice as providers evolve their integrations or as new providers are added. The example below illustrates one possible shape and is not a contract — do not program against specific keys.
      additionalProperties:
        description: Provider-defined value. May be any JSON type.
      example:
        coinbase_exchange_id: '1234567890'
      nullable: true
    AllowlistEntry:
      type: object
      properties:
        id:
          type: string
          format: uuid
          description: Unique identifier for the allowlist entry
          example: 550e8400-e29b-41d4-a716-446655440000
        address:
          type: string
          description: The blockchain address
          example: '0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb'
        assets:
          type: array
          items:
            type: string
          description: |
            Assets approved for this address.

            Each value is either a Fireblocks asset ID (when the provider's asset maps to a Fireblocks-supported asset) or the raw provider asset symbol (when no mapping exists). Treat values as opaque strings.

            Possible combinations:
              - One or more specific asset values (e.g., `["BTC", "ETH"]`)

            See [List assets](https://developers.fireblocks.com/reference/listassets) for the canonical list of Fireblocks asset IDs.
          example:
            - BTC
            - ETH
        networks:
          type: array
          items:
            type: string
          description: |
            Networks approved for this address.

            Each value is either a Fireblocks network ID (when the provider's network maps to a Fireblocks-supported blockchain) or the raw provider blockchain identifier (when no mapping exists). Treat values as opaque strings.

            Possible combinations:
              - One or more specific network values (e.g., `["ETHEREUM", "POLYGON"]`)

            See [List blockchains](https://developers.fireblocks.com/reference/listblockchains) for the canonical list of Fireblocks blockchain identifiers.
          example:
            - ETHEREUM
            - POLYGON
        label:
          type: string
          description: Human-readable label for the address
          example: Coinbase Hot Wallet
          nullable: true
        addressIdentifier:
          type: string
          description: Additional identifier (e.g., memo, destination tag)
          example: null
          nullable: true
        status:
          $ref: '#/components/schemas/AllowlistEntryStatus'
        addedAt:
          type: string
          format: date-time
          description: ISO 8601 timestamp when entry was added
          example: '2024-01-15T10:30:00Z'
        providerReferenceId:
          type: string
          description: Provider's internal reference ID
          example: CB-SAMPLE-001
          nullable: true
        providerMetadata:
          $ref: '#/components/schemas/AllowlistEntryProviderMetadata'
      required:
        - id
        - address
        - assets
        - networks
        - status
        - addedAt
    AllowlistMetadata:
      type: object
      description: Allowlist-specific metadata
      properties:
        lastSyncedAt:
          type: string
          format: date-time
          description: ISO 8601 timestamp of last sync with provider
          example: '2026-05-01T15:30:00Z'
        syncStatus:
          type: string
          enum:
            - SUCCESS
            - FAILED
            - IN_PROGRESS
            - NEVER_SYNCED
          description: Status of last sync operation
          example: SUCCESS
    AllowlistResponse:
      type: object
      properties:
        data:
          type: array
          description: Array of allowlist entries
          items:
            $ref: '#/components/schemas/AllowlistEntry'
          example:
            - id: 550e8400-e29b-41d4-a716-446655440000
              address: '0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb'
              assets:
                - BTC
                - ETH
              networks:
                - ETHEREUM
                - POLYGON
              label: Coinbase Hot Wallet
              addressIdentifier: null
              status: ACTIVE
              addedAt: '2024-01-15T10:30:00Z'
              providerReferenceId: CB-SAMPLE-001
        metadata:
          $ref: '#/components/schemas/AllowlistMetadata'
        total:
          type: integer
          description: Total number of allowlist entries
          example: 42
        next:
          type: string
          description: Cursor for the next page of results, if available
          example: eyJsYXN0SWQiOiJlbnRyeS0wMDQifQ==
      required:
        - data
        - total
    AllowlistEntryResponse:
      type: object
      description: Single allowlist entry envelope, paired with the account-level allowlist sync metadata.
      properties:
        data:
          $ref: '#/components/schemas/AllowlistEntry'
        metadata:
          $ref: '#/components/schemas/AllowlistMetadata'
      required:
        - data
    CounterpartyGroup:
      type: object
      description: A counterparty group used to classify counterparties for compliance and routing purposes
      properties:
        groupId:
          type: string
          format: uuid
          description: Unique identifier of the counterparty group
          example: 44fcead0-7053-4831-a53a-df7fb90d440f
        name:
          type: string
          description: Human-readable name of the group
          example: APAC Financial Partners
          minLength: 1
        description:
          type: string
          description: Optional description of the group
          example: Group for all APAC-based financial institution counterparties
        jurisdictionCodes:
          type: array
          description: List of jurisdiction codes associated with the group
          items:
            type: string
          example:
            - US
            - SG
        isActive:
          type: boolean
          description: Whether the counterparty group is currently active
          example: true
        createdAt:
          type: string
          format: date-time
          description: ISO 8601 timestamp when the group was created
          example: '2024-01-15T10:30:00Z'
        updatedAt:
          type: string
          format: date-time
          description: ISO 8601 timestamp when the group was last updated
          example: '2024-01-15T10:30:00Z'
      required:
        - groupId
        - name
        - isActive
        - createdAt
        - updatedAt
    CounterpartyGroupsPaginatedResponse:
      type: object
      description: Paginated list of counterparty groups
      properties:
        data:
          type: array
          description: The counterparty groups in the current page
          items:
            $ref: '#/components/schemas/CounterpartyGroup'
        total:
          type: integer
          description: Total number of counterparty groups
          example: 42
        next:
          type: string
          description: Cursor for the next page
          example: eJ0eXAiOiJKV1QiLCJhbGcOiJIUzI1NiJ9
      required:
        - data
    CreateCounterpartyGroupRequest:
      type: object
      description: Request body for creating a new counterparty group
      properties:
        name:
          type: string
          description: Human-readable name of the group
          example: APAC Financial Partners
          minLength: 1
        jurisdictionCodes:
          type: array
          description: List of jurisdiction codes to associate with the group
          items:
            type: string
          example:
            - US
            - SG
        description:
          type: string
          description: Optional description of the group
          example: Group for all APAC-based financial institution counterparties
      required:
        - name
        - jurisdictionCodes
    UpdateCounterpartyGroupRequest:
      type: object
      description: Request body for updating an existing counterparty group
      properties:
        name:
          type: string
          description: Updated human-readable name of the group
          example: APAC Financial Partners
          minLength: 1
        description:
          type: string
          description: Updated description of the group
          example: Group for all APAC-based financial institution counterparties
        jurisdictionCodes:
          type: array
          description: Updated list of jurisdiction codes for the group
          items:
            type: string
          example:
            - US
            - SG
        isActive:
          type: boolean
          description: Whether the counterparty group should be active
          example: true
    NetworkChannel:
      deprecated: true
      description: Deprecated in the only used reference - NetworkConnectionResponse
      type: object
      properties:
        networkId:
          type: string
        name:
          type: string
    NetworkConnectionStatus:
      type: string
      enum:
        - WAITING_FOR_APPROVAL
        - WAITING_FOR_PEER_APPROVAL
        - APPROVED
        - CANCELLED
        - FAILED
        - REJECTED
        - REJECTED_BY_PEER
        - REMOVED
        - REMOVED_BY_PEER
    NetworkId:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
      required:
        - id
        - name
    CustomRoutingDest:
      type: object
      properties:
        scheme:
          description: The network routing logic.
          type: string
          enum:
            - CUSTOM
        dstType:
          type: string
          description: The account the funds are being sent to.
          enum:
            - FIAT_ACCOUNT
            - VAULT
            - EXCHANGE
        dstId:
          type: string
          description: The ID of the account the funds are being sent to.
      required:
        - scheme
        - dstType
        - dstId
    DefaultNetworkRoutingDest:
      type: object
      properties:
        scheme:
          type: string
          description: The network routing logic.
          enum:
            - DEFAULT
      required:
        - scheme
    NoneNetworkRoutingDest:
      type: object
      properties:
        scheme:
          type: string
          description: No network routing logic.
          enum:
            - NONE
      required:
        - scheme
    NetworkConnectionRoutingPolicy:
      type: object
      additionalProperties:
        oneOf:
          - $ref: '#/components/schemas/CustomRoutingDest'
          - $ref: '#/components/schemas/DefaultNetworkRoutingDest'
          - $ref: '#/components/schemas/NoneNetworkRoutingDest'
    NetworkConnectionResponse:
      type: object
      properties:
        id:
          type: string
        localChannel:
          allOf:
            - $ref: '#/components/schemas/NetworkChannel'
          deprecated: true
          description: Deprecated - Replaced by `localNetworkId`
        remoteChannel:
          allOf:
            - $ref: '#/components/schemas/NetworkChannel'
          deprecated: true
          description: Deprecated - Replaced by `remoteNetworkId`
        status:
          $ref: '#/components/schemas/NetworkConnectionStatus'
        localNetworkId:
          $ref: '#/components/schemas/NetworkId'
        remoteNetworkId:
          $ref: '#/components/schemas/NetworkId'
        routingPolicy:
          $ref: '#/components/schemas/NetworkConnectionRoutingPolicy'
      required:
        - id
        - localNetworkId
        - remoteNetworkId
        - routingPolicy
        - status
    GetNetworkConnectionsResponse:
      type: array
      items:
        $ref: '#/components/schemas/NetworkConnectionResponse'
    NetworkConnection:
      type: object
      properties:
        localNetworkId:
          type: string
          description: The network ID of the profile trying to create the connection.
        remoteNetworkId:
          type: string
          description: The network ID the profile is attempting to connect to.
        routingPolicy:
          $ref: '#/components/schemas/NetworkConnectionRoutingPolicy'
      required:
        - localNetworkId
        - remoteNetworkId
    SetRoutingPolicyRequest:
      type: object
      properties:
        routingPolicy:
          $ref: '#/components/schemas/NetworkConnectionRoutingPolicy'
      required:
        - routingPolicy
    SetRoutingPolicyResponse:
      type: object
      properties:
        success:
          type: boolean
      required:
        - success
    ThirdPartyRouting:
      type: object
      properties:
        isThirdPartyRouting:
          type: boolean
        description:
          type: string
    DeleteNetworkConnectionResponse:
      type: object
      properties:
        success:
          type: boolean
      required:
        - success
    NetworkIdRoutingPolicy:
      type: object
      additionalProperties:
        oneOf:
          - $ref: '#/components/schemas/CustomRoutingDest'
          - $ref: '#/components/schemas/NoneNetworkRoutingDest'
    NetworkIdResponse:
      type: object
      properties:
        routingPolicy:
          $ref: '#/components/schemas/NetworkIdRoutingPolicy'
        isDiscoverable:
          type: boolean
          description: The specific network is discoverable.
        id:
          type: string
          description: The specific network id
        name:
          type: string
          description: The specific network name
    GetNetworkIdsResponse:
      type: array
      items:
        allOf:
          - $ref: '#/components/schemas/NetworkIdResponse'
    CreateNetworkIdRequest:
      type: object
      properties:
        name:
          type: string
        routingPolicy:
          $ref: '#/components/schemas/NetworkIdRoutingPolicy'
      required:
        - name
    GetRoutingPolicyAssetGroupsResponse:
      type: array
      items:
        type: string
    SearchNetworkIdsResponse:
      type: object
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/NetworkIdResponse'
        next:
          type: string
    DeleteNetworkIdResponse:
      type: object
      properties:
        success:
          type: boolean
      required:
        - success
    SetNetworkIdRoutingPolicyRequest:
      type: object
      properties:
        routingPolicy:
          $ref: '#/components/schemas/NetworkIdRoutingPolicy'
      required:
        - routingPolicy
    SetNetworkIdResponse:
      type: object
      properties:
        success:
          type: boolean
      required:
        - success
    SetNetworkIdDiscoverabilityRequest:
      type: object
      properties:
        isDiscoverable:
          type: boolean
      required:
        - isDiscoverable
    SetNetworkIdNameRequest:
      type: object
      properties:
        name:
          type: string
      required:
        - name
    ConfigChangeRequestStatus:
      type: string
      enum:
        - WAITING_FOR_APPROVAL
        - APPROVED
        - CANCELLED
        - REJECTED
        - FAILED
    WalletAsset:
      type: object
      properties:
        id:
          type: string
        balance:
          type: string
        lockedAmount:
          type: string
        status:
          $ref: '#/components/schemas/ConfigChangeRequestStatus'
        address:
          type: string
        tag:
          type: string
        activationTime:
          type: string
    UnmanagedWallet:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
        customerRefId:
          type: string
        assets:
          type: array
          items:
            $ref: '#/components/schemas/WalletAsset'
      required:
        - id
        - name
        - assets
    GetInternalWalletsResponse:
      type: array
      items:
        $ref: '#/components/schemas/UnmanagedWallet'
    CreateWalletRequest:
      type: object
      properties:
        name:
          type: string
          description: the wallet's display name
        customerRefId:
          description: Optional - Sets a customer reference ID
          type: string
    PaginatedAssetsResponse:
      type: object
      properties:
        total:
          type: number
          description: Total number of assets in the internal wallet
        data:
          $ref: '#/components/schemas/UnmanagedWallet'
        next:
          type: string
          description: Cursor for the next page of results
      required:
        - data
    CreateInternalWalletAssetRequest:
      type: object
      properties:
        address:
          type: string
          description: The wallet's address or, for EOS wallets, the account name
        tag:
          type: string
          description: for XRP wallets, the destination tag; for EOS, the memo; for the fiat providers (BLINC by BCB Group), the Bank Transfer Description
      required:
        - address
    SigningKeyDto:
      type: object
      properties:
        keyId:
          type: string
          minLength: 36
          maxLength: 36
          example: 46a92767-5f93-4a46-9eed-f012196bb4fc
          description: External signing key id set by Fireblocks.
        signingDeviceKeyId:
          type: string
          maxLength: 256
          example: MyKey1
          description: The ID, name or label of the key specified on the customer's signing device.
        publicKeyPem:
          type: string
          example: '-----BEGIN PUBLIC KEY ... END PUBLIC KEY-----'
          description: PEM encoded public key
        algorithm:
          type: string
          example: ECDSA_SECP256K1
          description: 'Algorithm and curve used for the signature. Can be: ECDSA_SECP256K1 or EDDSA_ED25519'
        enabled:
          type: boolean
          example: true
          description: True if the signing key is enabled
        vaultAccountId:
          type: number
          nullable: true
          example: 10
          description: Id of the vault account which this key is linked to
        agentUserId:
          type: string
          minLength: 36
          maxLength: 36
          example: d18847b5-1df6-4c46-8f99-5cce47284529
          description: Id of user that represent agent servers that can sign with the key
        createdAt:
          type: number
          example: 124757537
          description: Creation date (timestamp) in milliseconds.
      required:
        - keyId
        - signingDeviceKeyId
        - publicKeyPem
        - algorithm
        - enabled
        - vaultAccountId
        - agentUserId
        - createdAt
    GetSigningKeyResponseDto:
      type: object
      properties:
        data:
          description: Response object for getting external signing keys.
          type: array
          items:
            $ref: '#/components/schemas/SigningKeyDto'
        next:
          type: string
          description: The ID of the next page
      required:
        - data
    CreateSigningKeyDto:
      type: object
      properties:
        signingDeviceKeyId:
          type: string
          example: MyKey1
          maxLength: 256
          description: The ID, name or label of the key specified on the customer's signing device.
        signedCertPem:
          type: string
          example: '-----BEGIN CERTIFICATE ... END CERTIFICATE-----'
          description: The signed certificate that includes the public key PEM of the signing key, signed by a validation key.
        agentUserId:
          type: string
          minLength: 36
          maxLength: 36
          example: d18847b5-1df6-4c46-8f99-5cce47284529
          description: Id of user to which this key belongs
        proofOfOwnership:
          type: object
          description: An object containing proof of ownership for the signing key.
          properties:
            message:
              description: The message to be signed by the key as proof of ownership. 64 to 1024 bytes in hexadecimal format.
              type: string
              minLength: 64
              maxLength: 2048
            signature:
              description: The signature of the message. 64 bytes in hexadecimal format.
              type: string
              minLength: 64
              maxLength: 128
          required:
            - message
            - signature
      required:
        - signingDeviceKeyId
        - signedCertPem
        - agentUserId
    ModifySigningKeyDto:
      type: object
      properties:
        vaultAccountId:
          type: number
          minimum: 0
          example: 123
      required:
        - vaultAccountId
    ModifySigningKeyAgentIdDto:
      type: object
      properties:
        agentUserId:
          type: string
          minLength: 36
          maxLength: 36
          example: d18847b5-1df6-4c46-8f99-5cce47284529
          description: Id of user that represent agent servers which signs with the key
      required:
        - agentUserId
    ValidationKeyDto:
      type: object
      properties:
        keyId:
          type: string
          minLength: 36
          maxLength: 36
          example: 46a92767-5f93-4a46-9eed-f012196bb4fc
          description: External validation key id set by Fireblocks.
        publicKeyPem:
          type: string
          example: '-----BEGIN PUBLIC KEY ...  END PUBLIC KEY-----'
          description: PEM encoded public key used for the validation.
        daysTillExpired:
          type: number
          minimum: 1
          example: 365
        enabled:
          type: boolean
          example: false
          description: True if the validation key is enabled.
        createdAt:
          type: number
          example: 12345633
          description: Creation date (timestamp) in milliseconds.
      required:
        - keyId
        - publicKeyPem
        - daysTillExpired
        - enabled
        - createdAt
    GetValidationKeyResponseDto:
      type: object
      properties:
        data:
          description: Response object for getting external validation keys.
          type: array
          items:
            $ref: '#/components/schemas/ValidationKeyDto'
        next:
          type: string
          description: The ID of the next page
      required:
        - data
    CreateValidationKeyDto:
      type: object
      properties:
        publicKeyPem:
          type: string
          example: '-----BEGIN PUBLIC KEY ...  END PUBLIC KEY-----'
          description: The PEM encoded public key of the validation key being added
        daysTillExpired:
          type: number
          minimum: 1
          example: 365
          description: The number of days from the date the validation key was added until it expires
      required:
        - publicKeyPem
        - daysTillExpired
    CreateValidationKeyResponseDto:
      type: object
      properties:
        validationKey:
          description: Created validation key
          allOf:
            - $ref: '#/components/schemas/ValidationKeyDto'
        admins:
          description: Admins who have to approve the validation key addition
          type: array
          items:
            type: string
        approvalThreshold:
          type: number
          minimum: 0
          example: 0
          description: Minimal number of approvers required. 0 for all
        requestId:
          type: number
          example: 1234
          description: Approval request id. Can be cancelled
      required:
        - validationKey
        - admins
        - approvalThreshold
        - requestId
    ModifyValidationKeyDto:
      type: object
      properties:
        enabled:
          type: boolean
          example: false
          description: Disable validation key
      required:
        - enabled
    Players:
      type: object
      properties:
        id:
          type: string
          description: id of the player
          example: 47d3383e-37a3-43d5-90a4-de0ca8c5e258
          maxLength: 36
          minLength: 36
        type:
          enum:
            - MOBILE
            - CLOUD
          type: string
          description: Type of the player
          example: MOBILE
      required:
        - id
        - type
    MpcKey:
      type: object
      properties:
        keyId:
          type: string
          example: 743f82cf-b526-4148-afb1-cd71f1dfee10
          maxLength: 36
          minLength: 36
        userId:
          type: string
          example: da084d02-d446-413e-b4ce-1e3256517dfd
          description: The user id that owns the key
          maxLength: 36
          minLength: 36
        algorithm:
          type: number
          example: 201
          description: The algorithm of the key
        players:
          description: The players that are associated with the key
          type: array
          items:
            $ref: '#/components/schemas/Players'
        lastPreprocessedIndex:
          type: number
          minimum: 0
          example: '6'
          description: The last index used on this key
      required:
        - keyId
        - userId
        - algorithm
        - players
    GetMpcKeysResponse:
      type: object
      properties:
        tenantId:
          type: string
          example: bdb57751-921d-45d5-99fd-344cffb364f6
          description: The workspace id of the keys
          maxLength: 36
          minLength: 36
        keys:
          description: The keys that are associated with the workspace
          type: array
          items:
            $ref: '#/components/schemas/MpcKey'
      required:
        - tenantId
        - keys
    GetExternalWalletsResponse:
      type: array
      items:
        $ref: '#/components/schemas/UnmanagedWallet'
    WalletAssetAdditionalInfo:
      type: object
      properties:
        accountHolderGivenName:
          type: string
        accountHolderSurname:
          type: string
        accountHolderCity:
          type: string
        accountHolderCountry:
          type: string
        accountHolderAddress1:
          type: string
        accountHolderAddress2:
          type: string
        accountHolderDistrict:
          type: string
        accountHolderPostalCode:
          type: string
        abaRoutingNumber:
          type: string
        abaAccountNumber:
          type: string
        abaCountry:
          type: string
        iban:
          type: string
        ibanCity:
          type: string
        ibanCountry:
          type: string
        speiClabe:
          type: string
        speiName:
          type: string
    ExternalWalletAsset:
      type: object
      properties:
        id:
          type: string
        status:
          $ref: '#/components/schemas/ConfigChangeRequestStatus'
        address:
          type: string
        balance:
          type: number
        lockedAmount:
          type: number
        tag:
          type: string
        activationTime:
          type: string
        additionalInfo:
          type: array
          items:
            $ref: '#/components/schemas/WalletAssetAdditionalInfo'
    BasicAddressRequest:
      type: object
      description: Basic external wallet request with address information
      properties:
        address:
          type: string
          description: The wallet's address (or xpub) of the external wallet
          example: 1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa
        tag:
          type: string
          description: For XRP wallets, the destination tag; for EOS/XLM, the memo; for the fiat providers (BLINC by BCB Group), the Bank Transfer Description
          example: '12345'
      required:
        - address
    IbanPaymentInfo:
      type: object
      description: IBAN payment information for European bank transfers
      properties:
        accountHolderGivenName:
          type: string
          description: The given name (first name) of the account holder
          example: John
        accountHolderSurname:
          type: string
          description: The surname (last name) of the account holder
          example: Doe
        accountHolderCity:
          type: string
          description: The city where the account holder resides
          example: London
        accountHolderCountry:
          type: string
          description: The country where the account holder resides (ISO 3166-1 alpha-2 code)
          example: GB
        accountHolderAddress1:
          type: string
          description: The primary address line of the account holder
          example: 123 Main Street
        accountHolderAddress2:
          type: string
          description: The secondary address line of the account holder (optional)
          example: Apartment 4B
        accountHolderDistrict:
          type: string
          description: The district or region where the account holder resides
          example: Westminster
        accountHolderPostalCode:
          type: string
          description: The postal code of the account holder's address
          example: SW1A 1AA
        iban:
          type: string
          description: The International Bank Account Number (IBAN)
          example: GB82WEST12345698765432
        ibanCity:
          type: string
          description: The city associated with the IBAN
          example: London
        ibanCountry:
          type: string
          description: The country associated with the IBAN (ISO 3166-1 alpha-2 code)
          example: GB
      required:
        - accountHolderGivenName
        - accountHolderCity
        - accountHolderCountry
        - accountHolderAddress1
        - accountHolderPostalCode
        - iban
        - ibanCity
        - ibanCountry
    AbaPaymentInfo:
      type: object
      description: ABA payment information for US bank transfers
      properties:
        accountHolderGivenName:
          type: string
          description: The given name (first name) of the account holder
          example: John
        accountHolderSurname:
          type: string
          description: The surname (last name) of the account holder
          example: Doe
        accountHolderCity:
          type: string
          description: The city where the account holder resides
          example: New York
        accountHolderCountry:
          type: string
          description: The country where the account holder resides (ISO 3166-1 alpha-2 code)
          example: US
        accountHolderAddress1:
          type: string
          description: The primary address line of the account holder
          example: 123 Wall Street
        accountHolderAddress2:
          type: string
          description: The secondary address line of the account holder (optional)
          example: Suite 100
        accountHolderDistrict:
          type: string
          description: The district or region where the account holder resides
          example: Manhattan
        accountHolderPostalCode:
          type: string
          description: The postal code of the account holder's address
          example: '10005'
        abaRoutingNumber:
          type: string
          description: The ABA routing number for the bank
          example: '021000021'
        abaAccountNumber:
          type: string
          description: The account number at the bank
          example: '1234567890'
        abaCountry:
          type: string
          description: The country for the ABA transfer (ISO 3166-1 alpha-2 code)
          example: US
      required:
        - accountHolderGivenName
        - accountHolderCity
        - accountHolderCountry
        - accountHolderAddress1
        - accountHolderPostalCode
        - abaRoutingNumber
        - abaAccountNumber
        - abaCountry
    SpeiBasicPaymentInfo:
      type: object
      description: Basic SPEI payment information for Mexican bank transfers
      properties:
        speiClabe:
          type: string
          description: The CLABE (Clave Bancaria Estandarizada) number for SPEI transfers
          example: '012180001234567890'
        speiName:
          type: string
          description: The name associated with the SPEI account
          example: Juan Pérez
      required:
        - speiClabe
    SpeiAdvancedPaymentInfo:
      type: object
      description: Advanced SPEI payment information for Mexican bank transfers with full details
      properties:
        rail:
          type: string
          enum:
            - SPEI
          description: The payment rail type for SPEI transfers
          example: SPEI
        addressingSystem:
          type: string
          enum:
            - CLABE
          description: The addressing system used for SPEI transfers
          example: CLABE
        accountHolderGivenName:
          type: string
          description: The given name (first name) of the account holder
          example: Juan
        accountHolderSurname:
          type: string
          description: The surname (last name) of the account holder
          example: Pérez
        country:
          type: string
          description: The country for the transfer (ISO 3166-1 alpha-2 code)
          example: MX
        bankName:
          type: string
          description: The name of the bank
          example: Banco Nacional de México
        beneficiaryRfc:
          type: string
          description: The RFC (Registro Federal de Contribuyentes) of the beneficiary
          example: PERJ800101ABC
        senderDocumentId:
          type: string
          description: The document ID of the sender
          example: CURP123456789
        clabe:
          type: string
          description: The CLABE (Clave Bancaria Estandarizada) number
          example: '012180001234567890'
      required:
        - rail
        - addressingSystem
        - accountHolderGivenName
        - accountHolderSurname
        - country
        - clabe
    PixPaymentInfo:
      type: object
      description: PIX payment information for Brazilian instant payments
      properties:
        rail:
          type: string
          enum:
            - PIX
          description: The payment rail type for PIX transfers
          example: PIX
        addressingSystem:
          type: string
          enum:
            - PIX
          description: The addressing system used for PIX transfers
          example: PIX
        accountHolderGivenName:
          type: string
          description: The given name (first name) of the account holder
          example: João
        accountHolderSurname:
          type: string
          description: The surname (last name) of the account holder
          example: Silva
        country:
          type: string
          description: The country for the transfer (ISO 3166-1 alpha-2 code)
          example: BR
        pixKey:
          type: string
          description: The PIX key used for the transfer
          example: joao.silva@email.com
        bankName:
          type: string
          description: The name of the bank
          example: Banco do Brasil
        bankCode:
          type: string
          description: The bank code (ISPB - Identificador do Sistema de Pagamentos Brasileiros)
          example: '00000000'
        keyType:
          type: string
          enum:
            - CPF
            - CNPJ
            - EMAIL
            - PHONE
            - RANDOM
          description: The type of PIX key being used
          example: EMAIL
      required:
        - rail
        - addressingSystem
        - accountHolderGivenName
        - accountHolderSurname
        - country
        - pixKey
        - keyType
    SepaPaymentInfo:
      type: object
      description: SEPA payment information for European Single Euro Payments Area transfers
      properties:
        rail:
          type: string
          enum:
            - SEPA
          description: The payment rail type for SEPA transfers
          example: SEPA
        addressingSystem:
          type: string
          enum:
            - IBAN
          description: The addressing system used for SEPA transfers
          example: IBAN
        accountHolderGivenName:
          type: string
          description: The given name (first name) of the account holder
          example: Marie
        accountHolderSurname:
          type: string
          description: The surname (last name) of the account holder
          example: Dupont
        accountHolderCountry:
          type: string
          description: The country where the account holder resides (ISO 3166-1 alpha-2 code)
          example: FR
        accountHolderPostalCode:
          type: string
          description: The postal code of the account holder's address
          example: '75001'
        accountHolderCity:
          type: string
          description: The city where the account holder resides
          example: Paris
        accountHolderAddress:
          type: string
          description: The address of the account holder
          example: 123 Rue de la Paix
        iban:
          type: string
          description: The International Bank Account Number (IBAN)
          example: FR1420041010050500013M02606
        country:
          type: string
          description: The country for the transfer (ISO 3166-1 alpha-2 code)
          example: FR
        bic:
          type: string
          description: The Bank Identifier Code (BIC/SWIFT code)
          example: BNPAFRPP
        bankName:
          type: string
          description: The name of the bank
          example: BNP Paribas
        bankBranch:
          type: string
          description: The bank branch information
          example: Paris Central
        bankAddress:
          type: string
          description: The address of the bank
          example: 16 Boulevard des Italiens, 75009 Paris
        purposeCode:
          type: string
          description: The purpose code for the transfer
          example: SALA
        taxId:
          type: string
          description: The tax identification number
          example: '1234567890123'
      required:
        - rail
        - addressingSystem
        - accountHolderGivenName
        - accountHolderSurname
        - country
        - iban
    AchPaymentInfo:
      type: object
      description: ACH payment information for US Automated Clearing House transfers
      properties:
        rail:
          type: string
          enum:
            - ACH
          description: The payment rail type for ACH transfers
          example: ACH
        addressingSystem:
          type: string
          enum:
            - ACH
          description: The addressing system used for ACH transfers
          example: ACH
        accountHolderGivenName:
          type: string
          description: The given name (first name) of the account holder
          example: John
        accountHolderSurname:
          type: string
          description: The surname (last name) of the account holder
          example: Smith
        country:
          type: string
          description: The country for the transfer (ISO 3166-1 alpha-2 code)
          example: US
        accountNumber:
          type: string
          description: The bank account number
          example: '1234567890'
        routingNumber:
          type: string
          description: The bank routing number (ABA routing number)
          example: '021000021'
        accountType:
          type: string
          enum:
            - CHECKING
            - SAVINGS
          description: The type of bank account
          example: CHECKING
      required:
        - rail
        - addressingSystem
        - routingNumber
        - accountType
        - accountHolderGivenName
        - accountHolderSurname
        - country
        - accountNumber
    UsWirePaymentInfo:
      type: object
      description: US Wire payment information for US domestic wire transfers
      properties:
        rail:
          type: string
          enum:
            - US_WIRE
          description: The payment rail type for US wire transfers
          example: US_WIRE
        addressingSystem:
          type: string
          enum:
            - ABA
          description: The addressing system used for US wire transfers
          example: ABA
        accountHolderGivenName:
          type: string
          description: The given name (first name) of the account holder
          example: John
        accountHolderSurname:
          type: string
          description: The surname (last name) of the account holder
          example: Smith
        country:
          type: string
          description: The country for the transfer (ISO 3166-1 alpha-2 code)
          example: US
        accountNumber:
          type: string
          description: The bank account number
          example: '1234567890'
        routingNumber:
          type: string
          description: The bank routing number (ABA routing number)
          example: '021000021'
        swiftCode:
          type: string
          description: The SWIFT/BIC code of the bank
          example: CHASUS33
        bankName:
          type: string
          description: The name of the bank
          example: JPMorgan Chase Bank
        bankAddressLine:
          type: string
          description: The street address of the bank
          example: 270 Park Avenue
        bankAddressCity:
          type: string
          description: The city where the bank is located
          example: New York
        bankAddressState:
          type: string
          description: The state where the bank is located
          example: NY
        bankAddressCountry:
          type: string
          description: The country where the bank is located (ISO 3166-1 alpha-2 code)
          example: US
        bankAddressPostalCode:
          type: string
          description: The postal code of the bank's address
          example: '10017'
        branchNumber:
          type: string
          description: The branch number of the bank
          example: '001'
      required:
        - rail
        - addressingSystem
        - accountHolderGivenName
        - accountHolderSurname
        - country
        - swiftCode
        - bankName
        - accountNumber
        - routingNumber
        - bankAddressLine
        - bankAddressCity
        - bankAddressCountry
        - bankAddressPostalCode
    MomoPaymentInfo:
      type: object
      description: Mobile Money (MOMO) payment information for African mobile payment services
      properties:
        rail:
          type: string
          enum:
            - MOMO
          description: The payment rail type for mobile money transfers
          example: MOMO
        addressingSystem:
          type: string
          enum:
            - MOMO
          description: The addressing system used for mobile money transfers
          example: MOMO
        accountHolderGivenName:
          type: string
          description: The given name (first name) of the account holder
          example: Kwame
        accountHolderSurname:
          type: string
          description: The surname (last name) of the account holder
          example: Asante
        country:
          type: string
          description: The country for the transfer (ISO 3166-1 alpha-2 code)
          example: GH
        mobilePhoneNumber:
          type: string
          description: The mobile phone number associated with the mobile money account
          example: '+233241234567'
        provider:
          type: string
          enum:
            - M_PESA
            - AIRTEL
            - MTN
            - TIGO
            - WAVE
          description: The mobile money service provider
          example: MTN
        email:
          type: string
          format: email
          description: The email address of the account holder
          example: john.doe@example.com
        beneficiaryDocumentId:
          type: string
          description: The document ID of the beneficiary
          example: GHA-123456789-0
        beneficiaryRelationship:
          type: string
          description: The relationship between sender and beneficiary
          example: Family
      required:
        - rail
        - email
        - addressingSystem
        - accountHolderGivenName
        - accountHolderSurname
        - country
        - mobilePhoneNumber
        - provider
    LbtPaymentInfo:
      type: object
      description: LBT (Lebanese Bank Transfer) payment information for Lebanese bank transfers
      properties:
        rail:
          type: string
          enum:
            - LBT
          description: The payment rail type for Lebanese bank transfers
          example: LBT
        addressingSystem:
          type: string
          enum:
            - BAN
          description: The addressing system used for Lebanese bank transfers (Bank Account Number)
          example: BAN
        accountHolderGivenName:
          type: string
          description: The given name (first name) of the account holder
          example: Ahmad
        accountHolderSurname:
          type: string
          description: The surname (last name) of the account holder
          example: Khalil
        country:
          type: string
          description: The country for the transfer (ISO 3166-1 alpha-2 code)
          example: LB
        accountNumber:
          type: string
          description: The bank account number
          example: '123456789012'
        bankName:
          type: string
          description: The name of the bank
          example: Bank of Beirut
        bankCode:
          type: string
          description: The bank code or identifier
          example: '001'
      required:
        - rail
        - addressingSystem
        - accountHolderGivenName
        - accountHolderSurname
        - country
        - accountNumber
        - bankName
        - bankCode
    InteracPaymentInfo:
      type: object
      description: Interac e-Transfer payment information for Canadian dollar transfers
      properties:
        rail:
          type: string
          enum:
            - INTERAC
          description: The payment rail type for Interac transfers
          example: INTERAC
        addressingSystem:
          type: string
          enum:
            - INTERAC
          description: The addressing system used for Interac transfers
          example: INTERAC
        accountHolderGivenName:
          type: string
          description: The given name (first name) of the account holder
          example: John
        accountHolderSurname:
          type: string
          description: The surname (last name) of the account holder
          example: Smith
        country:
          type: string
          description: The country for the transfer (ISO 3166-1 alpha-2 code)
          example: CA
        recipientHandleType:
          type: string
          enum:
            - EMAIL
          description: The type of recipient handler being used
          example: EMAIL
        recipientHandleValue:
          type: string
          description: Email address registered for Interac e-Transfer
          example: john.smith@email.com
        message:
          type: string
          description: The message to be sent to the recipient
          example: Please deposit the funds into the account
      required:
        - rail
        - addressingSystem
        - accountHolderGivenName
        - accountHolderSurname
        - country
        - recipientHandleType
        - recipientHandleValue
        - message
        - securityQuestion
    PayidPaymentInfo:
      type: object
      description: PayID payment information for Australian dollar transfers
      properties:
        rail:
          type: string
          enum:
            - PAYID
          description: The payment rail type for PayID transfers
          example: PAYID
        addressingSystem:
          type: string
          enum:
            - PAYID
          description: The addressing system used for PayID transfers
          example: PAYID
        accountHolderGivenName:
          type: string
          description: The given name (first name) of the account holder
          example: John
        accountHolderSurname:
          type: string
          description: The surname (last name) of the account holder
          example: Williams
        country:
          type: string
          description: The country for the transfer (ISO 3166-1 alpha-2 code)
          example: AU
        value:
          type: string
          description: The PayID identifier (email, phone, ABN, or organization ID)
          example: john.williams@email.com
        type:
          type: string
          enum:
            - EMAIL
          description: The type of PayID being used
          example: EMAIL
        bsb:
          type: string
          description: Bank State Branch (BSB) number (6 digits, format XXX-XXX)
          example: 123-456
        accountNumber:
          type: string
          description: Australian bank account number
          example: '12345678'
      required:
        - rail
        - addressingSystem
        - accountHolderGivenName
        - accountHolderSurname
        - country
        - value
        - type
        - bsb
        - accountNumber
    ChapsPaymentInfo:
      type: object
      description: CHAPS payment information for UK pound sterling same-day transfers
      properties:
        rail:
          type: string
          enum:
            - CHAPS
          description: The payment rail type for CHAPS transfers
          example: CHAPS
        addressingSystem:
          type: string
          enum:
            - CHAPS
          description: The addressing system used for CHAPS transfers
          example: CHAPS
        accountHolderGivenName:
          type: string
          description: The given name (first name) of the account holder
          example: John
        accountHolderSurname:
          type: string
          description: The surname (last name) of the account holder
          example: Smith
        accountHolderCity:
          type: string
          description: The city where the account holder resides
          example: London
        accountHolderCountry:
          type: string
          description: The country where the account holder resides (ISO 3166-1 alpha-2 code)
          example: GB
        accountHolderPostalCode:
          type: string
          description: The postal code of the account holder's address
          example: SW1A 1AA
        country:
          type: string
          description: The country for the transfer (ISO 3166-1 alpha-2 code)
          example: GB
        sortCode:
          type: string
          description: UK bank sort code (format XX-XX-XX)
          pattern: ^\d{6}$
          example: 12-34-56
        accountNumber:
          type: string
          pattern: ^\d{8}$
          description: UK bank account number
          example: '12345678'
        bankName:
          type: string
          description: The name of the bank
          example: Barclays Bank
        bankAccountCountry:
          type: string
          pattern: ^\d{2}$
          description: CHAPS bank account holder name
          example: GB
        bankAccountHolderName:
          type: string
          pattern: ^(?=.{1,140}$)[^\s]+(\s+[^\s]+)*$
          description: CHAPS bank account holder name
          example: John Smith
      required:
        - rail
        - addressingSystem
        - accountHolderGivenName
        - accountHolderSurname
        - country
        - sortCode
        - accountNumber
        - bankAccountCountry
        - bankAccountHolderName
    AdditionalInfoRequest:
      type: object
      description: External wallet request with additional payment information for various payment rails
      properties:
        additionalInfo:
          type: object
          description: Additional payment information based on the payment rail type
          oneOf:
            - $ref: '#/components/schemas/IbanPaymentInfo'
            - $ref: '#/components/schemas/AbaPaymentInfo'
            - $ref: '#/components/schemas/SpeiBasicPaymentInfo'
            - $ref: '#/components/schemas/SpeiAdvancedPaymentInfo'
            - $ref: '#/components/schemas/PixPaymentInfo'
            - $ref: '#/components/schemas/SepaPaymentInfo'
            - $ref: '#/components/schemas/AchPaymentInfo'
            - $ref: '#/components/schemas/UsWirePaymentInfo'
            - $ref: '#/components/schemas/MomoPaymentInfo'
            - $ref: '#/components/schemas/LbtPaymentInfo'
            - $ref: '#/components/schemas/InteracPaymentInfo'
            - $ref: '#/components/schemas/PayidPaymentInfo'
            - $ref: '#/components/schemas/ChapsPaymentInfo'
      required:
        - additionalInfo
    AddAssetToExternalWalletRequest:
      description: Request schema for adding an asset to an external wallet
      oneOf:
        - $ref: '#/components/schemas/BasicAddressRequest'
        - $ref: '#/components/schemas/AdditionalInfoRequest'
    GetContractsResponse:
      type: array
      items:
        $ref: '#/components/schemas/UnmanagedWallet'
    CreateContractRequest:
      type: object
      properties:
        name:
          type: string
          description: the contract's display name
    AddContractAssetRequest:
      type: object
      properties:
        address:
          type: string
          description: The contract's address (or xpub) of the wallet
        tag:
          type: string
          description: The destination tag, for XRP wallets
      required:
        - address
    AssetTypeResponse:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
        type:
          type: string
        contractAddress:
          type: string
        nativeAsset:
          type: string
        decimals:
          type: number
      required:
        - id
        - name
        - type
    GetSupportedAssetsResponse:
      type: array
      items:
        $ref: '#/components/schemas/AssetTypeResponse'
    AssetClass:
      type: string
      example: FT
      enum:
        - NATIVE
        - FT
        - FIAT
        - NFT
        - SFT
        - VIRTUAL
    AssetScope:
      type: string
      description: The scope of the asset
      example: GLOBAL
      enum:
        - GLOBAL
        - LOCAL
    AssetDetailsOnchain:
      type: object
      properties:
        symbol:
          type: string
          description: The asset symbol
          example: USDT
        name:
          type: string
          description: The asset name
          example: Tether USD
        address:
          type: string
          description: The asset address
          example: '0xdAC17F958D2ee523a2206206994597C13D831ec7'
        decimals:
          type: number
          description: Number of decimals
          example: 6
        standards:
          description: Supported standards
          type: array
          items:
            type: string
          example:
            - ERC20
      required:
        - symbol
        - name
        - decimals
    AssetMedia:
      type: object
      properties:
        url:
          type: string
          description: Media URL
          example: https://example.com/image.png
        type:
          type: string
          description: Media type
          example: image/svg+xml
          enum:
            - image/svg+xml
            - image/png
        attributes:
          description: Media attributes
          type: object
          properties:
            monochrome:
              type: boolean
              description: Monochrome flag
              example: true
      required:
        - url
        - type
    AssetNote:
      type: object
      properties:
        text:
          type: string
          description: Note content
          example: Pay attention to gas fees
        userId:
          type: string
          format: uuid
          description: Who updated the note (uuid)
          example: 056776ab-9efa-4219-9820-9ece0cc4d90d
        userName:
          type: string
          description: User name
          example: Test test
        updatedAt:
          type: string
          format: date-time
          description: ISO Timestamp when last updated
          example: '2025-06-08T19:42:49.000Z'
      required:
        - text
        - userId
        - userName
        - updatedAt
    AssetFeature:
      type: string
      description: Asset feature
      example: STABLECOIN
      enum:
        - STABLECOIN
    AssetDetailsMetadata:
      type: object
      properties:
        scope:
          $ref: '#/components/schemas/AssetScope'
        verified:
          type: boolean
          description: Is asset verified by Fireblocks
          example: false
        deprecated:
          type: boolean
          description: Is asset deprecated
          example: false
        deprecationReferralId:
          type: string
          description: New asset ID replacement
          example: 056776ab-9efa-4219-9820-9ece0cc4d90d
        website:
          type: string
          description: Vendor’s website
          example: https://example.org
        media:
          description: Asset’s media
          type: array
          items:
            $ref: '#/components/schemas/AssetMedia'
        note:
          $ref: '#/components/schemas/AssetNote'
        features:
          description: Asset features
          type: array
          items:
            $ref: '#/components/schemas/AssetFeature'
      required:
        - scope
        - verified
        - deprecated
    Asset:
      type: object
      properties:
        id:
          type: string
          description: The ID of the asset
          example: 9f9f7062-df90-4fc0-8697-96685184358d
        legacyId:
          type: string
          description: The Legacy ID of the asset
          example: USDT_ERC20
        blockchainId:
          type: string
          description: The ID of the asset's blockchain
          example: e85208ff-3b15-44e9-af14-0ed0280b2a15
        displayName:
          type: string
          description: Asset's display name
          example: Tether USD
        displaySymbol:
          type: string
          description: Asset's display symbol
          example: USDT
        providerId:
          type: string
          description: The ID of the asset provider
          example: SOME_PROVIDER_ID
        peggedAssetId:
          type: string
          description: The ID of the pegged asset
          example: 6ef19b84-2144-4d38-8056-d423199bce5e
        assets:
          type: array
          description: List of asset IDs for virtual assets
          items:
            type: string
            description: The ID of the asset
            example: 6ef19b84-2144-4d38-8056-d423199bce5e
        assetClass:
          $ref: '#/components/schemas/AssetClass'
        decimals:
          type: number
          description: Number of decimals for FIAT assets
          example: 2
        onchain:
          $ref: '#/components/schemas/AssetDetailsOnchain'
        metadata:
          $ref: '#/components/schemas/AssetDetailsMetadata'
      required:
        - id
        - legacyId
        - assetClass
        - displayName
        - displaySymbol
        - metadata
    ListAssetsResponse:
      type: object
      properties:
        data:
          type: array
          description: The data of the current page
          items:
            $ref: '#/components/schemas/Asset'
        next:
          type: string
          description: Cursor to the next page
          example: eJ0eXAiOiJKV1QiLCJhbGcOiJIUzI1NiJ9
          nullable: true
      required:
        - data
        - next
    AssetInternalServerErrorResponse:
      type: object
      properties:
        message:
          type: string
          description: Internal server error code
          example: Internal server error
        code:
          type: number
          description: Error code
          example: 3005
      required:
        - message
        - code
    RegisterNewAssetRequest:
      type: object
      properties:
        blockchainId:
          type: string
          description: Native asset ID of the blockchain
          example: (ETH, ETH_TEST5, MATIC_POLYGON)
        address:
          type: string
          description: |
            Asset address.
            - EVM-based chains: token contract address
            - Stellar (XLM): issuer address
            - Algorand (ALGO): asset ID
            - TRON (TRX): token contract address
            - NEAR: token address
            - Solana: token's mint account address
            - Sui: token's type
            - TON: token's address
          example: 0xe7A9as1oa38bc4da0248s179E30aa94CcF453991
        symbol:
          type: string
          description: Required for Stellar only, asset code is expected.
          example: TST3
      required:
        - blockchainId
        - address
    AssetOnchain:
      type: object
      properties:
        symbol:
          type: string
          description: The asset symbol
          example: TST3
        name:
          type: string
          description: The asset name
          example: Test 3
        address:
          type: string
          description: The asset address
          example: 0xe7A9as1oa38bc4da0248s179E30aa94CcF453991
        decimals:
          type: number
          description: Number of decimals
          example: 18
        standard:
          type: string
          description: The asset standard
          example: ERC20
      required:
        - symbol
        - name
        - decimals
    AssetMetadata:
      type: object
      properties:
        scope:
          type: string
          description: The scope of the asset
          example: Global
          enum:
            - Global
            - Local
        deprecated:
          type: boolean
          description: Is asset deprecated
          example: false
      required:
        - scope
        - deprecated
    AssetResponse:
      type: object
      properties:
        legacyId:
          type: string
          example: TST3_ETH
        assetClass:
          type: string
          example: FT
          enum:
            - NATIVE
            - FT
            - NFT
            - SFT
        onchain:
          $ref: '#/components/schemas/AssetOnchain'
        metadata:
          $ref: '#/components/schemas/AssetMetadata'
      required:
        - legacyId
        - assetClass
        - onchain
        - metadata
    AssetBadRequestErrorResponse:
      type: object
      properties:
        message:
          type: string
          description: Bad request error code
          example: Listing an asset on the requested blockchain is not supported
        code:
          type: number
          description: Error code
          example: 3001
      required:
        - message
        - code
    AssetForbiddenErrorResponse:
      type: object
      properties:
        message:
          type: string
          description: Forbidden error code
          example: Asset creation quota reached
        code:
          type: number
          description: Error code
          example: 3006
      required:
        - message
        - code
    TokenInfoNotFoundErrorResponse:
      type: object
      properties:
        message:
          type: string
          description: Not found error code
          example: Invalid address, could not get asset information
        code:
          type: number
          description: Error code
          example: 3009
      required:
        - message
        - code
    AssetConflictErrorResponse:
      type: object
      properties:
        message:
          type: string
          description: Conflict error code
          example: Asset already listed
        code:
          type: number
          description: Error code
          example: 3002
      required:
        - message
        - code
    AssetNotFoundErrorResponse:
      type: object
      properties:
        message:
          type: string
          description: Not found error code
          example: Asset with specified ID not found
        code:
          type: number
          description: Error code
          example: 1504
      required:
        - message
        - code
    AssetNoteRequest:
      type: object
      properties:
        text:
          type: string
          description: Asset user note
          example: Pay attention to ETH gas fees
    AssetMetadataRequest:
      type: object
      properties:
        note:
          $ref: '#/components/schemas/AssetNoteRequest'
    UpdateAssetUserMetadataRequest:
      type: object
      properties:
        metadata:
          $ref: '#/components/schemas/AssetMetadataRequest'
    SetAssetPriceRequest:
      type: object
      properties:
        currency:
          type: string
          description: Currency (according to ISO 4217 currency codes)
          example: USD
        price:
          type: number
          description: Price in currency
          example: 3100
      required:
        - currency
        - price
    AssetPriceResponse:
      type: object
      properties:
        legacyId:
          type: string
          description: The ID of the asset
          example: ETH
        lastUpdateAt:
          type: number
          description: Time of last price update
          example: 1716898542
        currency:
          type: string
          description: Currency (according to ISO 4217 currency codes)
          example: USD
        price:
          type: number
          description: Price in currency
          example: 3500
        source:
          type: string
          description: Source of the price data
          example: PRIVATE
          enum:
            - PUBLIC
            - PRIVATE
      required:
        - legacyId
        - lastUpdateAt
        - currency
        - price
        - source
    AssetPriceForbiddenErrorResponse:
      type: object
      properties:
        message:
          type: string
          description: Forbidden error message
          example: Tenant is not allowed to update asset
        code:
          type: number
          description: Error code
          example: 3002
      required:
        - message
        - code
    AssetPriceNotFoundErrorResponse:
      type: object
      properties:
        message:
          type: string
          description: Not found error message
          example: Currency not found
        code:
          type: number
          description: Error code
          example: 3001
      required:
        - message
        - code
    BlockchainOnchain:
      type: object
      properties:
        protocol:
          type: string
          description: The protocol of the blockchain
          example: EVM
        chainId:
          type: string
          description: Network/chain ID
          example: 1
        test:
          type: boolean
          description: Is test blockchain
          example: false
        signingAlgo:
          enum:
            - ECDSA_SECP256K1
            - EDDSA_ED25519
          type: string
          description: Signing alghorithm
          example: ECDSA_SECP256K1
      required:
        - protocol
        - test
        - signingAlgo
    BlockchainMedia:
      type: object
      properties:
        url:
          type: string
          description: Media URL
          example: https://example.com/image.png
        type:
          type: string
          description: Media type
          example: image/svg+xml
          enum:
            - image/svg+xml
            - image/png
      required:
        - url
        - type
    BlockchainExplorer:
      type: object
      properties:
        base:
          type: string
          description: Explorer base url
          example: https://example.com
        address:
          type: string
          description: Explorer address url
          example: https://example.com/address/{address}
        tx:
          type: string
          description: Explorer transaction url
          example: https://example.com/tx/{tx}
        token:
          type: string
          description: Explorer token url
          example: https://example.com/nft/{contract}/{tokenId}
      required:
        - base
    BlockchainMetadata:
      type: object
      properties:
        scope:
          $ref: '#/components/schemas/AssetScope'
        deprecated:
          type: boolean
          description: Is blockchain deprecated
          example: false
        media:
          description: Blockchain’s media
          type: array
          items:
            $ref: '#/components/schemas/BlockchainMedia'
        explorer:
          $ref: '#/components/schemas/BlockchainExplorer'
      required:
        - scope
        - deprecated
    BlockchainResponse:
      type: object
      properties:
        id:
          type: string
          description: The ID of the blockchain
          example: 9f9f7062-df90-4fc0-8697-96685184357b
        legacyId:
          type: string
          description: The old blockchain ID representation of the blockchain
          example: ETH
        displayName:
          type: string
          description: The name of the blockchain
          example: Ethereum
        nativeAssetId:
          type: string
          description: Native asset ID of this blockchain
          example: 9f9f7062-df90-4fc0-8697-96685184356a
        onchain:
          $ref: '#/components/schemas/BlockchainOnchain'
        metadata:
          $ref: '#/components/schemas/BlockchainMetadata'
      required:
        - id
        - legacyId
        - displayName
        - nativeAssetId
        - onchain
        - metadata
    ListBlockchainsResponse:
      type: object
      properties:
        data:
          type: array
          description: The data of the current page
          items:
            $ref: '#/components/schemas/BlockchainResponse'
        next:
          type: string
          description: Cursor to the next page
          example: eJ0eXAiOiJKV1QiLCJhbGcOiJIUzI1NiJ9
          nullable: true
      required:
        - data
        - next
    BlockchainNotFoundErrorResponse:
      type: object
      properties:
        message:
          type: string
          description: Not found error code
          example: Blockchain with specified ID not found
        code:
          type: number
          description: Error code
          example: 1505
      required:
        - message
        - code
    GetTransactionOperation:
      type: string
      enum:
        - TRANSFER
        - BURN
        - CONTRACT_CALL
        - MINT
        - RAW
        - TYPED_MESSAGE
        - ENABLE_ASSET
        - STAKE
        - REDEEM_FROM_COMPOUND
        - SUPPLY_TO_COMPOUND
        - PROGRAM_CALL
        - APPROVE
      description: |
        * `TRANSFER` - Transfers funds from one account to another. UTXO blockchains allow multi-input and multi-output transfers. All other blockchains allow transfers with one source address and one destination address.
        * `MINT` - Mints new tokens. Supported for Stellar, Ripple and EVM-based blockchains.
        * `BURN` - Burns tokens. Supported for Stellar, Ripple and EVM-based blockchains.
        * `CONTRACT_CALL` - Calls a smart contract method for web3 operations on any EVM blockchain. The Fireblocks [development libraries](https://developers.fireblocks.com/docs/ethereum-development#convenience-libraries) are recommended for building contract call transactions.
        * `TYPED_MESSAGE` - An off-chain message in either Ethereum Personal Message or EIP712 format. Use it to sign specific readable messages that are not actual transactions. [Learn more about typed messages](https://developers.fireblocks.com/docs/typed-message-signing).
        * `RAW` - An off-chain message with no predefined format. Use it to sign any message with your private key, including protocols such as blockchains and custom transaction types that are not natively supported by Fireblocks. [Learn more about raw signing transactions.](https://developers.fireblocks.com/docs/raw-message-signing)
        * `ENABLE_ASSET` - Algorand, DigitalBits, Solana, and Stellar require an on-chain transaction to create an asset wallet and enable the deposit address. This transaction is automatically created when adding assets on these blockchains at a vault account.
        * `STAKE` - Assign assets to a staking pool managed by a staking validator. Supported for Stellar and EVM-based blockchains. This transaction is automatically created when performing staking operations.
        * `SUPPLY_TO_COMPOUND` - Deprecated since April 1st, 2023. Older transactions may have this as their operation, in case users in the workspace have used the direct integration between Fireblocks and the Compound DeFI protocol.
        * `REDEEM_FROM_COMPOUND` - Deprecated since April 1st, 2023. Older transactions may have this as their operation, in case users in the workspace have used the direct integration between Fireblocks and the Compound DeFI protocol.
        * `PROGRAM_CALL` - In Solana refers to invoking on-chain programs (smart contracts) to execute transactions and interact with the blockchain.
        * `APPROVE` - Enables the approve function for a smart contract or wallet to  withdraw from a designated wallet. [Learn more](https://support.fireblocks.io/hc/en-us/articles/4404616097426-Amount-Cap-for-Approve-transactions).
    TransferPeerPathType:
      type: string
      enum:
        - VAULT_ACCOUNT
        - EXCHANGE_ACCOUNT
        - CONNECTED_ACCOUNT
        - INTERNAL_WALLET
        - EXTERNAL_WALLET
        - CONTRACT
        - NETWORK_CONNECTION
        - FIAT_ACCOUNT
        - COMPOUND
        - GAS_STATION
        - ONE_TIME_ADDRESS
        - UNKNOWN
        - END_USER_WALLET
        - PROGRAM_CALL
        - MULTI_DESTINATION
        - OEC_PARTNER
        - WALLET_POOL
    TransactionTag:
      type: object
      properties:
        id:
          description: The unique identifier of the tag
          type: string
          format: uuid
          example: df4c0987-30da-4976-8dcf-bc2dd41ae331
        label:
          type: string
          description: The tag label
          example: VIP
      required:
        - id
        - label
    SourceTransferPeerPathResponse:
      type: object
      description: Source of the transaction.
      properties:
        type:
          $ref: '#/components/schemas/TransferPeerPathType'
        subType:
          type: string
          description: In case the type is set to `EXCHANGE_ACCOUNT` or `FIAT_ACCOUNT`, the specific exchange vendor name or fiat vendor name. In case the type is set to `INTERNAL_WALLET` or `EXTERNAL_WALLET`, the subType is set to `Internal` or `External`.
        id:
          type: string
          nullable: true
          description: The ID of the peer. You can retrieve the ID of each venue object using the endpoints for [listing vault accounts](https://developers.fireblocks.com/reference/getpagedvaultaccounts), [listing exchange account](https://developers.fireblocks.com/reference/getexchangeaccounts), [listing fiat accounts](https://developers.fireblocks.com/reference/getfiataccounts), [listing internal wallets](https://developers.fireblocks.com/reference/getinternalwallets), [listing external wallets](https://developers.fireblocks.com/reference/getexternalwallets), [listing network connections](https://developers.fireblocks.com/reference/getnetworkconnections). For the other types, this parameter is not needed.
        name:
          type: string
          description: The name of the peer.
        walletId:
          type: string
          format: uuid
        tradingAccount:
          type: string
          nullable: true
          description: If this transaction is an exchange internal transfer, this field will be populated with the type of that trading account.
        tags:
          type: array
          description: Tags associated with the transaction's source.
          minItems: 1
          maxItems: 20
          example:
            - id: df4c0987-30da-4976-8dcf-bc2dd41ae331
              label: VIP
          items:
            $ref: '#/components/schemas/TransactionTag'
      required:
        - type
    DestinationTransferPeerPathResponse:
      type: object
      description: |-
        Destination of the transaction.

        **Note:** In case the transaction is sent to multiple destinations, the `destinations` parameter is be used instead of this.
      properties:
        type:
          $ref: '#/components/schemas/TransferPeerPathType'
        subType:
          type: string
          description: In case the type is set to `EXCHANGE_ACCOUNT` or `FIAT_ACCOUNT`, the specific exchange vendor name or fiat vendor name.In case the type is set to `INTERNAL_WALLET` or `EXTERNAL_WALLET`, the subType is set to `Internal` or `External`.
        id:
          type: string
          nullable: true
          description: The ID of the peer. You can retrieve the ID of each venue object using the endpoints for [listing vault accounts](https://developers.fireblocks.com/reference/getpagedvaultaccounts), [listing exchange account](https://developers.fireblocks.com/reference/getexchangeaccounts), [listing fiat accounts](https://developers.fireblocks.com/reference/getfiataccounts), [listing internal wallets](https://developers.fireblocks.com/reference/getinternalwallets), [listing external wallets](https://developers.fireblocks.com/reference/getexternalwallets), [listing network connections](https://developers.fireblocks.com/reference/getnetworkconnections). For the other types, this parameter is not needed.
        name:
          type: string
          description: The name of the peer.
        walletId:
          type: string
          format: uuid
        tradingAccount:
          type: string
          nullable: true
          description: If this transaction is an exchange internal transfer, this field will be populated with the type of that trading account.
        tags:
          type: array
          description: Tags associated with the transaction's destination.
          minItems: 1
          maxItems: 20
          example:
            - id: df4c0987-30da-4976-8dcf-bc2dd41ae331
              label: VIP
          items:
            $ref: '#/components/schemas/TransactionTag'
      required:
        - type
    AmlScreeningResult:
      type: object
      description: The result of the AML screening.
      properties:
        provider:
          type: string
        payload:
          type: object
    AuthorizationGroups:
      type: object
      properties:
        th:
          type: number
        users:
          type: object
          additionalProperties:
            type: string
            enum:
              - PENDING_AUTHORIZATION
              - APPROVED
              - REJECTED
              - NA
    AuthorizationInfo:
      type: object
      description: The information about your [Transaction Authorization Policy (TAP).](https://developers.fireblocks.com/docs/capabilities#transaction-authorization-policy-tap)
      properties:
        allowOperatorAsAuthorizer:
          type: boolean
        logic:
          type: string
          enum:
            - AND
            - OR
        groups:
          type: array
          items:
            $ref: '#/components/schemas/AuthorizationGroups'
    TransactionResponseDestination:
      type: object
      properties:
        amount:
          type: string
          description: The amount to be sent to this destination.
        amountUSD:
          type: string
          description: The USD value of the requested amount.
        travelRuleMessageId:
          type: string
          description: The ID of the travel rule message from any travel rule provider. Used for  travel rule supporting functionality to associate transactions with existing  travel rule messages.
          example: trm_12345678-1234-1234-1234-123456789012
        amlScreeningResult:
          $ref: '#/components/schemas/AmlScreeningResult'
        destination:
          $ref: '#/components/schemas/DestinationTransferPeerPathResponse'
        authorizationInfo:
          $ref: '#/components/schemas/AuthorizationInfo'
    AmountInfo:
      type: object
      description: The details of the requested amount to transfer.
      properties:
        amount:
          description: If the transfer is a withdrawal from an exchange, the actual amount that was requested to be transferred. Otherwise, the requested amount.
          type: string
        requestedAmount:
          description: The amount requested by the user.
          type: string
        netAmount:
          description: The net amount of the transaction, after fee deduction.
          type: string
        amountUSD:
          description: The USD value of the requested amount.
          type: string
    FeeInfo:
      type: object
      description: Details of the transaction's fee.
      properties:
        networkFee:
          description: The fee paid to the network
          type: string
        serviceFee:
          description: The total fee deducted by the exchange from the actual requested amount (serviceFee = amount - netAmount)
          type: string
        gasPrice:
          type: string
        L1networkFee:
          type: string
          description: Layer 1 network fee for Layer 2 blockchain transactions
          example: '0.003955'
        L2networkFee:
          type: string
          description: Layer 2 network fee (gas price component for Layer 2 transactions)
          example: '0.0005'
        paidByRelay:
          type: boolean
          description: Wether the fee was paid by the relay or not
          example: true
        relayType:
          type: string
          description: Wether the relay is the same tenant (LOCAL) or another tenant (THIRD_PARTY)
          enum:
            - LOCAL
            - THIRD_PARTY
          example: LOCAL
        relayId:
          type: string
          description: The vault account ID of the relay
          example: 1
        relayName:
          type: string
          description: The name of the tenant, only for THIRD_PARTY relays
          example: Tenant Name
        feeUSD:
          type: string
          description: The USD value of the fee
          example: '0.0013'
    RewardInfo:
      type: object
      description: This field is relevant only for Algorand transactions. Both `srcRewards` and `destRewards` will appear only for Vault to Vault transactions, otherwise you will receive only the Fireblocks’ side of the transaction.
      properties:
        srcRewards:
          type: string
        destRewards:
          type: string
    NetworkRecord:
      type: object
      properties:
        source:
          $ref: '#/components/schemas/SourceTransferPeerPathResponse'
        destination:
          $ref: '#/components/schemas/DestinationTransferPeerPathResponse'
        txHash:
          type: string
        networkFee:
          type: string
        assetId:
          type: string
          x-fb-entity: asset
        netAmount:
          description: The net amount of the transaction, after fee deduction
          type: string
        isDropped:
          type: boolean
        type:
          type: string
        destinationAddress:
          type: string
        amountUSD:
          type: string
        rewardInfo:
          $ref: '#/components/schemas/RewardInfo'
    AmlStatusEnum:
      type: string
      deprecated: true
      description: |
        Deprecated: Use screeningStatus instead.
        AML screening status.
      enum:
        - COMPLETED
        - PENDING
        - BYPASSED
        - FAILED
        - FROZEN
      example: COMPLETED
    ScreeningVerdictEnum:
      type: string
      description: |
        The final verdict of the screening (unified for AML, Travel Rule, and TRLink).
        Different providers may return different verdict values:
        - AML: PASS, FAIL, ALERT
        - Travel Rule: PASS, FAIL, TRAVEL_RULE_REQUIRED
        - TRLink: PASS, REJECT, WARN
      enum:
        - PASS
        - FAIL
        - ALERT
        - REJECT
        - WARN
        - TRAVEL_RULE_REQUIRED
        - ACCEPT
        - REVIEW
      example: PASS
    AlertLevelEnum:
      type: string
      description: Alert level severity
      enum:
        - SEVERE
        - HIGH
        - MEDIUM
        - LOW
      example: HIGH
    AlertExposureTypeEnum:
      type: string
      description: Alert exposure type (AlertExposureType enum)
      enum:
        - DIRECT
        - INDIRECT
      example: DIRECT
    AmlAlert:
      type: object
      description: AML alert information
      properties:
        alertLevel:
          $ref: '#/components/schemas/AlertLevelEnum'
        alertName:
          type: string
          description: Name or type of the alert
          example: Sanctions Match
        category:
          type: string
          description: Alert category
          example: SANCTIONED_ENTITY
        service:
          type: string
          description: Service that generated the alert
          example: CHAINALYSIS
        externalId:
          type: string
          description: External identifier for the alert
          example: alert_12345
        alertAmount:
          type: number
          description: Amount associated with the alert
          example: 1000.5
        exposureType:
          $ref: '#/components/schemas/AlertExposureTypeEnum'
        policyAction:
          type: string
          description: Recommended action based on policy
          example: BLOCK
        categoryId:
          type: number
          description: Category identifier
          example: 101
      required:
        - alertLevel
        - externalId
        - alertAmount
        - exposureType
    PolicyVerdictActionEnum:
      type: string
      description: Policy verdict action
      enum:
        - ALLOW
        - BLOCK
        - 2-TIER
        - SCREEN
        - ACCEPT
        - REJECT
        - ALERT
        - WAIT
        - FREEZE
        - CANCEL
      example: ALLOW
    AmlMatchedRule:
      type: object
      description: AML matched rule information
      properties:
        ruleId:
          type: string
          description: Identifier of the matched rule
          example: rule_001
        ruleName:
          type: string
          description: Name of the matched rule
          example: High Risk Sanctions Check
        action:
          $ref: '#/components/schemas/PolicyVerdictActionEnum'
    AmlResult:
      type: object
      deprecated: true
      description: |
        Deprecated: This field is not currently returned in the API response.
        Detailed AML screening result information.
        Contains alerts, risk scores, and other AML-specific data from provider-specific responses.
      properties:
        alerts:
          type: array
          description: List of AML alerts triggered during screening
          items:
            $ref: '#/components/schemas/AmlAlert'
        providerResponse:
          type: object
          description: |
            Complete response from the AML provider. This is a dynamic object that varies
            significantly between different AML providers (Chainalysis, Elliptic, etc.).
            Each provider has their own proprietary response format and schema.

            Examples of provider-specific structures:
            - Chainalysis: Contains cluster info, risk scores, sanctions data
            - Elliptic: Includes risk assessment, entity types, compliance flags

            The structure is provider-dependent and cannot be standardized as each
            vendor implements their own proprietary data models and response formats.
          additionalProperties: true
        matchedRule:
          $ref: '#/components/schemas/AmlMatchedRule'
        matchedAlert:
          $ref: '#/components/schemas/AmlAlert'
    TravelRuleDirectionEnum:
      type: string
      description: Travel rule direction
      enum:
        - INBOUND
        - OUTBOUND
      example: OUTBOUND
    TravelRuleVerdictEnum:
      type: string
      description: The final verdict of the travel rule screening
      enum:
        - ACCEPT
        - REJECT
        - ALERT
        - REVIEW
        - WAIT
        - FREEZE
        - CANCEL
      example: ACCEPT
    TravelRuleStatusEnum:
      type: string
      description: Travel rule status
      enum:
        - COMPLETED
        - PENDING
        - BYPASSED
        - FAILED
        - FROZEN
        - REJECTED
        - CANCELED
        - BLOCKING_TIME_EXPIRED
      example: COMPLETED
    TravelRuleMatchedRule:
      type: object
      description: The travel rule configuration that was matched
      properties:
        direction:
          $ref: '#/components/schemas/TravelRuleDirectionEnum'
        status:
          $ref: '#/components/schemas/TravelRuleStatusEnum'
        amountUSD:
          type: number
          description: Amount in USD
          example: 1000.5
        amount:
          type: number
          description: Amount in base currency
          example: 0.025
        asset:
          type: string
          description: Asset identifier
          example: BTC
        action:
          $ref: '#/components/schemas/TravelRuleVerdictEnum'
    TravelRuleResult:
      type: object
      deprecated: true
      description: |
        Deprecated: This field is not currently returned in the API response.
        Detailed Travel Rule screening result containing provider-specific data.
        Contains Travel Rule specific information like verified status, rule type, and actions.
      properties:
        direction:
          $ref: '#/components/schemas/TravelRuleDirectionEnum'
        isVerified:
          type: boolean
          description: Whether the travel rule information was verified
          example: true
        action:
          $ref: '#/components/schemas/TravelRuleVerdictEnum'
        providerResponse:
          type: object
          description: |
            Complete response from the travel rule provider. This is a dynamic object that varies
            significantly between different travel rule providers (NOTABENE etc.).
            Each provider has their own proprietary response format and schema.

            Examples of provider-specific structures:
            - NOTABENE: Contains VASP information, PII data, protocol-specific fields

            The structure is provider-dependent and cannot be standardized as each
            vendor implements their own proprietary data models and response formats.
          additionalProperties: true
        matchedRule:
          $ref: '#/components/schemas/TravelRuleMatchedRule'
    TransferPeerTypeEnum:
      type: string
      description: Transfer peer type (source or destination)
      enum:
        - VAULT_ACCOUNT
        - EXCHANGE_ACCOUNT
        - INTERNAL_WALLET
        - EXTERNAL_WALLET
        - CONTRACT
        - NETWORK_CONNECTION
        - FIAT_ACCOUNT
        - COMPOUND
        - GAS_STATION
        - ONE_TIME_ADDRESS
        - UNKNOWN
        - END_USER_WALLET
        - PROGRAM_CALL
        - MULTI_DESTINATION
        - WALLET_POOL
      example: VAULT_ACCOUNT
    TransferPeerSubTypeEnum:
      type: string
      description: Transfer peer sub-type for prescreening rules
      enum:
        - EXTERNAL
        - INTERNAL
        - CONTRACT
        - EXCHANGETEST
      example: INTERNAL
    TransactionOperationEnum:
      type: string
      description: Transaction operation type
      enum:
        - TRANSFER
        - BURN
        - CONTRACT_CALL
        - MINT
        - RAW
        - TYPED_MESSAGE
        - ENABLE_ASSET
        - STAKE
        - UNSTAKE
        - WITHDRAW
        - REDEEM_FROM_COMPOUND
        - SUPPLY_TO_COMPOUND
        - PROGRAM_CALL
        - APPROVE
      example: TRANSFER
    TravelRuleActionEnum:
      type: string
      description: Travel rule action
      enum:
        - SCREEN
        - BYPASS
        - BLOCK
        - PASS
        - FREEZE
      example: SCREEN
    TravelRulePrescreeningRule:
      type: object
      description: |
        Matched prescreening rule details.
        Prescreening rules are evaluated before the main screening to determine
        if screening is necessary or should be bypassed.
      properties:
        bypassReason:
          type: string
          description: Reason for bypass if prescreening rule triggered a bypass
          example: MANUAL
        sourceType:
          $ref: '#/components/schemas/TransferPeerTypeEnum'
        sourceSubType:
          $ref: '#/components/schemas/TransferPeerSubTypeEnum'
        destType:
          $ref: '#/components/schemas/TransferPeerTypeEnum'
        destSubType:
          $ref: '#/components/schemas/TransferPeerSubTypeEnum'
        transferPeerType:
          $ref: '#/components/schemas/TransferPeerTypeEnum'
        transferPeerSubType:
          $ref: '#/components/schemas/TransferPeerSubTypeEnum'
        destAddress:
          type: string
          description: Destination address
          example: '0xA2dC2490ED1DcA2D21613508fdb0c82daEAb0715'
        sourceId:
          type: string
          description: Source ID
          example: '0'
        destId:
          type: string
          description: Destination ID
          example: ext_address_001
        asset:
          type: string
          description: Asset identifier
          example: ETH
        baseAsset:
          type: string
          description: Base asset
          example: ETH
        amount:
          type: number
          description: Amount
          example: 0.5
        amountUSD:
          type: number
          description: Amount in USD
          example: 1000
        networkProtocol:
          type: string
          description: Network protocol
          example: ETH
        operation:
          $ref: '#/components/schemas/TransactionOperationEnum'
        action:
          $ref: '#/components/schemas/TravelRuleActionEnum'
    ScreeningProviderResponse:
      type: object
      description: |
        Complete response from the screening provider. This is a dynamic object that varies
        significantly between different providers (Chainalysis, Elliptic, NOTABENE, etc.).
        Each provider has their own proprietary response format and schema.

        For AML providers: Contains risk scores, alerts, entity information
        For Travel Rule providers: Contains VASP information, PII data, protocol-specific fields

        The structure is provider-dependent and cannot be standardized as each
        vendor implements their own proprietary data models and response formats.
      additionalProperties: true
    ComplianceScreeningResult:
      type: object
      description: |
        The result of the AML/Travel Rule screening.
        This unified schema contains all fields that may be returned for both AML and Travel Rule screening results.
        Not all fields will be present in every response - the actual fields depend on the screening type and provider.
      properties:
        provider:
          type: string
          description: |
            The AML/Travel Rule provider name.
            For AML: ELLIPTIC, CHAINALYSIS, etc.
            For Travel Rule: NOTABENE, SUMSUB, GTR, or any TRLink provider name.
          example: NOTABENE
        payload:
          type: object
          description: |
            The raw payload of the screening result from the provider.
            The payload is a JSON object that contains the screening result.
            The payload structure is different for each screening provider.
            This field contains the complete, unmodified response from the screening service.
        timestamp:
          type: number
          format: date-time
          description: Unix timestamp in milliseconds when the screening result was generated
          example: 1753459111824
        screeningStatus:
          type: string
          description: Current status of the screening process
          enum:
            - COMPLETED
            - PENDING
            - BYPASSED
            - FAILED
            - FROZEN
          example: COMPLETED
        bypassReason:
          type: string
          description: |
            Reason for bypassing the screening, if applicable.
            For AML: UNSUPPORTED_ASSET, PASSED_BY_POLICY.
            For Travel Rule: UNSUPPORTED_ASSET, NO_TRAVEL_RULE_MESSAGE, TRANSACTION_ZERO_AMOUNT.
          example: UNSUPPORTED_ASSET
        status:
          $ref: '#/components/schemas/AmlStatusEnum'
        prevStatus:
          $ref: '#/components/schemas/AmlStatusEnum'
        prevBypassReason:
          type: string
          deprecated: true
          description: |
            Deprecated: This field is not currently returned in the API response.
            Previous bypass reason before the current bypass reason change.
          example: BELOW_THRESHOLD
        verdict:
          $ref: '#/components/schemas/ScreeningVerdictEnum'
        risk:
          type: string
          description: |
            Risk level assessment for screening results.
            Values vary by provider and are not managed by this service.

            Known values by provider:
            - Chainalysis: severeRisk, highRisk, mediumRisk, lowRisk, noRiskInfo
            - Elliptic: noRiskDetected

            Legacy values (SCREAMING_SNAKE_CASE, may appear in old transactions):
            VERY_HIGH, SEVERE, HIGH, MEDIUM, LOW, NO_RISK_INFO, UNKNOWN
          example: lowRisk
        extendedRisk:
          type: string
          deprecated: true
          description: |
            Deprecated: This field is not currently returned in the API response.
            Use risk instead.
          example: lowRisk
        externalId:
          type: string
          description: External identifier for the screening (provider-specific)
          example: aml_screening_12345
        customerRefId:
          type: string
          description: Customer-provided reference identifier for tracking
          example: customer_ref_789
        refId:
          type: string
          deprecated: true
          description: |
            Deprecated: This field is not currently returned in the API response.
            Internal reference identifier.
          example: ref_12345
        category:
          type: string
          description: |
            Risk category classification.
            Examples: EXCHANGE, GAMBLING, MIXER, DARKNET_SERVICE, SANCTIONED_ENTITY
          example: EXCHANGE
        categoryId:
          type: number
          description: Numeric identifier for the risk category
          example: 5
        destAddress:
          type: string
          description: The destination blockchain address associated with the screening
          example: '0xA2dC2490ED1DcA2D21613508fdb0c82daEAb0715'
        destTag:
          type: string
          description: Destination tag or memo (for chains that support it like XRP, XLM)
          example: memo_12345
        destRecordId:
          type: string
          deprecated: true
          description: |
            Deprecated: This field is not currently returned in the API response.
            The destination record identifier used by the screening provider.
          example: record_001
        addressResolutionSignature:
          type: string
          deprecated: true
          description: |
            Deprecated: This field is not currently returned in the API response.
            Cryptographic signature for address resolution verification.
          example: '0x1234567890abcdef'
        amlResult:
          $ref: '#/components/schemas/AmlResult'
        result:
          $ref: '#/components/schemas/TravelRuleResult'
        detailsMessage:
          type: string
          description: Additional human-readable details or message about the screening result
          example: Travel rule screening completed successfully
        matchedAlert:
          type: object
          description: |
            Information about the AML alert that was matched, if any.
            Contains details about the specific alert that triggered during screening.
        matchedRule:
          type: object
          description: |
            The matched rule information for this screening result.
            Contains details about which screening rule was applied and matched.
        matchedPrescreeningRule:
          $ref: '#/components/schemas/TravelRulePrescreeningRule'
        matchedNoTrmScreeningRule:
          type: object
          description: |
            Matched no-TRM (Travel Rule Message) screening rule details.
            Used when TRLink screening detects a missing TRM scenario.
        customerIntegrationId:
          type: string
          description: Customer integration identifier used by Travel Rule providers
          example: 3fa85f64-5717-4562-b3fc-2c963f66afa6
        customerShortName:
          type: string
          description: Customer short name registered with Travel Rule providers
          example: ACME Corp
        travelRuleMessageId:
          type: string
          description: Travel rule message identifier for linking and tracking across providers
          example: 3fa85f64-5717-4562-b3fc-2c963f66afa6
        providerResponse:
          $ref: '#/components/schemas/ScreeningProviderResponse'
    ComplianceResultStatusesEnum:
      type: string
      description: Status of compliance result screening
      enum:
        - Unknown
        - Stalled
        - Started
        - NetworkConnectionAddressResolve
        - ScreeningPrepare
        - AMLStarted
        - AMLCompleted
        - AMLFailed
        - AMLInBackground
        - TRPreconditionChecks
        - TRStarted
        - TRLinkStarted
        - TRLinkDestinationStarted
        - TRLinkDestinationPrescreenPolicy
        - TRLinkDestinationNoTRMPolicy
        - TRLinkDestinationScreen
        - TRLinkDestinationPostscreenPolicy
        - TRLinkDestinationCompleted
        - TRLinkCompleted
        - TRCompleted
        - TRFailed
        - Completed
        - RegistrationStarted
        - RegistrationWaitForFirstConfirmation
        - AMLRegistrationStarted
        - AMLRegistrationCompleted
        - TRUpdateStarted
        - TRUpdateCompleted
        - UpdateCompleted
        - IncomingStarted
        - IncomingByorkSL
        - IncomingScreeningPrepare
        - IncomingWaitForFirstConfirmation
        - AMLIncomingStarted
        - AMLIncomingCompleted
        - AMLIncomingFailed
        - AMLIncomingInBackground
        - TRIncomingStarted
        - TRIncomingCompleted
        - TRIncomingFailed
        - IncomingCompleted
        - AddressAmlInitiated
        - AddressAmlAddressResolve
        - AddressAmlPrepare
        - AddressAmlProcessing
        - AddressAmlSucceeded
        - AddressAmlFailed
        - AddressAmlCompleted
      example: Completed
    AmlRegistrationResult:
      type: object
      properties:
        provider:
          type: string
        success:
          type: boolean
        timestamp:
          type: number
    TRLinkRegistrationStatus:
      type: string
      description: TRLink registration status
      enum:
        - STARTING
        - PRESCREENED
        - COMPLETED
        - FAILED
        - VOID
      example: COMPLETED
    TRLinkProviderResult:
      type: object
      description: Provider-specific response data wrapper
      properties:
        providerResponse:
          type: object
          description: Raw provider response
    TransactionDirection:
      type: string
      description: Transaction direction
      enum:
        - INBOUND
        - OUTBOUND
      example: OUTBOUND
    AmountRangeMinMax:
      type: object
      description: Amount range with minimum and maximum values
      properties:
        min:
          type: string
          description: Minimum amount
          example: '100'
        max:
          type: string
          description: Maximum amount
          example: '10000'
    TRLinkAmount:
      type: object
      description: TRLink amount definition with range and currency, compatible with TAP format from Policy Engine V2
      properties:
        range:
          $ref: '#/components/schemas/AmountRangeMinMax'
        currency:
          type: string
          description: Currency type
          enum:
            - USD
            - NATIVE
          example: USD
    TRLinkRuleBase:
      type: object
      description: Base interface for TRLink policy rules
      properties:
        customerId:
          type: string
          description: Reference to TrlinkCustomer.id
          example: 3fa85f64-5717-4562-b3fc-2c963f66afa6
        direction:
          $ref: '#/components/schemas/TransactionDirection'
        sourceType:
          $ref: '#/components/schemas/TransferPeerTypeEnum'
        sourceSubType:
          $ref: '#/components/schemas/TransferPeerSubTypeEnum'
        sourceAddress:
          type: string
          description: Source address
          example: 1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa
        destType:
          $ref: '#/components/schemas/TransferPeerTypeEnum'
        destSubType:
          $ref: '#/components/schemas/TransferPeerSubTypeEnum'
        destAddress:
          type: string
          description: Destination address
          example: 1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa
        sourceId:
          type: string
          description: Source ID
          example: '1'
        destId:
          type: string
          description: Destination ID
          example: '1'
        asset:
          type: string
          description: Asset symbol
          example: BTC
        baseAsset:
          type: string
          description: Base asset symbol
          example: USD
        amount:
          $ref: '#/components/schemas/TRLinkAmount'
        networkProtocol:
          type: string
          description: Network protocol
          example: BITCOIN
        operation:
          $ref: '#/components/schemas/TransactionOperationEnum'
        description:
          type: string
          description: Rule description
        isDefault:
          type: boolean
          description: Whether this is a default rule
          default: false
    TRLinkPreScreeningAction:
      type: string
      description: TRLink pre-screening action
      enum:
        - SCREEN
        - PASS
      example: SCREEN
    TRLinkPreScreeningRule:
      type: object
      description: TRLink pre-screening rule definition
      allOf:
        - $ref: '#/components/schemas/TRLinkRuleBase'
        - type: object
          properties:
            action:
              $ref: '#/components/schemas/TRLinkPreScreeningAction'
          required:
            - action
    TRLinkRegistrationResult:
      type: object
      description: TRLink registration result containing status and metadata
      properties:
        status:
          $ref: '#/components/schemas/TRLinkRegistrationStatus'
        provider:
          type: string
          description: The TRLink provider name
          example: SUMSUB
        success:
          type: boolean
          description: Whether the registration was successful
          example: true
        timestamp:
          type: number
          description: Unix timestamp of the registration
          example: 1640995200000
        destRecordId:
          type: string
          description: Destination record identifier
          example: 3fa85f64-5717-4562-b3fc-2c963f66afa6
        travelRuleMessageId:
          type: string
          description: Travel rule message identifier for linking
          example: 3fa85f64-5717-4562-b3fc-2c963f66afa6
        customerIntegrationId:
          type: string
          description: Customer integration identifier
          example: 3fa85f64-5717-4562-b3fc-2c963f66afa6
        customerShortName:
          type: string
          description: Customer short name
          example: ACME Corp
        result:
          $ref: '#/components/schemas/TRLinkProviderResult'
        matchedPrescreeningRule:
          $ref: '#/components/schemas/TRLinkPreScreeningRule'
      required:
        - status
        - timestamp
    TRLinkVerdict:
      type: string
      description: TRLink verdict after screening
      enum:
        - ACCEPT
        - ALERT
        - REJECT
        - WAIT
      example: ACCEPT
    TRLinkTrmScreeningStatus:
      type: string
      description: TRLink TRM screening status
      enum:
        - PENDING
        - ACCEPTED
        - REJECTED
        - FAILED
      example: ACCEPTED
    TRLinkPostScreeningRule:
      type: object
      description: TRLink post-screening rule definition
      allOf:
        - $ref: '#/components/schemas/TRLinkRuleBase'
        - type: object
          properties:
            providerIdent:
              type: string
              description: Provider identifier
              example: sumsub
            trmStatus:
              $ref: '#/components/schemas/TRLinkTrmScreeningStatus'
            validBefore:
              type: number
              description: Unix timestamp when rule expires
              example: 1672531200000
            validAfter:
              type: number
              description: Unix timestamp when rule becomes valid
              example: 1640995200000
            action:
              $ref: '#/components/schemas/TRLinkVerdict'
          required:
            - action
    TRLinkProviderResultWithRule:
      type: object
      description: Provider response and matched rule wrapper for TRLink screening results
      properties:
        providerResponse:
          type: object
          description: Raw provider response
        matchedRule:
          $ref: '#/components/schemas/TRLinkPostScreeningRule'
    TRLinkMissingTrmAction:
      type: string
      description: TRLink missing TRM action
      enum:
        - WAIT
        - REJECT
        - ACCEPT
        - INITIATE_TRM
      example: WAIT
    TRLinkMissingTrmRule:
      type: object
      description: TRLink missing TRM rule definition
      allOf:
        - $ref: '#/components/schemas/TRLinkRuleBase'
        - type: object
          properties:
            validBefore:
              type: number
              description: Unix timestamp when rule expires
              example: 1672531200000
            validAfter:
              type: number
              description: Unix timestamp when rule becomes valid
              example: 1640995200000
            action:
              $ref: '#/components/schemas/TRLinkMissingTrmAction'
          required:
            - action
    TRLinkMissingTrmDecision:
      type: object
      description: Interface for reporting missing TRM screening decisions in ITRLinkResult
      allOf:
        - $ref: '#/components/schemas/TRLinkMissingTrmRule'
        - type: object
          properties:
            source:
              type: string
              description: TRLink missing TRM source
              example: policy
            timestamp:
              type: string
              format: date-time
              description: Timestamp of the decision
            reason:
              type: string
              description: Reason for the decision
              example: Missing travel rule message
          required:
            - source
    TRLinkResult:
      type: object
      description: TRLink screening result
      properties:
        provider:
          type: string
          description: The TRLink provider name
          example: SUMSUB
        timestamp:
          type: number
          description: Unix timestamp of the screening result
          example: 1640995200000
        status:
          type: string
          description: Status of the TRLink screening
          enum:
            - COMPLETED
            - PENDING
            - BYPASSED
            - FAILED
            - FROZEN
        verdict:
          $ref: '#/components/schemas/TRLinkVerdict'
        destAddress:
          type: string
          description: The destination address associated with the TRLink screening
          example: '0xA2dC2490ED1DcA2D21613508fdb0c82daEAb0715'
        destTag:
          type: string
          description: Destination tag for the screening
          example: memo_12345
        bypassReason:
          type: string
          description: Reason for bypassing the TRLink screening
          example: MANUAL
        detailsMessage:
          type: string
          description: Additional details message about the screening result
          example: Screening completed successfully
        customerIntegrationId:
          type: string
          description: Customer integration identifier
          example: 3fa85f64-5717-4562-b3fc-2c963f66afa6
        customerShortName:
          type: string
          description: Customer short name
          example: ACME Corp
        travelRuleMessageId:
          type: string
          description: Travel rule message identifier for linking
          example: 3fa85f64-5717-4562-b3fc-2c963f66afa6
        result:
          $ref: '#/components/schemas/TRLinkProviderResultWithRule'
        matchedPrescreeningRule:
          $ref: '#/components/schemas/TRLinkPreScreeningRule'
        matchedNoTrmScreeningRule:
          $ref: '#/components/schemas/TRLinkMissingTrmDecision'
      required:
        - provider
        - timestamp
        - status
    ComplianceResults:
      type: object
      description: The result of the Compliance AML/Travel Rule screening.
      properties:
        aml:
          $ref: '#/components/schemas/ComplianceScreeningResult'
        tr:
          $ref: '#/components/schemas/ComplianceScreeningResult'
        amlList:
          type: array
          description: The list of all results of the AML screening.
          items:
            $ref: '#/components/schemas/ComplianceScreeningResult'
        status:
          $ref: '#/components/schemas/ComplianceResultStatusesEnum'
        amlRegistration:
          $ref: '#/components/schemas/AmlRegistrationResult'
        trlinkRegistration:
          $ref: '#/components/schemas/TRLinkRegistrationResult'
        trlinkDestinations:
          type: array
          description: The list of TRLink destination screening results.
          items:
            $ref: '#/components/schemas/TRLinkResult'
    ExtraParameters:
      type: object
      description: |
        Additional protocol / operation specific key-value parameters:

        For UTXO-based blockchain input selection, add the key `inputsSelection` with the value set to the [input selection structure.](https://developers.fireblocks.com/reference/transaction-objects#inputsselection) The inputs can be retrieved from the [Retrieve Unspent Inputs endpoint.](https://developers.fireblocks.com/reference/getunspentinputs)

        For `RAW` operations, add the key `rawMessageData` with the value set to the [raw message data structure.](https://developers.fireblocks.com/reference/raw-signing-objects#rawmessagedata)

        For `CONTRACT_CALL` operations, add the key `contractCallData` with the value set to the Ethereum smart contract Application Binary Interface (ABI) payload. The Fireblocks [development libraries](https://developers.fireblocks.com/docs/ethereum-development#convenience-libraries) are recommended for building contract call transactions.
        For **exchange compliance (e.g., Binance) and Travel Rule purposes**, include the key `piiData` containing a **custom JSON structure** with Personally Identifiable Information (PII) relevant to the transaction. This data must be fully **encrypted by the sender** before being submitted to the Fireblocks API. The recommended encryption method is **hybrid encryption** using AES-256-GCM for the payload and RSA-OAEP for key exchange, with the recipient exchange's public key. [development libraries](https://developers.fireblocks.com/docs/a-developers-guide-to-constructing-encrypted-pii-messages-for-binance-via-fireblocks)

        **Note:** `rawMessageData`, `contractCallData`, and `inputsSelection` cannot be used together in the same call.
      additionalProperties: true
      properties:
        nodeControls:
          description: |-
            Configure special node requirements. For routing transactions to a custom node: Set `type` to `NODE_ROUTER` and `tag` to the pre-configured tag value. **For MEV protection:** Set only the `type` property to `MEV` (tag is not required at this stage).
            **Note:** This is a premium feature that should be enabled in your workspace. Please contact your Customer Success Manager/Fireblocks Support for more info.
          anyOf:
            - type: object
              additionalProperties: true
            - enum:
                - null
        rawMessageData:
          description: Object containing messages for raw signing and the algorithm to be used. The value should be set to the [raw message data structure.](https://developers.fireblocks.com/reference/raw-signing-objects#rawmessagedata)
          anyOf:
            - type: object
              additionalProperties: true
            - enum:
                - null
        contractCallData:
          description: Hex encoded contract call data as a string. For `CONTRACT_CALL` operations, the value should be set to the Ethereum smart contract Application Binary Interface (ABI) payload. The Fireblocks [development libraries](https://developers.fireblocks.com/docs/ethereum-development#convenience-libraries) are recommended for building contract call transactions.
          anyOf:
            - type: string
            - enum:
                - null
        programCallData:
          description: BASE64 encoded Solana unsigned serialized transaction object.
          anyOf:
            - type: string
            - enum:
                - null
        inputsSelection:
          description: For UTXO based blockchains, selections of inputs for the transaction. The value should be set to the [input selection structure.](https://developers.fireblocks.com/reference/transaction-objects#inputsselection) The inputs can be retrieved from the [Retrieve Unspent Inputs endpoint.](https://developers.fireblocks.com/reference/get_vault-accounts-vaultaccountid-assetid-unspent-inputs)
          anyOf:
            - type: object
              additionalProperties: true
            - enum:
                - null
        allowBaseAssetAddress:
          description: |-
            Transfers to unmanaged wallets only. When true, if the destination doesn't have a whitelisted address for the requested asset, we'll use the destination's whitelisted address of the base asset (e.g., use the ETH address for an ERC-20). If the requested asset's whitelisted address exists, it is used.
            **Note:** This is a premium feature that should be enabled in your workspace. Please contact your Customer Success Manager or Fireblocks Support for more information.
          anyOf:
            - type: boolean
            - enum:
                - null
        piiData:
          description: For exchange compliance (e.g., Binance) and Travel Rule purposes, contains a custom JSON structure with Personally Identifiable Information (PII) relevant to the transaction. This data must be fully encrypted by the sender before being submitted to the Fireblocks API. The recommended encryption method is hybrid encryption using AES-256-GCM for the payload and RSA-OAEP for key exchange, with the recipient exchange's public key. [Learn more](https://developers.fireblocks.com/docs/a-developers-guide-to-constructing-encrypted-pii-messages-for-binance-via-fireblocks)
          anyOf:
            - type: object
              additionalProperties: true
            - enum:
                - null
    SignedMessage:
      type: object
      description: A list of signed messages returned for raw signing.
      properties:
        content:
          type: string
        algorithm:
          type: string
          enum:
            - MPC_ECDSA_SECP256K1
            - MPC_EDDSA_ED25519
        derivationPath:
          type: array
          items:
            type: number
        signature:
          type: object
          properties:
            fullSig:
              type: string
            r:
              type: string
            s:
              type: string
            v:
              type: number
        publicKey:
          type: string
    SignedMessages:
      type: array
      items:
        $ref: '#/components/schemas/SignedMessage'
    BlockInfo:
      type: object
      description: |-
        The block hash and height of the block that this transaction was mined in.
             **Note**: If an outgoing transaction uses the destinations object with more than one value in the array, blockHash is set to null.
      properties:
        blockHeight:
          type: string
        blockHash:
          type: string
          nullable: true
    FeePayerInfo:
      type: object
      properties:
        feePayerAccountId:
          type: string
          description: The account ID of the fee payer
          example: '123'
    SystemMessageInfo:
      type: object
      properties:
        type:
          type: string
          enum:
            - WARN
            - BLOCK
        message:
          type: string
          description: A response from Fireblocks that communicates a message about the health of the process being performed. If this object is returned with data, you should expect potential delays or incomplete transaction statuses.
          example: Slow transaction processing. Outgoing transactions might be stuck.
    TransactionResponse:
      type: object
      properties:
        id:
          type: string
          description: ID of the transaction.
        externalTxId:
          type: string
          description: Unique transaction ID provided by the user. Fireblocks highly recommends setting an `externalTxId` for every transaction created, to avoid submitting the same transaction twice.
        status:
          type: string
          description: The primary status of the transaction. For details, see [Primary transaction statuses](https://developers.fireblocks.com/reference/primary-transaction-statuses).
        subStatus:
          type: string
          description: See [Transaction substatuses](https://developers.fireblocks.com/reference/transaction-substatuses) for the list of transaction sub statuses.
        txHash:
          type: string
          description: |-
            The hash of the transaction on the blockchain.
             * This parameter exists if at least one of the following conditions is met:

                 1. The transaction’s source type is `UNKNOWN`, `WHITELISTED_ADDRESS`, `NETWORK_CONNECTION`, `ONE_TIME_ADDRESS`, `FIAT_ACCOUNT` or `GAS_STATION`.

                 2. The transaction’s source type is `VAULT` and the status is either: `CONFIRMING`, `COMPLETED`, or was in any of these statuses prior to changing to `FAILED` or `REJECTED`. In some instances, transactions in status `BROADCASTING` will include the txHash as well.

                 3. The transaction’s source type is `EXCHANGE_ACCOUNT` and the transaction’s destination type is `VAULT`, and the status is either: `CONFIRMING`, `COMPLETED`, or was in any of these status prior to changing to `FAILED`.


            * In addition, the following conditions must be met:

                1. The asset is a crypto asset (not fiat).

                2. The transaction operation is not RAW or `TYPED_MESSAGE`.
        operation:
          $ref: '#/components/schemas/GetTransactionOperation'
        note:
          type: string
          description: Custom note, not sent to the blockchain, that describes the transaction at your Fireblocks workspace.
        assetId:
          type: string
          description: The ID of the asset to transfer for `TRANSFER`, `MINT`, `BURN`, `ENABLE_ASSET`, or `STAKE` operations. [See the list of supported assets and their IDs on Fireblocks](https://developers.fireblocks.com/reference/get_supported-assets).
          x-fb-entity: asset
        assetType:
          type: string
          description: Type classification of the asset
          example: ERC20
        source:
          $ref: '#/components/schemas/SourceTransferPeerPathResponse'
        sourceAddress:
          type: string
          description: |-
            For account based assets only, the source address of the transaction.
            **Note:** If the status is `CONFIRMING`, `COMPLETED`, or has been `CONFIRMING`; then moved forward to `FAILED` or `REJECTED`, then this parameter will contain the source address. In any other case, this parameter will be empty.
        tag:
          type: string
          description: Source address tag for XRP, used as memo for EOS/XLM, or Bank Transfer Description for the fiat provider BLINC (by BCB Group).
        destination:
          $ref: '#/components/schemas/DestinationTransferPeerPathResponse'
        destinations:
          type: array
          description: |-
            The transaction’s destinations.
            **Note:** In case the transaction is sent to a single destination, the `destination` parameter is used instead of this.
          items:
            $ref: '#/components/schemas/TransactionResponseDestination'
        destinationAddress:
          type: string
          description: |-
            Address where the asset were transferred.
            Notes:
              - For [Multi destination transactions](https://support.fireblocks.io/hc/en-us/articles/360018447980-Multi-destination-transactions), this parameter will be empty. In this case, you should refer to the destinations field.
              - If the status is `CONFIRMING`, `COMPLETED`, or has been `CONFIRMING`; then moved forward to `FAILED` or `REJECTED`, then this parameter will contain the destination address. In any other case, this parameter will be empty.
        destinationAddressDescription:
          type: string
          description: Description of the address.
        destinationTag:
          type: string
          description: Destination address tag for XRP, used as memo for EOS/XLM, or Bank Transfer Description for the fiat provider BLINC (by BCB Group).
        contractCallDecodedData:
          description: Decoded data for `CONTRACT_CALL` operations. The Fireblocks [development libraries](https://developers.fireblocks.com/docs/ethereum-development#convenience-libraries) are recommended for setting this parameter's value.
          type: object
          properties:
            contractName:
              type: string
            functionCalls:
              type: array
              items:
                type: object
        amountInfo:
          $ref: '#/components/schemas/AmountInfo'
        treatAsGrossAmount:
          type: boolean
          description: |-
            For transactions initiated via this Fireblocks workspace, when set to `true`, the fee is deducted from the requested amount.

            **Note**: This parameter can only be considered if a transaction's asset is a base asset, such as ETH or MATIC. If the asset can't be used for transaction fees, like USDC, this parameter is ignored and the fee is deducted from the relevant base asset wallet in the source account.
        feeInfo:
          $ref: '#/components/schemas/FeeInfo'
        feeCurrency:
          type: string
          description: The asset which was withdrawn to pay the transaction fee, for example ETH for EVM-based blockchains, BTC for Tether Omni.
        networkRecords:
          type: array
          description: In case a single transaction resulted with multiple transfers, for example a result of a contract call, then this parameter specifies each transfer that took place on the blockchain. In case of a single transfer transaction, this parameter is empty.
          items:
            $ref: '#/components/schemas/NetworkRecord'
        createdAt:
          type: number
          description: The transaction’s creation date and time, in unix timestamp.
        lastUpdated:
          type: number
          description: The transaction’s last update date and time, in unix timestamp.
        expiresAt:
          type: number
          description: The transaction’s expiration date and time, in unix timestamp. Only returned for transactions that have an expiration set.
          example: 1735689600000
        createdBy:
          type: string
          description: User ID of the initiator of the transaction.
        signedBy:
          type: array
          description: User ID’s of the signers of the transaction.
          items:
            type: string
        rejectedBy:
          type: string
          description: User ID of the user that rejected the transaction (in case it was rejected).
        authorizationInfo:
          $ref: '#/components/schemas/AuthorizationInfo'
        exchangeTxId:
          type: string
          description: If the transaction originated from an exchange, this is the ID of this transaction at the exchange.
        customerRefId:
          type: string
          description: The ID for AML providers to associate the owner of funds with transactions.
        travelRuleMessageId:
          type: string
          description: The ID of the travel rule message from any travel rule provider. Used for  travel rule supporting functionality to associate transactions with existing  travel rule messages.
          example: trm_12345678-1234-1234-1234-123456789012
        amlScreeningResult:
          $ref: '#/components/schemas/AmlScreeningResult'
        complianceResults:
          $ref: '#/components/schemas/ComplianceResults'
        notBroadcastByFireblocks:
          type: boolean
          description: Indicates the transaction was not broadcast by Fireblocks
          example: false
        dappUrl:
          type: string
          description: DApp URL for Web3 transactions
          example: https://app.uniswap.org
        gasLimit:
          type: string
          description: Gas limit for EVM-based blockchain transactions
          example: '21000'
        blockchainIndex:
          type: string
          description: Blockchain-specific index or identifier for the transaction
          example: 1.1.1
        paidRent:
          type: string
          description: Solana rent payment amount
          example: '0.00203928'
        extraParameters:
          $ref: '#/components/schemas/ExtraParameters'
        signedMessages:
          $ref: '#/components/schemas/SignedMessages'
        numOfConfirmations:
          type: number
          description: The number of confirmations of the transaction. The number will increase until the transaction will be considered completed according to the confirmation policy.
        blockInfo:
          $ref: '#/components/schemas/BlockInfo'
        index:
          type: number
          description: |-
            For UTXO based assets this is the vOut, for Ethereum based, this is the index of the event of the contract call.
             **Note:** This field is not returned if a transaction uses the `destinations` object with more than one value.
        rewardInfo:
          $ref: '#/components/schemas/RewardInfo'
        feePayerInfo:
          $ref: '#/components/schemas/FeePayerInfo'
        systemMessages:
          type: array
          items:
            $ref: '#/components/schemas/SystemMessageInfo'
        addressType:
          type: string
          enum:
            - ''
            - WHITELISTED
            - ONE_TIME
        requestedAmount:
          description: The amount requested by the user. Deprecated - please use the `amountInfo` field for accuracy.
          type: number
          deprecated: true
        amount:
          description: If the transfer is a withdrawal from an exchange, the actual amount that was requested to be transferred. Otherwise, the requested amount. Deprecated - please use the `amountInfo` field for accuracy.
          type: number
          deprecated: true
        netAmount:
          description: The net amount of the transaction, after fee deduction. Deprecated - please use the `amountInfo` field for accuracy.
          type: number
          deprecated: true
        amountUSD:
          description: The USD value of the requested amount. Deprecated - please use the `amountInfo` field for accuracy.
          type: number
          nullable: true
          deprecated: true
        serviceFee:
          description: The total fee deducted by the exchange from the actual requested amount (`serviceFee` = `amount` - `netAmount`). Deprecated - please use the `feeInfo` field for accuracy.
          type: number
          deprecated: true
        fee:
          description: Deprecated - please use the `feeInfo` field for accuracy.
          type: number
          deprecated: true
        networkFee:
          description: The fee paid to the network. Deprecated - please use the `feeInfo` field for accuracy.
          type: number
          deprecated: true
        errorDescription:
          description: The transaction's revert reason. This field will be returned when  `subStatus` =  'SMART_CONTRACT_EXECUTION_FAILED'.
          type: string
        replacedTxHash:
          type: string
          description: if the transaction is a replace by fee (RBF) transaction, this is the hash of the transsaction that was replaced
        nonce:
          type: string
          description: blockchain nonce for the transaction
          example: '11228'
        blockchainInfo:
          type: object
          description: A JSON used to store additional data that is blockchain-specific.
          example:
            evmTransferType: NATIVE
    GetTransactionsResponse:
      type: array
      items:
        $ref: '#/components/schemas/TransactionResponse'
    TransactionOperation:
      type: string
      default: TRANSFER
      enum:
        - TRANSFER
        - BURN
        - CONTRACT_CALL
        - PROGRAM_CALL
        - MINT
        - RAW
        - TYPED_MESSAGE
        - APPROVE
        - ENABLE_ASSET
      description: |
        * `TRANSFER` - The default value for an operation. Transfers funds from one account to another. UTXO blockchains allow multi-input and multi-output transfers. All other blockchains allow transfers with one source address and one destination address.
        * `MINT` - Mints new tokens. Supported for Stellar, Ripple and EVM-based blockchains.
        * `BURN` - Burns tokens. Supported for Stellar, Ripple and EVM-based blockchains.
        * `CONTRACT_CALL` - Calls a smart contract method for web3 operations on any EVM blockchain. The Fireblocks [development libraries](https://developers.fireblocks.com/docs/ethereum-development#convenience-libraries) are recommended for building contract call transactions.
        * `PROGRAM_CALL` - Execute multiple instructions on Solana blockchain. The @solana/web3.js library is recommended for building program call transactions.

        * `TYPED_MESSAGE` - An off-chain message in either Ethereum Personal Message or EIP712 format. Use it to sign specific readable messages that are not actual transactions. [Learn more about typed messages](https://developers.fireblocks.com/docs/typed-message-signing).
        * `RAW` - An off-chain message with no predefined format. Use it to sign any message with your private key, including protocols such as blockchains and custom transaction types that are not natively supported by Fireblocks. [Learn more about raw signing transactions.](https://developers.fireblocks.com/docs/raw-message-signing)
        * `APPROVE` - Enables the approve function for a smart contract or wallet to  withdraw from a designated wallet. [Learn more](https://support.fireblocks.io/hc/en-us/articles/4404616097426-Amount-Cap-for-Approve-transactions).
        * `ENABLE_ASSET` - Algorand, DigitalBits, Solana, and Stellar require an on-chain transaction to create an asset wallet and enable the deposit address. This transaction is automatically created when adding assets on these blockchains at a vault account.
    TransferPeerPathSubType:
      type: string
      enum:
        - BINANCE
        - BINANCEUS
        - BITFINEX
        - BITHUMB
        - BITMEX
        - BITSO
        - BITSTAMP
        - BITTREX
        - BLINC
        - BYBIT
        - CIRCLE
        - COINBASEEXCHANGE
        - COINBASEPRO
        - COINMETRO
        - COINSPRO
        - CRYPTOCOM
        - DERIBIT
        - GEMINI
        - HITBTC
        - HUOBI
        - INDEPENDENTRESERVE
        - KORBIT
        - KRAKEN
        - KRAKENINTL
        - KUCOIN
        - LIQUID
        - OKCOIN
        - OKEX
        - PAXOS
        - POLONIEX
        - External
        - Internal
        - VIRTUAL_ACCOUNT
    SourceTransferPeerPath:
      type: object
      description: The source of the transaction.
      properties:
        type:
          $ref: '#/components/schemas/TransferPeerPathType'
        subType:
          $ref: '#/components/schemas/TransferPeerPathSubType'
        id:
          type: string
        name:
          type: string
        walletId:
          type: string
          format: uuid
        isCollateral:
          type: boolean
          example: true
          description: indicate if the source is collateral account
      required:
        - type
    OneTimeAddress:
      type: object
      properties:
        address:
          type: string
        tag:
          type: string
      required:
        - address
    DestinationTransferPeerPath:
      type: object
      description: The destination of the transaction.
      properties:
        type:
          $ref: '#/components/schemas/TransferPeerPathType'
        subType:
          $ref: '#/components/schemas/TransferPeerPathSubType'
        id:
          type: string
        name:
          type: string
        walletId:
          type: string
          format: uuid
        oneTimeAddress:
          $ref: '#/components/schemas/OneTimeAddress'
        isCollateral:
          type: boolean
          example: true
          description: indicate if the destination is collateral account
      required:
        - type
    TransactionRequestDestination:
      type: object
      properties:
        amount:
          type: string
        destination:
          $ref: '#/components/schemas/DestinationTransferPeerPath'
        travelRuleMessageId:
          type: string
          description: The ID of the travel rule message from any travel rule provider. Used for travel rule supporting functionality to associate transactions with existing travel rule messages.
          example: trm_12345678-1234-1234-1234-123456789012
        customerRefId:
          type: string
          description: The ID for AML providers to associate the owner of funds with transactions.
          example: abcdef
    UtxoSelectionFilters:
      type: object
      description: |
        Narrow the UTXO candidate pool. All specified filters are AND-ed together. This feature is currently in beta and might be subject to changes.
      properties:
        includeAllLabels:
          type: array
          items:
            type: string
          description: Only include UTXOs that have ALL of these labels.
          example:
            - cold-storage
        includeAnyLabels:
          type: array
          items:
            type: string
          description: Only include UTXOs that have at least one of these labels.
          example:
            - vip
            - high-value
        excludeAnyLabels:
          type: array
          items:
            type: string
          description: Exclude UTXOs that have any of these labels.
          example:
            - deprecated
        address:
          type: string
          description: Only include UTXOs from this specific address.
          example: 1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa
        minAmount:
          type: string
          description: Minimum UTXO amount in the asset's base unit (e.g., BTC).
          example: '0.001'
        maxAmount:
          type: string
          description: Maximum UTXO amount in the asset's base unit (e.g., BTC).
          example: '9.999'
    UtxoInput:
      type: object
      properties:
        txHash:
          type: string
          example: b34f0c3ce612f1e5a5c19d6b1e6b5e3e7f1a2b3c4d5e6f7a8b9c0d1e2f3a4b5c
        index:
          type: integer
          description: The output index (vout)
          example: 0
      required:
        - txHash
        - index
    UtxoInputSelection:
      type: object
      description: |
        Explicitly control which UTXOs to include or exclude. This feature is currently in beta and might be subject to changes.
      properties:
        inputsToSpend:
          type: array
          items:
            $ref: '#/components/schemas/UtxoInput'
          description: Force-include specific UTXOs by txHash and index.
        inputsToExclude:
          type: array
          items:
            $ref: '#/components/schemas/UtxoInput'
          description: Exclude specific UTXOs from selection.
        fillFeeForSelectedInputs:
          type: boolean
          description: |
            When true and inputsToSpend is provided, automatically add more UTXOs to cover the transaction fee. Requires inputsToSpend.
          example: true
    UtxoSelectionParams:
      type: object
      description: |
        For UTXO-based blockchains only. Controls which UTXOs are used for automatic selection. Cannot be used together with extraParameters.inputsSelection. This feature is currently in beta and might be subject to changes.
      properties:
        selectionStrategy:
          type: string
          enum:
            - AMOUNT_ASC
            - AMOUNT_DESC
          description: |
            Optional override for the UTXO selection strategy configured at the vault/tenant level.
        filters:
          $ref: '#/components/schemas/UtxoSelectionFilters'
        inputSelection:
          $ref: '#/components/schemas/UtxoInputSelection'
    TravelRuleTransactionBlockchainInfo:
      type: object
      description: Information about the blockchain transaction.
      properties:
        txHash:
          type: string
          description: The hash of the transaction
          example: 6.685730843558756e+76
        origin:
          type: string
          description: The origin address of the transaction
          example: 8.41132469470587e+47
        destination:
          type: string
          description: The destination address of the transaction
          example: 8.41132469470587e+47
    TravelRuleNaturalNameIdentifier:
      type: object
      properties:
        primaryIdentifier:
          type: string
          description: The primary identifier of the name. The value must be encrypted.
          example: QmP6wx8bx3SVNG3hd3SZKnS5pDjUan4y9H1VtyRqu7tsAv
        secondaryIdentifier:
          type: string
          description: The secondary identifier of the name. The value must be encrypted.
          example: QmP6wx8bx3SVNG3hd3SZKnS5pDjUan4y9H1VtyRqu7tsAv
        nameIdentifierType:
          type: string
          description: 'The type of the name identifier. The value must be encrypted. The value must be one of the following: [LEGL, DBA, TRAD, NICK, ALIA, MAID, FORM, PREV, BORN, OTHR].'
          example: QmP6wx8bx3SVNG3hd3SZKnS5pDjUan4y9H1VtyRqu7tsAv
    TravelRuleNaturalPersonNameIdentifier:
      type: object
      properties:
        nameIdentifier:
          type: array
          items:
            $ref: '#/components/schemas/TravelRuleNaturalNameIdentifier'
        localNameIdentifier:
          type: array
          items:
            $ref: '#/components/schemas/TravelRuleNaturalNameIdentifier'
        phoneticNameIdentifier:
          type: array
          items:
            $ref: '#/components/schemas/TravelRuleNaturalNameIdentifier'
    TravelRuleGeographicAddress:
      type: object
      properties:
        streetName:
          type: string
          description: Name of a street or thoroughfare. The value must be encrypted.
          example: QmZGXXsKPk5iPS97LLjXB5e8Qs555ocdzcpbPMXvt84Ji9
        townName:
          type: string
          description: Name of a built-up area, with defined boundaries, and a local government. The value must be encrypted.
          example: QmNkEt9VdnhjefQMXo3ZaZAs765ugoWiazaqcY9skHMjCt
        country:
          type: string
          description: Nation with its own government (ISO-3166 Alpha-2 country code). The value must be encrypted.
          example: QmRGHdoxQfSi6tevyvaYGzs8BVStfqJqEyrMYqUfzXxkmm
        buildingNumber:
          type: string
          description: Number that identifies the position of a building on a street. The value must be encrypted.
          example: QmUFpNkxdsVtebDSUz5eP51kzoysXmqj2gBgeH11PD7SVP
        postCode:
          type: string
          description: Identifier consisting of a group of letters and/or numbers added to a postal address to assist the sorting of mail. The value must be encrypted.
          example: QmTJsK3sc3fPEVwvAp97UUiVoFhjzQhYX3sCda1JxuCnXj
        addressType:
          type: string
          description: 'Specifies the type of address. Acceptable values are: - ''HOME'': Residential, the home address - ''BIZZ'': Business, the business address - ''GEOG'': Geographic, an unspecified physical (geographical) address The value must be encrypted.'
          example: Qmdr9LcChZsoivS6uAhe7Qk7cGLDAx73wBZTVvq4WoU71H
        department:
          type: string
          description: Identification of a division of a large organisation or building. The value must be encrypted.
          example: QmN7fb65x5MyA7RKyhbXaUKvJ7U4Y9eqpEZTmJYpNyEG8
        subDepartment:
          type: string
          description: Identification of a sub-division of a large organisation or building. The value must be encrypted.
          example: QmTkfyGh54tXNqFxyEGK9NyTJZYpQ6RZ9zpNykxykME8s
        buildingName:
          type: string
          description: Name of the building or house. The value must be encrypted.
          example: QmXJfGk85t6RKyhbXaEK9Nz4MEeMKypq6EY9zpJyC9nM9
        floor:
          type: string
          description: Floor or storey within a building. The value must be encrypted.
          example: QmZP5G7fhZpMyQxXnT9KyR6ybXaEM9zpJy4ME9MkTJGE1
        postBox:
          type: string
          description: Numbered box in a post office. The value must be encrypted.
          example: QmTkfYRGK54xFqXyJYNZyE9kY9zpMKytJnXy5z9EME9sJ
        room:
          type: string
          description: Building room number. The value must be encrypted.
          example: QmRYXnT9KyhbXaEMZpMyxMkZ9zpYNYTJ4ME5kCGE7fhMJ
        townLocationName:
          type: string
          description: Specific location name within the town. The value must be encrypted.
          example: QmNpZTyXJXnT9K6EYZpQxYNYMkC5p4kGEfhnkMJzpYT9Jm
        districtName:
          type: string
          description: Identifies a subdivision within a country subdivision. The value must be encrypted.
          example: QmT9p6ERKyNYXnTyhbpMYJ4zpYT9kMJZT9QmEMGZ5kMhCy
        countrySubDivision:
          type: string
          description: Identifies a subdivision of a country such as state, region, or province. The value must be encrypted.
          example: QmK9yTbXaZpMYJYTYp6NT9QmEMGZT9p9kMJfhyGE4Z7k5C
        addressLine:
          type: array
          items:
            type: string
          description: Information that locates and identifies a specific address, presented in free format text. Each item must be encrypted.
          example:
            - QmNp9kMjfhGZ5kMJzpNYXZTy6NQmZYEMGZ4kZT9Y6pNYT
    TravelRuleNationalIdentification:
      type: object
      description: Represents a national identifier for a person or entity
      properties:
        countryOfIssue:
          type: string
          description: Country that issued the national identifier (ISO-3166 Alpha-2 country code). The value must be encrypted.
          example: QmRGHdoxQfSi6tevyvaYGzs8BVStfqJqEyrMYqUfzXxkmm
        nationalIdentifier:
          type: string
          description: National identifier (max 35 characters). The value must be encrypted.
          example: QmdR6qLnZ7Kwf5cBaXG8QFQenEvRg9JNZeoPranVuGd63z
        nationalIdentifierType:
          type: string
          description: 'Type of national identifier. Acceptable values include: - ''PASSPORT'': Passport number - ''NATIONAL_ID'': National identification number - ''TAX_ID'': Tax identification number - ''SOCIAL_SECURITY'': Social security number The value must be encrypted.'
          example: QmUKTg3aFJFhMz1o9gPqA3MgTRwd2LvDLwWTPHYUoMEYVi
        registrationAuthority:
          type: string
          description: Registration authority (format -> RA followed by 6 digits). The value must be encrypted.
          example: QmV9KJMyT9RJzpYfhME5xNCZ4G67fEkzTpRMyJzp9kTNYk
    TravelRuleDateAndPlaceOfBirth:
      type: object
      description: Represents the date and place of birth for a natural person
      properties:
        dateOfBirth:
          type: string
          description: Date of birth. The value must be encrypted.
          example: QmNkEt9VdnhjefQMXo3ZaZAs765ugoWiazaqcY9skHMjCt
        placeOfBirth:
          type: string
          description: Place of birth. The value must be encrypted.
          example: QmNkEt9VdnhjefQMXo3ZaZAs765ugoWiazaqcY9skHMjCt
    TravelRuleNaturalPerson:
      type: object
      properties:
        name:
          type: array
          items:
            $ref: '#/components/schemas/TravelRuleNaturalPersonNameIdentifier'
          description: An array of structured name identifiers for the natural person, referencing the TravelRuleNaturalPersonNameIdentifier schema.
        geographicAddress:
          type: array
          items:
            $ref: '#/components/schemas/TravelRuleGeographicAddress'
          description: An array of geographic addresses associated with the natural person, referencing the TravelRuleGeographicAddress schema.
        nationalIdentification:
          $ref: '#/components/schemas/TravelRuleNationalIdentification'
        dateAndPlaceOfBirth:
          $ref: '#/components/schemas/TravelRuleDateAndPlaceOfBirth'
        customerIdentification:
          type: string
          description: A unique identifier for the customer within the organization's context. The value must be encrypted.
          example: QmTJsK3sc3fPEVwvAp97UUiVoFhjzQhYX3sCda1JxuCnXj
        countryOfResidence:
          type: string
          description: The ISO-3166 Alpha-2 country code of the natural person's residence. The value must be encrypted.
          example: QmTJsK3sc3fPEVwvAp97UUiVoFhjzQhYX3sCda1JxuCnXj
        customerNumber:
          type: string
          description: A distinct identifier that uniquely identifies the customer within the organization. The value must be encrypted.
          example: QmTJsK3sc3fPEVwvAp97UUiVoFhjzQhYX3sCda1JxuCnXj
    TravelRuleLegalPersonNameIdentifier:
      type: object
      properties:
        legalPersonName:
          type: string
          description: Name by which the legal person is known. The value must be encrypted.
          example: QmVXXj5BJchhqQTU27uEkeghYMnxR6aVjZxJP9jS6uCg9Q
        legalPersonNameIdentifierType:
          type: string
          description: 'Specifies the type of name for a legal person. Acceptable values are: - ''REGISTERED'': The official registered name. - ''TRADE'': A trading name or DBA (Doing Business As) name. - ''OTHER'': Any other type of name. The value must be encrypted.'
          example: QmPevsa5xdkxf6Lgt7f9YweRBdgseeAkWVaYyssKF3Q86e
    TravelRuleLegalPerson:
      type: object
      properties:
        name:
          $ref: '#/components/schemas/TravelRuleLegalPersonNameIdentifier'
        geographicAddress:
          type: array
          items:
            $ref: '#/components/schemas/TravelRuleGeographicAddress'
          description: The array of geographic addresses associated with the legal person.
        nationalIdentification:
          $ref: '#/components/schemas/TravelRuleNationalIdentification'
        customerIdentification:
          type: string
          description: A unique identifier that identifies the customer in the organization's context. The value must be encrypted.
          example: QmRY9AA4Uit2JRTxDzfzshrJdTK86Kf5HriA3dXDnihDmy
        customerNumber:
          type: string
          description: A distinct identifier that uniquely identifies the customer within the organization. The value must be encrypted.
          example: QmXvyML3AJUFpBbJqL5NVp7Vn7xNkuedTsSMk93duLCNW8
        countryOfRegistration:
          type: string
          description: The ISO-3166 Alpha-2 country code where the legal person is registered. The value must be encrypted.
          example: QmeoTk6UPruEAYNbJEAHdQYc53ap9BXmpnPMcuvs8wutdr
    TravelRulePerson:
      type: object
      properties:
        naturalPerson:
          $ref: '#/components/schemas/TravelRuleNaturalPerson'
        legalPerson:
          $ref: '#/components/schemas/TravelRuleLegalPerson'
    TravelRulePiiIVMS:
      type: object
      description: Personal identifiable information related to the transaction
      properties:
        originatorPersons:
          type: array
          description: Information about the originator of the transaction
          items:
            $ref: '#/components/schemas/TravelRulePerson'
        beneficiaryPersons:
          type: array
          description: Information about the beneficiary of the transaction
          items:
            $ref: '#/components/schemas/TravelRulePerson'
        accountNumber:
          type: array
          description: Beneficiary account number. The value must be encrypted.
          items:
            type: string
            example: QmNkEt9VdnhjefQMXo3ZaZAs765ugoWiazaqcY9skHMjCt
    TravelRuleOwnershipProof:
      type: object
      description: Ownership proof related to the originator of the transaction.
      properties:
        type:
          type: string
          description: 'The type of ownership proof. Example values: - `eip-191`: Ethereum signature proof - `eip-712`: Ethereum typed data signature proof - `bip-137`: Bitcoin signature proof - `microtransfer`: Microtransaction (Satoshi test) - `screenshot`: Uploaded screenshot of the wallet - `self-declaration`: Checkbox attestation of ownership'
          example: eip-191
        proof:
          type: string
          description: 'The cryptographic signature, transaction hash, or other proof depending on the type. Examples: - For `eip-191`: `0x3dd4a17a...ce4a2bcd1b` - For `microtransfer`: The transaction hash `H3V8GXBy39Dz...tr3TSTkY=`'
          example: 0x3dd4a17a...ce4a2bcd1b
        attestation:
          type: string
          description: 'A human-readable statement of wallet ownership. Required for signature proofs and self-declarations. Examples: - `I certify that ETH account 0x896B...0b9b belongs to me.` - `I hereby declare that the blockchain address 0xa437bEed902AF9338B7DEB23848e195d85019510 is under my control.`'
          example: I certify that ETH account 0x896B...0b9b belongs to me.
        address:
          type: string
          description: 'The wallet address being verified. Examples: - For Ethereum: `0x896B...0b9b` - For Bitcoin: `1442...dxhsQ`'
          example: 0x896B...0b9b
        wallet_provider:
          type: string
          description: 'The wallet provider or method used for verification. Examples: - For Metamask: `Metamask` - For manual signature: `manual`'
          example: Metamask
        url:
          type: string
          description: 'The URL for the uploaded screenshot (for `screenshot` proof types only). Example: `https://example.com/uploaded_image.png`'
          example: https://example.com/uploaded_image.png
        did:
          type: string
          description: The Decentralized Identifier (DID) associated with the ownership proof.
          example: did:key:z6Mkf12345Zabcdef12345
        status:
          type: string
          description: The status of the ownership proof verification.
          example: verified
        confirmed:
          type: boolean
          description: 'Whether the user confirmed ownership of the wallet (for `self-declaration` proofs). Example: `true`'
          example: true
    TravelRuleCreateTransactionRequest:
      type: object
      properties:
        originatorVASPdid:
          type: string
          description: The Decentralized Identifier (DID) of the exchange (VASP) that is sending the virtual assets. This identifier is unique to the exchange and is generated when the exchange's account is  created in the Notabene network.
          example: did:ethr:0x44957e75d6ce4a5bf37aae117da86422c848f7c2
        beneficiaryVASPdid:
          type: string
          description: The Decentralized Identifier (DID) of the exchange (VASP) that is receiving the virtual assets. This identifier is unique to the exchange and is generated when the exchange's account is  created in the Notabene network.
          example: did:ethr:0x17fe2dd11a2daa7f6c1fdf22532a4763f963aea6
        originatorVASPname:
          type: string
          description: The name of the VASP acting as the transaction originator.
          example: Originator VASP Ltd.
        beneficiaryVASPname:
          type: string
          description: The name of the VASP acting as the transaction beneficiary.
          example: Beneficiary VASP Inc.
        beneficiaryVASPwebsite:
          type: string
          description: The website of the VASP acting as the transaction beneficiary.
          example: https://www.beneficiaryvasp.com
        transactionBlockchainInfo:
          $ref: '#/components/schemas/TravelRuleTransactionBlockchainInfo'
        originator:
          $ref: '#/components/schemas/TravelRulePiiIVMS'
        beneficiary:
          $ref: '#/components/schemas/TravelRulePiiIVMS'
        encrypted:
          type: string
          description: Encrypted data related to the transaction.
          example: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...
        protocol:
          type: string
          enum:
            - IVMS101
            - TRLight
            - TRP
            - OpenVASP
            - GTR
          description: The protocol used to perform the travel rule.
          example: IVMS101
        targetProtocol:
          type: string
          description: The target protocol for GTR (Global Travel Rule) transfers.
          example: GTR
        skipBeneficiaryDataValidation:
          type: boolean
          description: Whether to skip validation of beneficiary data.
          example: false
        travelRuleBehavior:
          type: boolean
          description: Whether to check if the transaction complies with the travel rule in the beneficiary VASP's jurisdiction.
          example: true
        originatorRef:
          type: string
          description: A reference ID related to the originator of the transaction.
          example: ORG123456
        beneficiaryRef:
          type: string
          description: A reference ID related to the beneficiary of the transaction.
          example: BEN654321
        travelRuleBehaviorRef:
          type: string
          description: A reference ID related to the travel rule behavior.
          example: TRB987654
        originatorProof:
          $ref: '#/components/schemas/TravelRuleOwnershipProof'
        beneficiaryProof:
          $ref: '#/components/schemas/TravelRuleOwnershipProof'
        beneficiaryDid:
          type: string
          description: |-
            The Decentralized Identifier (DID) of the person at the receiving exchange (VASP).  This identifier is generated when the customer is registered in the Notabene network,  or automatically created based on the `beneficiaryRef`.  - If neither `beneficiaryRef` nor `beneficiaryDid` is provided in the `txCreate` payload, 
              a new random DID is generated for every transaction.
          example: did:key:z6Mkf67890Zghijkl67890
        originatorDid:
          type: string
          description: |-
            The Decentralized Identifier (DID) of the person at the exchange (VASP) who is requesting the withdrawal. This identifier is generated when the customer is registered in the Notabene network or automatically created based on the `originatorRef`.  - If neither `originatorRef` nor `originatorDid` is provided in the `txCreate` payload, 
              a new random DID is generated for every transaction.
          example: did:key:z6Mkf12345Zabcdef12345
        isNonCustodial:
          type: boolean
          description: Indicates if the transaction involves a non-custodial wallet.
          example: true
      required:
        - originator
        - beneficiary
    TransactionConfigurations:
      type: object
      properties:
        expiresAfterSeconds:
          type: number
          description: The number of seconds the transaction is valid for before it expires. After the specified duration, the transaction will expire if it has not been broadcasted.
          minimum: 300
          maximum: 86400
          example: 3600
    TransactionRequest:
      type: object
      properties:
        operation:
          $ref: '#/components/schemas/TransactionOperation'
        note:
          type: string
          description: Custom note, not sent to the blockchain, to describe the transaction at your Fireblocks workspace.
          example: Ticket 123
        externalTxId:
          type: string
          description: |-
            This parameter allows you to add a unique ID of your own to help prevent duplicate transactions. No specific format is required for this parameter.
            After you submit a transaction with an external ID, Fireblocks will automatically reject all future transactions with the same ID. Using an external ID primarily helps in situations where, even though a submitted transaction responds with an error due to an internet outage,  the transaction was still sent to and processed on the blockchain.  Use the [Get a specific transaction by external transaction ID](https://developers.fireblocks.com/reference/gettransactionbyexternalid)  endpoint to validate whether these transactions have been processed.
          example: 00000000-0000-0000-0000-000000000000
        assetId:
          type: string
          description: The ID of the asset to transfer, for `TRANSFER`, `MINT` or `BURN` operations. [See the list of supported assets and their IDs on Fireblocks.](https://developers.fireblocks.com/reference/gettrlinksupportedasset#/)
          x-fb-entity: asset
          example: ETH
        source:
          $ref: '#/components/schemas/SourceTransferPeerPath'
        destination:
          $ref: '#/components/schemas/DestinationTransferPeerPath'
        destinations:
          type: array
          description: For UTXO based blockchains, you can send a single transaction to multiple destinations.
          items:
            $ref: '#/components/schemas/TransactionRequestDestination'
        amount:
          description: For `TRANSFER` operations, the requested amount to transfer, in the asset’s unit. Fireblocks recommends using a numeric string for accurate precision. Although a number input exists, it is deprecated.
          oneOf:
            - type: string
              description: Numeric string (recommended)
              example: '0.02'
            - type: number
              description: Number (deprecated)
              example: 0.02
        treatAsGrossAmount:
          type: boolean
          description: |-
            "When set to `true`, the fee will be deducted from the requested amount."

            **Note**: This parameter can only be considered if a transaction’s asset is a base asset, such as ETH or MATIC. If the asset can’t be used for transaction fees, like USDC, this parameter is ignored and the fee is deducted from the relevant base asset wallet in the source account.
          example: false
        forceSweep:
          type: boolean
          description: |-
            For Polkadot, Kusama and Westend transactions only. When set to true, Fireblocks will empty the asset wallet.

               **Note:** If set to true when the source account is exactly 1 DOT, the transaction will fail. Any amount more or less than 1 DOT succeeds. This is a Polkadot blockchain limitation.
          example: false
        feeLevel:
          type: string
          description: For UTXO, EVM-based, or Solana blockchains only. Defines the blockchain fee level which will be payed for the transaction. Alternatively, specific fee estimation parameters exist below.
          enum:
            - LOW
            - MEDIUM
            - HIGH
          example: MEDIUM
        fee:
          description: For UTXO-based blockchains, the fee per bytes in the asset’s smallest unit (Satoshi, Latoshi, etc.).  For Ripple, the fee for the transaction. Fireblocks recommends using a numeric string for accurate precision. Although a number input exists, it is deprecated.
          oneOf:
            - type: string
              description: Numeric string (recommended)
            - type: number
              description: Number (deprecated)
        priorityFee:
          description: For Ethereum-based blockchains only, the fee for EIP-1559 transaction pricing mechanism. Value is in Gwei.  Fireblocks recommends using a numeric string for accurate precision. Although a number input exists, it is deprecated.
          oneOf:
            - type: string
              description: Numeric string (recommended)
              example: '2'
            - type: number
              description: Number (deprecated)
              example: 2
        failOnLowFee:
          type: boolean
          description: When set to `true`, in case the current `MEDIUM` fee level is higher than the one specified in the transaction, the transaction will fail to avoid getting stuck with no confirmations.
        maxFee:
          description: The maximum fee (gas price or fee per byte) that should be payed for the transaction.  In case the current value of the requested `feeLevel` is higher than this requested maximum fee.  Represented by a numeric string for accurate precision.
          type: string
          example: '120'
        maxTotalFee:
          description: For BTC-based blockchains only. The maximum fee (in the units of the fee-paying asset) that should be paid for the transaction.
          type: string
          example: '88'
        gasLimit:
          description: 'For EVM-based blockchains only. Units of gas required to process the transaction. Note: Only two of the three arguments can be specified in a single transaction: `gasLimit`, `gasPrice` and `networkFee`. Fireblocks recommends using a numeric string for accurate precision. Although a number input exists, it is deprecated.'
          oneOf:
            - type: string
              description: Numeric string (recommended)
              example: '21000'
            - type: number
              description: Number (deprecated)
              example: 21000
        gasPrice:
          description: 'For non-EIP-1559, EVM-based transactions. Price per gas unit (in Ethereum this is specified in Gwei).  Note: Only two of the three arguments can be specified in a single transaction: `gasLimit`, `gasPrice` and `networkFee`. Fireblocks recommends using a numeric string for accurate precision.  Although a number input exists, it is deprecated.'
          oneOf:
            - type: string
              description: Numeric string (recommended)
            - type: number
              description: Number (deprecated)
        networkFee:
          description: |-
            For EVM-based blockchains only. The total transaction fee in the blockchain’s largest unit. Note: Only two of the three arguments can be specified in a single transaction: `gasLimit`, `gasPrice` and `networkFee`. Fireblocks recommends using a numeric string for accurate precision. Although a number input exists, it is deprecated. - The transaction blockchain fee.
            - For Ethereum, you can't pass gasPrice, gasLimit and networkFee all together.
            - A numeric value representation is required.
          oneOf:
            - type: string
              description: Numeric string (recommended)
            - type: number
              description: Number (deprecated)
        replaceTxByHash:
          type: string
          description: For EVM-based blockchains only. In case a transaction is stuck, specify the hash of the stuck transaction to replace it by this transaction with a higher fee, or to replace it with this transaction with a zero fee and drop it from the blockchain.
          example: 00000000-0000-0000-0000-000000000000
        extraParameters:
          $ref: '#/components/schemas/ExtraParameters'
        utxoSelectionParams:
          $ref: '#/components/schemas/UtxoSelectionParams'
        customerRefId:
          type: string
          description: The ID for AML providers to associate the owner of funds with transactions.
          example: abcdef
        travelRuleMessage:
          $ref: '#/components/schemas/TravelRuleCreateTransactionRequest'
        travelRuleMessageId:
          type: string
          description: The ID of the travel rule message from any travel rule provider. Used for travel rule supporting functionality to associate transactions with existing travel rule messages.
          example: trm_12345678-1234-1234-1234-123456789012
        autoStaking:
          type: boolean
          description: This feature is no longer supported.
          deprecated: true
        networkStaking:
          deprecated: true
          description: This feature is no longer supported.
          oneOf:
            - type: string
              description: Numeric string (recommended)
            - type: number
              description: Number (deprecated)
        cpuStaking:
          deprecated: true
          description: This feature is no longer supported.
          oneOf:
            - type: string
              description: Numeric string (recommended)
            - type: number
              description: Number (deprecated)
        useGasless:
          type: boolean
          description: '- Override the default gasless configuration by sending true\false'
        configurations:
          $ref: '#/components/schemas/TransactionConfigurations'
    CreateTransactionResponse:
      type: object
      properties:
        id:
          type: string
          description: The ID of the transaction.
        status:
          type: string
          description: The primary status of the transaction. For details, see [Primary transaction statuses.] (https://developers.fireblocks.com/reference/primary-transaction-statuses)
        systemMessages:
          type: array
          items:
            $ref: '#/components/schemas/SystemMessageInfo'
    TransactionFee:
      type: object
      properties:
        feePerByte:
          type: string
        gasPrice:
          type: number
        gasLimit:
          type: string
        networkFee:
          type: string
        baseFee:
          description: (optional) Base Fee according to EIP-1559 (ETH assets)
          type: number
        priorityFee:
          description: (optional) Priority Fee according to EIP-1559 (ETH assets)
          type: number
        maxFeePerGasDelta:
          description: Max Fee Per Gas Delta added only for EIP-1559 (ETH assets)
          type: string
        l1Fee:
          description: Layer 1 fee for Layer 2 chains
          type: string
    FeeBreakdown:
      type: object
      description: Fee breakdown details for a transaction estimate
      properties:
        baseFee:
          type: string
          description: Base fee component
        priorityFee:
          type: string
          description: Priority fee component
        rent:
          type: string
          description: Rent fee for account creation/storage (Solana-specific, optional)
        totalFee:
          type: string
          description: Total fee amount
    EstimatedFeeDetails:
      type: object
      description: Optional detailed fee breakdown for high/medium/low estimates
      properties:
        low:
          $ref: '#/components/schemas/FeeBreakdown'
        medium:
          $ref: '#/components/schemas/FeeBreakdown'
        high:
          $ref: '#/components/schemas/FeeBreakdown'
    EstimatedTransactionFeeResponse:
      type: object
      properties:
        low:
          $ref: '#/components/schemas/TransactionFee'
        medium:
          $ref: '#/components/schemas/TransactionFee'
        high:
          $ref: '#/components/schemas/TransactionFee'
        feeDetails:
          $ref: '#/components/schemas/EstimatedFeeDetails'
      required:
        - low
        - medium
        - high
    SetConfirmationsThresholdRequest:
      type: object
      properties:
        numOfConfirmations:
          type: number
    SetConfirmationsThresholdResponse:
      type: object
      properties:
        success:
          type: boolean
        transactions:
          type: array
          items:
            type: string
    DropTransactionRequest:
      type: object
      properties:
        txId:
          type: string
        feeLevel:
          type: string
        gasPrice:
          type: string
    DropTransactionResponse:
      type: object
      properties:
        txStatus:
          type: string
        txId:
          type: string
        replacedTxHash:
          type: string
    CancelTransactionResponse:
      type: object
      properties:
        success:
          type: boolean
    FreezeTransactionResponse:
      type: object
      properties:
        success:
          type: boolean
    UnfreezeTransactionResponse:
      type: object
      properties:
        success:
          type: boolean
    ValidateAddressResponse:
      type: object
      properties:
        isValid:
          type: boolean
        isActive:
          type: boolean
        requiresTag:
          type: boolean
    NetworkFee:
      type: object
      properties:
        feePerByte:
          type: string
        gasPrice:
          type: string
        networkFee:
          type: string
        baseFee:
          description: (optional) Base Fee according to EIP-1559 (ETH assets)
          type: string
        priorityFee:
          description: (optional) Priority Fee according to EIP-1559 (ETH assets)
          type: string
    EstimatedNetworkFeeResponse:
      type: object
      properties:
        low:
          $ref: '#/components/schemas/NetworkFee'
        medium:
          $ref: '#/components/schemas/NetworkFee'
        high:
          $ref: '#/components/schemas/NetworkFee'
      required:
        - low
        - medium
        - high
    PaymentAccountType:
      type: string
      enum:
        - VAULT_ACCOUNT
        - EXCHANGE_ACCOUNT
        - FIAT_ACCOUNT
    PaymentAccount:
      type: object
      properties:
        id:
          type: string
        type:
          $ref: '#/components/schemas/PaymentAccountType'
      required:
        - id
        - type
    PayeeAccountType:
      type: string
      enum:
        - VAULT_ACCOUNT
        - EXCHANGE_ACCOUNT
        - INTERNAL_WALLET
        - EXTERNAL_WALLET
        - NETWORK_CONNECTION
        - FIAT_ACCOUNT
      description: "- VAULT_ACCOUNT  \ta native Fireblocks vault account\n- EXCHANGE_ACCOUNT \ta third-party exchange account\n- INTERNAL_WALLET \ta whitelisted address marked as internal to the workspace/organization\n- EXTERNAL_WALLET\ta whitelisted address marked as external\n- NETWORK_CONNECTION\ta member of the Fireblocks network\n- FIAT_ACCOUNT\ta third-party account of a fiat bank (Signature, BCB, etc)\n"
    PayeeAccount:
      type: object
      properties:
        id:
          type: string
        type:
          $ref: '#/components/schemas/PayeeAccountType'
      required:
        - id
        - type
    InstructionAmount:
      type: object
      properties:
        amount:
          type: string
        assetId:
          type: string
      required:
        - amount
        - assetId
    PayoutInstruction:
      type: object
      properties:
        id:
          type: string
        payeeAccount:
          $ref: '#/components/schemas/PayeeAccount'
        amount:
          $ref: '#/components/schemas/InstructionAmount'
      required:
        - amount
        - payeeAccount
    CreatePayoutRequest:
      type: object
      properties:
        paymentAccount:
          $ref: '#/components/schemas/PaymentAccount'
        instructionSet:
          type: array
          items:
            $ref: '#/components/schemas/PayoutInstruction'
      required:
        - paymentAccount
        - instructionSet
    PaymentAccountResponse:
      type: object
      properties:
        id:
          type: string
        type:
          $ref: '#/components/schemas/PaymentAccountType'
    PayoutState:
      type: string
      enum:
        - CREATED
        - FILE_FOUND
        - REQUESTED
        - TRANSLATED
        - PROCESSING
        - SUBMITTED
        - FINALIZED
        - INSUFFICIENT_BALANCE
        - FAILED
      description: |
        - CREATED - payout instruction set created with all its details
        - FILE_FOUND - new file found in the FTP
        - REQUESTED - payout requested with all its details
        - TRANSLATED - payout instruction account IDs identified and translated
        - PROCESSING - payout instruction set executed and is processing
        - SUBMITTED - transactions submitted for payout instructions
        - FINALIZED - payout finished processing, all transactions processed successfully
        - INSUFFICIENT_BALANCE - insufficient balance in the payment account (can be a temporary state)
        - FAILED - one or more of the payout instructions failed
    PayoutStatus:
      type: string
      enum:
        - REGISTERED
        - VERIFYING
        - IN_PROGRESS
        - DONE
        - INSUFFICIENT_BALANCE
        - FAILED
      description: "- REQUESTED\tpayout requested with all its details\n- VERIFIED\tpayout instruction set details were verified\n- PROCESSING\tpayout instruction set executed and is processing\n- FINALIZED\tpayout done (all payout instructions completed successfully)\n- INSUFFICIENT_BALANCE\tinsufficient balance in the payment account (can be a temporary state)\n- FAILED\tone or more of the payout instructions failed\n"
    PayoutInitMethod:
      type: string
      enum:
        - FILE
        - API
    PayeeAccountResponse:
      type: object
      properties:
        id:
          type: string
        type:
          $ref: '#/components/schemas/PayeeAccountType'
    PayoutInstructionState:
      type: string
      enum:
        - NOT_STARTED
        - TRANSACTION_SENT
        - COMPLETED
        - FAILED
        - TRANSLATION_ERROR
        - SKIPPED
      description: "- NOT_STARTED\t- waiting to start\n- TRANSACTION_SENT - an underlying transaction was sent\n- COMPLETED\t- completed successfully\n- FAILED - failed\n- TRANSLATION_ERROR -lookup of the destination failed (due to changes in the underlying whitelisted external wallet or similar)\n- SKIPPED- no transaction(s) created for this instruction\n"
    Transaction:
      type: object
      properties:
        id:
          type: string
        state:
          type: string
          enum:
            - SUBMITTED
            - QUEUED
            - PENDING_AUTHORIZATION
            - PENDING_SIGNATURE
            - BROADCASTING
            - PENDING_3RD_PARTY_MANUAL_APPROVAL
            - PENDING_3RD_PARTY
            - PENDING
            - CONFIRMING
            - CONFIRMED
            - COMPLETED
            - PARTIALLY_COMPLETED
            - PENDING_AML_SCREENING
            - CANCELLING
            - CANCELLED
            - REJECTED
            - BLOCKED
            - FAILED
            - TIMEOUT
        timestamp:
          type: number
          format: date-time
        instructionId:
          type: string
      required:
        - id
        - state
    PayoutInstructionResponse:
      type: object
      properties:
        id:
          type: string
        payeeAccount:
          $ref: '#/components/schemas/PayeeAccountResponse'
        amount:
          $ref: '#/components/schemas/InstructionAmount'
        state:
          $ref: '#/components/schemas/PayoutInstructionState'
        transactions:
          type: array
          items:
            $ref: '#/components/schemas/Transaction'
      required:
        - amount
        - payeeAccount
        - state
        - transactions
    PayoutResponse:
      type: object
      properties:
        payoutId:
          type: string
        paymentAccount:
          $ref: '#/components/schemas/PaymentAccountResponse'
        createdAt:
          type: number
        state:
          $ref: '#/components/schemas/PayoutState'
        status:
          $ref: '#/components/schemas/PayoutStatus'
        reasonOfFailure:
          type: string
          description: |
            - INSUFFICIENT_BALANCE
            - SOURCE_TRANSLATION
            - SOURCE_NOT_UNIQUE
            - SOURCE_NOT_FOUND
            - SOURCE_TYPE_NOT_SUPPORTED
            - EMPTY_SOURCE
            - DESTINATION_TRANSLATION
            - DESTINATION_NOT_UNIQUE
            - DESTINATION_NOT_FOUND
            - EMPTY_DESTINATION
            - PARSING
            - UNKNOWN
            - FIREBLOCKS_CLIENT
            - TRANSACTION_SUBMISSION
        initMethod:
          $ref: '#/components/schemas/PayoutInitMethod'
        instructionSet:
          type: array
          items:
            $ref: '#/components/schemas/PayoutInstructionResponse'
        reportUrl:
          type: string
      required:
        - payoutId
        - createdAt
        - state
        - status
        - paymentAccount
        - instructionSet
    ErrorResponse:
      type: object
      properties:
        error:
          type: object
          properties:
            type:
              type: string
              enum:
                - INTERNAL
                - AUTHENTICATION
                - AUTHORIZATION
                - VALIDATION
                - NOT_FOUND
                - UNPROCESSABLE_ENTITY
                - FORBIDDEN
            message:
              type: string
          required:
            - type
            - message
      required:
        - error
    DispatchPayoutResponse:
      type: object
      properties:
        payoutId:
          type: string
      required:
        - payoutId
    PreScreening:
      type: object
      properties:
        enabled:
          type: boolean
      required:
        - enabled
    ConversionOperationType:
      type: string
      enum:
        - CONVERSION
    ConversionOperationConfigParams:
      type: object
      properties:
        amount:
          type: string
        accountId:
          type: string
        srcAssetId:
          type: string
        destAssetId:
          type: string
        slippageBasisPoints:
          type: integer
          minimum: 0
          maximum: 10000
      required:
        - destAssetId
    CreateConversionConfigOperationRequest:
      type: object
      properties:
        type:
          $ref: '#/components/schemas/ConversionOperationType'
        params:
          $ref: '#/components/schemas/ConversionOperationConfigParams'
      required:
        - type
        - params
    TransferOperationType:
      type: string
      enum:
        - TRANSFER
    AccountType:
      type: string
      enum:
        - EXCHANGE_ACCOUNT
        - UNMANAGED_WALLET
        - VAULT_ACCOUNT
        - NETWORK_CONNECTION
        - FIAT_ACCOUNT
    Account:
      type: object
      properties:
        accountId:
          type: string
        accountType:
          $ref: '#/components/schemas/AccountType'
      required:
        - accountId
        - accountType
    OneTimeAddressAccount:
      type: object
      properties:
        oneTimeAddress:
          type: string
        tag:
          type: string
      required:
        - oneTimeAddress
    Destination:
      oneOf:
        - $ref: '#/components/schemas/Account'
        - $ref: '#/components/schemas/OneTimeAddressAccount'
    TransferOperationConfigParams:
      type: object
      properties:
        amount:
          type: string
        assetId:
          type: string
        source:
          $ref: '#/components/schemas/Account'
        destination:
          $ref: '#/components/schemas/Destination'
      required:
        - destination
    CreateTransferConfigOperationRequest:
      type: object
      properties:
        type:
          $ref: '#/components/schemas/TransferOperationType'
        params:
          $ref: '#/components/schemas/TransferOperationConfigParams'
      required:
        - type
        - params
    DisbursementOperationType:
      type: string
      enum:
        - DISBURSEMENT
    DisbursementAmountInstruction:
      type: object
      properties:
        payeeAccount:
          $ref: '#/components/schemas/Destination'
        assetId:
          type: string
        amount:
          type: string
      required:
        - payeeAccount
        - assetId
        - amount
    DisbursementPercentageInstruction:
      type: object
      properties:
        payeeAccount:
          $ref: '#/components/schemas/Destination'
        assetId:
          type: string
        percentage:
          type: string
      required:
        - payeeAccount
        - assetId
        - percentage
    DisbursementInstruction:
      oneOf:
        - $ref: '#/components/schemas/DisbursementAmountInstruction'
        - $ref: '#/components/schemas/DisbursementPercentageInstruction'
    DisbursementOperationConfigParams:
      type: object
      properties:
        paymentAccount:
          $ref: '#/components/schemas/Account'
        instructionSet:
          type: array
          items:
            $ref: '#/components/schemas/DisbursementInstruction'
      required:
        - instructionSet
    CreateDisbursementConfigOperationRequest:
      type: object
      properties:
        type:
          $ref: '#/components/schemas/DisbursementOperationType'
        params:
          $ref: '#/components/schemas/DisbursementOperationConfigParams'
      required:
        - type
        - params
    CreateConfigOperationRequest:
      oneOf:
        - $ref: '#/components/schemas/CreateConversionConfigOperationRequest'
        - $ref: '#/components/schemas/CreateTransferConfigOperationRequest'
        - $ref: '#/components/schemas/CreateDisbursementConfigOperationRequest'
    CorrelationData:
      x-internal: true
      oneOf:
        - type: object
          additionalProperties:
            type: string
        - type: string
    CreateWorkflowConfigurationRequest:
      type: object
      x-internal: true
      properties:
        configName:
          type: string
        preScreening:
          $ref: '#/components/schemas/PreScreening'
        configOperations:
          type: array
          items:
            $ref: '#/components/schemas/CreateConfigOperationRequest'
        externalCorrelationData:
          $ref: '#/components/schemas/CorrelationData'
      required:
        - configName
        - configOperations
    WorkflowConfigStatus:
      type: string
      enum:
        - PENDING
        - VALIDATION_IN_PROGRESS
        - VALIDATION_FAILED
        - READY_FOR_EXECUTION
    ConfigOperationStatus:
      type: string
      enum:
        - PENDING
        - VALIDATION_IN_PROGRESS
        - READY_FOR_EXECUTION
        - VALIDATION_FAILED
    ConversionValidationFailure:
      type: object
      properties:
        reason:
          type: string
          enum:
            - ACCOUNT_NOT_FOUND
            - ACCOUNT_TYPE_NOT_SUPPORTED
            - INSUFFICIENT_BALANCE
            - ASSET_NOT_FOUND
            - ASSETS_CONTINUITY_MISMATCH
            - EXCHANGE_BASKETS_MISMATCH
            - ACCOUNTS_CONTINUITY_MISMATCH
            - ONE_TIME_ADDRESS_CONTINUITY_NOT_ALLOWED
            - EQUAL_ACCOUNTS_NOT_ALLOWED
            - EQUAL_ASSETS_NOT_ALLOWED
            - INVALID_AMOUNT
            - UNMANAGED_WALLET_AS_SOURCE_NOT_ALLOWED
            - MANAGED_OPERATION_PARAMS_INVALID_SCHEMA
            - ACCOUNT_IS_NOT_EXCHANGE
            - UNSUPPORTED_TRADING_METHOD
            - ASSETS_CAN_NOT_CONVERTED
        data:
          type: object
          additionalProperties: {}
      required:
        - reason
    ConversionConfigOperation:
      type: object
      properties:
        operationId:
          type: string
        type:
          $ref: '#/components/schemas/ConversionOperationType'
        params:
          $ref: '#/components/schemas/ConversionOperationConfigParams'
        status:
          $ref: '#/components/schemas/ConfigOperationStatus'
        validationFailure:
          $ref: '#/components/schemas/ConversionValidationFailure'
      required:
        - operationId
        - type
        - params
        - status
    TransferValidationFailure:
      type: object
      properties:
        reason:
          type: string
          enum:
            - ACCOUNT_NOT_FOUND
            - ACCOUNT_TYPE_NOT_SUPPORTED
            - INSUFFICIENT_BALANCE
            - ASSET_NOT_FOUND
            - ASSETS_CONTINUITY_MISMATCH
            - EXCHANGE_BASKETS_MISMATCH
            - ACCOUNTS_CONTINUITY_MISMATCH
            - ONE_TIME_ADDRESS_CONTINUITY_NOT_ALLOWED
            - EQUAL_ACCOUNTS_NOT_ALLOWED
            - EQUAL_ASSETS_NOT_ALLOWED
            - INVALID_AMOUNT
            - UNMANAGED_WALLET_AS_SOURCE_NOT_ALLOWED
            - MANAGED_OPERATION_PARAMS_INVALID_SCHEMA
        data:
          type: object
          additionalProperties: true
      required:
        - reason
    TransferConfigOperation:
      type: object
      properties:
        operationId:
          type: string
        type:
          $ref: '#/components/schemas/TransferOperationType'
        params:
          $ref: '#/components/schemas/TransferOperationConfigParams'
        status:
          $ref: '#/components/schemas/ConfigOperationStatus'
        validationFailure:
          $ref: '#/components/schemas/TransferValidationFailure'
      required:
        - operationId
        - type
        - params
        - status
    DisbursementValidationFailure:
      type: object
      properties:
        reason:
          type: string
          enum:
            - ACCOUNT_NOT_FOUND
            - ACCOUNT_TYPE_NOT_SUPPORTED
            - INSUFFICIENT_BALANCE
            - ASSET_NOT_FOUND
            - ASSETS_CONTINUITY_MISMATCH
            - EXCHANGE_BASKETS_MISMATCH
            - ACCOUNTS_CONTINUITY_MISMATCH
            - ONE_TIME_ADDRESS_CONTINUITY_NOT_ALLOWED
            - EQUAL_ACCOUNTS_NOT_ALLOWED
            - EQUAL_ASSETS_NOT_ALLOWED
            - INVALID_AMOUNT
            - UNMANAGED_WALLET_AS_SOURCE_NOT_ALLOWED
            - MANAGED_OPERATION_PARAMS_INVALID_SCHEMA
            - INSTRUCTIONS_EXCEED_HUNDRED_PERCENT
            - INSTRUCTIONS_ARRAY_EMPTY
        data:
          type: object
          additionalProperties: {}
      required:
        - reason
    DisbursementConfigOperation:
      type: object
      properties:
        operationId:
          type: string
        type:
          $ref: '#/components/schemas/DisbursementOperationType'
        params:
          $ref: '#/components/schemas/DisbursementOperationConfigParams'
        status:
          $ref: '#/components/schemas/ConfigOperationStatus'
        validationFailure:
          $ref: '#/components/schemas/DisbursementValidationFailure'
      required:
        - operationId
        - type
        - params
        - status
    ConfigOperation:
      oneOf:
        - $ref: '#/components/schemas/ConversionConfigOperation'
        - $ref: '#/components/schemas/TransferConfigOperation'
        - $ref: '#/components/schemas/DisbursementConfigOperation'
    WorkflowConfiguration:
      type: object
      x-internal: true
      properties:
        configId:
          type: string
        configName:
          type: string
        preScreening:
          $ref: '#/components/schemas/PreScreening'
        status:
          $ref: '#/components/schemas/WorkflowConfigStatus'
        createdAt:
          type: number
        configOperations:
          type: array
          items:
            $ref: '#/components/schemas/ConfigOperation'
        externalCorrelationData:
          $ref: '#/components/schemas/CorrelationData'
      required:
        - configId
        - configName
        - configOperations
        - createdAt
        - status
    WorkflowConfigurationId:
      type: object
      properties:
        configId:
          type: string
      required:
        - configId
    ConversionOperationExecutionParams:
      type: object
      properties:
        configOperationId:
          type: string
        executionParams:
          type: object
          properties:
            amount:
              type: string
            accountId:
              type: string
            srcAssetId:
              type: string
            destAssetId:
              type: string
            slippageBasisPoints:
              type: integer
              minimum: 0
              maximum: 10000
      required:
        - configOperationId
    TransferOperationExecutionParams:
      type: object
      properties:
        configOperationId:
          type: string
        executionParams:
          type: object
          properties:
            amount:
              type: string
            assetId:
              type: string
            source:
              $ref: '#/components/schemas/Account'
            destination:
              $ref: '#/components/schemas/Destination'
      required:
        - configOperationId
    DisbursementOperationExecutionParams:
      type: object
      properties:
        configOperationId:
          type: string
        executionParams:
          type: object
          properties:
            amount:
              type: string
            paymentAccount:
              $ref: '#/components/schemas/Account'
            instructionSet:
              type: array
              items:
                $ref: '#/components/schemas/DisbursementInstruction'
      required:
        - configOperationId
    CreateWorkflowExecutionRequest:
      type: object
      x-internal: true
      properties:
        configId:
          type: string
        preScreening:
          $ref: '#/components/schemas/PreScreening'
        params:
          type: array
          items:
            anyOf:
              - $ref: '#/components/schemas/ConversionOperationExecutionParams'
              - $ref: '#/components/schemas/TransferOperationExecutionParams'
              - $ref: '#/components/schemas/DisbursementOperationExecutionParams'
        externalCorrelationData:
          $ref: '#/components/schemas/CorrelationData'
      required:
        - configId
        - params
    ConfigConversionOperationSnapshot:
      type: object
      properties:
        operationId:
          type: string
        type:
          $ref: '#/components/schemas/ConversionOperationType'
        params:
          $ref: '#/components/schemas/ConversionOperationConfigParams'
      required:
        - operationId
        - type
        - params
    ConfigTransferOperationSnapshot:
      type: object
      properties:
        operationId:
          type: string
        type:
          $ref: '#/components/schemas/TransferOperationType'
        params:
          $ref: '#/components/schemas/TransferOperationConfigParams'
      required:
        - operationId
        - type
        - params
    ConfigDisbursementOperationSnapshot:
      type: object
      properties:
        operationId:
          type: string
        type:
          $ref: '#/components/schemas/DisbursementOperationType'
        params:
          $ref: '#/components/schemas/DisbursementOperationConfigParams'
      required:
        - operationId
        - type
        - params
    ConfigOperationSnapshot:
      oneOf:
        - $ref: '#/components/schemas/ConfigConversionOperationSnapshot'
        - $ref: '#/components/schemas/ConfigTransferOperationSnapshot'
        - $ref: '#/components/schemas/ConfigDisbursementOperationSnapshot'
    WorkflowConfigurationSnapshot:
      type: object
      x-internal: true
      properties:
        configId:
          type: string
        configName:
          type: string
        createdAt:
          type: number
        configOperations:
          type: array
          items:
            $ref: '#/components/schemas/ConfigOperationSnapshot'
        externalCorrelationData:
          $ref: '#/components/schemas/CorrelationData'
      required:
        - configId
        - configName
        - configOperations
        - createdAt
    ExecutionOperationStatus:
      type: string
      enum:
        - PENDING
        - VALIDATION_IN_PROGRESS
        - VALIDATION_FAILED
        - VALIDATION_COMPLETED
        - PREVIEW_REQUESTED
        - PREVIEW_IN_PROGRESS
        - PREVIEW_FAILED
        - READY_FOR_LAUNCH
        - EXECUTION_REQUESTED
        - EXECUTION_IN_PROGRESS
        - EXECUTION_COMPLETED
        - EXECUTION_FAILED
    ScreeningOperationType:
      type: string
      enum:
        - SCREENING
    ScreeningValidationFailure:
      type: object
      properties:
        reason:
          type: string
          enum:
            - SCREENING_DISABLED_IN_TENANT
        data:
          type: object
          additionalProperties: {}
      required:
        - reason
    ScreeningVerdict:
      type: object
      properties:
        verdict:
          type: string
          enum:
            - PASSED
            - PASSED_WITH_ALERT
            - REJECTED
            - FAILED
            - BYPASSED
        executionOperationId:
          type: string
        account:
          $ref: '#/components/schemas/Destination'
        assetId:
          type: string
        amount:
          type: string
        matchedRule:
          type: object
          properties:
            action:
              type: string
            category:
              type: array
              items:
                type: string
      required:
        - executionOperationId
        - account
        - verdict
        - assetId
        - amount
    ScreeningOperationExecutionOutput:
      type: object
      properties:
        verdicts:
          type: array
          items:
            $ref: '#/components/schemas/ScreeningVerdict'
      required:
        - verdicts
    ScreeningOperationFailure:
      type: object
      properties:
        reason:
          type: string
          enum:
            - AML_PROCESS_FAILED
            - SCREENING_REJECTED
        data:
          $ref: '#/components/schemas/ScreeningOperationExecutionOutput'
      required:
        - reason
    ScreeningOperationExecution:
      type: object
      properties:
        output:
          $ref: '#/components/schemas/ScreeningOperationExecutionOutput'
        startedAt:
          type: number
        finishedAt:
          type: number
        failure:
          $ref: '#/components/schemas/ScreeningOperationFailure'
      required:
        - startedAt
    ExecutionScreeningOperation:
      type: object
      properties:
        operationId:
          type: string
        status:
          $ref: '#/components/schemas/ExecutionOperationStatus'
        operationType:
          $ref: '#/components/schemas/ScreeningOperationType'
        validationFailure:
          $ref: '#/components/schemas/ScreeningValidationFailure'
        execution:
          $ref: '#/components/schemas/ScreeningOperationExecution'
      required:
        - operationId
        - status
        - operationType
    AssetAmount:
      type: object
      properties:
        amount:
          type: string
        assetId:
          type: string
      required:
        - amount
        - assetId
    ConversionOperationPreviewOutput:
      type: object
      properties:
        amount:
          $ref: '#/components/schemas/AssetAmount'
        fee:
          $ref: '#/components/schemas/AssetAmount'
        conversionRate:
          type: string
        timeSeconds:
          type: number
      required:
        - amount
        - fee
        - conversionRate
        - timeSeconds
    ConversionOperationFailure:
      type: object
      properties:
        reason:
          type: string
          enum:
            - INVALID_AMOUNT
            - SLIPPAGE_EXCEEDED
            - AMOUNT_TOO_SMALL
            - INSUFFICIENT_FUNDS
        data:
          type: object
          additionalProperties: {}
      required:
        - reason
    ConversionOperationPreview:
      type: object
      properties:
        input:
          $ref: '#/components/schemas/ConversionOperationConfigParams'
        output:
          $ref: '#/components/schemas/ConversionOperationPreviewOutput'
        failure:
          $ref: '#/components/schemas/ConversionOperationFailure'
      required:
        - input
    ConversionOperationExecutionOutput:
      type: object
      properties:
        amount:
          $ref: '#/components/schemas/AssetAmount'
        fee:
          $ref: '#/components/schemas/AssetAmount'
        conversionRate:
          type: string
      required:
        - amount
        - fee
        - conversionRate
    ConversionOperationExecution:
      type: object
      properties:
        input:
          $ref: '#/components/schemas/ConversionOperationConfigParams'
        output:
          $ref: '#/components/schemas/ConversionOperationExecutionOutput'
        startedAt:
          type: number
        finishedAt:
          type: number
        failure:
          $ref: '#/components/schemas/ConversionOperationFailure'
      required:
        - input
        - startedAt
    ExecutionConversionOperation:
      type: object
      properties:
        operationId:
          type: string
        status:
          $ref: '#/components/schemas/ExecutionOperationStatus'
        validationFailure:
          $ref: '#/components/schemas/ConversionValidationFailure'
        operationType:
          $ref: '#/components/schemas/ConversionOperationType'
        preview:
          $ref: '#/components/schemas/ConversionOperationPreview'
        execution:
          $ref: '#/components/schemas/ConversionOperationExecution'
      required:
        - operationId
        - status
        - operationType
    TransferOperationPreviewOutput:
      type: object
      properties:
        amount:
          $ref: '#/components/schemas/AssetAmount'
        fee:
          $ref: '#/components/schemas/AssetAmount'
        isSignRequired:
          type: boolean
        timeSeconds:
          type: number
      required:
        - amount
        - fee
        - isSignRequired
        - timeSeconds
    TransferOperationFailure:
      type: object
      properties:
        reason:
          type: string
          enum:
            - INVALID_AMOUNT
            - SUBMISSION_FAILED
            - TRANSACTION_FAILED
        data:
          type: object
          properties:
            txId:
              type: string
            txStatus:
              type: string
            txSubStatus:
              type: string
          required:
            - txId
            - txStatus
      required:
        - reason
    TransferOperationPreview:
      type: object
      properties:
        input:
          $ref: '#/components/schemas/TransferOperationConfigParams'
        output:
          $ref: '#/components/schemas/TransferOperationPreviewOutput'
        failure:
          $ref: '#/components/schemas/TransferOperationFailure'
      required:
        - input
    TransferOperationExecutionOutput:
      type: object
      properties:
        amount:
          $ref: '#/components/schemas/AssetAmount'
        fee:
          $ref: '#/components/schemas/AssetAmount'
      required:
        - amount
        - fee
    TransferOperationExecution:
      type: object
      properties:
        input:
          $ref: '#/components/schemas/TransferOperationConfigParams'
        output:
          $ref: '#/components/schemas/TransferOperationExecutionOutput'
        txId:
          type: string
        startedAt:
          type: number
        finishedAt:
          type: number
        failure:
          $ref: '#/components/schemas/TransferOperationFailure'
      required:
        - input
        - startedAt
    ExecutionTransferOperation:
      type: object
      properties:
        operationId:
          type: string
        status:
          $ref: '#/components/schemas/ExecutionOperationStatus'
        validationFailure:
          $ref: '#/components/schemas/TransferValidationFailure'
        operationType:
          $ref: '#/components/schemas/TransferOperationType'
        preview:
          $ref: '#/components/schemas/TransferOperationPreview'
        execution:
          $ref: '#/components/schemas/TransferOperationExecution'
      required:
        - operationId
        - status
        - operationType
    DisbursementOperationInput:
      type: object
      properties:
        amount:
          type: string
        paymentAccount:
          $ref: '#/components/schemas/Account'
        instructionSet:
          type: array
          items:
            $ref: '#/components/schemas/DisbursementInstruction'
      required:
        - paymentAccount
        - instructionSet
    DisbursementInstructionOutput:
      type: object
      properties:
        amount:
          $ref: '#/components/schemas/AssetAmount'
        fee:
          $ref: '#/components/schemas/AssetAmount'
        payeeAccount:
          $ref: '#/components/schemas/Destination'
      required:
        - amount
        - fee
        - payeeAccount
    DisbursementOperationPreviewOutput:
      type: object
      properties:
        instructionSet:
          type: array
          items:
            allOf:
              - $ref: '#/components/schemas/DisbursementInstructionOutput'
              - type: object
                properties:
                  timeSeconds:
                    type: number
                required:
                  - timeSeconds
      required:
        - instructionSet
    OperationExecutionFailure:
      type: object
      properties:
        reason:
          type: string
        data:
          type: object
          additionalProperties: {}
      required:
        - reason
    DisbursementOperationPreview:
      type: object
      properties:
        input:
          $ref: '#/components/schemas/DisbursementOperationInput'
        output:
          $ref: '#/components/schemas/DisbursementOperationPreviewOutput'
        failure:
          $ref: '#/components/schemas/OperationExecutionFailure'
      required:
        - input
    DisbursementOperationExecutionOutput:
      type: object
      properties:
        instructionSet:
          type: array
          items:
            $ref: '#/components/schemas/DisbursementInstructionOutput'
      required:
        - instructionSet
    DisbursementOperationExecution:
      type: object
      properties:
        input:
          $ref: '#/components/schemas/DisbursementOperationInput'
        output:
          $ref: '#/components/schemas/DisbursementOperationExecutionOutput'
        payoutId:
          type: string
        startedAt:
          type: number
        finishedAt:
          type: number
        failure:
          $ref: '#/components/schemas/OperationExecutionFailure'
      required:
        - input
        - startedAt
    ExecutionDisbursementOperation:
      type: object
      properties:
        operationId:
          type: string
        status:
          $ref: '#/components/schemas/ExecutionOperationStatus'
        validationFailure:
          $ref: '#/components/schemas/DisbursementValidationFailure'
        operationType:
          $ref: '#/components/schemas/DisbursementOperationType'
        preview:
          $ref: '#/components/schemas/DisbursementOperationPreview'
        execution:
          $ref: '#/components/schemas/DisbursementOperationExecution'
      required:
        - operationId
        - status
        - operationType
    WorkflowExecutionOperation:
      oneOf:
        - $ref: '#/components/schemas/ExecutionScreeningOperation'
        - $ref: '#/components/schemas/ExecutionConversionOperation'
        - $ref: '#/components/schemas/ExecutionTransferOperation'
        - $ref: '#/components/schemas/ExecutionDisbursementOperation'
    WorkflowExecution:
      type: object
      x-internal: true
      properties:
        executionId:
          type: string
        preScreening:
          $ref: '#/components/schemas/PreScreening'
        configSnapshot:
          $ref: '#/components/schemas/WorkflowConfigurationSnapshot'
        executionOperations:
          type: array
          items:
            $ref: '#/components/schemas/WorkflowExecutionOperation'
        status:
          type: string
          enum:
            - PENDING
            - VALIDATION_IN_PROGRESS
            - VALIDATION_FAILED
            - VALIDATION_COMPLETED
            - PREVIEW_IN_PROGRESS
            - PREVIEW_FAILED
            - READY_FOR_LAUNCH
            - EXECUTION_IN_PROGRESS
            - EXECUTION_COMPLETED
            - EXECUTION_FAILED
        triggeredBy:
          type: string
        triggeredAt:
          type: number
        finishedAt:
          type: number
        externalCorrelationData:
          $ref: '#/components/schemas/CorrelationData'
      required:
        - executionId
        - status
        - executionOperations
        - configSnapshot
    GasStationConfigurationResponse:
      type: object
      properties:
        gasThreshold:
          type: string
        gasCap:
          type: string
        maxGasPrice:
          type: string
          nullable: true
    GasStationPropertiesResponse:
      type: object
      properties:
        balance:
          type: object
        configuration:
          $ref: '#/components/schemas/GasStationConfigurationResponse'
    GasStationConfiguration:
      type: object
      properties:
        gasThreshold:
          type: string
        gasCap:
          type: string
        maxGasPrice:
          type: string
    EditGasStationConfigurationResponse:
      type: object
      properties:
        success:
          type: boolean
          description: Indicates whether editing the gas station configuration was successful
      required:
        - success
    UserGroupResponse:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
        status:
          type: string
        memberIds:
          type: array
          items:
            type: string
    UserGroupsResponse:
      type: array
      items:
        $ref: '#/components/schemas/UserGroupResponse'
    UserGroupCreateRequest:
      type: object
      properties:
        groupName:
          type: string
        memberIds:
          type: array
          items:
            type: string
    CreateUserGroupResponse:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
        memberIds:
          type: array
          items:
            type: string
        status:
          type: string
    UserGroupUpdateRequest:
      type: object
      properties:
        groupName:
          type: string
        memberIds:
          type: array
          items:
            type: string
    UserGroupCreateResponse:
      type: object
      properties:
        name:
          type: string
        id:
          type: string
        memberIds:
          type: array
          items:
            type: string
        status:
          type: string
    UserResponse:
      type: object
      properties:
        id:
          type: string
        firstName:
          type: string
        lastName:
          type: string
        role:
          type: string
        email:
          type: string
        enabled:
          type: boolean
    GetUsersResponse:
      type: array
      items:
        $ref: '#/components/schemas/UserResponse'
    AuditLogData:
      type: object
      properties:
        id:
          type: string
          description: The unique identifier of the audit log
        timestamp:
          type: number
          description: The timestamp of the audit log
        createdAt:
          type: number
          description: The timestamp of the audit log creation
        user:
          type: string
          description: The user who performed the action
        subject:
          type: string
          description: The subject of the action
        event:
          type: string
          description: The event that was performed
        category:
          type: string
          description: The category of the audit event
          example: Administration
        tenantId:
          type: string
          description: The tenant ID of the audit log
        userId:
          type: string
          description: The user ID of the audit log
    AuditLogsData:
      type: array
      items:
        $ref: '#/components/schemas/AuditLogData'
    GetAuditLogsResponse:
      type: object
      properties:
        data:
          $ref: '#/components/schemas/AuditLogsData'
        next:
          nullable: true
          type: string
          description: Cursor to pass as pageCursor in the next request. Null when no further pages exist.
          example: eyJpZCI6IjEyMzQ1NiJ9
        cursor:
          deprecated: true
          nullable: true
          type: string
          description: Deprecated. Use next instead.
    AddCollateralRequestBody:
      type: object
      properties:
        transactionRequest:
          $ref: '#/components/schemas/TransactionRequest'
        isSrcCollateral:
          type: boolean
          description: optional
    RemoveCollateralRequestBody:
      type: object
      properties:
        transactionRequest:
          $ref: '#/components/schemas/TransactionRequest'
        isDstCollateral:
          type: boolean
          description: optional
    SettlementRequestBody:
      type: object
      properties:
        mainExchangeAccountId:
          type: string
    ToExchangeTransaction:
      type: object
      properties:
        assetId:
          type: string
        amount:
          type: string
        dstAddress:
          type: string
        dstTag:
          type: string
          description: optional
    ToCollateralTransaction:
      type: object
      properties:
        asset:
          type: string
        amount:
          type: string
        srcAddress:
          type: string
        srcTag:
          type: string
          description: optional
        fee:
          type: string
          description: optional
    ExchangeSettlementTransactionsResponse:
      type: object
      properties:
        toExchange:
          type: array
          items:
            $ref: '#/components/schemas/ToExchangeTransaction'
        toCollateral:
          type: array
          items:
            $ref: '#/components/schemas/ToCollateralTransaction'
    SettlementResponse:
      type: object
      properties:
        id:
          type: string
        initiator:
          type: string
        exchangeReply:
          type: string
        fireblocksInitiatedTransactions:
          type: object
        exchangeRequestedTransactions:
          $ref: '#/components/schemas/ExchangeSettlementTransactionsResponse'
    ResendWebhooksResponse:
      type: object
      properties:
        messagesCount:
          type: number
    ResendTransactionWebhooksRequest:
      type: object
      properties:
        resendCreated:
          type: boolean
        resendStatusUpdated:
          type: boolean
    ResendWebhooksByTransactionIdResponse:
      type: object
      properties:
        success:
          type: boolean
          description: Indicates whether the webhooks were successfully resent
      required:
        - success
    WebhookEvent:
      type: string
      enum:
        - transaction.created
        - transaction.status.updated
        - transaction.approval_status.updated
        - transaction.network_records.processing_completed
        - external_wallet.asset.added
        - external_wallet.asset.removed
        - internal_wallet.asset.added
        - internal_wallet.asset.removed
        - contract_wallet.asset.added
        - contract_wallet.asset.removed
        - vault_account.created
        - vault_account.asset.added
        - vault_account.asset.balance_updated
        - vault_account.nft.balance_updated
        - embedded_wallet.status.updated
        - embedded_wallet.created
        - embedded_wallet.asset.balance_updated
        - embedded_wallet.asset.added
        - embedded_wallet.account.created
        - embedded_wallet.device.added
        - onchain_data.updated
        - connection.added
        - connection.removed
        - connection.request.waiting_peer_approval
        - connection.request.rejected_by_peer
        - exchange_account.connected
        - fiat_account.connected
        - connected_account.connected
        - ticket.created
        - ticket.submitted
        - ticket.expired
        - ticket.canceled
        - ticket.fulfilled
        - ticket.counterparty.added
        - ticket.counterparty_external_id.set
        - ticket.note.added
        - ticket.expires_at.set
        - ticket.expires_in.set
        - ticket.term.added
        - ticket.term.updated
        - ticket.term.deleted
        - ticket.term.funded
        - ticket.term.manually_funded
        - ticket.term.funding_canceled
        - ticket.term.funding_failed
        - ticket.term.funding_completed
        - ticket.term.transaction_status_changed
        - settlement.created
        - order.updated
        - automation_execution.update
    WebhookMtls:
      type: object
      nullable: true
      description: mTLS configuration for the webhook. On responses, present only when a signed client certificate is set. On requests, provide a signed client certificate to enable mTLS, or null to remove it.
      properties:
        clientSignedCert:
          type: string
          description: Signed client certificate PEM used for mTLS when delivering notifications.
          example: |-
            -----BEGIN CERTIFICATE-----
            ...
            -----END CERTIFICATE-----
      required:
        - clientSignedCert
    Webhook:
      type: object
      properties:
        id:
          type: string
          description: The id of the webhook
          example: 123e4567-e89b-12d3-a456-426614174000
          format: uuid
        url:
          type: string
          description: The url of the webhook where notifications will be sent. Must be a valid URL and https.
          example: https://example.com/webhook
          minLength: 1
        description:
          type: string
          description: description of the webhook of what it is used for
          example: This webhook is used for transactions notifications
          minLength: 1
        events:
          type: array
          description: The events that the webhook will be subscribed to
          example:
            - transaction.created
            - transaction.status.updated
          items:
            $ref: '#/components/schemas/WebhookEvent'
        status:
          enum:
            - DISABLED
            - ENABLED
            - SUSPENDED
          type: string
          description: The status of the webhook
          example: ENABLED
        createdAt:
          type: integer
          format: int64
          description: The date and time the webhook was created in milliseconds
          example: 1625126400000
        updatedAt:
          type: integer
          format: int64
          description: The date and time the webhook was last updated in milliseconds
          example: 1625126400000
        mtls:
          $ref: '#/components/schemas/WebhookMtls'
      required:
        - id
        - url
        - events
        - status
        - createdAt
        - updatedAt
    WebhookPaginatedResponse:
      type: object
      properties:
        data:
          type: array
          description: The data of the current page
          items:
            $ref: '#/components/schemas/Webhook'
        next:
          type: string
          description: The ID of the next page
          example: eJ0eXAiOiJKV1QiLCJhbGcOiJIUzI1NiJ9
          nullable: true
      required:
        - data
    CreateWebhookRequest:
      type: object
      properties:
        url:
          type: string
          description: The url of the webhook where notifications will be sent. URL must be valid, unique and https.
          example: https://example.com/webhook
          minLength: 1
        description:
          type: string
          description: description of the webhook. should not contain special characters.
          example: This webhook is used for transactions notifications
          minLength: 1
        events:
          type: array
          description: event types the webhook will subscribe to
          items:
            $ref: '#/components/schemas/WebhookEvent'
          example:
            - transaction.created
            - transaction.status.updated
        enabled:
          type: boolean
          description: The status of the webhook. If false, the webhook will not receive notifications.
          example: false
          default: true
        mtls:
          $ref: '#/components/schemas/WebhookMtls'
      required:
        - url
        - events
    WebhookMtlsCsrResponse:
      type: object
      description: mTLS Certificate Signing Request response
      properties:
        csr:
          type: string
          description: The Fireblocks PEM-encoded Certificate Signing Request (CSR).
          example: |-
            -----BEGIN CERTIFICATE REQUEST-----
            ...
            -----END CERTIFICATE REQUEST-----
      required:
        - csr
    UpdateWebhookRequest:
      type: object
      properties:
        url:
          type: string
          description: The url of the webhook where notifications will be sent. URL must be valid, unique and https.
          example: https://example.com/webhook
          minLength: 1
        description:
          type: string
          description: description of the webhook of what it is used for.should not contain special characters.
          example: This webhook is used for transactions notifications
          minLength: 1
        events:
          type: array
          description: The events that the webhook will be subscribed to
          example:
            - transaction.created
            - transaction.status.updated
          items:
            $ref: '#/components/schemas/WebhookEvent'
        enabled:
          type: boolean
          description: The status of the webhook
          example: false
        mtls:
          $ref: '#/components/schemas/WebhookMtls'
    WebhookMetric:
      type: object
      properties:
        value:
          type: string
          description: The value of the metric
          example: 55
      required:
        - value
    NotificationStatus:
      type: string
      description: The status of the Notification
      example: COMPLETED
      enum:
        - COMPLETED
        - FAILED
        - IN_PROGRESS
        - ON_HOLD
    Notification:
      type: object
      properties:
        id:
          type: string
          description: The id of the Notification
          example: 44fcead0-7053-4831-a53a-df7fb90d440f
          format: uuid
        createdAt:
          type: integer
          format: int64
          description: The creation date of the notification in milliseconds
          example: 1625126400000
        updatedAt:
          type: integer
          format: int64
          description: The date when the notification was updated in milliseconds
          example: 1625126400000
        status:
          $ref: '#/components/schemas/NotificationStatus'
        eventType:
          $ref: '#/components/schemas/WebhookEvent'
        resourceId:
          type: string
          nullable: true
          default: null
          description: The resource id of the event which the Notification is listen to
          example: 44fcead0-7053-4831-a53a-df7fb90d440f
          format: uuid
      required:
        - id
        - createdAt
        - updatedAt
        - status
        - eventType
    NotificationPaginatedResponse:
      type: object
      properties:
        data:
          type: array
          description: The data of the current page
          items:
            $ref: '#/components/schemas/Notification'
        total:
          type: number
          description: The total number of notifications after all filters applied (not returned when 'pageCursor' parameter is used)
          example: 100
          nullable: true
        next:
          type: string
          description: The ID of the next page
          example: eJ0eXAiOiJKV1QiLCJhbGcOiJIUzI1NiJ9
          nullable: true
      required:
        - data
    NotificationWithData:
      type: object
      properties:
        id:
          type: string
          example: 44fcead0-7053-4831-a53a-df7fb90d440f
          format: uuid
        createdAt:
          type: integer
          format: int64
          description: The creation date of the notification in milliseconds
          example: 1625126400000
        updatedAt:
          type: integer
          format: int64
          description: The date when the notification was updated in milliseconds
          example: 1625126400000
        status:
          $ref: '#/components/schemas/NotificationStatus'
        eventType:
          $ref: '#/components/schemas/WebhookEvent'
        resourceId:
          type: string
          nullable: true
          default: null
          description: The resource id of the event which the Notification is listen to
          example: 44fcead0-7053-4831-a53a-df7fb90d440f
          format: uuid
        data:
          type: object
          description: notification data
      required:
        - id
        - createdAt
        - updatedAt
        - status
        - eventType
    NotificationAttempt:
      type: object
      properties:
        sentTime:
          type: integer
          format: int64
          description: The time when the attempt was sent in milliseconds.
          example: 1625126400000
        duration:
          type: integer
          description: The duration of the attempt in milliseconds.
          example: 130
        responseCode:
          type: integer
          description: The response code of the attempt, when missing refer to failureReason.
          example: 200
        failureReason:
          type: string
          enum:
            - TIMED_OUT
            - NO_RESPONSE
          description: The request failure reason in case responseCode is missing.
          example: TIMED_OUT
      required:
        - sentTime
        - duration
    NotificationAttemptsPaginatedResponse:
      type: object
      properties:
        data:
          type: array
          description: The data of the current page
          items:
            $ref: '#/components/schemas/NotificationAttempt'
        next:
          type: string
          description: The ID of the next page
          example: eJ0eXAiOiJKV1QiLCJhbGcOiJIUzI1NiJ9
          nullable: true
      required:
        - data
    ResendNotificationsByResourceIdRequest:
      type: object
      properties:
        resourceId:
          type: string
          description: The resource id to resend notifications for
          example: 44fcead0-7053-4831-a53a-df7fb90d440f
          format: uuid
        excludeStatuses:
          type: array
          description: |
            (optional) List of notification statuses to exclude from the resend operation
                - Empty array means all statuses will be included
                - If you want to exclude some statuses, you can use the following example: [ IN_PROGRESS, FAILED ]
                - Default if missing, means all statuses other than "COMPLETED" will be included
          example:
            - IN_PROGRESS
            - FAILED
          items:
            $ref: '#/components/schemas/NotificationStatus'
      required:
        - resourceId
    ResendFailedNotificationsRequest:
      type: object
      properties:
        startTime:
          type: number
          description: |
            (optional) Start time for the resend window in milliseconds since epoch up to 24 hours before the current time - Default if missing means 24 hours before the current time in milliseconds since epoch - Maximum value is current time in milliseconds since epoch - Minimum value is 24 hours before the current time in milliseconds since epoch
          example: 1625097600000
        events:
          type: array
          description: |
            (optional) Event types to resend, default is all event types
                - Default if missing means all events will be included
                - Empty array means all events will be included
          example:
            - transaction.created
            - transaction.status.updated
          items:
            $ref: '#/components/schemas/WebhookEvent'
    ResendFailedNotificationsResponse:
      type: object
      properties:
        total:
          type: number
          description: The total number of failed notifications that are scheduled to be resent.
          example: 10
    ResendFailedNotificationsJobStatusResponse:
      type: object
      properties:
        jobId:
          type: string
          description: Bulk resend job ID
          example: 123e4567-e89b-12d3-a456-426614174000
        status:
          type: string
          description: Bulk resend job status
          example: COMPLETED
          enum:
            - QUEUED
            - IN_PROGRESS
            - COMPLETED
            - FAILED
        processed:
          type: number
          description: Number of notifications processed
          example: 100
        total:
          type: number
          description: Total number of notifications to process
          example: 1000
      required:
        - jobId
        - status
        - processed
        - total
    ResendByQueryRequest:
      type: object
      properties:
        statuses:
          type: array
          description: |
            (optional) List of notification statuses to resend
                - Default if missing: `["FAILED", "ON_HOLD"]`
          example:
            - ON_HOLD
            - IN_PROGRESS
          items:
            $ref: '#/components/schemas/NotificationStatus'
        startTime:
          type: number
          description: |
            (optional) Start time for the resend window in milliseconds since epoch, within the last 72 hours - Default if missing means 24 hours before the current time in milliseconds since epoch - Maximum value is current time in milliseconds since epoch - Minimum value is 72 hours before the current time in milliseconds since epoch
          example: 1625097600000
        endTime:
          type: number
          description: |
            (optional) End time for the resend window in milliseconds since epoch, within the last 72 hours - Default if missing means current time in milliseconds since epoch - Requires startTime to be provided - Must be after startTime - Time window between startTime and endTime must not exceed 24 hours
          example: 1625184000000
        events:
          type: array
          description: |
            (optional) Event types to resend, default is all event types
                - Default if missing means all events will be included
                - Empty array means all events will be included
          example:
            - transaction.created
            - transaction.status.updated
          items:
            $ref: '#/components/schemas/WebhookEvent'
        resourceId:
          type: string
          description: |
            (optional) Resource ID to filter notifications by
          example: 123e4567-e89b-12d3-a456-426614174000
    ResendByQueryResponse:
      type: object
      properties:
        total:
          type: number
          description: The total number of notifications that are scheduled to be resent.
          example: 10
    AuditorData:
      type: object
      properties:
        name:
          type: string
        imageURL:
          type: string
        link:
          type: string
      required:
        - name
        - imageURL
        - link
    ContractAttributes:
      type: object
      properties:
        useCases:
          type: array
          items:
            type: string
        standards:
          type: array
          items:
            type: string
        auditor:
          $ref: '#/components/schemas/AuditorData'
      required:
        - useCases
        - standards
        - auditor
    VendorDto:
      type: object
      properties:
        id:
          type: string
          example: b70701f4-d7b1-4795-a8ee-b09cdb5b4453
          description: The unique identifier of the vendor of this contract template
        name:
          type: string
          example: Fireblocks
          description: The name of the vendor of this contract template
      required:
        - id
        - name
    LeanContractDto:
      type: object
      properties:
        id:
          type: string
          example: b70701f4-d7b1-4795-a8ee-b09cdb5b850d
          description: The unique identifier of the contract template
        name:
          type: string
          example: My Contract
          description: The name of the contract template
        description:
          type: string
          example: an ERC20 implementation
          description: A short description of the contract template
        attributes:
          example:
            useCases:
              - Stablecoin
              - CBDC
            standards:
              - ERC-20
              - ERC-1400
            auditor:
              name: MyAuditor
              imageURL: https://my-images.com/my-image.jpg
              link: https://my-auditor.com/my-audit-report
          description: The attributes related to this contract template. It will be displayed in the tokenization page
          allOf:
            - $ref: '#/components/schemas/ContractAttributes'
        isPublic:
          type: boolean
          example: true
          description: Is this a contract that is viewable by all fireblocks's users or is it visible only for this workspace
        canDeploy:
          type: boolean
          example: true
          description: True if the workspace allowed to deploy this contract, false otherwise
        owner:
          type: string
          example: b70701f4-d7b1-4795-a8ee-b09cdb5b850d
          description: The workspace id of the owner of this contract template. If it's a private contract, only this workspace will be allowed to deploy it
        vendor:
          description: The details of the vendor of this contract template. Applicable only for public contract templates
          allOf:
            - $ref: '#/components/schemas/VendorDto'
        type:
          type: string
          enum:
            - FUNGIBLE_TOKEN
            - NON_FUNGIBLE_TOKEN
            - NON_TOKEN
            - TOKEN_EXTENSION
            - TOKEN_UTILITY
      required:
        - id
        - name
        - description
        - isPublic
    TemplatesPaginatedResponse:
      type: object
      properties:
        data:
          type: array
          description: The data of the current page
          items:
            $ref: '#/components/schemas/LeanContractDto'
        next:
          type: string
          description: The ID of the next page
          example: eJ0eXAiOiJKV1QiLCJhbGcOiJIUzI1NiJ9
          nullable: true
      required:
        - data
    FunctionDoc:
      type: object
      properties:
        details:
          type: string
          description: A description of the function
        params:
          type: object
          additionalProperties:
            type: string
          description: A description of the function parameters
        returns:
          type: object
          additionalProperties:
            type: string
          description: A description of the function return values. only for read functions
    ContractDoc:
      type: object
      properties:
        details:
          type: string
          example: A token that can be minted and burned
          description: A description of the contract
        events:
          type: string
          example: 'Upgraded(address): {"details": "Emitted when the implementation is upgraded."}'
          description: A description of the contract`s events
        kind:
          type: string
          example: dev
          description: Is it devdoc or userdoc
        methods:
          type: object
          additionalProperties:
            $ref: '#/components/schemas/FunctionDoc'
          example:
            constructor:
              details: Initializes the contract
          description: The description of the contract functions
        version:
          type: number
          example: 1
          description: The version of the contract
      required:
        - kind
        - methods
        - version
    Parameter:
      type: object
      properties:
        name:
          type: string
          example: _name
          description: The name of the parameter as it appears in the ABI
        description:
          type: string
          example: The name of the token
          description: A description of the parameter, fetched from the devdoc of this contract
        internalType:
          type: string
          example: string
          description: The internal type of the parameter as it appears in the ABI
        type:
          type: string
          example: string
          description: The type of the parameter as it appears in the ABI
        components:
          type: array
          items:
            $ref: '#/components/schemas/Parameter'
      required:
        - name
        - type
    AbiFunction:
      type: object
      properties:
        name:
          type: string
          example: mint
          description: The name of the contract function as it appears in the ABI
        stateMutability:
          type: string
          example: pure
          enum:
            - pure
            - view
            - nonpayable
            - payable
          description: The state mutability of the contract function as it appears in the ABI
        type:
          type: string
          example: constructor
          description: The type of the function
          enum:
            - constructor
            - function
            - error
            - event
            - receive
            - fallback
        inputs:
          description: The parameters that this function/constructor posses
          items:
            $ref: '#/components/schemas/Parameter'
          type: array
        outputs:
          description: The parameters that this 'read' function returns
          items:
            $ref: '#/components/schemas/Parameter'
          type: array
        description:
          type: string
          description: The documentation of this function (if has any)
      required:
        - type
    ContractUploadRequest:
      type: object
      properties:
        name:
          type: string
          example: My Contract
          description: The name of the contract template
        description:
          type: string
          example: an ERC20 implementation
          description: A short description of the contract template
        longDescription:
          type: string
          example: |
            a full ERC20 implementation, containing the following:

             - mint
             - burn
          description: |-
            A full description of the contract template. May contain 
             to break the lines
        bytecode:
          type: string
          description: The compiled artifact of this smart contract. Used for deployment of this contract template
        sourcecode:
          type: string
          description: The source code of the contract. Optional.
        type:
          enum:
            - FUNGIBLE_TOKEN
            - NON_FUNGIBLE_TOKEN
            - NON_TOKEN
            - TOKEN_EXTENSION
            - TOKEN_UTILITY
          type: string
          example: FUNGIBLE_TOKEN
          description: The type of the contract template
        docs:
          example:
            details: This contract implements an upgradeable proxy. It is upgradeable because calls are delegated to an implementation address that can be changed. This address is stored in storage in the location specified by https://eips.ethereum.org/EIPS/eip-1967[EIP1967], so that it doesn't conflict with the storage layout of the implementation behind the proxy.
            errors:
              ERC1967NonPayable():
                - details: An upgrade function sees `msg.value > 0` that may be lost.
            events:
              Upgraded(address):
                details: Emitted when the implementation is upgraded.
            kind: dev
            methods:
              constructor:
                details: 'Initializes the upgradeable proxy with an initial implementation specified by `implementation`. If `_data` is nonempty, it''s used as data in a delegate call to `implementation`. This will typically be an encoded function call, and allows initializing the storage of the proxy like a Solidity constructor. Requirements: - If `data` is empty, `msg.value` must be zero.'
            version: 1
          description: A `natspec` compliant documentation json. Can be retrieved from the output json after compilation
          allOf:
            - $ref: '#/components/schemas/ContractDoc'
        abi:
          type: array
          example:
            - inputs:
                - internalType: address
                  name: implementation
                  type: address
                - internalType: bytes
                  name: _data
                  type: bytes
              stateMutability: payable
              type: constructor
          description: The abi of the contract template. Necessary for displaying and for after deployment encoding
          items:
            $ref: '#/components/schemas/AbiFunction'
        attributes:
          example:
            useCases:
              - Stablecoin
              - CBDC
            standards:
              - ERC-20
              - ERC-1400
            auditor:
              name: MyAuditor
              imageURL: https://my-images.com/my-image.jpg
              link: https://my-auditor.com/my-audit-report
          description: The attributes related to this contract template. It will be displayed in the tokenization page
          allOf:
            - $ref: '#/components/schemas/ContractAttributes'
        protocol:
          type: string
          enum:
            - ETH
            - SOL
          example: ETH
          description: The protocol that the template will be used for
      required:
        - name
        - description
        - bytecode
        - abi
        - type
    ContractTemplateDto:
      type: object
      properties:
        id:
          type: string
          example: b70701f4-d7b1-4795-a8ee-b09cdb5b850d
          description: The unique identifier of the contract template
        name:
          type: string
          example: My Contract
          description: The name of the contract template
        description:
          type: string
          example: an ERC20 implementation
          description: A short description of the contract template
        longDescription:
          type: string
          example: |
            a full ERC20 implementation, containing the following:

             - mint
             - burn
          description: |-
            A full description of the contract template. May contain 
             to break the lines
        abi:
          type: array
          example:
            - inputs:
                - internalType: address
                  name: implementation
                  type: address
                - internalType: bytes
                  name: _data
                  type: bytes
              stateMutability: payable
              type: constructor
          description: The abi of the contract template. Necessary for displaying and for after deployment encoding
          items:
            $ref: '#/components/schemas/AbiFunction'
        attributes:
          example:
            useCases:
              - Stablecoin
              - CBDC
            standards:
              - ERC-20
              - ERC-1400
            auditor:
              name: MyAuditor
              imageURL: https://my-images.com/my-image.jpg
              link: https://my-auditor.com/my-audit-report
          description: The attributes related to this contract template. It will be displayed in the tokenization page
          allOf:
            - $ref: '#/components/schemas/ContractAttributes'
        docs:
          example:
            details: This contract implements an upgradeable proxy. It is upgradeable because calls are delegated to an implementation address that can be changed. This address is stored in storage in the location specified by https://eips.ethereum.org/EIPS/eip-1967[EIP1967], so that it doesn't conflict with the storage layout of the implementation behind the proxy.
            errors:
              ERC1967NonPayable():
                - details: An upgrade function sees `msg.value > 0` that may be lost.
            events:
              Upgraded(address):
                details: Emitted when the implementation is upgraded.
            kind: dev
            methods:
              constructor:
                details: 'Initializes the upgradeable proxy with an initial implementation specified by `implementation`. If `_data` is nonempty, it''s used as data in a delegate call to `implementation`. This will typically be an encoded function call, and allows initializing the storage of the proxy like a Solidity constructor. Requirements: - If `data` is empty, `msg.value` must be zero.'
            version: 1
          description: A `natspec` compliant documentation json. Can be retrieved from the output json after compilation
          allOf:
            - $ref: '#/components/schemas/ContractDoc'
        owner:
          type: string
          example: b70701f4-d7b1-4795-a8ee-b09cdb5b850d
          description: The workspace id of the owner of this contract template. If it's a private contract, only this workspace will be allowed to deploy it
        vendor:
          description: The details of the vendor of this contract template. Applicable only for public contract templates
          allOf:
            - $ref: '#/components/schemas/VendorDto'
        isPublic:
          type: boolean
          example: true
          description: Is this a contract that is viewable by all fireblocks's users or is it visible only for this workspace
        canDeploy:
          type: boolean
          example: true
          description: True if the workspace allowed to deploy this contract, false otherwise
        type:
          enum:
            - FUNGIBLE_TOKEN
            - NON_FUNGIBLE_TOKEN
            - NON_TOKEN
            - TOKEN_EXTENSION
            - TOKEN_UTILITY
          type: string
          example: FUNGIBLE_TOKEN
          description: The type of the contract template
        implementationContractId:
          type: string
        initializationPhase:
          enum:
            - ON_DEPLOYMENT
            - POST_DEPLOYMENT
          type: string
      required:
        - id
        - name
        - description
        - abi
        - isPublic
        - initializationPhase
    HttpContractDoesNotExistError:
      type: object
      properties:
        message:
          type: string
          description: Not Found error code
          example: Contract does not exist
        code:
          type: string
          description: Error code
          example: 404
    ParameterWithValue:
      type: object
      properties:
        name:
          type: string
          example: _name
          description: The name of the parameter as it appears in the ABI
        description:
          type: string
          example: The name of the token
          description: A description of the parameter, fetched from the devdoc of this contract
        internalType:
          type: string
          example: string
          description: The  internal type of the parameter as it appears in the ABI
        type:
          type: string
          example: string
          description: The type of the parameter as it appears in the ABI
        components:
          type: array
          items:
            $ref: '#/components/schemas/Parameter'
        value:
          example: 'true'
          description: The value of the parameter. can also be ParameterWithValue
          type: string
        functionValue:
          description: The function value of this param (if has one). If this is set, the `value` shouldn`t be. Used for proxies
          allOf:
            - $ref: '#/components/schemas/LeanAbiFunction'
      required:
        - name
        - type
    LeanAbiFunction:
      type: object
      properties:
        name:
          type: string
          example: initialize
          description: The function name
        inputs:
          description: The function inputs
          type: array
          items:
            $ref: '#/components/schemas/ParameterWithValue'
        outputs:
          description: The function outputs
          type: array
          items:
            $ref: '#/components/schemas/ParameterWithValue'
        stateMutability:
          type: string
          enum:
            - view
            - pure
            - nonpayable
            - payable
          example: nonpayable
          description: The state mutability of the function (e.g., view, pure, nonpayable, payable)
      required:
        - inputs
    ContractDeployRequest:
      type: object
      properties:
        assetId:
          type: string
          example: ETH_TEST5
          description: The base asset identifier of the blockchain you want to deploy to
        vaultAccountId:
          type: string
          example: '0'
          description: The vault account id you wish to deploy from
        constructorParameters:
          description: The constructor parameters of this contract
          items:
            $ref: '#/components/schemas/ParameterWithValue'
          example:
            - internalType: string
              name: name_
              type: string
              value: TokenName
            - internalType: string
              name: symbol_
              type: string
              value: TokenSymbol
          type: array
        useGasless:
          type: boolean
          example: false
          description: Indicates whether the token should be created in a gasless manner, utilizing the ERC-2771 standard. When set to true, the transaction will be relayed by a designated relayer. The workspace must be configured to use Fireblocks gasless relay.
        fee:
          type: string
          description: Max fee amount for the write function transaction. interchangeable with the 'feeLevel' field
          example: '2000'
        feeLevel:
          enum:
            - LOW
            - MEDIUM
            - HIGH
          type: string
          description: Fee level for the write function transaction. interchangeable with the 'fee' field
          example: MEDIUM
      required:
        - assetId
        - vaultAccountId
    ContractDeployResponse:
      type: object
      properties:
        txId:
          type: string
          example: b70701f4-d7b1-4795-a8ee-b09cdb5b850d
          description: The transaction id of the deployment request
      required:
        - txId
    SupportedBlockchain:
      type: object
      properties:
        id:
          type: string
          description: The ID of the blockchain
          example: 9f9f7062-df90-4fc0-8697-96685184357b
        legacyId:
          type: string
          description: The old blockchain ID representation of the blockchain
          example: ETH
        displayName:
          type: string
          description: The name of the blockchain
          example: Ethereum
        nativeAssetId:
          type: string
          description: Native asset ID of this blockchain
          example: 9f9f7062-df90-4fc0-8697-96685184356a
      required:
        - id
        - legacyId
        - displayName
        - nativeAssetId
    SupportedBlockChainsResponse:
      type: object
      properties:
        supportsAllBlockchains:
          type: boolean
          description: Boolean representing if all blockchains are supported
          example: true
        supportedBlockchains:
          type: array
          description: List of supported blockchains
          items:
            $ref: '#/components/schemas/SupportedBlockchain'
      required:
        - supportsAllBlockchains
    LeanDeployedContractResponseDto:
      type: object
      properties:
        id:
          type: string
          description: The deployed contract data identifier
          example: b70701f4-d7b1-4795-a8ee-b09cdb5b850d
        contractAddress:
          type: string
          description: The contract's onchain address
          example: '0xC2c4e1Db41F0bB97996D0eD0542D2170d146FB66'
        contractTemplateId:
          type: string
          description: The contract template identifier
          example: b70701f4-d7b1-4795-a8ee-b09cdb5b850d
        blockchainId:
          type: string
      required:
        - id
        - contractAddress
        - contractTemplateId
        - blockchainId
    DeployedContractsPaginatedResponse:
      type: object
      properties:
        data:
          type: array
          description: The data of the current page
          items:
            $ref: '#/components/schemas/LeanDeployedContractResponseDto'
        next:
          type: string
          description: The ID of the next page
          example: eJ0eXAiOiJKV1QiLCJhbGcOiJIUzI1NiJ9
          nullable: true
      required:
        - data
    GasslessStandardConfigurations:
      type: object
      description: The gasless configuration of the contract
      properties:
        gaslessStandardConfigurations:
          type: object
          additionalProperties:
            type: object
            properties:
              lastOnChainCheck:
                type: string
                format: date-time
                example: '2024-09-09T04:17:46.918Z'
              forwarderAddresses:
                type: array
                items:
                  type: string
                  example: '0x2E7B54631e18E9eEcc2eb5219249cc8388586f66'
    ParameterWithValueList:
      type: array
      items:
        $ref: '#/components/schemas/ParameterWithValue'
    MultichainDeploymentMetadata:
      type: object
      description: The multichain deployment metadata
      properties:
        id:
          type: string
          format: uuid
          description: The unique identifier of the deployment metadata
        address:
          type: string
          description: The address of the deployed contract
          example: '0x742d35Cc6634C0532925a3b844Bc454e4438f44e'
        templateId:
          type: string
          format: uuid
          description: The unique identifier of the contract template
          example: 0e4f5a3b-924e-7bb9-8e5b-c748270feb38
        deploymentSalt:
          type: string
          description: The salt used for the deployment
          example: '0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef'
        initParams:
          $ref: '#/components/schemas/ParameterWithValueList'
        encodedInitParams:
          type: string
          description: The encoded init params
          example: '0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef'
    SolanaConfig:
      type: object
      description: The Solana configuration of the contract
      properties:
        extensions:
          type: array
          items:
            type: string
          example:
            - metadataPointer
            - transferHook
          description: The extensions that the contract implements.
        type:
          type: string
          enum:
            - SPL
            - TOKEN2022
            - PROGRAM
          example: TOKEN2022
          description: The type of the contract.
    DeployedContractResponseDto:
      type: object
      properties:
        id:
          type: string
          description: The deployed contract data identifier
          example: b70701f4-d7b1-4795-a8ee-b09cdb5b850d
        contractAddress:
          type: string
          description: The contract's onchain address
          example: '0xC2c4e1Db41F0bB97996D0eD0542D2170d146FB66'
        contractTemplateId:
          type: string
          description: The contract template identifier
          example: b70701f4-d7b1-4795-a8ee-b09cdb5b850d
        vaultAccountId:
          type: string
          example: '0'
          description: The vault account id this contract was deploy from
        blockchainId:
          type: string
        baseAssetId:
          type: string
          description: The blockchain base assetId
          example: ETH_TEST5
        gaslessConfig:
          $ref: '#/components/schemas/GasslessStandardConfigurations'
        multichainDeploymentMetadata:
          $ref: '#/components/schemas/MultichainDeploymentMetadata'
        solanaConfig:
          $ref: '#/components/schemas/SolanaConfig'
      required:
        - id
        - contractAddress
        - contractTemplateId
        - blockchainId
    FetchAbiRequestDto:
      type: object
      properties:
        baseAssetId:
          type: string
          description: The blockchain base assetId
          example: ETH
        contractAddress:
          type: string
          description: The contract's onchain address
          example: '0xC2c4e1Db41F0bB97996D0eD0542D2170d146FB66'
      required:
        - baseAssetId
        - contractAddress
    ContractWithAbiDto:
      type: object
      properties:
        contractAddress:
          type: string
          description: The address of the contract
          example: '0xfff9976782d46cc05630d1f6ebab18b2324d6b14'
        baseAssetId:
          type: string
          description: The blockchain base assetId
          example: ETH_TEST6
        name:
          type: string
          description: The name of the contract
          example: WETH9
        abi:
          description: The ABI of the contract
          example:
            - inputs:
                - internalType: address
                  name: to
                  type: address
                - internalType: uint256
                  name: amount
                  type: uint256
              stateMutability: nonpayable
              type: function
              name: mint
          type: array
          items:
            $ref: '#/components/schemas/AbiFunction'
        isProxy:
          type: boolean
          description: Whether the contract is a proxy contract
          example: true
        implementation:
          type: string
          description: The implementation contract address
          example: '0xfff9976782d46cc05630d1f6ebab18b2324d6b14'
        isPublic:
          type: boolean
          description: Whether the contract ABI is public
          example: true
      required:
        - contractAddress
        - baseAssetId
        - name
        - abi
        - isPublic
    AddAbiRequestDto:
      type: object
      properties:
        contractAddress:
          type: string
          description: The address of deployed contract
          example: '0xfff9976782d46cc05630d1f6ebab18b2324d6b14'
        baseAssetId:
          type: string
          description: The blockchain base assetId
          example: ETH
        abi:
          example:
            - inputs:
                - internalType: address
                  name: to
                  type: address
                - internalType: uint256
                  name: amount
                  type: uint256
              stateMutability: nonpayable
              type: function
              name: mint
          description: The ABI of the contract
          type: array
          items:
            $ref: '#/components/schemas/AbiFunction'
        name:
          type: string
          description: The name of the contract
          example: MyContract
      required:
        - contractAddress
        - baseAssetId
        - abi
    AssetMetadataDto:
      type: object
      properties:
        assetId:
          type: string
          description: The Fireblocks` asset id
          example: BQ5R_MY_TOKEN
        name:
          type: string
          description: The name of the token
          example: MyToken
        symbol:
          type: string
          description: The symbol of the token
          example: MYT
        networkProtocol:
          type: string
          description: The network protocol of the token
          example: ETH
        totalSupply:
          type: string
          description: The total supply of the token
          example: '1000000000000000'
        holdersCount:
          type: number
          description: The number of holders of the token
          example: '6'
        type:
          type: string
          description: The type of the token
          example: ERC20
        contractAddress:
          type: string
          description: The address of the token contract
          example: '0x1234567890abcdef1234567890abcdef12345678'
        issuerAddress:
          type: string
          description: In case of Stellar or Ripple, the address of the issuer of the token
          example: rGyXjc5d7s17vvt3NtKKascvJrnSxV21kQ
        testnet:
          type: boolean
          description: Is it deployed on testnet or to mainnet
          example: true
        blockchain:
          type: string
          description: The blockchain native asset id which the token is deployed on
          example: ETH_TEST5
        decimals:
          type: number
          description: The number of decimals of the token
          example: 18
        vaultAccountId:
          type: string
          description: The id of the vault account that initiated the request to issue the token. Will be empty if token was issued outside of Fireblocks.
          example: '0'
      required:
        - assetId
    CollectionMetadataDto:
      type: object
      properties:
        fbCollectionId:
          type: string
          description: Fireblocks collection id
          example: 911fe739f0d4d123c98fd366c3bed35c6e30c00e
        name:
          type: string
          description: Collection name
          example: Rarible
        symbol:
          type: string
          description: Collection symbol
          example: RARI
        standard:
          type: string
          description: Collection contract standard
          example:
            - ERC721
            - ERC1155
            - FA2
        blockchainDescriptor:
          type: string
          description: Collection's blockchain
          example: ETH
        contractAddress:
          type: string
          description: Collection contract address
          example: '0x1723017329a804564bC8d215496C89eaBf1F3211'
      required:
        - fbCollectionId
        - blockchainDescriptor
    ContractMetadataDto:
      type: object
      properties:
        id:
          type: string
          description: The deployed contract ID
          example: fbfbfbfb-fbfb-fbfb-fbfb-fbfbfbfbfbfb
        blockchainId:
          type: string
          description: The blockchain ID
          example: B7QG017M
        contractAddress:
          type: string
          description: The address of the token contract
          example: '0x1234567890abcdef1234567890abcdef12345678'
        contractTemplateId:
          type: string
          description: The contract template ID
          example: b70701f4-d7b1-4795-a8ee-b09cdb5b850d
        vaultAccountId:
          type: string
          description: The vault account ID that initiated the request to issue the token
          example: '0'
      required:
        - id
        - blockchainId
        - contractAddress
        - contractTemplateId
    TokenLinkDto:
      type: object
      properties:
        id:
          type: string
          description: The token link id
          example: fbfbfbfb-fbfb-fbfb-fbfb-fbfbfbfbfbfb
        status:
          enum:
            - PENDING
            - COMPLETED
          type: string
          description: The token status
          example: COMPLETED
        type:
          enum:
            - FUNGIBLE_TOKEN
            - NON_FUNGIBLE_TOKEN
            - TOKEN_UTILITY
            - TOKEN_EXTENSION
          type: string
          description: The type of token
          example: NON_FUNGIBLE_TOKEN
        refId:
          type: string
          description: The Fireblocks' reference id
          example: BQ5R_MY_TOKEN
        displayName:
          type: string
          description: The token display name. If was not provided, would be taken from the contract template
          example: My Simple ERC20 Token
        tokenMetadata:
          description: The token's metadata
          oneOf:
            - $ref: '#/components/schemas/AssetMetadataDto'
            - $ref: '#/components/schemas/CollectionMetadataDto'
            - $ref: '#/components/schemas/ContractMetadataDto'
      required:
        - id
        - status
    TokensPaginatedResponse:
      type: object
      properties:
        data:
          type: array
          description: The data of the current page
          items:
            $ref: '#/components/schemas/TokenLinkDto'
        next:
          type: string
          description: The ID of the next page
          example: eJ0eXAiOiJKV1QiLCJhbGcOiJIUzI1NiJ9
          nullable: true
      required:
        - data
    EVMTokenCreateParamsDto:
      type: object
      properties:
        contractId:
          type: string
          example: b70701f4-d7b1-4795-a8ee-b09cdb5b850d
          description: The id of the contract template that will be used to create the token
        deployFunctionParams:
          example:
            - internalType: string
              name: name
              type: string
              value: name
            - internalType: string
              name: symbol
              type: string
              value: symbol
            - components:
                - internalType: bool
                  name: _isMintable
                  type: bool
              internalType: struct MyStruct
              name: customConfigProps
              type: tuple
              value:
                - internalType: bool
                  name: _isMintable
                  type: bool
                  value: false
          description: The deploy function parameters and values of the contract template
          type: array
          items:
            $ref: '#/components/schemas/ParameterWithValue'
      required:
        - contractId
    StellarRippleCreateParamsDto:
      type: object
      properties:
        symbol:
          type: string
          example: MyUSDT
          description: The symbol of the token
        name:
          type: string
          example: My USD Tether
          description: The name of the token
        issuerAddress:
          type: string
          example: rnDV4JiwgRNhudPY2sm65AzECpRXaasL4r
          description: The address of the issuer of this token. Will be part of the identifier of this token on chain.
      required:
        - symbol
        - name
        - issuerAddress
    SolanaSimpleCreateParams:
      type: object
      properties:
        name:
          type: string
          description: The name of the token or asset being created.
          example: SolanaToken
        symbol:
          type: string
          description: The symbol for the token, typically an abbreviated representation.
          example: SOL
        decimals:
          type: integer
          description: The number of decimal places the token supports (e.g., 9 for typical Solana tokens).
          example: 9
      required:
        - name
        - symbol
        - decimals
    CreateTokenRequestDto:
      type: object
      properties:
        blockchainId:
          type: string
          example: B7QG017M
          description: The id of the blockchain the request was initiated on
        assetId:
          type: string
          example: ETH_TEST5
          description: The base asset identifier of the blockchain you want to deploy to
        vaultAccountId:
          type: string
          example: '0'
          description: The id of the vault account that initiated the request to issue the token
        createParams:
          oneOf:
            - $ref: '#/components/schemas/EVMTokenCreateParamsDto'
            - $ref: '#/components/schemas/StellarRippleCreateParamsDto'
            - $ref: '#/components/schemas/SolanaSimpleCreateParams'
        displayName:
          type: string
        useGasless:
          type: boolean
          example: false
          description: Indicates whether the token should be created in a gasless manner, utilizing the ERC-2771 standard. When set to true, the transaction will be relayed by a designated relayer. The workspace must be configured to use Fireblocks gasless relay.
        fee:
          type: string
          description: Max fee amount for the write function transaction. interchangeable with the 'feeLevel' field
          example: '2000'
        feeLevel:
          enum:
            - LOW
            - MEDIUM
            - HIGH
          type: string
          description: Fee level for the write function transaction. interchangeable with the 'fee' field
          example: MEDIUM
        txNote:
          type: string
          description: Custom note that describes the transaction at your Fireblocks workspace. This note will be visible in the Fireblocks UI and in the transaction details and not on the blockchain.
          example: Token creation transaction for new stablecoin
        externalId:
          type: string
          description: External id that can be used to identify the transaction in your system. The unique identifier of the transaction outside of Fireblocks with max length of 255 characters
          example: 0192e4f5-924e-7bb9-8e5b-c748270feb38
      required:
        - vaultAccountId
        - createParams
    AssetAlreadyExistHttpError:
      type: object
      properties:
        statusCode:
          type: integer
          format: int32
          description: HTTP status code
          example: 409
        message:
          type: string
          description: Error message
        error:
          type: string
          description: Short description of the HTTP error
          example: Conflict
    LinkedTokensCount:
      type: object
      properties:
        count:
          type: number
          description: The total count of linked tokens
          example: 42
      required:
        - count
    TokenLinkRequestDto:
      type: object
      properties:
        type:
          enum:
            - FUNGIBLE_TOKEN
            - NON_FUNGIBLE_TOKEN
            - TOKEN_UTILITY
            - TOKEN_EXTENSION
          type: string
          description: The type of token being linked
        refId:
          type: string
          description: "The Fireblocks' token link reference id. For example, 'BQ5R_BDESC_ABC' if it's a fungible \n\t\t\t\t\tasset"
          example: USDC_ETH_TEST3_1XF5
        displayName:
          type: string
          description: The token display name
          example: My Simple ERC20 Token
        baseAssetId:
          type: string
          description: The blockchain base assetId
          example: ETH_TEST3
        contractAddress:
          type: string
          description: The contract's onchain address
          example: '0xC2c4e1Db41F0bB97996D0eD0542D2170d146FB66'
      required:
        - type
    TokenLinkExistsHttpError:
      type: object
      properties:
        statusCode:
          type: integer
          format: int32
          description: HTTP status code
          example: 409
        message:
          type: string
          description: Error message
        error:
          type: string
          description: Short description of the HTTP error
          example: Conflict
    NotFoundException:
      type: object
      properties:
        statusCode:
          type: integer
          format: int32
          description: HTTP status code
          example: 404
        message:
          type: string
          description: Error message
        error:
          type: string
          description: Short description of the HTTP error
          example: Not Found
    AccessRegistryAddressItem:
      type: object
      properties:
        address:
          type: string
          description: The address that was added to the access registry
          example: '0xC2c4e1Db41F0bB97996D0eD0542D2170d146FB66'
        dateAdded:
          type: string
          format: date-time
          description: The date when the address was added to the access registry
          example: '2024-07-01T00:00:00.000Z'
      required:
        - address
        - dateAdded
    AccessRegistryCurrentStateResponse:
      type: object
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/AccessRegistryAddressItem'
          description: Array of active addresses in the access registry
          example:
            - address: '0xC2c4e1Db41F0bB97996D0eD0542D2170d146FB66'
              dateAdded: '2024-07-01T00:00:00.000Z'
        next:
          type: string
          example: MjAyMy0xMi0xMyAyMDozNjowOC4zMDI=:MTEwMA==
          description: Cursor for next page
        prev:
          type: string
          example: dGhpcyBpcyBhIHByZXZpb3VzIGN1bcnNvcg==
          description: Cursor for previous page
        total:
          type: number
          example: 150
          description: Total count of active addresses in the access registry
      required:
        - data
    AccessRegistrySummaryResponse:
      type: object
      properties:
        totalActiveAddresses:
          type: number
          description: The total number of active addresses in the access registry
          example: 42
      required:
        - totalActiveAddresses
    TokenContractSummaryResponse:
      type: object
      properties:
        baseAssetId:
          type: string
          description: The base asset ID
          example: ETH
        contractAddress:
          type: string
          description: The contract address
          example: '0x1234567890123456789012345678901234567890'
        totalAddresses:
          type: number
          description: Total number of addresses with balances
          example: 150
        totalSupply:
          type: string
          description: The total supply of the token
          example: '1000000000000000000000'
      required:
        - baseAssetId
        - contractAddress
        - totalAddresses
        - totalSupply
    TotalSupplyItemDto:
      type: object
      properties:
        timestamp:
          type: string
          format: date-time
          description: Timestamp of the data point
          example: '2024-01-01T23:59:59.999Z'
        totalSupply:
          type: string
          description: Total supply at the given timestamp
          example: '1000000000000000000000'
      required:
        - timestamp
        - totalSupply
    TotalSupplyPagedResponse:
      type: object
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/TotalSupplyItemDto'
          description: Array of total supply data points
          example:
            - timestamp: '2024-01-01T23:59:59.999Z'
              totalSupply: '1000000000000000000000'
        next:
          type: string
          example: MjAyMy0xMi0xMyAyMDozNjowOC4zMDI=:MTEwMA==
          description: Cursor for next page
        prev:
          type: string
          example: dGhpcyBpcyBhIHByZXZpb3VzIGN1cnNvcg==
          description: Cursor for previous page
        total:
          type: number
          example: 150
          description: Total count of items
      required:
        - data
    AddressBalanceItemDto:
      type: object
      properties:
        accountAddress:
          type: string
          description: The account address
          example: '0x1234567890123456789012345678901234567890'
        balance:
          type: string
          description: The current balance of the account
          example: '1000000000000000000'
        lastUpdated:
          type: string
          format: date-time
          description: The timestamp when this balance was last updated
          example: '2023-12-01T12:00:00.000Z'
      required:
        - accountAddress
        - balance
        - lastUpdated
    AddressBalancePagedResponse:
      type: object
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/AddressBalanceItemDto'
          description: Array of address balance data
          example:
            - accountAddress: '0x1234567890123456789012345678901234567890'
              balance: '1000000000000000000'
              lastUpdated: '2023-12-01T12:00:00.000Z'
        next:
          type: string
          example: MjAyMy0xMi0xMyAyMDozNjowOC4zMDI=:MTEwMA==
          description: Cursor for next page
        prev:
          type: string
          example: dGhpcyBpcyBhIHByZXZpb3VzIGN1cnNvcg==
          description: Cursor for previous page (reserved for future support)
        total:
          type: number
          example: 150
          description: Total count of items
      required:
        - data
    BalanceHistoryItemDto:
      type: object
      properties:
        timestamp:
          type: string
          format: date-time
          description: Timestamp of the data point
          example: '2024-01-01T23:59:59.999Z'
        balance:
          type: string
          description: Balance at the given timestamp
          example: '1000000000000000000000'
      required:
        - timestamp
        - balance
    BalanceHistoryPagedResponse:
      type: object
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/BalanceHistoryItemDto'
          description: Array of balance history data points
          example:
            - timestamp: '2024-01-01T23:59:59.999Z'
              balance: '1000000000000000000000'
        next:
          type: string
          example: MjAyMy0xMi0xMyAyMDozNjowOC4zMDI=:MTEwMA==
          description: Cursor for next page
        prev:
          type: string
          example: dGhpcyBpcyBhIHByZXZpb3VzIGN1cnNvcg==
          description: Cursor for previous page
        total:
          type: number
          example: 150
          description: Total count of items
      required:
        - data
    OnchainTransferEvent:
      type: object
      properties:
        id:
          type: string
          format: uuid
          description: Unique identifier for the transfer event
          example: 550e8400-e29b-41d4-a716-446655440000
        transactionHash:
          type: string
          description: Hash of the transaction containing this transfer
          example: '0xabcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890'
        logIndex:
          type: string
          description: Index of the log within the transaction
          example: '0'
        contractAddress:
          type: string
          description: Address of the token contract
          example: '0x1234567890123456789012345678901234567890'
        fromAddress:
          type: string
          description: Address that sent the tokens
          example: '0xabcdef1234567890abcdef1234567890abcdef12'
        toAddress:
          type: string
          description: Address that received the tokens
          example: '0x1234567890123456789012345678901234567890'
        value:
          type: string
          description: Amount of tokens transferred (in smallest unit)
          example: '1000000000000000000'
        chainId:
          type: integer
          description: Chain ID of the blockchain
          example: 1
        baseAssetId:
          type: string
          description: The blockchain base asset identifier
          example: ETH_TEST3
        blockNumber:
          type: integer
          description: Block number containing this transfer
          example: 12345678
        blockHash:
          type: string
          description: Hash of the block containing this transfer
          example: '0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef'
        blockTimestamp:
          type: string
          format: date-time
          description: Timestamp when the block was mined
          example: '2025-01-16T15:45:00Z'
        eventName:
          type: string
          description: Name of the event (typically "Transfer")
          example: Transfer
      required:
        - id
        - transactionHash
        - logIndex
        - contractAddress
        - fromAddress
        - toAddress
        - value
        - chainId
        - baseAssetId
        - blockNumber
        - blockHash
        - blockTimestamp
        - eventName
    OnchainTransfersPagedResponse:
      type: object
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/OnchainTransferEvent'
          description: Array of ERC20 transfer events
          example:
            - id: 550e8400-e29b-41d4-a716-446655440000
              transactionHash: '0xabcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890'
              logIndex: '0'
              contractAddress: '0x1234567890123456789012345678901234567890'
              fromAddress: '0xabcdef1234567890abcdef1234567890abcdef12'
              toAddress: '0x1234567890123456789012345678901234567890'
              value: '1000000000000000000'
              chainId: 1
              baseAssetId: ETH_TEST3
              blockNumber: 12345678
              blockHash: '0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef'
              blockTimestamp: '2025-01-16T15:45:00Z'
              eventName: Transfer
        next:
          type: string
          example: MjAyMy0xMi0xMyAyMDozNjowOC4zMDI=:MTEwMA==
          description: Cursor for next page
        prev:
          type: string
          example: dGhpcyBpcyBhIHByZXZpb3VzIGN1cnNvcg==
          description: Cursor for previous page
        total:
          type: number
          example: 150
          description: Total count of items
      required:
        - data
    DecodedLog:
      type: object
      properties:
        address:
          type: string
          description: Contract address that emitted the log
          example: '0x1234567890123456789012345678901234567890'
        blockHash:
          type: string
          description: Hash of the block containing this log
          example: '0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef'
        blockNumber:
          type: string
          description: Block number containing this log
          example: '12345678'
        transactionHash:
          type: string
          description: Hash of the transaction that generated this log
          example: '0xabcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890'
        logIndex:
          type: string
          description: Index of the log in the transaction
          example: '0'
      required:
        - address
        - blockHash
        - blockNumber
        - transactionHash
        - logIndex
      description: Decoded event log from a blockchain transaction. Note - Additional dynamic properties may be present beyond the required ones.
    OnchainTransaction:
      type: object
      properties:
        id:
          type: string
          format: uuid
          description: Unique identifier for the transaction
          example: 550e8400-e29b-41d4-a716-446655440000
        baseAssetId:
          type: string
          description: The blockchain base asset identifier
          example: ETH_TEST3
        blockHash:
          type: string
          description: Hash of the block containing this transaction
          example: '0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef'
        blockNumber:
          type: integer
          description: Block number containing this transaction
          example: 12345678
        blockTimestamp:
          type: string
          format: date-time
          description: Timestamp when the block was mined
          example: '2025-01-16T15:45:00Z'
        chainId:
          type: integer
          description: Chain ID of the blockchain
          example: 1
        contractAddress:
          type: string
          nullable: true
          description: Contract address if this is a contract transaction
          example: '0x1234567890123456789012345678901234567890'
        cumulativeGasUsed:
          type: string
          description: Cumulative gas used in the block up to this transaction
          example: '21000'
        decodedLogs:
          $ref: '#/components/schemas/DecodedLog'
        effectiveGasPrice:
          type: string
          description: Effective gas price paid for the transaction
          example: '20000000000'
        fromAddress:
          type: string
          description: Address that initiated the transaction
          example: '0xabcdef1234567890abcdef1234567890abcdef12'
        gasUsed:
          type: string
          description: Amount of gas used by this transaction
          example: '21000'
        status:
          type: string
          description: Transaction status
          example: '1'
        toAddress:
          type: string
          nullable: true
          description: Address that received the transaction
          example: '0x1234567890123456789012345678901234567890'
        transactionHash:
          type: string
          description: Hash of the transaction
          example: '0xabcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890'
        transactionIndex:
          type: string
          description: Index of the transaction in the block
          example: '0'
        type:
          type: string
          description: Transaction type
          example: '2'
      required:
        - id
        - baseAssetId
        - blockHash
        - blockNumber
        - blockTimestamp
        - chainId
        - cumulativeGasUsed
        - effectiveGasPrice
        - fromAddress
        - gasUsed
        - status
        - transactionHash
        - transactionIndex
        - type
    OnchainTransactionsPagedResponse:
      type: object
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/OnchainTransaction'
          description: Array of onchain transactions
          example:
            - id: 550e8400-e29b-41d4-a716-446655440000
              baseAssetId: ETH_TEST3
              blockHash: '0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef'
              blockNumber: 12345678
              blockTimestamp: '2025-01-16T15:45:00Z'
              chainId: 1
              contractAddress: '0x1234567890123456789012345678901234567890'
              cumulativeGasUsed: '21000'
              effectiveGasPrice: '20000000000'
              fromAddress: '0xabcdef1234567890abcdef1234567890abcdef12'
              gasUsed: '21000'
              status: '1'
              toAddress: '0x1234567890123456789012345678901234567890'
              transactionHash: '0xabcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890'
              transactionIndex: '0'
              type: '2'
        next:
          type: string
          example: MjAyMy0xMi0xMyAyMDozNjowOC4zMDI=:MTEwMA==
          description: Cursor for next page
        prev:
          type: string
          example: dGhpcyBpcyBhIHByZXZpb3VzIGN1cnNvcg==
          description: Cursor for previous page
        total:
          type: number
          example: 150
          description: Total count of items
      required:
        - data
    RoleGrantee:
      type: object
      properties:
        accountAddress:
          type: string
          description: The address of the account that has been granted the role
          example: '0xC2c4e1Db41F0bB97996D0eD0542D2170d146FB66'
        dateOfGrant:
          type: string
          format: date-time
          description: The date when the role was granted to this account
          example: '2024-07-01T00:00:00.000Z'
      required:
        - accountAddress
        - dateOfGrant
    RoleDetails:
      type: object
      properties:
        roleHash:
          type: string
          description: The role hash identifier
          example: '0x0000000000000000000000000000000000000000000000000000000000000000'
        description:
          type: string
          description: Human-readable description of the role
          example: DEFAULT_ADMIN_ROLE
        accounts:
          type: array
          items:
            $ref: '#/components/schemas/RoleGrantee'
          description: List of accounts that have been granted this role
          example:
            - accountAddress: '0xC2c4e1Db41F0bB97996D0eD0542D2170d146FB66'
              dateOfGrant: '2024-07-01T00:00:00.000Z'
      required:
        - roleHash
        - description
        - accounts
    ActiveRolesMap:
      type: object
      additionalProperties:
        $ref: '#/components/schemas/RoleDetails'
      description: Active RBAC roles on the contract, keyed by role name (e.g. DEFAULT_ADMIN_ROLE, MINTER_ROLE). Each entry contains the on-chain role hash, a human-readable description, and the list of accounts currently granted that role.
      example:
        DEFAULT_ADMIN_ROLE:
          roleHash: '0x0000000000000000000000000000000000000000000000000000000000000000'
          description: DEFAULT_ADMIN_ROLE
          accounts:
            - accountAddress: '0xC2c4e1Db41F0bB97996D0eD0542D2170d146FB66'
              dateOfGrant: '2024-07-01T00:00:00.000Z'
    ActiveRolesResponse:
      type: object
      properties:
        activeRoles:
          $ref: '#/components/schemas/ActiveRolesMap'
      required:
        - activeRoles
    GetDeployableAddressRequest:
      type: object
      description: Request body for calculating deterministic address
      properties:
        chainDescriptor:
          type: string
          description: The base asset identifier of the blockchain (legacyId) to calculate deterministic address
          example: ETH
        templateId:
          type: string
          format: uuid
          description: The template identifier
          example: b70701f4-d7b1-4795-a8ee-b09cdb5b850d
        initParams:
          type: array
          description: The deploy function parameters and values of the contract template
          items:
            $ref: '#/components/schemas/ParameterWithValue'
          example:
            - internalType: string
              name: name
              type: string
              value: name
            - internalType: string
              name: symbol
              type: string
              value: symbol
            - components:
                - internalType: bool
                  name: _isMintable
                  type: bool
              internalType: struct MyStruct
              value:
                - internalType: bool
                  name: _isMintable
                  type: bool
                  value: false
        salt:
          type: string
          description: The salt to calculate the deterministic address. Must be a number between 0 and 2^256 -1, for it to fit in the bytes32 parameter
          example: '123456789'
      required:
        - chainDescriptor
        - templateId
        - salt
        - initParams
    DeployableAddressResponse:
      type: object
      description: Response DTO containing a deployable address
      properties:
        address:
          type: string
          description: The deployable address
      example:
        address: '0x1234567890abcdef1234567890abcdef12345678'
      required:
        - address
    InvalidParamaterValueError:
      type: object
      properties:
        message:
          type: string
          description: Bad request error message
          example: Invalid initParams.
        code:
          type: number
          description: Error code
          example: 400
      required:
        - message
        - code
    AddressNotAvailableError:
      type: object
      properties:
        message:
          type: string
          description: Conflict error message
          example: Address is already taken
        code:
          type: number
          description: Error code
          example: 409
      required:
        - message
        - code
    CreateMultichainTokenRequest:
      type: object
      properties:
        vaultAccountId:
          type: string
          example: '0'
          description: The id of the vault account that initiated the request to issue the token
        createParams:
          oneOf:
            - $ref: '#/components/schemas/EVMTokenCreateParamsDto'
        salt:
          type: string
          description: The salt to calculate the deterministic address. Must be a number between 0 and 2^256 -1, for it to fit in the bytes32 parameter.
          example: '123456789'
        chains:
          type: array
          items:
            type: string
          description: The base asset identifiers of the blockchains (legacyId) to calculate deterministic addresses
          example:
            - ETH
            - POLYGON
        displayName:
          type: string
        useGasless:
          type: boolean
          example: false
          description: Indicates whether the token should be created in a gasless manner, utilizing the ERC-2771 standard. When set to true, the transaction will be relayed by a designated relayer. The workspace must be configured to use Fireblocks gasless relay.
        fee:
          type: string
          description: Max fee amount for the write function transaction. interchangeable with the 'feeLevel' field
          example: '2000'
        feeLevel:
          enum:
            - LOW
            - MEDIUM
            - HIGH
          type: string
          description: Fee level for the write function transaction. interchangeable with the 'fee' field
          example: MEDIUM
      required:
        - vaultAccountId
        - createParams
        - chains
    IssueTokenMultichainResponse:
      description: Response schema for issuing tokens across multiple chains
      type: array
      items:
        $ref: '#/components/schemas/TokenLinkDto'
    ReissueMultichainTokenRequest:
      type: object
      properties:
        vaultAccountId:
          type: string
          example: '0'
          description: The id of the vault account that initiated the request to issue the token
        chains:
          type: array
          items:
            type: string
          example:
            - ETH
            - POLYGON
          description: The base asset identifiers of the blockchains you want to deploy to
        useGasless:
          type: boolean
          example: true
          description: Whether to use gasless deployment or not
        fee:
          type: string
          example: '2000'
          description: Max fee amount for the deploy request. Interchangeable with the 'feeLevel' field
        feeLevel:
          type: string
          enum:
            - LOW
            - MEDIUM
            - HIGH
          example: MEDIUM
          description: Fee level for the deploy request. Interchangeable with the 'fee' field
      required:
        - vaultAccountId
        - chains
    TokenLinkNotMultichainCompatibleHttpError:
      type: object
      properties:
        message:
          type: string
          description: Bad request error message
          example: Token link is not multichain compatible.
        code:
          type: number
          description: Error code
          example: 400
      required:
        - message
        - code
    DeployedContractNotFoundError:
      type: object
      properties:
        message:
          type: string
          description: Not Found error message
          example: Deployed contract not found
        code:
          type: number
          description: Error code
          example: 404
      required:
        - message
        - code
    LayerZeroAdapterCreateParams:
      type: object
      properties:
        tokenLinkId:
          type: string
          description: The token link id of the base token to deploy the adapters for
          example: 123-432-1234-1234-123456789012
        delegateAddress:
          type: string
          description: Address that will receive `CONTRACT_ADMIN_ROLE`.
          example: '0xABCDEF123456789abcdef1234567890abcdef12345678'
        defaultAdminAddress:
          type: string
          description: Address that will receive `DEFAULT_ADMIN_ROLE` on the adapter contract.
          example: '0xABC123456789abcdef1234567890abcdef12345678'
        pauserAddress:
          type: string
          description: Address that will receive `PAUSER_ROLE`.
          example: '0xDEFABC123456789abcdef1234567890abcdef12345678'
      required:
        - tokenLinkId
        - delegateAddress
        - defaultAdminAddress
        - pauserAddress
    DeployLayerZeroAdaptersRequest:
      type: object
      properties:
        vaultAccountId:
          type: string
          description: The id of the vault account that initiated the request to deploy adapter for the token
          example: '0'
        createParams:
          type: array
          items:
            $ref: '#/components/schemas/LayerZeroAdapterCreateParams'
          description: Array of creation parameters for LayerZero adapters, one per tokenLink.
          minItems: 1
        displayName:
          type: string
          description: The display name of the contract
          example: LayerZero Adapter
        useGasless:
          type: boolean
          description: Whether to use gasless deployment or not
          example: false
        feeLevel:
          enum:
            - LOW
            - MEDIUM
            - HIGH
          type: string
          description: Fee level for the write function transaction. interchangeable with the 'fee' field
          example: MEDIUM
        fee:
          type: string
          description: Max fee amount for the write function transaction. interchangeable with the 'feeLevel' field
          example: '2000'
        salt:
          type: string
          description: The salt to calculate the deterministic address. Must be a number between 0 and 2^256 -1, for it to fit in the bytes32 parameter
          example: '123456789'
      required:
        - vaultAccountId
        - createParams
    AdapterProcessingResult:
      type: object
      properties:
        inputTokenLinkId:
          type: string
          description: The input token link ID
        adapterLinkId:
          type: string
          description: The adapter link ID
      required:
        - inputTokenLinkId
        - adapterLinkId
    DeployLayerZeroAdaptersResponse:
      type: array
      items:
        $ref: '#/components/schemas/AdapterProcessingResult'
      description: Array of adapter processing results
    RemoveLayerZeroAdaptersRequest:
      type: object
      properties:
        vaultAccountId:
          type: string
          description: The vault account ID to use for signing the role revocation transactions.
          example: '1'
        adapterTokenLinkIds:
          type: array
          items:
            type: string
            format: uuid
          description: A list of adapter token link IDs to be deactivated and unlinked.
          example:
            - d290f1ee-6c54-4b01-90e6-d701748f0851
            - e290f1ee-6c54-4b01-90e6-d701748f0852
          minItems: 1
      required:
        - vaultAccountId
        - adapterTokenLinkIds
    RemoveLayerZeroAdapterFailedResult:
      type: object
      properties:
        adapterTokenLinkId:
          type: string
          description: The adapter token link ID that failed to be removed
      required:
        - adapterTokenLinkId
    RemoveLayerZeroAdaptersResponse:
      type: object
      properties:
        deactivated:
          type: array
          items:
            type: string
          description: List of successfully deactivated adapter token link IDs
        failed:
          type: array
          items:
            $ref: '#/components/schemas/RemoveLayerZeroAdapterFailedResult'
          description: List of adapter token link IDs that failed to be removed
      required:
        - deactivated
        - failed
    SetLayerZeroPeersRequest:
      type: object
      properties:
        vaultAccountId:
          type: string
          description: The id of the vault account that will be used to inititate transactions ot set peers
          example: '0'
        sourceAdapterTokenLinkId:
          type: string
          format: uuid
          description: '`token_link` ID of the source adapter contract'
          example: 123-432-1234-1234-123456789012
        destinationAdapterTokenLinkIds:
          type: array
          items:
            type: string
            format: uuid
          description: Array of `token_link` IDs for destination adapter contracts
          example:
            - 123-432-1234-1234-123456789012
            - 123-432-1234-1234-123456789012
          minItems: 1
        bidirectional:
          type: boolean
          description: If true, also sets peers from destination(s) back to source
          example: true
      required:
        - vaultAccountId
        - sourceAdapterTokenLinkId
        - destinationAdapterTokenLinkIds
        - bidirectional
    SetLayerZeroPeersResponse:
      type: object
      properties:
        txnIds:
          type: array
          items:
            type: string
            format: uuid
          description: Array of fireblocks transaction IDs, each corresponding to an on-chain transaction to set peers
          example:
            - 123-432-1234-1234-123456789012
            - 123-432-1234-1234-123456789012
          minItems: 1
      required:
        - txnIds
    RemoveLayerZeroPeersRequest:
      allOf:
        - $ref: '#/components/schemas/SetLayerZeroPeersRequest'
    RemoveLayerZeroPeersResponse:
      allOf:
        - $ref: '#/components/schemas/SetLayerZeroPeersResponse'
    PeerAdapterInfo:
      type: object
      properties:
        adapterTokenLinkId:
          type: string
          format: uuid
          description: The token link id of the adapter
          example: b70701f4-d7b1-4795-a8ee-b09cdb5b850d
        adapterAddress:
          type: string
          description: The adapter address
          example: '0x1234567890abcdef1234567890abcdef12345678'
        baseAssetId:
          type: string
          description: The base asset id for the base asset that the adapter is deployed on
          example: ETH_TEST6
      required:
        - adapterTokenLinkId
        - adapterAddress
        - baseAssetId
    GetLayerZeroPeersResponse:
      type: object
      properties:
        adapterTokenLinkId:
          type: string
          format: uuid
          description: The token link id of the adapter
          example: b70701f4-d7b1-4795-a8ee-b09cdb5b850d
        adapterAddress:
          type: string
          description: The adapter address
          example: '0x1234567890abcdef1234567890abcdef12345678'
        peers:
          type: array
          items:
            $ref: '#/components/schemas/PeerAdapterInfo'
          description: The peers for the adapter
          example:
            - adapterTokenLinkId: b70701f4-d7b1-4795-a8ee-b09cdb5b850d
              adapterAddress: '0x1234567890abcdef1234567890abcdef12345678'
              baseAssetId: ETH_TEST6
            - adapterTokenLinkId: b70701f4-d7b1-4795-a8ee-b09cdb5b850d
              adapterAddress: '0x1234567890abcdef1234567890abcdef12345678'
              baseAssetId: ETH_TEST5
      required:
        - adapterTokenLinkId
        - adapterAddress
        - peers
    DvnConfig:
      type: object
      properties:
        dvnAddresses:
          type: array
          items:
            type: string
          description: Array of required DVN Ethereum addresses that sign ULN messages.
          example:
            - 1.0284746938594775e+54
            - 2.5101940177441514e+50
          minItems: 1
        optionalDVNAddresses:
          type: array
          items:
            type: string
          description: Array of optional DVN Ethereum addresses that sign ULN messages.
          example:
            - 1.334824162533763e+54
        optionalThreshold:
          type: number
          description: Minimum number of DVN signatures required (M-of-N).
          example: 2
      required:
        - dvnAddresses
        - optionalThreshold
    SetLayerZeroDvnConfigRequest:
      type: object
      properties:
        vaultAccountId:
          type: string
          description: Vault account that pays gas
          example: '0'
        sourceAdapterTokenLinkId:
          type: string
          description: Source adapter TokenLink ID
          example: b70701f4-d7b1-4795-a8ee-b09cdb5b850d
        destinationAdapterTokenLinkId:
          type: string
          description: Destination adapter TokenLink ID
          example: 6add4f2a-b206-4114-8f94-2882618ffbb4
        sendConfig:
          $ref: '#/components/schemas/DvnConfig'
        receiveConfig:
          $ref: '#/components/schemas/DvnConfig'
      required:
        - vaultAccountId
        - sourceAdapterTokenLinkId
        - destinationAdapterTokenLinkId
        - sendConfig
        - receiveConfig
    SetLayerZeroDvnConfigResponse:
      type: object
      properties:
        txnIds:
          type: array
          items:
            type: string
          description: Transaction IDs submitted to the network
      required:
        - txnIds
    DvnConfigWithConfirmations:
      type: object
      properties:
        dvnAddresses:
          type: array
          items:
            type: string
          description: Array of required DVN Ethereum addresses that sign ULN messages.
          example:
            - 1.0284746938594775e+54
            - 2.5101940177441514e+50
          minItems: 1
        optionalDVNAddresses:
          type: array
          items:
            type: string
          description: Array of optional DVN Ethereum addresses that sign ULN messages.
          example:
            - 1.334824162533763e+54
        optionalThreshold:
          type: number
          description: Minimum number of DVN signatures required (M-of-N).
          example: 2
        confirmations:
          type: number
          description: Number of block confirmations required
          example: 12
      required:
        - dvnAddresses
        - optionalThreshold
        - confirmations
    ChannelDvnConfigWithConfirmations:
      type: object
      properties:
        sendConfig:
          allOf:
            - $ref: '#/components/schemas/DvnConfigWithConfirmations'
            - description: Outbound (source → peer) DVN config with confirmations.
        receiveConfig:
          allOf:
            - $ref: '#/components/schemas/DvnConfigWithConfirmations'
            - description: Inbound (peer → source) DVN config with confirmations.
    GetLayerZeroDvnConfigResponse:
      type: object
      properties:
        sourceAdapterTokenLinkId:
          type: string
          format: uuid
          description: Token-link ID of the adapter for which DVN configuration was queried.
          example: b70701f4-d7b1-4795-a8ee-b09cdb5b850d
        channelConfigs:
          type: array
          items:
            $ref: '#/components/schemas/ChannelDvnConfigWithConfirmations'
          description: DVN configurations for each discovered (or explicitly requested) channel between the source adapter and its peers.
          minItems: 1
      required:
        - sourceAdapterTokenLinkId
        - channelConfigs
    ValidateLayerZeroChannelResponse:
      type: object
      properties:
        correct:
          type: boolean
          description: Indicates whether the LayerZero channel configuration is valid.
          example: true
        errors:
          type: array
          items:
            type: string
          description: List of errors found during validation. An empty array indicates no errors.
          example:
            - Adapter not found
            - Adapter missing role
            - Adapter is not a peer
      required:
        - correct
        - errors
    CollectionType:
      type: string
      description: The type of collection
      enum:
        - NON_FUNGIBLE_TOKEN
        - SEMI_FUNGIBLE_TOKEN
    CollectionLinkDto:
      type: object
      properties:
        id:
          type: string
          description: The collection id
          example: fbfbfbfb-fbfb-fbfb-fbfb-fbfbfbfbfbfb
        status:
          enum:
            - PENDING
            - COMPLETED
          type: string
          description: The collection status
          example: COMPLETED
        type:
          allOf:
            - $ref: '#/components/schemas/CollectionType'
          example: NON_FUNGIBLE_TOKEN
        displayName:
          type: string
          description: The display name of the collection. If was not provided, would be taken from the contract template
          example: My Simple ERC721 Collection
        collectionMetadata:
          description: The collection's metadata
          allOf:
            - $ref: '#/components/schemas/CollectionMetadataDto'
      required:
        - id
        - status
        - type
    GetLinkedCollectionsPaginatedResponse:
      type: object
      properties:
        data:
          type: array
          description: The data of the current page
          items:
            $ref: '#/components/schemas/CollectionLinkDto'
        next:
          type: string
          description: The ID of the next page
          example: eJ0eXAiOiJKV1QiLCJhbGcOiJIUzI1NiJ9
          nullable: true
    CollectionDeployRequestDto:
      type: object
      properties:
        baseAssetId:
          type: string
          example: ETH
          description: The blockchain base assetId
        vaultAccountId:
          type: string
          example: '0'
          description: The id of the vault account that initiated the request to issue the token
        type:
          allOf:
            - $ref: '#/components/schemas/CollectionType'
          example: NON_FUNGIBLE_TOKEN
        name:
          type: string
          example: DigitalArtTokens
          description: A string that represents the name of the collection
        symbol:
          type: string
          example: DAT
          description: A string that represents the symbol of the collection
        adminAddress:
          type: string
          example: '0x5503766D27d1ED4525f5053222E18b29C38eDdB2'
          description: The EVM address of the user that will be set as the admin user of the collection
        displayName:
          type: string
          example: DigitalArtTokens
          description: A string to display as a name of the collection
      required:
        - baseAssetId
        - vaultAccountId
        - type
        - name
        - symbol
        - adminAddress
    CollectionTokenMetadataAttributeDto:
      type: object
      properties:
        trait_type:
          type: string
          description: Name of the trait
          example: project_start
        value:
          type: string
          description: Value of the trait
          example: 30102000
        display_type:
          type: string
          description: A field indicating how you would like trait to be displayed
          example: date
      required:
        - trait_type
        - value
    CollectionTokenMetadataDto:
      type: object
      properties:
        name:
          type: string
          description: Token's name
          example: DigitalArtTokens
        description:
          type: string
          description: Token's description
          example: Digital representation of a piece of art
        image:
          type: string
          description: Token's image URL
          example: https://some_domain.com/image_filepath
        animation_url:
          type: string
          description: Token's animation URL
          example: https://some_domain.com/gif_filepath
        external_url:
          type: string
          description: Token's external URL
          example: https://some_domain.com/blob_filepath
        attributes:
          description: Token's metadata attributes
          type: array
          items:
            $ref: '#/components/schemas/CollectionTokenMetadataAttributeDto'
      required:
        - name
        - description
    CollectionMintRequestDto:
      type: object
      properties:
        vaultAccountId:
          type: string
          description: The id of the vault account that initiates the mint function.
          example: '0'
        to:
          type: string
          example: '0x5503766D27d1ED4525f5053222E18b29C38eDdB2'
          description: 'The EVM address to mint to '
        tokenId:
          type: string
          description: The token id, recommended to have numerical format and in sequential order
          example: '1'
        amount:
          type: string
          description: For ERC721, amount is optional or should always be 1 and for ERC1155, amount should be 1 or greater
          example: '1'
        metadataURI:
          type: string
          description: URL of metadata uploaded, skip uploading to IPFS if this field is provided with any value
          example: ipfs://QmP4P6f7mDHzikhdwLBVSCxCPEgmjwcWSVBHbtSyfBYzBC
        metadata:
          description: Metadata to upload
          example:
            name: MYTOKEN
            description: description of MYTOKEN
          allOf:
            - $ref: '#/components/schemas/CollectionTokenMetadataDto'
        externalId:
          type: string
          description: External id that can be used to identify the transaction in your system. The unique identifier of the transaction outside of Fireblocks with max length of 255 characters
          example: 0192e4f5-924e-7bb9-8e5b-c748270feb38
      required:
        - vaultAccountId
        - to
        - tokenId
    CollectionMintResponseDto:
      type: object
      properties:
        txId:
          type: string
          description: Transaction Id for the mint operation
          example: fbfbfbfb-fbfb-fbfb-fbfb-fbfbfbfbfbfb
      required:
        - txId
    CollectionBurnRequestDto:
      type: object
      properties:
        vaultAccountId:
          type: string
          description: The id of the vault account that initiates the burn function
          example: '0'
        tokenId:
          type: string
          description: The token id
          example: '1'
        amount:
          type: string
          description: For ERC721, amount is optional or should always be 1 and for ERC1155, amount should be 1 or greater
          example: '1'
        externalId:
          type: string
          description: External id that can be used to identify the transaction in your system. The unique identifier of the transaction outside of Fireblocks with max length of 255 characters
          example: 0192e4f5-924e-7bb9-8e5b-c748270feb38
      required:
        - vaultAccountId
        - tokenId
    CollectionBurnResponseDto:
      type: object
      properties:
        txId:
          type: string
          description: Transaction Id for the burn operation
          example: fbfbfbfb-fbfb-fbfb-fbfb-fbfbfbfbfbfb
      required:
        - txId
    SOLAccount:
      type: object
      description: The accounts involved in the instruction
      properties:
        name:
          type: string
          description: The name of the account
          example: mint
        signer:
          type: boolean
          description: Indicates if the account needs to sign the instruction. If true a signature for this account must be provided
          example: false
        writable:
          type: boolean
          description: Indicates if the account's data can be changed by the instruction.
          example: true
        address:
          type: string
          description: The address of the account
          example: 4PVcDXAkAgQkVx4puiSXdZ5H8BrTqUzstJBKKWFy3XsH
      required:
        - name
    IdlType:
      type: string
      enum:
        - bool
        - u8
        - i8
        - u16
        - i16
        - u32
        - i32
        - f32
        - u64
        - i64
        - f64
        - u128
        - i128
        - u256
        - i256
        - bytes
        - string
        - pubkey
      description: The type of the parameter
      example: u8
    SolParameter:
      type: object
      description: The arguments of the instruction
      properties:
        name:
          type: string
          description: The name of the parameter
          example: mint
        type:
          $ref: '#/components/schemas/IdlType'
      required:
        - name
        - type
    SolanaInstruction:
      type: object
      properties:
        name:
          type: string
          description: The name of the instruction
          example: transfer
        discriminator:
          type: array
          items:
            type: number
          description: The discriminator for the instruction. Acts as a function selector
          example:
            - 13
        accounts:
          type: array
          items:
            $ref: '#/components/schemas/SOLAccount'
        args:
          type: array
          items:
            $ref: '#/components/schemas/SolParameter'
      required:
        - name
        - discriminator
        - accounts
        - args
    ContractAbiResponseDto:
      type: object
      properties:
        abi:
          example:
            - inputs:
                - internalType: address
                  name: implementation
                  type: address
                - internalType: bytes
                  name: _data
                  type: bytes
              stateMutability: nonpayable
              type: constructor
          description: The abi of the contract
          type: array
          items:
            oneOf:
              - $ref: '#/components/schemas/AbiFunction'
              - $ref: '#/components/schemas/SolanaInstruction'
        implementationAbi:
          example:
            - inputs:
                - internalType: address
                  name: to
                  type: address
                - internalType: uint256
                  name: amount
                  type: uint256
              stateMutability: nonpayable
              type: function
              name: mint
          description: The abi of the implementation contract if exists. Relevant only for proxy patterns
          type: array
          items:
            $ref: '#/components/schemas/AbiFunction'
      required:
        - abi
    ReadAbiFunction:
      type: object
      properties:
        stateMutability:
          type: string
          enum:
            - pure
            - view
          example: pure
        outputs:
          type: array
          items:
            $ref: '#/components/schemas/Parameter'
        name:
          type: string
        type:
          type: string
        inputs:
          type: array
          items:
            $ref: '#/components/schemas/ParameterWithValue'
        description:
          type: string
      required:
        - stateMutability
        - type
        - inputs
    SOLAccountWithValue:
      type: object
      properties:
        name:
          type: string
          description: The name of the account
          example: mint
        signer:
          type: boolean
          description: Indicates if the account needs to sign the instruction. If true a signature for this account must be provided
          example: false
        writable:
          type: boolean
          description: Indicates if the account's data can be changed by the instruction.
          example: true
        address:
          type: string
          description: The address of the account
          example: 4PVcDXAkAgQkVx4puiSXdZ5H8BrTqUzstJBKKWFy3XsH
      required:
        - name
        - address
    SolParameterWithValue:
      type: object
      properties:
        value:
          type: string
          description: The value of the parameter
          example: '1000000'
        name:
          type: string
          description: The name of the parameter
          example: mint
        type:
          $ref: '#/components/schemas/IdlType'
      required:
        - name
        - type
        - value
    SolanaInstructionWithValue:
      type: object
      properties:
        name:
          type: string
          description: The name of the instruction
          example: approve
        discriminator:
          type: array
          items:
            type: number
          description: The discriminator for the instruction. Acts as a function selector
          example:
            - 13
        accounts:
          type: array
          items:
            $ref: '#/components/schemas/SOLAccountWithValue'
        args:
          type: array
          description: The arguments of the instruction
          items:
            $ref: '#/components/schemas/SolParameterWithValue'
      required:
        - name
        - discriminator
        - accounts
        - args
    ReadCallFunctionDto:
      type: object
      properties:
        abiFunction:
          oneOf:
            - $ref: '#/components/schemas/ReadAbiFunction'
            - $ref: '#/components/schemas/SolanaInstructionWithValue'
      required:
        - abiFunction
    WriteAbiFunction:
      type: object
      properties:
        stateMutability:
          type: string
          enum:
            - payable
            - nonpayable
          example: nonpayable
        outputs:
          type: array
          items:
            $ref: '#/components/schemas/Parameter'
        type:
          type: string
          enum:
            - function
        name:
          type: string
        inputs:
          type: array
          items:
            $ref: '#/components/schemas/ParameterWithValue'
        description:
          type: string
      required:
        - stateMutability
        - type
        - inputs
    WriteCallFunctionDto:
      type: object
      properties:
        vaultAccountId:
          type: string
          example: '0'
          description: The vault account id this contract was deploy from
        abiFunction:
          oneOf:
            - $ref: '#/components/schemas/WriteAbiFunction'
            - $ref: '#/components/schemas/SolanaInstructionWithValue'
        amount:
          type: string
          description: Amount in base asset. Being used in payable functions
          example: '12.345'
        feeLevel:
          enum:
            - LOW
            - MEDIUM
            - HIGH
          type: string
          description: Fee level for the write function transaction. interchangeable with the 'fee' field
          example: MEDIUM
        fee:
          type: string
          description: Max fee amount for the write function transaction. interchangeable with the 'feeLevel' field
          example: '2000'
        note:
          type: string
          description: Custom note, not sent to the blockchain, that describes the transaction at your Fireblocks workspace
        useGasless:
          type: boolean
          example: false
          description: Indicates whether the token should be created in a gasless manner, utilizing the ERC-2771 standard. When set to true, the transaction will be relayed by a designated relayer. The workspace must be configured to use Fireblocks gasless relay.
        externalId:
          type: string
          description: External id that can be used to identify the transaction in your system. The unique identifier of the transaction outside of Fireblocks with max length of 255 characters
          example: 0192e4f5-924e-7bb9-8e5b-c748270feb38
      required:
        - vaultAccountId
        - abiFunction
    WriteCallFunctionResponseDto:
      type: object
      properties:
        txId:
          type: string
      required:
        - txId
    TxLog:
      type: object
      properties:
        address:
          type: string
          description: The log address
          example: '0xC2c4e1Db41F0bB97996D0eD0542D2170d146FB66'
        topics:
          type: array
          items:
            type: string
          description: Array of log topics
          example:
            - '0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef'
            - '0x000000000000000000000000a7d9ddbe1f17865597fbd27ec712455208b6b76d'
            - '0x000000000000000000000000c2c4e1db41f0bb97996d0ed0542d2170d146fb66'
        data:
          type: string
          description: The log data
          example: '0x000000000000000000000000000000000000000000000000000000000000000a'
        blockNumber:
          type: integer
          description: Block number where the log occurred
          example: 123456
        transactionHash:
          type: string
          description: Transaction hash associated with the log
          example: '0x5a3b7f4b2c9e4a0b1f8a12c8e5f1d0e2a6b4c9d1f7e2b1a2b3c4d5e6f7a8b9c'
        transactionIndex:
          type: integer
          description: Transaction index in the block
          example: 2
        blockHash:
          type: string
          description: The hash of the block
          example: '0x6e3c92a3d96f96e46b7f39c30244edb6e8e0f4b65d3846c9f8287f9dd5d1a3d2'
        logIndex:
          type: integer
          description: Log index in the block
          example: 1
        removed:
          type: boolean
          description: Indicates if the log was removed
          example: false
      required:
        - address
        - topics
        - data
        - blockNumber
        - transactionHash
        - transactionIndex
        - blockHash
        - logIndex
        - removed
    TransactionReceiptResponse:
      type: object
      properties:
        blockHash:
          type: string
          description: The block hash
          example: '0x6e3c92a3d96f96e46b7f39c30244edb6e8e0f4b65d3846c9f8287f9dd5d1a3d2'
        blockNumber:
          type: integer
          description: The block number
          example: 123456
        contractAddress:
          type: string
          description: The address of deployed contract
          example: '0xC2c4e1Db41F0bB97996D0eD0542D2170d146FB66'
          nullable: true
        cumulativeGasUsed:
          type: integer
          description: The cumulative gas used in the transaction
          example: 21000
        effectiveGasPrice:
          type: integer
          description: The effective gas price
          example: 1000000000
        from:
          type: string
          description: Sender address
          example: '0xa7D9ddBE1f17865597Fbd27ec712455208B6b76D'
        gasUsed:
          type: integer
          description: Gas used by the transaction
          example: 21000
        logs:
          type: array
          items:
            $ref: '#/components/schemas/TxLog'
          description: Array of transaction logs
        logsBloom:
          type: string
          description: Logs bloom filter
          example: '0x0000000000000000000000000000000000000000000000000000000000000000'
        status:
          type: integer
          description: Transaction status (1 for success, 0 for failure)
          example: 1
        to:
          type: string
          description: Recipient address
          example: '0x1eC4a8bB9bB9Afa24f79cC2e1423cD00B6cFf50'
          nullable: true
        transactionHash:
          type: string
          description: The transaction hash
          example: '0x5a3b7f4b2c9e4a0b1f8a12c8e5f1d0e2a6b4c9d1f7e2b1a2b3c4d5e6f7a8b9c'
        transactionIndex:
          type: integer
          description: Transaction index in the block
          example: 3
        type:
          type: string
          description: Type of transaction
          example: '0x2'
      required:
        - blockHash
        - blockNumber
        - cumulativeGasUsed
        - effectiveGasPrice
        - from
        - gasUsed
        - logs
        - logsBloom
        - status
        - transactionHash
        - transactionIndex
        - type
    ContractDataEncodedDataString:
      type: string
      description: The encoded data to decode
      example: '0x1234567890abcdef'
    ContractDataLogDataParam:
      type: object
      properties:
        data:
          type: string
          description: The data to decode, which can be a string or an object containing the data and its type.
          example: '0x1234567890abcdef'
        topics:
          type: array
          items:
            type: string
          description: The topics of the log, which is an array of strings.
          example:
            - 1311768467294899700
            - 12379813812177893000
      required:
        - data
        - topics
    ContractDataDecodeDataType:
      type: string
      description: The type of the data to decode.
      enum:
        - ERROR
        - LOG
        - FUNCTION
      example: FUNCTION
    ContractDataDecodeRequest:
      type: object
      properties:
        data:
          description: The data to decode, which can be a string or an object containing the data and its type.
          oneOf:
            - $ref: '#/components/schemas/ContractDataEncodedDataString'
            - $ref: '#/components/schemas/ContractDataLogDataParam'
          example: '0x1234567890abcdef'
        dataType:
          $ref: '#/components/schemas/ContractDataDecodeDataType'
        abi:
          type: array
          items:
            $ref: '#/components/schemas/AbiFunction'
          description: The abi of the function/error/log to decode.
          example:
            - inputs:
                - name: to
                  type: address
                - name: amount
                  type: uint256
              stateMutability: nonpayable
              type: function
              name: transfer
      required:
        - data
        - dataType
    ContractDataDecodeResponseParams:
      type: object
      properties:
        name:
          type: string
          description: The name of the contract function.
          example: transfer
        signature:
          type: string
          description: The signature of the contract function.
          example: transfer(address,uint256)
        args:
          $ref: '#/components/schemas/ParameterWithValueList'
      required:
        - name
        - signature
        - args
    ContractDataDecodedResponse:
      type: object
      properties:
        result:
          type: array
          items:
            $ref: '#/components/schemas/ContractDataDecodeResponseParams'
          description: The decoded parameters of the contract function call.
        type:
          $ref: '#/components/schemas/ContractDataDecodeDataType'
      required:
        - result
        - type
    ContractDataDecodeError:
      type: object
      properties:
        message:
          type: string
          description: Bad request error message
          example: 'Error decoding data: Invalid ABI'
        code:
          type: number
          description: Error code
          example: 400
      required:
        - message
        - code
    ContractAddressResponse:
      type: object
      properties:
        contractAddress:
          type: string
          description: The contract's onchain address
          example: '0xC2c4e1Db41F0bB97996D0eD0542D2170d146FB66'
      required:
        - contractAddress
    RoleDetails-2:
      type: object
      properties:
        roleHash:
          type: string
          description: The role hash identifier
          example: '0x0000000000000000000000000000000000000000000000000000000000000000'
        description:
          type: string
          description: Human-readable description of the role
          example: DEFAULT_ADMIN_ROLE
        accounts:
          type: array
          items:
            $ref: '#/components/schemas/RoleGrantee'
          description: List of accounts that have been granted this role
      required:
        - roleHash
        - description
        - accounts
    ActiveRolesResponse-2:
      type: object
      additionalProperties:
        $ref: '#/components/schemas/RoleDetails-2'
      description: A map of role names to their details
    AccessRegistryCurrentStateResponse-2:
      type: object
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/AccessRegistryAddressItem'
          description: Array of active addresses in the access registry
        next:
          type: string
          example: MjAyMy0xMi0xMyAyMDozNjowOC4zMDI=:MTEwMA==
          description: Cursor for next page
        prev:
          type: string
          example: dGhpcyBpcyBhIHByZXZpb3VzIGN1bcnNvcg==
          description: Cursor for previous page
        total:
          type: number
          example: 150
          description: Total count of active addresses in the access registry
      required:
        - data
    OnchainTransactionsPagedResponse-2:
      type: object
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/OnchainTransaction'
          description: Array of onchain transactions
        next:
          type: string
          example: MjAyMy0xMi0xMyAyMDozNjowOC4zMDI=:MTEwMA==
          description: Cursor for next page
        prev:
          type: string
          example: dGhpcyBpcyBhIHByZXZpb3VzIGN1cnNvcg==
          description: Cursor for previous page
        total:
          type: number
          example: 150
          description: Total count of items
      required:
        - data
    TotalSupplyPagedResponse-2:
      type: object
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/TotalSupplyItemDto'
          description: Array of total supply data points
        next:
          type: string
          example: MjAyMy0xMi0xMyAyMDozNjowOC4zMDI=:MTEwMA==
          description: Cursor for next page
        prev:
          type: string
          example: dGhpcyBpcyBhIHByZXZpb3VzIGN1cnNvcg==
          description: Cursor for previous page
        total:
          type: number
          example: 150
          description: Total count of items
      required:
        - data
    BalanceHistoryPagedResponse-2:
      type: object
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/BalanceHistoryItemDto'
          description: Array of balance history data points
        next:
          type: string
          example: MjAyMy0xMi0xMyAyMDozNjowOC4zMDI=:MTEwMA==
          description: Cursor for next page
        prev:
          type: string
          example: dGhpcyBpcyBhIHByZXZpb3VzIGN1cnNvcg==
          description: Cursor for previous page
        total:
          type: number
          example: 150
          description: Total count of items
      required:
        - data
    AddressBalancePagedResponse-2:
      type: object
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/AddressBalanceItemDto'
          description: Array of address balance data
        next:
          type: string
          example: MjAyMy0xMi0xMyAyMDozNjowOC4zMDI=:MTEwMA==
          description: Cursor for next page
        prev:
          type: string
          example: dGhpcyBpcyBhIHByZXZpb3VzIGN1cnNvcg==
          description: Cursor for previous page (reserved for future support)
        total:
          type: number
          example: 150
          description: Total count of items
      required:
        - data
    ChainDescriptor:
      type: string
      description: Protocol identifier for the staking operation.
      enum:
        - ATOM_COS
        - AXL
        - AXL_TEST
        - CELESTIA
        - DYDX_DYDX
        - ETH
        - ETH_TEST6
        - ETH_TEST_HOODI
        - INJ_INJ
        - MANTRA
        - MATIC
        - OSMO
        - POL
        - POL_TEST
        - SOL
        - SOL_TEST
        - STETH_ETH
        - STETH_ETH_TEST6_DZFA
        - STETH_ETH_TEST_HOODI
    StakingGetChainsResponse:
      type: array
      example:
        - ETH
        - ETH_TEST6
        - ETH_TEST_HOODI
        - SOL
        - SOL_TEST
        - MATIC
      items:
        $ref: '#/components/schemas/ChainDescriptor'
    StakingErrorSchema:
      type: object
      properties:
        message:
          type: string
          description: Human-readable error message.
          example: 'Couldn''t find position with id: abc-123'
        code:
          type: number
          description: Numeric error code identifying the type of error.
          example: 3310
        descriptor:
          type: string
          description: Additional structured context about the error.
          example: '{"positionId":"abc-123"}'
      required:
        - code
        - message
    AdditionalInfo:
      type: object
      description: Additional information related to the blockchain. This may include extra details about the blockchain network.
      properties:
        estimatedAnnualReward:
          type: number
          deprecated: true
          example: 6.48
          description: The estimated annual reward rate for the blockchain, represented as a decimal percentage value.
        lockupPeriod:
          type: number
          example: 172800000
          description: The duration of the lockup period for certain actions on the blockchain, measured in milliseconds.
        activationPeriod:
          type: number
          example: 172800000
          description: The duration of the activation period for certain actions on the blockchain, measured in milliseconds.
      required:
        - estimatedAnnualReward
        - lockupPeriod
        - activationPeriod
    ChainInfoResponse:
      type: object
      properties:
        chainDescriptor:
          type: string
          example: SOL
          description: The protocol identifier (e.g. "ETH"/"SOL").
        currentEpoch:
          type: number
          example: 483
          description: The current epoch number of the blockchain network.
        epochElapsed:
          type: number
          example: 0.31
          description: The percentage of time that has elapsed within the current epoch, represented as a decimal value between 0 and 1.
        epochDuration:
          type: number
          example: 172800000
          description: The total duration in milliseconds of a single epoch.
        additionalInfo:
          $ref: '#/components/schemas/AdditionalInfo'
        lastUpdated:
          type: number
          example: 1706602061938
          description: timestamp (in milliseconds) of last update time
      required:
        - chainDescriptor
        - currentEpoch
        - epochElapsed
        - epochDuration
        - additionalInfo
        - lastUpdated
    StakingProvider:
      description: The unique identifier of the staking provider
      type: string
      example: kiln
      enum:
        - kiln
        - figment
        - lido
        - p2p
        - blockdaemon
        - galaxy
        - pierTwo
        - kraken
    FeeLevel:
      type: string
      example: MEDIUM
      description: Represents the fee level for a transaction, which can be set as slow, medium, or fast. Only one of fee/feeLevel is required.
      enum:
        - LOW
        - MEDIUM
        - HIGH
    StakeRequest:
      type: object
      example:
        id: b70701f4-d7b1-4795-a8ee-b09cdb5b850d
        vaultAccountId: '22'
        providerId: kiln
        stakeAmount: '32'
        chainDescriptor: ETH
        txNote: stake request of 32ETH created on 02.04.23
        feeLevel: MEDIUM
      properties:
        vaultAccountId:
          type: string
          example: '22'
          description: The Fireblocks vault account ID that will source the funds for staking.
        providerId:
          $ref: '#/components/schemas/StakingProvider'
        stakeAmount:
          type: string
          example: '32'
          description: The amount of tokens to stake. The amount may be truncated to match the chain's decimal precision requirements.
        txNote:
          type: string
          example: stake request of 32ETH created on 02.04.23
          description: Optional note or comment to associate with the stake transaction. This note will be included in transaction records and can be used for tracking or audit purposes.
        fee:
          type: string
          example: '7'
          description: Optional transaction fee. Controls the priority and cost of the blockchain transaction. Only one of 'fee' or 'feeLevel' should be provided; if both are specified, 'feeLevel' takes precedence.
        feeLevel:
          $ref: '#/components/schemas/FeeLevel'
        chainDescriptor:
          type: string
          example: ETH
          description: Protocol identifier for the staking operation
        id:
          type: string
          example: b70701f4-d7b1-4795-a8ee-b09cdb5b850d
          description: Applies only to Ethereum compounding validator staking (Pectra/EIP-7251). The ID of an existing staking position to add additional stake to. When provided, adds stake to the specified position instead of creating a new one. Requires 'isCompoundingValidator' to be true.
        isCompoundingValidator:
          type: boolean
          example: true
          description: Applies only to Ethereum staking. Indicates whether to use a compounding validator (see Pectra/EIP-7251). When true, creates a position that supports adding additional stake via the 'id' parameter. If not provided, defaults to false and a legacy (non-compounding) validator will be used.
      required:
        - vaultAccountId
        - providerId
        - stakeAmount
    StakeResponse:
      type: object
      example:
        id: afedfd2e4-e3c9-4b70-90d6-eb0f74bfd4sd8
      properties:
        id:
          type: string
          example: afedfd2e4-e3c9-4b70-90d6-eb0f74bfd4sd8
          description: The unique identifier of the staking position
      required:
        - id
    UnstakeRequest:
      type: object
      example:
        id: b70701f4-d7b1-4795-a8ee-b09cdb5b850d
        txNote: 'unstake request id b70701f4-d7b1-4795-a8ee-b09cdb5b850d #SOL'
        feeLevel: MEDIUM
        amount: '7'
      properties:
        id:
          type: string
          example: b70701f4-d7b1-4795-a8ee-b09cdb5b850d
          description: id of position to unstake
        fee:
          type: string
          example: '7'
          description: Represents the fee for a transaction, which can be specified as a percentage value. Only one of fee/feeLevel is required.
        feeLevel:
          $ref: '#/components/schemas/FeeLevel'
        txNote:
          type: string
          example: 'unstake request id b70701f4-d7b1-4795-a8ee-b09cdb5b850d #SOL'
          description: The note to associate with the transactions.
        amount:
          type: string
          example: '7'
          description: Amount of tokens to unstake. Only supported for liquid staking (Lido) to enable partial unstaking. For other chains, this field is ignored and the entire position will be unstaked. If not provided, the entire position will be unstaked.
      required:
        - id
    WithdrawRequest:
      type: object
      example:
        id: b70701f4-d7b1-4795-a8ee-b09cdb5b850d
        txNote: 'withdraw request id b70701f4-d7b1-4795-a8ee-b09cdb5b850d #ETH'
        feeLevel: MEDIUM
        amount: '7'
      properties:
        id:
          type: string
          example: b70701f4-d7b1-4795-a8ee-b09cdb5b850d
          description: id of position to withdraw
        fee:
          type: string
          example: '7'
          description: Represents the fee for a transaction, which can be specified as a percentage value. Only one of fee/feeLevel is required.
        feeLevel:
          $ref: '#/components/schemas/FeeLevel'
        txNote:
          type: string
          example: 'withdraw request id b70701f4-d7b1-4795-a8ee-b09cdb5b850d #ETH'
          description: The note to associate with the transactions.
        amount:
          type: string
          example: '7'
          description: Amount of tokens to withdraw. Only supported for ETH compounding validators (EIP-7251/Pectra) and Cosmos chains to enable partial withdrawals. For ETH compounding validators, the remaining balance must be at least 32 ETH after withdrawal. For other chains, this field is ignored and the entire available amount will be withdrawn. If not provided, the entire available amount will be withdrawn.
      required:
        - id
    ClaimRewardsRequest:
      type: object
      example:
        id: b70701f4-d7b1-4795-a8ee-b09cdb5b850d
        txNote: claim rewards request id b70701f4-d7b1-4795-a8ee-b09cdb5b850d
        feeLevel: MEDIUM
      properties:
        id:
          type: string
          example: b70701f4-d7b1-4795-a8ee-b09cdb5b850d
          description: id of position to withdraw rewards from
        fee:
          type: string
          example: '7'
          description: Represents the fee for a transaction, which can be specified as a percentage value. Only one of fee/feeLevel is required.
        feeLevel:
          $ref: '#/components/schemas/FeeLevel'
        txNote:
          type: string
          example: claim rewards request id b70701f4-d7b1-4795-a8ee-b09cdb5b850d
          description: The note to associate with the transactions.
      required:
        - id
    SplitRequest:
      type: object
      example:
        id: b70701f4-d7b1-4795-a8ee-b09cdb5b850d
        amount: '20'
        txNote: split 20 SOL out of 100 SOL, created on 02.04.23
        feeLevel: MEDIUM
      properties:
        id:
          type: string
          example: b70701f4-d7b1-4795-a8ee-b09cdb5b850d
          description: id of position to split
        amount:
          type: string
          example: '20'
          description: Amount of tokens to be transferred to the new stake account.
        fee:
          type: string
          example: '7'
          description: Represents the fee for a transaction, which can be specified as a percentage value. Only one of fee/feeLevel is required.
        feeLevel:
          $ref: '#/components/schemas/FeeLevel'
        txNote:
          type: string
          example: split 20 SOL out of 100 SOL, created on 02.04.23
          description: The note to associate with the split transactions.
      required:
        - id
        - amount
    SplitResponse:
      type: object
      properties:
        id:
          type: string
          example: b70701f4-d7b1-4795-a8ee-b09cdb5b850d
          description: The unique identifier of the new staking position
      required:
        - id
      example:
        id: afedfd2e4-e3c9-4b70-90d6-eb0f74bfd4sd8
    MergeStakeAccountsRequest:
      type: object
      example:
        sourceId: b70701f4-d7b1-4795-a8ee-b09cdb5b850d
        destinationId: f3432f4-34d1-43495-a8ee-jfdjnfj34i3
        txNote: Merging stake for optimization
        feeLevel: MEDIUM
      properties:
        sourceId:
          type: string
          format: uuid
          example: b70701f4-d7b1-4795-a8ee-b09cdb5b850d
          description: Id of the source position to merge from
        destinationId:
          type: string
          format: uuid
          example: f3432f4-34d1-43495-a8ee-jfdjnfj34i3
          description: Id of the destination position to merge into
        fee:
          type: string
          example: '7'
          description: Represents the fee for a transaction, which can be specified as a percentage value. Only one of fee/feeLevel is required.
        feeLevel:
          $ref: '#/components/schemas/FeeLevel'
        txNote:
          type: string
          example: Merging stake for optimization
          description: The note to associate with the merge transaction.
      required:
        - sourceId
        - destinationId
    MergeStakeAccountsResponse:
      type: object
      properties:
        id:
          type: string
          example: b70701f4-d7b1-4795-a8ee-b09cdb5b850d
          description: The unique identifier of the merge position (the id of the destination position)
      required:
        - id
    RelatedTransaction:
      type: object
      properties:
        txId:
          type: string
          example: b70601f4-d7b1-4795-a8ee-b09cdb4r850d
          description: The transaction ID
        completed:
          type: boolean
          example: true
          description: Is the transaction completed or not
      required:
        - txId
        - completed
    SolanaRewardsBreakdown:
      type: object
      description: A breakdown of the staking rewards earned by the position.
      example:
        issuance: '0.000856038'
        mev: '0.000123456'
        lastRewardSyncedAt: '2023-07-13T15:55:34.256Z'
      properties:
        issuance:
          type: string
          example: '0.000856038'
          description: The issuance reward amount earned by the position, measured in the staked asset unit.
        mev:
          type: string
          example: '0.000123456'
          description: The MEV reward amount earned by the position, measured in the staked asset unit.
        lastRewardSyncedAt:
          type: string
          format: date-time
          example: '2023-07-13T15:55:34.256Z'
          description: The last time the rewards were synced (ISO Date).
      required:
        - issuance
        - mev
        - lastRewardSyncedAt
    SolanaBlockchainData:
      type: object
      example:
        stakeAccountAddress: 3Ru67FyzMTcdENmmRL4Eve4dtPd6AdpuypR21q5EQCdq
        rewardsBreakdown:
          issuance: '0.000856038'
          mev: '0.000123456'
          lastRewardSyncedAt: '2023-07-13T15:55:34.256Z'
      description: Additional fields per blockchain - can be empty or missing if not initialized or no additional info exists. The type depends on the chainDescriptor value. For Solana (SOL), stake account address. For Ethereum (ETH), an empty object is returned as no specific data is available.
      properties:
        stakeAccountAddress:
          type: string
          example: 3Ru67FyzMTcdENmmRL4Eve4dtPd6AdpuypR21q5EQCdq
          description: The stake account address matching the stakeAccountId.
        stakeAccountDerivationChangeValue:
          type: number
          example: 7
          description: The value of the change level in the BIP32 path which was used to derive the stake account address.
        rewardsBreakdown:
          $ref: '#/components/schemas/SolanaRewardsBreakdown'
      required:
        - stakeAccountAddress
        - stakeAccountDerivationChangeValue
    EthereumBlockchainData:
      type: object
      description: Additional fields per blockchain for Ethereum (ETH) - can be empty or missing if not initialized or no specific data is available.
      properties:
        isCompoundingValidator:
          type: boolean
          example: true
          description: Is the validator compounding (i.e it was created with compounding validator type).
      required:
        - isCompoundingValidator
    StEthBlockchainData:
      type: object
      description: Additional fields per blockchain for Staked Ethereum (STETH_ETH) - can be empty or missing if not initialized or no additional info exists.
      properties:
        totalWithdrawableAmount:
          type: string
          example: '1.5'
          description: The total amount available for withdrawal.
        totalInactiveAmount:
          type: string
          example: '2.0'
          description: The total inactive amount.
      required:
        - totalWithdrawableAmount
        - totalInactiveAmount
    RelatedRequest:
      type: object
      properties:
        status:
          type: string
          example: deactivating
          description: The status of the request
          enum:
            - deactivating
        inProgress:
          type: boolean
          example: false
          description: Indicates whether there is an ongoing action for this position related to this request
        amount:
          type: string
          example: '0.05'
          description: Amount of tokens
        txId:
          type: string
          example: c80601f4-d7b1-4795-a8ee-b09cdb5b450c
          description: The transaction ID of the ongoing request
      required:
        - status
        - inProgress
        - amount
        - txId
    Delegation:
      type: object
      properties:
        id:
          type: string
          example: b70701f4-d7b1-4795-a8ee-b09cdb5b850a
          description: The unique identifier of the staking position
        vaultAccountId:
          type: string
          example: '2'
          description: The source vault account to stake from
        validatorName:
          type: string
          example: FwR3P......tT59f
          description: The destination validator address name
        providerName:
          type: string
          example: Kiln
          description: The destination validator provider name
        chainDescriptor:
          type: string
          example: SOL
          description: The protocol identifier (e.g. "ETH"/ "SOL") to use
        amount:
          type: string
          example: '0.05'
          description: 'Total value of the staking position. For Solana, Lido and Ethereum (compounding validator): includes the original stake plus accumulated rewards. For MATIC, Cosmos and Ethereum (legacy validator): refers to the amount currently staked.'
        rewardsAmount:
          type: string
          example: '0.000856038'
          description: The amount staked in the position, measured in the staked asset unit.
        dateCreated:
          format: date-time
          type: string
          example: '2023-07-13T15:55:34.256Z'
          description: When was the request made (ISO Date).
        dateUpdated:
          format: date-time
          type: string
          example: '2023-07-13T15:55:34.256Z'
          description: When has the position last changed (ISO Date).
        status:
          type: string
          example: active
          description: The current status.
        relatedTransactions:
          example:
            - txId: b70601f4-d7b1-4795-a8ee-b09cdb4r850d
              completed: true
            - txId: c80601f4-d7b1-4795-a8ee-b09cdb5b450c
              completed: false
          description: An array of transaction objects related to this position. Each object includes a 'txId' representing the transaction ID and a 'completed' boolean indicating if the transaction was completed.
          type: array
          items:
            $ref: '#/components/schemas/RelatedTransaction'
        validatorAddress:
          type: string
          example: FwR3PbjS5iyqzLiLugrBqKSa5EKZ4vK9SKs7eQXtT59f
          description: The destination address of the staking transaction.
        providerId:
          $ref: '#/components/schemas/StakingProvider'
        availableActions:
          example:
            - unstake
          description: An array of available actions that can be performed. for example, actions like "unstake" or "withdraw".
          type: array
          items:
            type: string
        inProgress:
          type: boolean
          example: true
          description: Indicates whether there is an ongoing action for this position related to this request
        inProgressTxId:
          type: string
          example: c80601f4-d7b1-4795-a8ee-b09cdb5b450c
          description: The transaction ID of the initial stake position request only. Only present when there is an active initial stake transaction.
        blockchainPositionInfo:
          description: Additional fields per blockchain - can be empty or missing if not initialized or no additional info exists.
          discriminator:
            propertyName: chainDescriptor
            mapping:
              SOL: '#/components/schemas/SolanaBlockchainData'
              SOL_TEST: '#/components/schemas/SolanaBlockchainData'
              ETH: '#/components/schemas/EthereumBlockchainData'
              ETH_TEST6: '#/components/schemas/EthereumBlockchainData'
              ETH_TEST_HOODI: '#/components/schemas/EthereumBlockchainData'
              STETH_ETH: '#/components/schemas/StEthBlockchainData'
              STETH_ETH_TEST6_DZFA: '#/components/schemas/StEthBlockchainData'
              STETH_ETH_TEST_HOODI: '#/components/schemas/StEthBlockchainData'
          oneOf:
            - $ref: '#/components/schemas/SolanaBlockchainData'
            - $ref: '#/components/schemas/EthereumBlockchainData'
            - $ref: '#/components/schemas/StEthBlockchainData'
        relatedRequests:
          example:
            - status: deactivating
              inProgress: false
              amount: '0.05'
              txId: c80601f4-d7b1-4795-a8ee-b09cdb5b450c
          type: array
          items:
            $ref: '#/components/schemas/RelatedRequest'
      required:
        - id
        - vaultAccountId
        - validatorName
        - providerName
        - chainDescriptor
        - amount
        - rewardsAmount
        - dateCreated
        - dateUpdated
        - status
        - relatedTransactions
        - validatorAddress
        - providerId
        - availableActions
        - inProgress
        - blockchainPositionInfo
    StakingGetAllDelegationsResponse:
      type: array
      items:
        $ref: '#/components/schemas/Delegation'
    Position:
      type: object
      properties:
        id:
          type: string
          example: b70701f4-d7b1-4795-a8ee-b09cdb5b850a
          description: The unique identifier of the staking position
        vaultAccountId:
          type: string
          example: '2'
          description: The source vault account to stake from
        validatorName:
          type: string
          example: FwR3P......tT59f
          description: The destination validator address name
        providerName:
          type: string
          example: Kiln
          description: The destination validator provider name
        chainDescriptor:
          type: string
          example: SOL
          description: The protocol identifier (e.g. "ETH"/ "SOL") to use
        amount:
          type: string
          example: '0.05'
          description: 'Total value of the staking position. For Solana, Lido and Ethereum (compounding validator): includes the original stake plus accumulated rewards. For MATIC, Cosmos and Ethereum (legacy validator): refers to the amount currently staked.'
        rewardsAmount:
          type: string
          example: '0.000856038'
          description: The amount staked in the position, measured in the staked asset unit.
        dateCreated:
          format: date-time
          type: string
          example: '2023-07-13T15:55:34.256Z'
          description: When was the request made (ISO Date).
        dateUpdated:
          format: date-time
          type: string
          example: '2023-07-13T15:55:34.256Z'
          description: When has the position last changed (ISO Date).
        status:
          type: string
          example: ACTIVE
          description: The current status.
          enum:
            - CREATING
            - PENDING
            - ACTIVATING
            - ACTIVE
            - DEACTIVATING
            - DEACTIVATED
            - WITHDRAWING
            - WITHDRAWN
            - MERGED
            - CONSOLIDATED
            - CANCELED
            - FAILED
        validatorAddress:
          type: string
          example: FwR3PbjS5iyqzLiLugrBqKSa5EKZ4vK9SKs7eQXtT59f
          description: The destination address of the staking transaction.
        providerId:
          $ref: '#/components/schemas/StakingProvider'
        availableActions:
          example:
            - UNSTAKE
          description: An array of available actions that can be performed. for example, actions like "UNSTAKE" or "WITHDRAW".
          type: array
          items:
            type: string
            enum:
              - UNSTAKE
              - WITHDRAW
              - ADD_TO_STAKE
              - SPLIT
              - MERGE
              - CLAIM_REWARDS
              - CONSOLIDATE
        inProgress:
          type: boolean
          example: true
          description: Indicates whether there is an ongoing action for this position related to this request
        inProgressTxId:
          type: string
          example: c80601f4-d7b1-4795-a8ee-b09cdb5b450c
          description: The transaction ID of the initial stake position request only. Only present when there is an active initial stake transaction.
        blockchainPositionInfo:
          description: Additional fields per blockchain - can be empty or missing if not initialized or no additional info exists.
          discriminator:
            propertyName: chainDescriptor
            mapping:
              SOL: '#/components/schemas/SolanaBlockchainData'
              SOL_TEST: '#/components/schemas/SolanaBlockchainData'
              ETH: '#/components/schemas/EthereumBlockchainData'
              ETH_TEST6: '#/components/schemas/EthereumBlockchainData'
              ETH_TEST_HOODI: '#/components/schemas/EthereumBlockchainData'
              STETH_ETH: '#/components/schemas/StEthBlockchainData'
              STETH_ETH_TEST6_DZFA: '#/components/schemas/StEthBlockchainData'
              STETH_ETH_TEST_HOODI: '#/components/schemas/StEthBlockchainData'
          oneOf:
            - $ref: '#/components/schemas/SolanaBlockchainData'
            - $ref: '#/components/schemas/EthereumBlockchainData'
            - $ref: '#/components/schemas/StEthBlockchainData'
      required:
        - id
        - vaultAccountId
        - validatorName
        - providerName
        - chainDescriptor
        - amount
        - rewardsAmount
        - dateCreated
        - dateUpdated
        - status
        - validatorAddress
        - providerId
        - availableActions
        - inProgress
        - blockchainPositionInfo
    StakingPositionsPaginatedResponse:
      type: object
      properties:
        data:
          type: array
          description: The data of the current page of staking positions
          items:
            $ref: '#/components/schemas/Position'
        next:
          type: string
          description: The cursor for the next page
          example: eJ0eXAiOiJKV1QiLCJhbGcOiJIUzI1NiJ9
          nullable: true
      required:
        - data
    AmountAndChainDescriptor:
      type: object
      properties:
        chainDescriptor:
          type: string
          example: ETH
          description: The protocol identifier (e.g. "ETH"/"SOL") for summary
        amount:
          type: string
          example: '32.007149606'
          description: Cryptocurrency quantity
      required:
        - chainDescriptor
        - amount
    DelegationSummary:
      type: object
      properties:
        active:
          description: An array of objects containing chain descriptors and associated amounts, representing active positions.
          type: array
          items:
            $ref: '#/components/schemas/AmountAndChainDescriptor'
        inactive:
          description: An array of objects containing chain descriptors and associated amounts, representing inactive positions.
          type: array
          items:
            $ref: '#/components/schemas/AmountAndChainDescriptor'
        rewardsAmount:
          description: An array of objects containing chain descriptors and associated amounts, representing rewards positions.
          type: array
          items:
            $ref: '#/components/schemas/AmountAndChainDescriptor'
        totalStaked:
          description: An array of objects with chain descriptors and total staked amounts, representing the combined staked totals of active and inactive positions.
          type: array
          items:
            $ref: '#/components/schemas/AmountAndChainDescriptor'
      required:
        - active
        - inactive
        - rewardsAmount
        - totalStaked
    StakingGetSummaryByVaultResponse:
      type: object
      additionalProperties:
        $ref: '#/components/schemas/DelegationSummary'
    PositionRelatedTransaction:
      type: object
      properties:
        txId:
          type: string
          example: b70601f4-d7b1-4795-a8ee-b09cdb4r850d
          description: The transaction ID.
        txHash:
          type: string
          example: 0xabc123...
          description: On-chain transaction hash. Absent while the transaction is pending.
        stakingOperation:
          type: string
          example: STAKE
          description: Staking operation type. One of APPROVE, STAKE, UNSTAKE, WITHDRAW, CLAIM_REWARDS, SPLIT, CONSOLIDATE, MERGE, TRANSFER, AUTHORIZE, ADD_TO_STAKE. Absent on legacy persisted rows.
          enum:
            - APPROVE
            - STAKE
            - UNSTAKE
            - WITHDRAW
            - CLAIM_REWARDS
            - SPLIT
            - CONSOLIDATE
            - MERGE
            - TRANSFER
            - AUTHORIZE
            - ADD_TO_STAKE
        timestamp:
          format: date-time
          type: string
          example: '2024-01-15T10:30:00.000Z'
          description: ISO timestamp when the transaction was initiated (send time).
        status:
          type: string
          example: COMPLETED
          description: Transaction outcome.
          enum:
            - PENDING
            - COMPLETED
            - FAILED
        amount:
          type: string
          example: '32'
          description: Portion of position amount this transaction moved (native units). Absent on legacy rows.
        txNote:
          type: string
          example: stake request of 32ETH created on 02.04.23
          description: User-provided note from the transfer request. Omitted when not set.
      required:
        - txId
        - timestamp
        - status
    StakingPositionRelatedTransactionsPaginatedResponse:
      type: object
      properties:
        data:
          type: array
          description: The related transactions for the current page.
          items:
            $ref: '#/components/schemas/PositionRelatedTransaction'
          example:
            - txId: b70601f4-d7b1-4795-a8ee-b09cdb4r850d
              txHash: 0xabc123...
              stakingOperation: STAKE
              timestamp: '2024-01-15T10:30:00.000Z'
              status: COMPLETED
              amount: '32'
        next:
          type: string
          description: Cursor for the next page. Use this value in the pageCursor parameter to fetch the next page. Null if no more pages.
          example: eJ0eXAiOiJKV1QiLCJhbGcOiJIUzI1NiJ9
          nullable: true
      required:
        - data
    Validator:
      type: object
      properties:
        chainDescriptor:
          type: string
          example: SOL
          description: The protocol identifier (e.g. "ETH"/"SOL") of the validator
        feePercent:
          type: number
          example: 5
          description: The service fee as a percentage out of the earned rewards
        isPrivate:
          type: boolean
          example: true
          description: Is the validator private, i.e created by the user
      required:
        - chainDescriptor
        - feePercent
    Provider:
      type: object
      properties:
        id:
          type: string
          example: kiln
          description: The ID of the provider
        providerName:
          type: string
          example: Kiln
          description: Name of the provider
        validators:
          example:
            - chainDescriptor: ETH
              feePercent: 5
            - chainDescriptor: SOL
              feePercent: 7
          description: An array of objects that includes chain descriptors and the corresponding fee percentages for validators supported by the provider
          type: array
          items:
            $ref: '#/components/schemas/Validator'
        iconUrl:
          type: string
          example: https://static.fireblocks.io/staking/validators/kiln_console.png
          description: URL to the validator's icon
        termsOfServiceUrl:
          type: string
          example: https://www.kiln.fi/terms-and-conditions-for-fireblocks-customers
          description: URL to the terms of service
        isTermsOfServiceApproved:
          type: boolean
          example: true
          description: Indicates whether the terms of service are approved
        isPrivate:
          type: boolean
          example: true
          description: Is the provider private, i.e created by the user
        isLiquidStaking:
          type: boolean
          example: true
          description: Is the provider a liquid staking provider
      required:
        - id
        - providerName
        - validators
        - isTermsOfServiceApproved
        - isLiquidStaking
    StakingGetProvidersResponse:
      type: array
      items:
        $ref: '#/components/schemas/Provider'
    ActionRecord:
      type: object
      description: One row in the lending action execution sequence.
      properties:
        actionType:
          type: string
          description: Kind of step in the lending sequence.
          example: APPROVE
          enum:
            - APPROVE
            - DEPOSIT
            - WITHDRAW
        status:
          type: string
          description: Step lifecycle status.
          example: COMPLETED
          enum:
            - NOT_STARTED
            - PROCESSING
            - PENDING_SIGNATURE
            - BROADCASTING
            - CONFIRMING
            - COMPLETED
            - FAILED
            - CANCELED
        txId:
          type: string
          description: Fireblocks transaction id when applicable (unset when NOT_STARTED).
          example: tx_abc123def456
        txHash:
          type: string
          description: On-chain transaction hash when applicable (unset when NOT_STARTED).
          example: '0x1a2b3c4d5e6f7a8b9c0d1e2f3a4b5c6d7e8f9a0b1c2d3e4f5a6b7c8d9e0f1a2b'
        errorMessage:
          type: string
          description: Error detail when the step failed.
        updatedAt:
          type: string
          description: Last update time (ISO-8601); may be empty when status is NOT_STARTED.
          example: '2025-03-20T08:30:00Z'
      required:
        - actionType
        - status
        - updatedAt
    GetActionResponse:
      type: object
      description: Single lending action (intent plus per-step execution rows).
      properties:
        id:
          type: string
          description: Action sequence id (UUID).
          example: 660e8400-e29b-41d4-a716-446655440001
        vaultAccountId:
          type: string
          description: Fireblocks vault account that executed the action.
          example: '0'
        userId:
          type: string
          description: User who initiated the action.
          example: 550e8400-e29b-41d4-a716-446655440000
        status:
          type: string
          description: Intent status (e.g. CREATED, IN_PROGRESS, COMPLETED).
          example: IN_PROGRESS
        providerId:
          type: string
          description: Lending protocol identifier.
          example: MORPHO
          enum:
            - MORPHO
            - AAVE
        actionType:
          type: string
          description: Whether this action is a deposit or withdraw flow.
          example: DEPOSIT
          enum:
            - DEPOSIT
            - WITHDRAW
        opportunityId:
          type: string
          description: Target lending opportunity identifier.
          example: morpho-usdc-vault-1
        positionId:
          type: string
          description: Position id in the system when applicable.
          example: 770e8400-e29b-41d4-a716-446655440002
        amount:
          type: string
          description: Human-readable amount for the action.
          example: '1500.5'
        createdAt:
          type: string
          description: Creation time (ISO-8601).
          example: '2025-01-15T10:00:00Z'
        updatedAt:
          type: string
          description: Last update time (ISO-8601).
          example: '2025-03-20T08:30:00Z'
        records:
          type: array
          description: Ordered execution steps for this action.
          items:
            $ref: '#/components/schemas/ActionRecord'
          minItems: 1
          maxItems: 4
      required:
        - id
        - vaultAccountId
        - userId
        - status
        - providerId
        - actionType
        - opportunityId
        - amount
        - createdAt
        - updatedAt
        - records
    GetActionsResponse:
      type: object
      properties:
        data:
          type: array
          description: Page of lending actions for this query.
          items:
            $ref: '#/components/schemas/GetActionResponse'
          example:
            - id: 660e8400-e29b-41d4-a716-446655440001
              vaultAccountId: '0'
              userId: 550e8400-e29b-41d4-a716-446655440000
              status: IN_PROGRESS
              providerId: MORPHO
              actionType: DEPOSIT
              opportunityId: morpho-usdc-vault-1
              amount: '1500.5'
              createdAt: '2025-01-15T10:00:00Z'
              updatedAt: '2025-03-20T08:30:00Z'
              records:
                - actionType: APPROVE
                  status: COMPLETED
                  txId: tx_abc123
                  txHash: 0xabc...
                  updatedAt: '2025-03-20T08:29:00Z'
        next:
          type: string
          description: Opaque cursor for the next page; empty when there is no next page.
          example: ''
        prev:
          type: string
          description: Opaque cursor for the previous page; empty when there is no previous page.
          example: ''
        total:
          type: integer
          format: int32
          description: Total number of items matching the query.
          example: 1
      required:
        - data
        - total
    CreateEarnActionRequest:
      type: object
      properties:
        action:
          type: string
          description: Whether to deposit into or withdraw from the lending opportunity.
          example: DEPOSIT
          enum:
            - DEPOSIT
            - WITHDRAW
        opportunityId:
          type: string
          description: Identifier of the vault or market (lending opportunity).
          example: morpho-usdc-vault-1
        vaultAccountId:
          type: string
          description: Fireblocks vault account that will execute the action.
          example: '12345'
        amount:
          type: string
          description: Human-readable token amount (e.g. "1.6") or the keyword "max" for the full position or available balance.
          example: '1000.0'
      required:
        - action
        - opportunityId
        - vaultAccountId
        - amount
    CreateEarnActionResponse:
      type: object
      properties:
        id:
          type: string
          description: ActionIntent UUID for tracking the lending action workflow.
          example: 550e8400-e29b-41d4-a716-446655440000
        status:
          type: string
          description: Lifecycle status (e.g. CREATED, IN_PROGRESS, COMPLETED).
          example: CREATED
          enum:
            - CREATED
            - IN_PROGRESS
            - COMPLETED
            - CANCELED
            - FAILED
      required:
        - id
        - status
    EarnAsset:
      type: object
      properties:
        address:
          type: string
          description: Contract address of the token on-chain.
          example: '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48'
        symbol:
          type: string
          description: Human-readable ticker (e.g. USDC).
          example: USDC
        decimals:
          type: integer
          format: int32
          description: Token decimals used when interpreting on-chain amounts.
          example: 6
        assetId:
          type: string
          description: Fireblocks legacy asset identifier (e.g. USDC_ETH, PYUSD).
          example: USDC_ETH
    Apy:
      type: object
      properties:
        native:
          type: number
          format: double
          description: APY in native format (before fees), as a percentage (e.g. 4.25 means 4.25%, not 0.0425).
          example: 4.25
        gross:
          type: number
          format: double
          description: Gross APY before fees, as a percentage (e.g. 4.25 means 4.25%, not 0.0425).
          example: 4.4
        net:
          type: number
          format: double
          description: Net APY after fees, as a percentage (e.g. 4.25 means 4.25%, not 0.0425).
          example: 4.05
    Exposure:
      type: object
      description: Vault allocation exposure item (Morpho MetaMorpho allocation slice).
      properties:
        address:
          type: string
          description: Contract address of the exposure token on-chain.
          example: '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48'
        amount:
          type: string
          description: Human-readable token amount (raw on-chain value scaled by 10^decimals).
          example: '10.0'
        symbol:
          type: string
          description: Human-readable ticker (e.g. USDC).
          example: USDC
        decimals:
          type: integer
          format: int32
          description: Token decimals used when interpreting on-chain amounts.
          example: 6
        assetId:
          type: string
          description: Fireblocks legacy asset identifier (e.g. USDC_ETH, PYUSD); only present when resolved via asset-service.
          example: USDC_ETH
        amountUsd:
          type: string
          description: USD notional value of the exposure amount.
          example: '10.0'
      required:
        - address
        - amount
    Opportunity:
      type: object
      properties:
        id:
          type: string
          description: Unique opportunity identifier.
          example: opp-usdc-eth-001
        providerId:
          type: string
          description: Lending protocol (`MORPHO` or `AAVE`).
          example: MORPHO
          enum:
            - MORPHO
            - AAVE
        type:
          type: string
          description: Opportunity kind — vault or market.
          example: VAULT
          enum:
            - VAULT
            - MARKET
        chainId:
          type: string
          description: Chain identifier as a string (e.g. "1" for Ethereum mainnet).
          example: '1'
        address:
          type: string
          description: Primary contract address for the vault or market.
          example: '0x1234567890123456789012345678901234567890'
        name:
          type: string
          description: Display name of the opportunity.
          example: USDC Core
        symbol:
          type: string
          description: Symbol or share token ticker for the position asset.
          example: mUSDC
        principalAsset:
          description: Underlying token the user deposits (principal).
          allOf:
            - $ref: '#/components/schemas/EarnAsset'
        positionAsset:
          description: Token representing the user’s position in the protocol (e.g. vault share).
          allOf:
            - $ref: '#/components/schemas/EarnAsset'
        totalAssets:
          type: string
          description: Human-readable total value locked / assets in the opportunity.
          example: '50000000.0'
        liquidity:
          type: string
          description: Human-readable available liquidity.
          example: '1200000.0'
        apy:
          description: APY breakdown; values are percentages (e.g. 4.25 means 4.25%).
          allOf:
            - $ref: '#/components/schemas/Apy'
        performanceFee:
          type: string
          description: Performance fee as a human-readable decimal string.
          example: '0.10'
        managementFee:
          type: string
          description: Management fee as a human-readable decimal string.
          example: '0.01'
        exposureType:
          type: string
          description: What the `exposure` rows represent; `UNSPECIFIED` when there is no exposure.
          example: VAULT_ALLOCATION
          enum:
            - UNSPECIFIED
            - VAULT_ALLOCATION
            - MARKET_COLLATERAL
        exposure:
          type: array
          description: Per-asset exposure breakdown (vault allocation slices, top 20 by USD notional). Empty when not applicable.
          minItems: 0
          maxItems: 20
          items:
            $ref: '#/components/schemas/Exposure'
          example: []
    GetOpportunitiesResponse:
      type: object
      properties:
        data:
          type: array
          description: Page of lending opportunities for this query.
          items:
            $ref: '#/components/schemas/Opportunity'
          example:
            - id: opp-usdc-eth-001
              providerId: MORPHO
              type: VAULT
              chainId: '1'
              address: '0x1234567890123456789012345678901234567890'
              name: USDC Core
              symbol: mUSDC
              principalAsset:
                address: '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48'
                symbol: USDC
                decimals: 6
                assetId: USDC_ETH
              positionAsset:
                address: '0xabcdefabcdefabcdefabcdefabcdefabcdefabcd'
                symbol: mUSDC
                decimals: 18
                assetId: MORPHO_USDC_VAULT_ETH
              totalAssets: '50000000.0'
              liquidity: '1200000.0'
              apy:
                native: 4.25
                gross: 4.4
                net: 4.05
              performanceFee: '0.10'
              exposure: []
              managementFee: '0.01'
        next:
          type: string
          description: Opaque cursor for the next page; empty when there is no next page.
          example: ''
        prev:
          type: string
          description: Opaque cursor for the previous page; empty when there is no previous page.
          example: ''
        total:
          type: integer
          format: int32
          description: Total number of items matching the query.
          example: 1
      required:
        - data
        - total
    Position-2:
      type: object
      properties:
        id:
          type: string
          description: Position UUID.
          example: 660e8400-e29b-41d4-a716-446655440001
        status:
          type: string
          description: Lifecycle status of the position.
          example: ACTIVE
          enum:
            - ACTIVE
            - INACTIVE
        inFlight:
          type: boolean
          description: True while an action is in progress for this position.
          example: false
        positionType:
          type: string
          description: Whether the position is lend- or borrow-side.
          example: LEND
          enum:
            - LEND
            - BORROW
        vaultAccountId:
          type: string
          description: Fireblocks vault account holding the position.
          example: '12345'
        opportunityId:
          type: string
          description: Opportunity / vault or market identifier.
          example: morpho-usdc-vault-1
        chainId:
          type: string
          description: Chain identifier as a string (e.g. "1").
          example: '1'
        providerId:
          type: string
          description: Lending protocol.
          example: MORPHO
          enum:
            - MORPHO
            - AAVE
        origin:
          type: string
          description: Whether the position was opened natively in Fireblocks or imported externally.
          example: NATIVE
          enum:
            - NATIVE
            - EXTERNAL
        principalAssetId:
          type: string
          description: Fireblocks asset id for the principal (underlying) asset.
          example: USDC_ETH
        positionAssetId:
          type: string
          description: Fireblocks asset id for the position / share token.
          example: MORPHO_USDC_VAULT_ETH
        principalBalance:
          type: string
          description: Human-readable principal balance.
          example: '10000.00'
        positionBalance:
          type: string
          description: Human-readable position token balance.
          example: '9950.5'
        createdAt:
          type: string
          description: Creation time (ISO-8601).
          example: '2025-01-15T10:00:00Z'
        updatedAt:
          type: string
          description: Last update time (ISO-8601).
          example: '2025-03-20T08:30:00Z'
        lastSyncedAt:
          type: string
          description: Last successful on-chain sync time (ISO-8601).
          example: '2025-03-20T08:29:55Z'
        availableActions:
          type: array
          description: Actions the API allows next for this position.
          items:
            type: string
            enum:
              - DEPOSIT
              - WITHDRAW
          example:
            - DEPOSIT
            - WITHDRAW
        yield:
          type: string
          description: Accrued yield in principal token units (decimal string). Only present for Morpho positions.
          example: '1.23'
      required:
        - id
        - status
        - inFlight
        - positionType
        - vaultAccountId
        - opportunityId
        - chainId
        - providerId
        - origin
        - principalAssetId
        - positionAssetId
        - principalBalance
        - positionBalance
        - createdAt
        - updatedAt
        - availableActions
    GetPositionsResponse:
      type: object
      properties:
        data:
          type: array
          description: Page of user lending positions for this query.
          items:
            $ref: '#/components/schemas/Position-2'
          example:
            - id: 660e8400-e29b-41d4-a716-446655440001
              status: ACTIVE
              inFlight: false
              positionType: LEND
              vaultAccountId: '12345'
              opportunityId: morpho-usdc-vault-1
              chainId: '1'
              providerId: MORPHO
              origin: NATIVE
              principalAssetId: USDC_ETH
              positionAssetId: MORPHO_USDC_VAULT_ETH
              principalBalance: '10000.00'
              positionBalance: '9950.5'
              createdAt: '2025-01-15T10:00:00Z'
              updatedAt: '2025-03-20T08:30:00Z'
              lastSyncedAt: '2025-03-20T08:29:55Z'
              availableActions:
                - DEPOSIT
                - WITHDRAW
        next:
          type: string
          description: Opaque cursor for the next page; empty when there is no next page.
          example: ''
        prev:
          type: string
          description: Opaque cursor for the previous page; empty when there is no previous page.
          example: ''
        total:
          type: integer
          format: int32
          description: Total number of items matching the query.
          example: 1
      required:
        - data
        - total
    EarnProvider:
      type: object
      properties:
        providerId:
          type: string
          description: Stable protocol identifier (`MORPHO` or `AAVE`).
          example: AAVE
          enum:
            - MORPHO
            - AAVE
        displayName:
          type: string
          description: Human-readable protocol name for UI.
          example: Aave
        logoUrl:
          type: string
          description: URL for the provider logo asset.
          example: https://cdn.example.com/aave.svg
        supportedChainIds:
          type: array
          description: EVM chain IDs where this provider is supported.
          minItems: 0
          maxItems: 10
          items:
            type: integer
            format: int32
          example:
            - 1
            - 42161
        isTermsApprovalRequired:
          type: boolean
          description: Whether the user must accept terms before using this provider.
          example: false
        termsOfServiceUrl:
          type: string
          description: URL to the provider terms of service, when applicable.
          example: https://aave.com/terms
        isTermsOfServiceApproved:
          type: boolean
          description: Whether terms have been approved for this workspace / context.
          example: true
    GetProvidersResponse:
      type: object
      properties:
        data:
          type: array
          description: Page of integrated lending providers.
          items:
            $ref: '#/components/schemas/EarnProvider'
          example:
            - providerId: MORPHO
              displayName: Morpho
              logoUrl: https://cdn.example.com/morpho.svg
              supportedChainIds:
                - 1
                - 8453
              isTermsApprovalRequired: true
              termsOfServiceUrl: https://example.com/morpho/tos
              isTermsOfServiceApproved: false
        next:
          type: string
          description: Opaque cursor for the next page; empty when there is no next page.
          example: ''
        prev:
          type: string
          description: Opaque cursor for the previous page; empty when there is no previous page.
          example: ''
        total:
          type: integer
          format: int32
          description: Total number of items matching the query.
          example: 1
      required:
        - data
        - total
    ParticipantsIdentificationJsonSchema:
      type: string
      description: |
        A JSON Schema (draft-07) in string format that validates the ParticipantsIdentification object on requests where
        the provider manifest declares a `participantsIdentificationPolicy` for that endpoint (e.g. POST /orders).
        Defines which fields from originator and/or beneficiary are required.

        The schema uses oneOf to discriminate between INDIVIDUAL (PersonalIdentification) 
        and BUSINESS (BusinessIdentification) entity types for each participant.

        For INDIVIDUAL: fullName, dateOfBirth, postalAddress, email, phone, idNumber, idType, etc.
        For BUSINESS: businessName, registrationNumber, postalAddress, email, phone, etc.

        If you constrain `idType` or `additionalIdType` with a JSON Schema `enum`, use the same values as
        `PersonalIdentificationType` (authoritative list in that schema). The example below mirrors that enum.

        The string content is expected to be valid JSON (application/json).
      example: |
        {
          "$schema": "http://json-schema.org/draft-07/schema#",
          "type": "object",
          "required": ["originator"],
          "properties": {
            "originator": {
              "type": "object",
              "required": ["entityType"],
              "oneOf": [
                {
                  "properties": {
                    "entityType": { "const": "INDIVIDUAL" },
                    "fullName": {
                      "type": "object",
                      "required": ["firstName", "lastName"],
                      "properties": {
                        "firstName": { "type": "string" },
                        "lastName": { "type": "string" },
                        "middleName": { "type": "string" }
                      }
                    },
                    "dateOfBirth": { "type": "string", "format": "date" },
                    "email": { "type": "string", "format": "email" },
                    "phone": { "type": "string", "pattern": "^\\+[1-9]\\d{1,14}$" },
                    "postalAddress": {
                      "type": "object",
                      "required": ["city", "country"],
                      "properties": {
                        "streetLine1": { "type": "string" },
                        "streetLine2": { "type": "string" },
                        "city": { "type": "string" },
                        "region": { "type": "string" },
                        "postalCode": { "type": "string" },
                        "country": { "type": "string" }
                      }
                    },
                    "idNumber": { "type": "string" },
                    "idType": { "type": "string", "enum": ["NIN_SLIP_CARD", "BVN", "ID_CARD", "ID_BOOK", "NATIONAL_ID", "ALIEN_CARD", "PASSPORT", "ECOWAS_CARD", "RWANDA_CARD", "DRIVERS_LICENSE", "RESIDENT_CARD", "VOTER_ID", "HEALTH_INSURANCE_ID", "GHANA_CARD", "REFUGEE_ID", "SSNIT", "NON_CITIZEN_ID", "NATIONAL_REGISTRATION_CARD"] }
                  },
                  "required": ["entityType", "fullName", "email", "postalAddress"]
                },
                {
                  "properties": {
                    "entityType": { "const": "BUSINESS" },
                    "businessName": { "type": "string" },
                    "registrationNumber": { "type": "string" },
                    "email": { "type": "string", "format": "email" },
                    "phone": { "type": "string", "pattern": "^\\+[1-9]\\d{1,14}$" },
                    "postalAddress": {
                      "type": "object",
                      "required": ["city", "country"],
                      "properties": {
                        "streetLine1": { "type": "string" },
                        "streetLine2": { "type": "string" },
                        "city": { "type": "string" },
                        "region": { "type": "string" },
                        "postalCode": { "type": "string" },
                        "country": { "type": "string" }
                      }
                    }
                  },
                  "required": ["entityType", "businessName", "postalAddress"]
                }
              ]
            },
            "beneficiary": {
              "type": "object",
              "required": ["entityType"],
              "oneOf": [
                {
                  "properties": {
                    "entityType": { "const": "INDIVIDUAL" },
                    "fullName": {
                      "type": "object",
                      "required": ["firstName", "lastName"],
                      "properties": {
                        "firstName": { "type": "string" },
                        "lastName": { "type": "string" }
                      }
                    }
                  },
                  "required": ["entityType", "fullName"]
                },
                {
                  "properties": {
                    "entityType": { "const": "BUSINESS" },
                    "businessName": { "type": "string" }
                  },
                  "required": ["entityType", "businessName"]
                }
              ]
            }
          }
        }
    TransferRail:
      type: string
      description: |
        Transfer rail: 
        * **BLOCKCHAIN** - Transfer over the public blockchain
        * **INTERNAL** - Internal transfer within the same account (e.g. sub-accounts or same api key)
        * **SWIFT** - International wire transfer
        * **IBAN** - International Bank Account Number transfer
        * **US_WIRE** - Domestic wire transfer within the United States (e.g. FedWire)
        * **ACH** - Automated Clearing House transfer, typically takes longer but not as expensive as wire transfers
        * **SEPA** - Euro transfers within the SEPA zone
        * **SPEI** - Mexican interbank electronic payment system
        * **PIX** - Brazilian instant payment system
        * **LBT** - Local bank transfers within Africa
        * **MOMO** - Mobile money transfers (e.g. M-Pesa)
        * **CHAPS** - The Clearing House Automated Payment System (CHAPS) is a real-time gross settlement payment system used for transactions in the United Kingdom
        * **PAYID** - PayID payment identifier system (Australia)
        * **INTERAC** - Interac electronic funds transfer (Canada)
        * **INTERNAL_TRANSFER** - Internal transfer between accounts
      enum:
        - BLOCKCHAIN
        - INTERNAL
        - SWIFT
        - IBAN
        - US_WIRE
        - ACH
        - SEPA
        - SPEI
        - PIX
        - LBT
        - MOMO
        - CHAPS
        - PAYID
        - INTERAC
        - INTERNAL_TRANSFER
      example: BLOCKCHAIN
    FlowDirection:
      type: string
      description: The direction of asset conversion in an order.
      enum:
        - FIAT_TO_CRYPTO
        - CRYPTO_TO_FIAT
        - CRYPTO_TO_CRYPTO
        - FIAT_TO_FIAT
    IdentificationPolicyOverride:
      type: object
      description: |
        Override scoped by one or more dimensions. More dimensions = higher priority.
        Equal priority ties are broken by array order.

        **Validation:** At least one of `asset`, `rail`, or `flowDirection` will be present.

        Priority (highest to lowest):
        1. asset + rail + flowDirection
        2. asset + rail
        2. asset + flowDirection
        2. rail + flowDirection
        3. asset only
        3. rail only
        3. flowDirection only
        4. defaultSchema (no override matched)
      properties:
        asset:
          type: string
          description: Fireblocks asset ID (fiat or crypto).
        rail:
          $ref: '#/components/schemas/TransferRail'
        flowDirection:
          $ref: '#/components/schemas/FlowDirection'
        schema:
          $ref: '#/components/schemas/ParticipantsIdentificationJsonSchema'
      required:
        - schema
    ParticipantsIdentificationPolicy:
      type: object
      description: |
        When present on a provider manifest, specifies KYC/AML identification requirements as JSON Schemas.

        `defaultSchema` is the baseline; `overrides` refine it by `asset`, `rail`, and/or `flowDirection`
        (see priority below). The most specific matching override applies its `schema` for that request
        context: it may fully replace `defaultSchema`, or partially override it—when the override `schema`
        is not provided as a complete standalone definition, fields and rules omitted there continue to
        follow `defaultSchema`. If this object is omitted from the manifest, the provider imposes no PII
        requirements through this policy. FirstParty participants are always exempt.

        Resolution: from overrides that match the request context, choose the most specific (most dimensions
        matched); break ties by earlier position in the `overrides` array; if none match, use `defaultSchema`.

        Priority (highest precedence first):
        1. asset + rail + flowDirection
        2. Any two dimensions: asset+rail, asset+flowDirection, rail+flowDirection
        3. Any single dimension: asset, rail, or flowDirection
        4. defaultSchema (no override matches)
      properties:
        defaultSchema:
          $ref: '#/components/schemas/ParticipantsIdentificationJsonSchema'
        overrides:
          type: array
          description: |
            Contextual overrides scoped by asset, rail, and/or flowDirection. Most specific match wins; ties broken by array order. Replaces the default partially.
            Each override MUST include at least one of `asset`, `rail`, or `flowDirection` (not `schema` alone); see IdentificationPolicyOverride.
          items:
            $ref: '#/components/schemas/IdentificationPolicyOverride'
      required:
        - defaultSchema
      example:
        defaultSchema: '{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","required":["originator","beneficiary"],"properties":{"originator":{"type":"object","required":["entityType"],"oneOf":[{"properties":{"entityType":{"const":"INDIVIDUAL"},"fullName":{"type":"object","required":["firstName","lastName"],"properties":{"firstName":{"type":"string"},"lastName":{"type":"string"}}},"email":{"type":"string","format":"email"}},"required":["entityType","fullName","email"]},{"properties":{"entityType":{"const":"BUSINESS"},"businessName":{"type":"string"},"email":{"type":"string","format":"email"}},"required":["entityType","businessName","email"]}]},"beneficiary":{"type":"object","required":["entityType"],"oneOf":[{"properties":{"entityType":{"const":"INDIVIDUAL"},"fullName":{"type":"object","required":["firstName","lastName"],"properties":{"firstName":{"type":"string"},"lastName":{"type":"string"}}}},"required":["entityType","fullName"]},{"properties":{"entityType":{"const":"BUSINESS"},"businessName":{"type":"string"}},"required":["entityType","businessName"]}]}}}'
        overrides:
          - asset: NGN
            schema: '{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","required":["originator","beneficiary"],"properties":{"originator":{"type":"object","required":["entityType"],"oneOf":[{"properties":{"entityType":{"const":"INDIVIDUAL"},"fullName":{"type":"object","required":["firstName","lastName"],"properties":{"firstName":{"type":"string"},"lastName":{"type":"string"}}},"email":{"type":"string","format":"email"},"idNumber":{"type":"string"},"idType":{"type":"string","enum":["NIN_SLIP_CARD"]},"additionalIdNumber":{"type":"string"},"additionalIdType":{"type":"string","enum":["BVN"]}},"required":["entityType","fullName","email","idNumber","additionalIdNumber"]},{"properties":{"entityType":{"const":"BUSINESS"},"businessName":{"type":"string"},"email":{"type":"string","format":"email"},"registrationNumber":{"type":"string"}},"required":["entityType","businessName","email","registrationNumber"]}]},"beneficiary":{"type":"object","required":["entityType"],"oneOf":[{"properties":{"entityType":{"const":"INDIVIDUAL"},"fullName":{"type":"object","required":["firstName","lastName"],"properties":{"firstName":{"type":"string"},"lastName":{"type":"string"}}}},"required":["entityType","fullName"]},{"properties":{"entityType":{"const":"BUSINESS"},"businessName":{"type":"string"}},"required":["entityType","businessName"]}]}}}'
          - rail: MOMO
            schema: '{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","required":["originator"],"properties":{"originator":{"type":"object","required":["entityType"],"oneOf":[{"properties":{"entityType":{"const":"INDIVIDUAL"},"fullName":{"type":"object","required":["firstName"],"properties":{"firstName":{"type":"string"}}},"phone":{"type":"string"}},"required":["entityType","fullName","phone"]}]}}}'
          - asset: NGN
            rail: MOMO
            schema: '{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","required":["originator"],"properties":{"originator":{"type":"object","required":["entityType"],"oneOf":[{"properties":{"entityType":{"const":"INDIVIDUAL"},"fullName":{"type":"object","required":["firstName"],"properties":{"firstName":{"type":"string"}}},"phone":{"type":"string"},"idNumber":{"type":"string"},"idType":{"type":"string","enum":["NIN_SLIP_CARD"]}},"required":["entityType","fullName","phone","idNumber"]}]}}}'
    ParticipantRelationshipType:
      type: string
      enum:
        - FirstParty
        - SecondParty
        - ThirdParty
      example: FirstParty
    ManifestBase:
      type: object
      description: Base manifest schema with common properties
      properties:
        supported:
          type: boolean
          description: Indicates whether the endpoint is supported by the provider
        participantsIdentificationPolicy:
          $ref: '#/components/schemas/ParticipantsIdentificationPolicy'
        supportedParties:
          type: array
          items:
            $ref: '#/components/schemas/ParticipantRelationshipType'
          description: |
            The participant party types the provider supports for this endpoint.
          example:
            - FirstParty
            - ThirdParty
      required:
        - supported
    SettlementTypeEnum:
      type: string
      enum:
        - DVP
        - PREFUNDED
      description: Settlement type supported by the provider
    ExecutionRequestDetailsType:
      type: string
      enum:
        - QUOTE
        - MARKET
      description: Execution type supported by the provider
    ManifestOrderInfo:
      type: object
      description: Defines requirements for the POST /orders endpoint.
      properties:
        settlementTypes:
          type: array
          description: |
            Supported settlement types when creating an order.
            If present - settlement is required. If absent - no need to provide settlement.
          items:
            $ref: '#/components/schemas/SettlementTypeEnum'
        executionTypes:
          type: array
          description: Supported execution types when creating an order.
          items:
            $ref: '#/components/schemas/ExecutionRequestDetailsType'
        requiresReasonForPayment:
          type: boolean
          example: true
          description: |
            Information about the source and purpose of the funds being transacted.
            Used by providers that require additional context for compliance and
            reporting. Provide this field when the provider manifest indicates it is
            required.
      required:
        - executionTypes
    ManifestOrder:
      allOf:
        - $ref: '#/components/schemas/ManifestBase'
        - $ref: '#/components/schemas/ManifestOrderInfo'
    DVPSettlementType:
      type: string
      enum:
        - DVP
    ManifestQuoteInfo:
      type: object
      description: Defines requirements for the POST /quotes endpoint.
      properties:
        settlementTypes:
          type: array
          description: |
            Supported settlement types when requesting a quote.
            If present - settlement is required. If absent - no need to provide settlement.
          items:
            $ref: '#/components/schemas/DVPSettlementType'
    ManifestQuote:
      allOf:
        - $ref: '#/components/schemas/ManifestBase'
        - $ref: '#/components/schemas/ManifestQuoteInfo'
    Manifest:
      type: object
      description: The manifest of the provider, describing its supported order, quote, and rate requirements.
      properties:
        order:
          $ref: '#/components/schemas/ManifestOrder'
        quote:
          $ref: '#/components/schemas/ManifestQuote'
        rate:
          $ref: '#/components/schemas/ManifestBase'
      required:
        - order
        - quote
        - rate
      example:
        order:
          supported: true
          executionTypes:
            - MARKET
            - QUOTE
          settlementTypes:
            - DVP
          participantsIdentificationPolicy:
            defaultSchema: '{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","required":["originator","beneficiary"],"properties":{"originator":{"type":"object","required":["entityType"],"oneOf":[{"properties":{"entityType":{"const":"INDIVIDUAL"},"fullName":{"type":"object","required":["firstName","lastName"],"properties":{"firstName":{"type":"string"},"lastName":{"type":"string"}}},"email":{"type":"string","format":"email"}},"required":["entityType","fullName","email"]},{"properties":{"entityType":{"const":"BUSINESS"},"businessName":{"type":"string"},"email":{"type":"string","format":"email"}},"required":["entityType","businessName","email"]}]},"beneficiary":{"type":"object","required":["entityType"],"oneOf":[{"properties":{"entityType":{"const":"INDIVIDUAL"},"fullName":{"type":"object","required":["firstName","lastName"],"properties":{"firstName":{"type":"string"},"lastName":{"type":"string"}}}},"required":["entityType","fullName"]},{"properties":{"entityType":{"const":"BUSINESS"},"businessName":{"type":"string"}},"required":["entityType","businessName"]}]}}}'
          supportedParties:
            - FirstParty
            - ThirdParty
        quote:
          supported: true
          settlementTypes:
            - DVP
        rate:
          supported: true
    BaseProvider:
      type: object
      properties:
        id:
          type: string
          description: Unique identifier for the provider
        name:
          type: string
          description: Display name of the provider
        logo:
          type: string
          description: URL to the logo image of the provider
        accountBased:
          type: boolean
          description: Indicates whether the provider access model is through accounts or directly
        manifest:
          $ref: '#/components/schemas/Manifest'
      required:
        - id
        - name
        - accountBased
        - manifest
    AccountBase:
      type: object
      properties:
        id:
          type: string
          description: The ID of the account
        name:
          type: string
          description: The name of the account
      required:
        - id
        - name
      example:
        id: acc_9f4e2d8b1c6a5e73
        name: Main Trading Account
    AccountBasedAccessProviderInfo:
      type: object
      properties:
        connected:
          type: boolean
          description: Whether the provider is currently connected.
        accounts:
          type: array
          items:
            $ref: '#/components/schemas/AccountBase'
      required:
        - connected
        - accounts
    AccountBasedAccessProvider:
      description: Provider integrated via Fireblocks connected accounts (`accountBased` is `true`).
      allOf:
        - $ref: '#/components/schemas/BaseProvider'
        - $ref: '#/components/schemas/AccountBasedAccessProviderInfo'
      example:
        id: BRIDGE
        name: Bridge
        logo: https://example.com/logos/bridge.png
        accountBased: true
        manifest:
          order:
            supported: true
            executionTypes:
              - MARKET
            settlementTypes:
              - DVP
          quote:
            supported: false
          rate:
            supported: true
        connected: true
        accounts:
          - id: acc_5e9a2d1c4b7f3e8a
            name: Main Trading Account
    DirectAccessProviderInfo:
      type: object
      properties:
        approved:
          type: boolean
          description: Whether the provider was approved for use
        hasTermsOfService:
          type: boolean
          description: Whether the provider has terms of service
        termsOfServiceUrl:
          type: string
          description: URL to the terms of service document
        privacyPolicyUrl:
          type: string
          description: URL to the privacy policy document
      required:
        - hasTermsOfService
    DirectAccessProvider:
      description: Provider used without per-account linking (`accountBased` is `false`).
      allOf:
        - $ref: '#/components/schemas/BaseProvider'
        - $ref: '#/components/schemas/DirectAccessProviderInfo'
      example:
        id: UNISWAP_CLASSIC
        name: Uniswap Classic
        logo: https://example.com/logos/uniswap.png
        accountBased: false
        manifest:
          order:
            supported: true
            executionTypes:
              - MARKET
              - QUOTE
            settlementTypes:
              - DVP
          quote:
            supported: true
            settlementTypes:
              - DVP
          rate:
            supported: true
        approved: true
        hasTermsOfService: true
        termsOfServiceUrl: https://uniswap.org/terms
    TradingProvider:
      oneOf:
        - $ref: '#/components/schemas/AccountBasedAccessProvider'
        - $ref: '#/components/schemas/DirectAccessProvider'
    ProvidersListResponse:
      type: object
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/TradingProvider'
          description: List of available providers
        total:
          type: integer
          description: Total number of providers matching the query.
        next:
          type: string
          description: A cursor for the next page of results, if available.
      required:
        - data
        - total
      example:
        data:
          - id: BRIDGE
            name: Bridge
            logo: https://example.com/logos/bridge.png
            accountBased: true
            manifest:
              order:
                supported: true
                executionTypes:
                  - MARKET
                settlementTypes:
                  - DVP
              quote:
                supported: false
              rate:
                supported: true
            connected: true
            accounts:
              - id: acc_5e9a2d1c4b7f3e8a
                name: Main Trading Account
          - id: UNISWAP_CLASSIC
            name: Uniswap Classic
            logo: https://example.com/logos/uniswap.png
            accountBased: false
            manifest:
              order:
                supported: true
                executionTypes:
                  - MARKET
                settlementTypes:
                  - PREFUNDED
              quote:
                supported: false
              rate:
                supported: true
            approved: true
            hasTermsOfService: true
            termsOfServiceUrl: https://uniswap.org/terms
        total: 2
        next: cursor_abc123def456
    TradingErrorSchema:
      type: object
      properties:
        message:
          type: string
        code:
          type: number
        descriptor:
          type: string
      required:
        - code
        - message
      example:
        code: 900
        message: 'Invalid base amount: must be greater than 0'
    ScopeItem:
      type: object
      additionalProperties: false
      properties:
        providerId:
          type: string
          description: The ID of the provider associated with the account.
        accountId:
          type: string
          description: The ID of the account associated with the provider.
      required:
        - providerId
      example:
        providerId: prov_8c3f1a4b2d6e9f7c
        accountId: acc_5e9a2d1c4b7f3e8a
    RatesRequest:
      type: object
      properties:
        scope:
          type: array
          minItems: 1
          items:
            $ref: '#/components/schemas/ScopeItem'
          description: One or more providers/accounts to request rates from. At least one scope item is required.
        baseAssetId:
          type: string
          description: The source asset identifier.
          example: BTC
        quoteAssetId:
          type: string
          description: The target asset identifier.
          example: USD
      required:
        - baseAssetId
        - quoteAssetId
        - scope
    AccountAccess:
      type: object
      properties:
        type:
          type: string
          enum:
            - PROVIDER_ACCOUNT
          description: Indicates this uses account-based access
        providerId:
          type: string
          description: The ID of the provider
        accountId:
          type: string
          description: The ID of the account
      required:
        - type
        - accountId
      example:
        type: PROVIDER_ACCOUNT
        providerId: bridge-provider-001
        accountId: acc_9f4e2d8b1c6a5e73
    DirectAccess:
      type: object
      properties:
        type:
          type: string
          enum:
            - PROVIDER
          description: Indicates this uses direct provider access
        providerId:
          type: string
          description: The ID of the provider
      required:
        - type
        - providerId
      example:
        type: PROVIDER
        providerId: uniswap-v3-provider
    AccessType:
      discriminator:
        propertyName: type
        mapping:
          PROVIDER_ACCOUNT: '#/components/schemas/AccountAccess'
          PROVIDER: '#/components/schemas/DirectAccess'
      oneOf:
        - $ref: '#/components/schemas/AccountAccess'
        - $ref: '#/components/schemas/DirectAccess'
    Rate:
      type: object
      properties:
        via:
          $ref: '#/components/schemas/AccessType'
        baseAssetId:
          type: string
          description: The source asset identifier
        baseAssetRail:
          $ref: '#/components/schemas/TransferRail'
        quoteAssetId:
          type: string
          description: The target asset identifier
        quoteAssetRail:
          $ref: '#/components/schemas/TransferRail'
        rate:
          type: string
          pattern: ^\d+(\.\d+)?$
          description: The indicative exchange rate — the number of units of the quote asset that equal 1 unit of the base asset. For example, if base is BTC and quote is USD, a rate of 75000 means 1 BTC = 75,000 USD.
          example: '1.2345'
      required:
        - via
        - baseAssetId
        - quoteAssetId
        - rate
    ScopeItemFailure:
      type: object
      properties:
        providerId:
          type: string
          description: Identifier of the provider for which the request failed.
          example: BRIDGE
        accountId:
          type: string
          description: Identifier of the account for which the request failed (optional).
          example: acc_9f4e2d8b1c6a5e73
        error:
          $ref: '#/components/schemas/TradingErrorSchema'
      required:
        - providerId
        - error
    RatesResponse:
      type: object
      properties:
        rates:
          type: array
          description: List of indicative rates returned for the requested asset pair.
          items:
            $ref: '#/components/schemas/Rate'
        errors:
          type: array
          description: Partial failures encountered while requesting rates. Empty when all rate requests succeed.
          items:
            $ref: '#/components/schemas/ScopeItemFailure'
      required:
        - rates
        - errors
    PlatformPeerType:
      type: string
      enum:
        - VAULT_ACCOUNT
        - CONNECTED_ACCOUNT
        - FIAT_ACCOUNT
    PlatformAccount:
      type: object
      properties:
        type:
          $ref: '#/components/schemas/PlatformPeerType'
        accountId:
          type: string
      required:
        - type
        - accountId
      example:
        type: VAULT_ACCOUNT
        accountId: vault_acc_5e9a2d1c4b7f3e8a
    ExternalAccountType:
      type: string
      enum:
        - EXTERNAL
    ExternalAccountMobileMoneyType:
      type: string
      enum:
        - MOBILE_MONEY_RAIL
    MobilePhoneNumber:
      type: string
      pattern: ^\+[1-9]\d{1,14}$
      description: Mobile phone number in E.164 format
      example: '+14155551234'
    ExternalAccountMobileMoneyProvider:
      type: string
      enum:
        - M_PESA
        - AIRTEL
        - MTN
        - TIGO
        - ORANGE
    ExternalAccountMobileMoney:
      type: object
      properties:
        type:
          $ref: '#/components/schemas/ExternalAccountMobileMoneyType'
        mobilePhoneNumber:
          $ref: '#/components/schemas/MobilePhoneNumber'
        provider:
          $ref: '#/components/schemas/ExternalAccountMobileMoneyProvider'
        email:
          type: string
          format: email
        successRedirectUrl:
          type: string
          description: URL to redirect the end user back to after they complete the payment on the bank/mobile provider page (e.g., the merchant checkout page)
      required:
        - type
        - mobilePhoneNumber
        - provider
        - email
    ExternalAccountLocalBankAfrica:
      type: object
      properties:
        successRedirectUrl:
          type: string
          description: URL to redirect the end user back to after they complete the payment on the bank/mobile provider page (e.g., the merchant checkout page)
    ExternalAccountSenderInformation:
      oneOf:
        - $ref: '#/components/schemas/ExternalAccountMobileMoney'
        - $ref: '#/components/schemas/ExternalAccountLocalBankAfrica'
      description: Additional data for the external account, depending on the type used.
    ExternalAccount:
      type: object
      properties:
        type:
          $ref: '#/components/schemas/ExternalAccountType'
        senderInformation:
          $ref: '#/components/schemas/ExternalAccountSenderInformation'
      required:
        - type
      example:
        type: EXTERNAL
        senderInformation:
          type: MOBILE_MONEY
          mobilePhoneNumber: '+1234567890'
          provider: MPESA
          email: test@example.com
    SettlementSourceAccount:
      discriminator:
        propertyName: type
        mapping:
          VAULT_ACCOUNT: '#/components/schemas/PlatformAccount'
          CONNECTED_ACCOUNT: '#/components/schemas/PlatformAccount'
          FIAT_ACCOUNT: '#/components/schemas/PlatformAccount'
          EXTERNAL: '#/components/schemas/ExternalAccount'
      oneOf:
        - $ref: '#/components/schemas/PlatformAccount'
        - $ref: '#/components/schemas/ExternalAccount'
    PeerType:
      type: string
      enum:
        - VAULT_ACCOUNT
        - EXCHANGE_ACCOUNT
        - UNMANAGED_WALLET
        - FIAT_ACCOUNT
        - CONNECTED_ACCOUNT
      example: VAULT_ACCOUNT
    InternalReference:
      type: object
      properties:
        type:
          $ref: '#/components/schemas/PeerType'
        accountId:
          type: string
      required:
        - accountId
        - type
      example:
        type: VAULT_ACCOUNT
        accountId: vault_acc_9f3e2d1c4b8a7e5f
    OneTimeAddressPeerType:
      type: string
      enum:
        - ONE_TIME_ADDRESS
    OneTimeAddressReference:
      type: object
      properties:
        type:
          $ref: '#/components/schemas/OneTimeAddressPeerType'
        address:
          type: string
        tag:
          type: string
      required:
        - type
        - address
      example:
        type: ONE_TIME_ADDRESS
        address: 1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa
        tag: destination-memo-123
    AccountReference:
      discriminator:
        propertyName: type
        mapping:
          VAULT_ACCOUNT: '#/components/schemas/InternalReference'
          EXCHANGE_ACCOUNT: '#/components/schemas/InternalReference'
          UNMANAGED_WALLET: '#/components/schemas/InternalReference'
          FIAT_ACCOUNT: '#/components/schemas/InternalReference'
          ONE_TIME_ADDRESS: '#/components/schemas/OneTimeAddressReference'
      oneOf:
        - $ref: '#/components/schemas/InternalReference'
        - $ref: '#/components/schemas/OneTimeAddressReference'
    DVPSettlement:
      type: object
      description: Source/Destination accounts for the quote (must have for defi quotes)
      properties:
        type:
          $ref: '#/components/schemas/DVPSettlementType'
        sourceAccount:
          $ref: '#/components/schemas/SettlementSourceAccount'
        destinationAccount:
          $ref: '#/components/schemas/AccountReference'
      required:
        - type
        - sourceAccount
        - destinationAccount
      example:
        type: DVP
        sourceAccount:
          type: VAULT_ACCOUNT
          id: vault_acc_3f7e1d9b2c5a8e4f
        destinationAccount:
          type: VAULT_ACCOUNT
          id: vault_acc_7b2e5d8f1c4a9e3b
    Side:
      type: string
      enum:
        - BUY
        - SELL
      description: 'BUY: receive base / pay quote; SELL: give base / receive quote.'
    PersonalEntityTypeEnum:
      type: string
      enum:
        - INDIVIDUAL
    PostalAddress:
      type: object
      properties:
        streetName:
          type: string
        buildingNumber:
          type: string
        postalCode:
          type: string
        city:
          type: string
        subdivision:
          type: string
        district:
          type: string
        country:
          type: string
      required:
        - streetName
        - buildingNumber
        - postalCode
        - city
        - subdivision
        - district
        - country
      example:
        streetName: Fifth Avenue
        buildingNumber: '350'
        postalCode: '10118'
        city: New York
        subdivision: NY
        district: Manhattan
        country: US
    PersonalIdentificationType:
      type: string
      description: 'Type of identification document. Acceptable values are: - ''NIN_SLIP_CARD'': National Identification Number (NIN) Slip Card - temporary identification card issued in Nigeria - ''BVN'': Bank Verification Number - unique identity number for bank account holders in Nigeria - ''ID_CARD'': General national identity card - ''ID_BOOK'': Identity book or booklet format identification document - ''NATIONAL_ID'': National identity document issued by government authorities - ''ALIEN_CARD'': Alien registration card for foreign nationals - ''PASSPORT'': International travel document and proof of identity - ''ECOWAS_CARD'': Economic Community of West African States identification card - ''RWANDA_CARD'': Rwandan national identification card - ''DRIVERS_LICENSE'': Driver''s license or driving permit - ''RESIDENT_CARD'': Resident permit or permanent resident card - ''VOTER_ID'': Voter identification card used for electoral registration - ''HEALTH_INSURANCE_ID'': Health insurance identification card - ''GHANA_CARD'': Ghana Card - national identification card issued in Ghana - ''REFUGEE_ID'': Refugee identification document - ''SSNIT'': Social Security and National Insurance Trust ID - social security number in Ghana - ''NON_CITIZEN_ID'': Identification document for non-citizens or foreign residents - ''NATIONAL_REGISTRATION_CARD'': National registration card issued by national registration authority'
      enum:
        - NIN_SLIP_CARD
        - BVN
        - ID_CARD
        - ID_BOOK
        - NATIONAL_ID
        - ALIEN_CARD
        - PASSPORT
        - ECOWAS_CARD
        - RWANDA_CARD
        - DRIVERS_LICENSE
        - RESIDENT_CARD
        - VOTER_ID
        - HEALTH_INSURANCE_ID
        - GHANA_CARD
        - REFUGEE_ID
        - SSNIT
        - NON_CITIZEN_ID
        - NATIONAL_REGISTRATION_CARD
    PersonalIdentificationDocument:
      type: object
      properties:
        id:
          type: string
          description: The identification document number.
          example: '12345678901'
        type:
          $ref: '#/components/schemas/PersonalIdentificationType'
        expirationDate:
          type: string
          format: date
          description: The expiration date of the identification document.
          example: '2030-03-15'
    PersonalIdentification:
      type: object
      properties:
        externalReferenceId:
          type: string
        entityType:
          $ref: '#/components/schemas/PersonalEntityTypeEnum'
        participantRelationshipType:
          $ref: '#/components/schemas/ParticipantRelationshipType'
        fullName:
          type: object
          properties:
            firstName:
              type: string
            lastName:
              type: string
          required:
            - firstName
            - lastName
        dateOfBirth:
          type: string
          format: date
        postalAddress:
          $ref: '#/components/schemas/PostalAddress'
        email:
          type: string
          format: email
        phone:
          $ref: '#/components/schemas/MobilePhoneNumber'
        idNumber:
          type: string
          deprecated: true
          description: Deprecated. Use identificationDocuments instead.
        idType:
          allOf:
            - $ref: '#/components/schemas/PersonalIdentificationType'
          deprecated: true
          description: Deprecated. Use identificationDocuments instead.
          example: PASSPORT
        additionalIdNumber:
          type: string
          deprecated: true
          description: Deprecated. Use identificationDocuments instead.
        additionalIdType:
          allOf:
            - $ref: '#/components/schemas/PersonalIdentificationType'
          deprecated: true
          description: Deprecated. Use identificationDocuments instead.
          example: BVN
        nationality:
          type: string
          description: The ISO-3166 Alpha-2 country code representing the individual's nationality.
          example: US
        identificationDocuments:
          type: array
          description: List of identification documents for the individual.
          items:
            $ref: '#/components/schemas/PersonalIdentificationDocument'
          example:
            - id: '12345678901'
              type: PASSPORT
              expirationDate: '2030-03-15'
      required:
        - externalReferenceId
        - entityType
        - participantRelationshipType
        - fullName
        - dateOfBirth
        - postalAddress
      example:
        externalReferenceId: person_ref_7f3e2d1c4b8a5e9f
        entityType: INDIVIDUAL
        participantRelationshipType: FirstParty
        fullName:
          firstName: Alexander
          lastName: Johnson
        dateOfBirth: '1985-03-15'
        postalAddress:
          streetName: Oak Street
          buildingNumber: '742'
          postalCode: '90210'
          city: Beverly Hills
          subdivision: CA
          district: Los Angeles County
          country: US
        email: alexander.johnson@example.com
        phone: '+14155551234'
        idNumber: '12345678901'
        idType: PASSPORT
        additionalIdNumber: BVN987654321
        additionalIdType: BVN
        nationality: US
        identificationDocuments:
          - id: '12345678901'
            type: PASSPORT
            expirationDate: '2030-03-15'
    BusinessEntityTypeEnum:
      type: string
      enum:
        - BUSINESS
    BusinessIdentification:
      type: object
      properties:
        externalReferenceId:
          type: string
        entityType:
          $ref: '#/components/schemas/BusinessEntityTypeEnum'
        participantRelationshipType:
          $ref: '#/components/schemas/ParticipantRelationshipType'
        businessName:
          type: string
        registrationNumber:
          type: string
        postalAddress:
          $ref: '#/components/schemas/PostalAddress'
        email:
          type: string
          format: email
        phone:
          $ref: '#/components/schemas/MobilePhoneNumber'
        dateOfRegistration:
          type: string
          format: date
          description: The date the business was registered.
          example: '2020-06-15'
        countryOfRegistration:
          type: string
          description: The ISO-3166 Alpha-2 country code where the business is registered.
          example: US
      required:
        - externalReferenceId
        - entityType
        - participantRelationshipType
        - businessName
        - registrationNumber
        - postalAddress
      example:
        externalReferenceId: bus_ref_9f3e2d1c4b8a7e5f
        entityType: BUSINESS
        participantRelationshipType: COUNTERPARTY
        businessName: TechCorp Solutions LLC
        registrationNumber: TC-2023-001547
        email: techcorp@example.com
        phone: '+14155551234'
        postalAddress:
          streetAddress: 789 Innovation Drive
          city: San Francisco
          state: CA
          postalCode: '94105'
          country: US
        dateOfRegistration: '2020-06-15'
        countryOfRegistration: US
    Identification:
      discriminator:
        propertyName: entityType
        mapping:
          INDIVIDUAL: '#/components/schemas/PersonalIdentification'
          BUSINESS: '#/components/schemas/BusinessIdentification'
      oneOf:
        - $ref: '#/components/schemas/PersonalIdentification'
        - $ref: '#/components/schemas/BusinessIdentification'
    ParticipantsIdentification:
      description: KYC/AML participant identification
      type: object
      properties:
        originator:
          $ref: '#/components/schemas/Identification'
        beneficiary:
          $ref: '#/components/schemas/Identification'
      example:
        originator:
          externalReferenceId: user_123456
          entityType: INDIVIDUAL
          participantRelationshipType: FirstParty
          fullName:
            firstName: John
            lastName: Smith
          dateOfBirth: '1985-03-15'
          email: john.smith@example.com
          phone: '+14155551234'
          postalAddress:
            streetName: Main Street
            buildingNumber: '123'
            postalCode: '10001'
            city: New York
            subdivision: NY
            district: Manhattan
            country: US
        beneficiary:
          externalReferenceId: user_789012
          entityType: INDIVIDUAL
          participantRelationshipType: ThirdParty
          fullName:
            firstName: Alice
            lastName: Johnson
          dateOfBirth: '1990-07-22'
          email: alice.johnson@example.com
          phone: '+14155551234'
          postalAddress:
            streetName: Broadway
            buildingNumber: '456'
            postalCode: '10002'
            city: New York
            subdivision: NY
            district: Manhattan
            country: US
    CreateQuote:
      type: object
      properties:
        scope:
          type: array
          items:
            oneOf:
              - $ref: '#/components/schemas/ScopeItem'
        baseAssetId:
          type: string
          description: The asset you receive on BUY / give on SELL.
        baseAssetRail:
          $ref: '#/components/schemas/TransferRail'
        quoteAssetId:
          type: string
          description: The counter asset used to pay/receive.
        quoteAssetRail:
          $ref: '#/components/schemas/TransferRail'
        baseAmount:
          type: string
          pattern: ^\d+(\.\d+)?$
          description: Amount in baseAssetId. BUY = base amount to receive; SELL = base amount to sell.
          example: '100.00'
        slippageBps:
          type: number
          description: Slippage tolerance in basis points (bps) for defi quotes - 1 is 0.01% and 10000 is 100%
          default: 50
          minimum: 1
          maximum: 10000
        settlement:
          $ref: '#/components/schemas/DVPSettlement'
        side:
          $ref: '#/components/schemas/Side'
        participantsIdentification:
          $ref: '#/components/schemas/ParticipantsIdentification'
      required:
        - quoteAssetId
        - baseAssetId
        - baseAmount
        - side
        - scope
      example:
        scope:
          - providerId: prov_8c3f1a4b2d6e9f7c
            accountId: acc_5e9a2d1c4b7f3e8a
        baseAssetId: USD
        baseAssetRail: FIAT_RAILS
        quoteAssetId: BTC
        quoteAssetRail: BLOCKCHAIN_RAILS
        baseAmount: '1000.00'
        side: BUY
        slippageBps: 100
        settlement:
          type: DVP
          sourceAccount:
            type: VAULT_ACCOUNT
            id: vault_acc_3f7e1d9b2c5a8e4f
          destinationAccount:
            type: VAULT_ACCOUNT
            id: vault_acc_7b2e5d8f1c4a9e3b
    ExecutionStepType:
      type: string
      enum:
        - APPROVE
        - PERMIT
        - CONTRACT_CALL
        - EXECUTE
        - SETTLEMENT
        - DELIVERY
      example: EXECUTE
    FeeTypeEnum:
      type: string
      enum:
        - ORDER
        - NETWORK
        - SPREAD
        - REBATE
      description: |
        The type of fee, such as ORDER, NETWORK, or SPREAD. ORDER - Fee for executing the order. NETWORK - Fee for network transactions. SPREAD - Fee for the difference between buy and sell prices. REBATE - Negative fee returned to the user as a reward or incentive.
    FeePropertiesDetails:
      type: object
      properties:
        feeType:
          $ref: '#/components/schemas/FeeTypeEnum'
        assetId:
          type: string
          description: The asset identifier for the fee.
      required:
        - feeType
        - assetId
    FixedAmountTypeEnum:
      type: string
      enum:
        - FIXED
      description: The type of amount for the fee, indicating a fixed amount.
    FixedFee:
      type: object
      properties:
        amountType:
          $ref: '#/components/schemas/FixedAmountTypeEnum'
        amount:
          type: string
          pattern: ^\d+(\.\d+)?$
          description: The fixed amount of the fee
          example: '0.01'
      required:
        - amountType
        - amount
      example:
        amountType: FIXED
        amount: '0.01'
    BpsFee:
      type: object
      properties:
        amountType:
          type: string
          enum:
            - BPS
        amount:
          type: number
          minimum: 0
          maximum: 10000
          description: Fee in basis points (1 = 0.01%, 10000 = 100%)
          example: 50
      required:
        - amountType
        - amount
      example:
        amountType: BPS
        amount: 50
    Fee:
      allOf:
        - $ref: '#/components/schemas/FeePropertiesDetails'
        - discriminator:
            propertyName: amountType
            mapping:
              FIXED: '#/components/schemas/FixedFee'
              BPS: '#/components/schemas/BpsFee'
          oneOf:
            - $ref: '#/components/schemas/FixedFee'
            - $ref: '#/components/schemas/BpsFee'
    QuoteExecutionStep:
      type: object
      properties:
        type:
          $ref: '#/components/schemas/ExecutionStepType'
        fee:
          $ref: '#/components/schemas/Fee'
      required:
        - type
      example:
        type: MARKET_EXECUTION
        fee:
          feeType: ORDER
          assetId: USD
          amountType: FIXED
          amount: '2.50'
    Quote:
      type: object
      description: A committed executable quote for a trading pair.
      properties:
        via:
          $ref: '#/components/schemas/AccessType'
        id:
          type: string
          description: The unique identifier of the quote.
          example: quote_8f2e4d1a9c5b7e3f
        quoteAssetId:
          type: string
          description: The target asset identifier.
          example: USD
        quoteAssetRail:
          $ref: '#/components/schemas/TransferRail'
        baseAssetId:
          type: string
          description: The source asset identifier.
          example: BTC
        baseAssetRail:
          $ref: '#/components/schemas/TransferRail'
        baseAmount:
          type: string
          description: The amount of the base asset.
          example: '1000.00'
        quoteAmount:
          type: string
          description: The amount of the quote asset.
          example: '0.02458'
        priceImpact:
          type: number
          description: The estimated price impact as a decimal fraction.
          example: 0.005
        quoteMinAmount:
          type: string
          description: The minimum guaranteed amount of the quote asset.
          example: '0.02450'
        isSlippageApplied:
          type: boolean
          description: Indicates if slippage was applied to the quote.
          default: false
        executionSteps:
          type: array
          description: Ordered list of execution steps for the quote.
          items:
            $ref: '#/components/schemas/QuoteExecutionStep'
        generalFees:
          type: array
          description: General fees associated with the quote.
          items:
            $ref: '#/components/schemas/Fee'
        side:
          $ref: '#/components/schemas/Side'
        expiresAt:
          type: string
          description: The expiration time of the quote in ISO 8601 format.
          example: '2024-01-15T10:35:00.000Z'
        requiredParticipantsIdentificationOnOrder:
          type: string
          description: |
            A JSON Schema Draft-7 document in string format describing the fields required when creating an order so clients can validate their order payload before sending.
        type:
          type: string
          enum:
            - COMMITTED
            - INDICATIVE
          description: The type of the quote.
          example: COMMITTED
      required:
        - via
        - id
        - baseAssetId
        - quoteAssetId
        - baseAmount
        - quoteAmount
        - side
        - expiresAt
        - type
    QuotesResponse:
      type: object
      properties:
        quotes:
          type: array
          items:
            $ref: '#/components/schemas/Quote'
        quoteFailures:
          type: array
          description: List of partial failures encountered while requesting quotes. Empty when all quote attempts succeed.
          items:
            $ref: '#/components/schemas/ScopeItemFailure'
      required:
        - quotes
        - quoteFailures
      example:
        quotes:
          - via:
              type: PROVIDER_ACCOUNT
              providerId: bridge-provider-001
              accountId: acc_9f4e2d8b1c6a5e73
            id: quote_8f2e4d1a9c5b7e3f
            type: COMMITTED
            baseAssetId: USDC
            quoteAssetId: BTC
            baseAmount: '1000.00'
            quoteAmount: '0.02458'
            priceImpact: 0.005
            quoteMinAmount: '0.02450'
            expiresAt: '2024-01-15T10:35:00.000Z'
            executionSteps:
              - type: EXECUTE
                fee:
                  feeType: ORDER
                  assetId: USDC
                  amountType: FIXED
                  amount: '2.50'
            generalFees:
              - feeType: ORDER
                assetId: USDC
                amountType: FIXED
                amount: '2.50'
        quoteFailures:
          - providerId: BRIDGE
            accountId: acc_9f4e2d8b1c6a5e73
            error:
              code: 3107
              message: This trading pair is not supported by the provider.
          - providerId: UNISWAP
            error:
              code: 3101
              message: Provider not found.
              descriptor:
                providerId: UNISWAP
    CreateOffersRequest:
      type: object
      properties:
        baseAssetId:
          type: string
          description: The source asset identifier.
          example: BTC
        baseAssetRail:
          $ref: '#/components/schemas/TransferRail'
        quoteAssetId:
          type: string
          description: The target asset identifier.
          example: USD
        quoteAssetRail:
          $ref: '#/components/schemas/TransferRail'
        baseAmount:
          type: string
          pattern: ^\d+(\.\d+)?$
          description: The amount to get offers for
          example: '100.00'
        slippageBps:
          type: integer
          description: Slippage tolerance in basis points (bps) for defi quotes - 1 is 0.01% and 10000 is 100%. If not set, defaults to 50 bps (0.5%).
          default: 50
          minimum: 1
          maximum: 10000
        settlement:
          $ref: '#/components/schemas/DVPSettlement'
        side:
          $ref: '#/components/schemas/Side'
      required:
        - baseAssetId
        - quoteAssetId
        - baseAmount
        - side
    RateOfferType:
      type: object
      properties:
        offerType:
          type: string
          enum:
            - RATE
          description: The type of offer — RATE for indicative pricing.
          example: RATE
      required:
        - offerType
    RateOffer:
      allOf:
        - $ref: '#/components/schemas/Rate'
        - $ref: '#/components/schemas/RateOfferType'
    QuoteOfferType:
      type: object
      properties:
        offerType:
          type: string
          enum:
            - QUOTE
          description: The type of offer — QUOTE for executable committed quotes.
          example: QUOTE
      required:
        - offerType
    QuoteOffer:
      allOf:
        - $ref: '#/components/schemas/Quote'
        - $ref: '#/components/schemas/QuoteOfferType'
    Offer:
      discriminator:
        propertyName: offerType
        mapping:
          RATE: '#/components/schemas/RateOffer'
          QUOTE: '#/components/schemas/QuoteOffer'
      oneOf:
        - $ref: '#/components/schemas/RateOffer'
        - $ref: '#/components/schemas/QuoteOffer'
    OffersResponse:
      type: object
      properties:
        offers:
          type: array
          description: List of offers returned for the requested asset pair.
          items:
            $ref: '#/components/schemas/Offer'
        errors:
          type: array
          description: Partial failures encountered while requesting offers. Empty when all offer requests succeed.
          items:
            $ref: '#/components/schemas/ScopeItemFailure'
      required:
        - offers
        - errors
    OrderStatus:
      type: string
      enum:
        - CREATED
        - AWAITING_PAYMENT
        - AWAITING_INFORMATION
        - PENDING_USER_ACTION
        - PROCESSING
        - CANCELED
        - COMPLETED
        - FAILED
      example: PROCESSING
    OrderSummary:
      type: object
      properties:
        id:
          type: string
        via:
          $ref: '#/components/schemas/AccessType'
        side:
          $ref: '#/components/schemas/Side'
        baseAmount:
          type: string
        quoteAmount:
          type: string
        baseAssetId:
          type: string
        quoteAssetId:
          type: string
        status:
          $ref: '#/components/schemas/OrderStatus'
        destination:
          $ref: '#/components/schemas/AccountReference'
        source:
          $ref: '#/components/schemas/SettlementSourceAccount'
        createdAt:
          type: string
          format: date-time
      required:
        - id
        - via
        - baseAmount
        - baseAssetId
        - quoteAssetId
        - status
        - destination
        - createdAt
        - side
      example:
        id: ord_5f8e2d9c1a7b4e36
        via:
          type: PROVIDER_ACCOUNT
          providerId: prov_8c3f1a4b2d6e9f7c
          accountId: acc_5e9a2d1c4b7f3e8a
        side: BUY
        baseAmount: '1000.00'
        quoteAmount: '0.02458'
        baseAssetId: USD
        quoteAssetId: BTC
        status: COMPLETED
        destination:
          type: VAULT_ACCOUNT
          accountId: vault_acc_7b2e5d8f1c4a9e3b
        source:
          type: VAULT_ACCOUNT
          accountId: vault_acc_3f7e1d9b2c5a8e4f
        createdAt: '2024-01-15T10:30:00.000Z'
    GetOrdersResponse:
      type: object
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/OrderSummary'
        total:
          type: integer
          description: Total number of orders matching the query.
        next:
          type: string
          description: A cursor for the next page of results, if available.
      required:
        - total
        - data
      example:
        data:
          - id: ord_5f8e2d9c1a7b4e36
            via:
              type: PROVIDER_ACCOUNT
              providerId: prov_8c3f1a4b2d6e9f7c
              accountId: acc_5e9a2d1c4b7f3e8a
            baseAmount: '1000.00'
            quoteAmount: '0.02458'
            baseAssetId: USD
            quoteAssetId: BTC
            status: COMPLETED
            destination:
              type: VAULT_ACCOUNT
              accountId: vault_acc_7b2e5d8f1c4a9e3b
            createdAt: '2024-01-15T10:30:00.000Z'
        total: 1
        next: cursor_next_page_token
    MarketTypeEnum:
      type: string
      enum:
        - MARKET
      description: Order type for market orders
    MarketTypeDetails:
      type: object
      properties:
        type:
          $ref: '#/components/schemas/MarketTypeEnum'
      required:
        - type
    ExecutionRequestBaseDetails:
      type: object
      properties:
        side:
          $ref: '#/components/schemas/Side'
        baseAmount:
          type: string
          description: Amount in baseAssetId. BUY = base amount to receive; SELL = base amount to sell.
        baseAssetId:
          type: string
          description: The asset you receive on BUY / give on SELL.
        baseAssetRail:
          $ref: '#/components/schemas/TransferRail'
        quoteAssetId:
          type: string
          description: Counter asset used to pay/receive
        quoteAssetRail:
          $ref: '#/components/schemas/TransferRail'
      required:
        - baseAmount
        - baseAssetId
        - quoteAssetId
        - side
      example:
        side: BUY
        baseAmount: '1000.00'
        baseAssetId: USDC
        baseAssetRail: BLOCKCHAIN
        quoteAssetId: BTC
        quoteAssetRail: BLOCKCHAIN
    MarketExecutionRequestDetails:
      allOf:
        - $ref: '#/components/schemas/MarketTypeDetails'
        - $ref: '#/components/schemas/ExecutionRequestBaseDetails'
      example:
        type: MARKET
        baseAssetId: USD
        quoteAssetId: BTC
        side: BUY
        baseAmount: '1000.00'
    QuoteExecutionTypeEnum:
      type: string
      enum:
        - QUOTE
      description: Order type for quote orders
    QuoteExecutionRequestDetails:
      type: object
      properties:
        type:
          $ref: '#/components/schemas/QuoteExecutionTypeEnum'
        quoteId:
          type: string
          description: Quote ID for quote orders
      required:
        - type
        - quoteId
      example:
        type: QUOTE
        quoteId: quote_8f2e4d1a9c5b7e3f
    MarketRequoteTypeEnum:
      type: string
      enum:
        - MARKET
      description: Indicates that the order should be re-quoted if the original quote is expired. This will lead to a market order.
    MarketRequoteRequestDetails:
      type: object
      properties:
        type:
          $ref: '#/components/schemas/MarketRequoteTypeEnum'
      required:
        - type
      example:
        type: MARKET
    RetryRequoteTypeEnum:
      type: string
      enum:
        - RETRY
      description: Indicates that the order should be re-quoted if the original quote is expired, trying to match the original quote.
    RetryRequoteRequestDetails:
      type: object
      properties:
        type:
          $ref: '#/components/schemas/RetryRequoteTypeEnum'
        count:
          type: integer
          description: If quote is expired, how many times to re-generate new quotes to try having the order executed as in the original quote.
          minimum: 1
          maximum: 10
        slippageBps:
          type: integer
          description: Slippage tolerance in basis points (bps) for quote orders - 1 is 0.01% and 10000 is 100%
          minimum: 1
          maximum: 10000
      required:
        - type
        - count
      example:
        type: RETRY
        count: 1
        slippageBps: 50
    ReQuoteDetails:
      type: object
      properties:
        reQuote:
          discriminator:
            propertyName: type
            mapping:
              MARKET: '#/components/schemas/MarketRequoteRequestDetails'
              RETRY: '#/components/schemas/RetryRequoteRequestDetails'
          oneOf:
            - $ref: '#/components/schemas/MarketRequoteRequestDetails'
            - $ref: '#/components/schemas/RetryRequoteRequestDetails'
    QuoteExecutionWithRequoteRequestDetails:
      allOf:
        - $ref: '#/components/schemas/QuoteExecutionRequestDetails'
        - $ref: '#/components/schemas/ReQuoteDetails'
      example:
        type: QUOTE
        quoteId: quote_8f2e4d1a9c5b7e3f
        reQuote:
          type: RETRY
          count: 1
          slippageBps: 50
    ExecutionRequestDetails:
      description: Order execution details
      discriminator:
        propertyName: type
        mapping:
          MARKET: '#/components/schemas/MarketExecutionRequestDetails'
          QUOTE: '#/components/schemas/QuoteExecutionWithRequoteRequestDetails'
      oneOf:
        - $ref: '#/components/schemas/MarketExecutionRequestDetails'
        - $ref: '#/components/schemas/QuoteExecutionWithRequoteRequestDetails'
    PrefundedSettlementType:
      type: string
      enum:
        - PREFUNDED
    PrefundedSettlement:
      type: object
      properties:
        type:
          $ref: '#/components/schemas/PrefundedSettlementType'
        destinationAccount:
          $ref: '#/components/schemas/AccountReference'
      required:
        - type
        - destinationAccount
      example:
        type: PREFUNDED
        destinationAccount:
          type: VAULT_ACCOUNT
          accountId: vault_acc_9f4e2d8b1c6a5e73
    Settlement:
      description: Settlement configuration for the order
      discriminator:
        propertyName: type
        mapping:
          PREFUNDED: '#/components/schemas/PrefundedSettlement'
          DVP: '#/components/schemas/DVPSettlement'
      oneOf:
        - $ref: '#/components/schemas/PrefundedSettlement'
        - $ref: '#/components/schemas/DVPSettlement'
    ReasonForPaymentEnum:
      type: string
      description: |
        The reason or purpose of the payment. Used by providers (e.g. CPN) that require a categorical reason for cross-border payment compliance and reporting. Optional at the API level; runtime enforcement is handled by the calling service against the provider's requirements.
      enum:
        - INVOICE_PAYMENT
        - SERVICES_PAYMENT
        - SOFTWARE_PAYMENT
        - IMPORTED_GOODS_PAYMENT
        - TRAVEL_SERVICES
        - TRANSFER_TO_OWN_ACCOUNT
        - LOAN_REPAYMENT
        - PAYROLL
        - PROPERTY_RENTAL
        - INFORMATION_SERVICE_CHARGES
        - ADVERTISING_AND_PUBLIC_RELATIONS
        - INTELLECTUAL_PROPERTY_FEES
        - FINANCIAL_SERVICE_FEES
        - ADVISORY_AND_TECHNICAL_FEES
        - REPRESENTATIVE_OFFICE_EXPENSES
        - TAX_PAYMENT
        - GOODS_TRANSPORTATION_FEES
        - CONSTRUCTION_EXPENSES
        - INSURANCE_PREMIUM
        - GENERAL_GOODS_TRADE
        - INSURANCE_CLAIMS_PAYMENT
        - FAMILY_REMITTANCE
        - EDUCATION_EXPENSES
        - MEDICAL_TREATMENT
        - DONATIONS
        - MUTUAL_FUND_INVESTMENT
        - CURRENCY_EXCHANGE
        - ADVANCE_GOODS_PAYMENT
        - MERCHANT_SETTLEMENT
        - REPATRIATION_FUND_SETTLEMENT
    SourceOfFunds:
      type: object
      description: |
        Information about the source and purpose of the funds being transacted. Used by providers that require additional context for compliance and reporting. Provide this field when the provider manifest indicates it is required.
      properties:
        reasonForPayment:
          $ref: '#/components/schemas/ReasonForPaymentEnum'
      example:
        reasonForPayment: INVOICE_PAYMENT
    CreateOrderRequest:
      type: object
      properties:
        via:
          $ref: '#/components/schemas/AccessType'
        executionRequestDetails:
          $ref: '#/components/schemas/ExecutionRequestDetails'
        settlement:
          $ref: '#/components/schemas/Settlement'
        participantsIdentification:
          $ref: '#/components/schemas/ParticipantsIdentification'
        sourceOfFunds:
          $ref: '#/components/schemas/SourceOfFunds'
        customerInternalReferenceId:
          type: string
          description: Internal reference ID for the customer
        note:
          type: string
          maxLength: 512
          description: Optional note for the order
      required:
        - via
        - executionRequestDetails
        - settlement
      example:
        via:
          type: PROVIDER_ACCOUNT
          providerId: prov_8c3f1a4b2d6e9f7c
          accountId: acc_5e9a2d1c4b7f3e8a
        executionRequestDetails:
          type: MARKET
          baseAssetId: USD
          quoteAssetId: BTC
          side: BUY
          baseAmount: '1000.00'
        settlement:
          type: DVP
          sourceAccount:
            type: VAULT_ACCOUNT
            id: vault_acc_3f7e1d9b2c5a8e4f
          destinationAccount:
            type: VAULT_ACCOUNT
            id: vault_acc_7b2e5d8f1c4a9e3b
        sourceOfFunds:
          reasonForPayment: INVOICE_PAYMENT
        customerInternalReferenceId: order_ref_2024_001
        note: Monthly investment order
    BlockchainTransfer:
      type: object
      properties:
        type:
          type: string
          enum:
            - BLOCKCHAIN
        txHash:
          type: string
          description: The hash of the transaction on the blockchain.
        amount:
          type: string
          description: The amount of the transaction.
      required:
        - amount
      example:
        type: BLOCKCHAIN
        txHash: '0x1a2b3c4d5e6f7a8b9c0d1e2f3a4b5c6d7e8f9a0b1c2d3e4f5a6b7c8d9e0f1a2b'
        amount: '250.75'
    FiatTransfer:
      type: object
      properties:
        type:
          type: string
          enum:
            - FIAT
        amount:
          type: string
          description: The amount of the fiat transfer.
        referenceId:
          type: string
          description: The reference ID for the fiat transfer.
      required:
        - amount
      example:
        type: FIAT
        amount: '750.25'
        referenceId: fiat_ref_2024_003_789
    TransferReceipt:
      discriminator:
        propertyName: type
        mapping:
          BLOCKCHAIN: '#/components/schemas/BlockchainTransfer'
          FIAT: '#/components/schemas/FiatTransfer'
      oneOf:
        - $ref: '#/components/schemas/BlockchainTransfer'
        - $ref: '#/components/schemas/FiatTransfer'
    ExecutionStepStatusEnum:
      type: string
      enum:
        - WAITING
        - PROCESSING
        - COMPLETED
        - FAILED
        - CANCELLED
      example: PROCESSING
    ExecutionStepError:
      type: string
      enum:
        - INTERNAL_ERROR
        - QUOTE_EXPIRED
        - INSUFFICIENT_OUTPUT_AMOUNT
        - INSUFFICIENT_FUNDS
        - LAST_TRANSACTION_FAILED
        - SWAP_APPROVAL_FAILED
        - PROVIDER_EXECUTION_ERROR
      example: INSUFFICIENT_FUNDS
    OrderExecutionStep:
      type: object
      properties:
        type:
          $ref: '#/components/schemas/ExecutionStepType'
        status:
          $ref: '#/components/schemas/ExecutionStepStatusEnum'
        fee:
          $ref: '#/components/schemas/Fee'
        txId:
          type: string
        txHash:
          type: string
        error:
          $ref: '#/components/schemas/ExecutionStepError'
      required:
        - type
        - status
      example:
        type: EXECUTE
        status: PROCESSING
        fee:
          feeType: NETWORK
          assetId: ETH
          amountType: FIXED
          amount: '0.01'
        txId: tx_abc123def456
    ExecutionResponseBaseDetails:
      type: object
      properties:
        side:
          $ref: '#/components/schemas/Side'
        baseAmount:
          type: string
          description: Amount to convert
        baseAssetId:
          type: string
          description: Source asset identifier
        baseAssetRail:
          $ref: '#/components/schemas/TransferRail'
        quoteAssetId:
          type: string
          description: Target asset identifier
        quoteAssetRail:
          $ref: '#/components/schemas/TransferRail'
      required:
        - baseAmount
        - baseAssetId
        - quoteAssetId
        - side
      example:
        side: BUY
        baseAmount: '1000.00'
        baseAssetId: USDC
        baseAssetRail: BLOCKCHAIN
        quoteAssetId: BTC
        quoteAssetRail: BLOCKCHAIN
    MarketExecutionResponseDetails:
      allOf:
        - $ref: '#/components/schemas/MarketTypeDetails'
        - $ref: '#/components/schemas/ExecutionResponseBaseDetails'
      example:
        type: MARKET
        side: BUY
        baseAmount: '1000.00'
        baseAssetId: USDC
        baseAssetRail: BLOCKCHAIN
        quoteAssetId: BTC
        quoteAssetRail: BLOCKCHAIN
    QuoteExecutionTypeDetails:
      type: object
      properties:
        type:
          $ref: '#/components/schemas/QuoteExecutionTypeEnum'
        quoteId:
          type: string
          description: Quote ID for quote orders
        quoteAmount:
          type: string
          description: Quote amount for quote orders
      required:
        - type
        - quoteId
        - quoteAmount
    QuoteExecutionWithRequoteResponseDetails:
      allOf:
        - $ref: '#/components/schemas/QuoteExecutionTypeDetails'
        - $ref: '#/components/schemas/ExecutionResponseBaseDetails'
        - $ref: '#/components/schemas/ReQuoteDetails'
      example:
        type: QUOTE
        quoteId: quote_8f2e4d1a9c5b7e3f
        side: BUY
        baseAmount: '1000.00'
        baseAssetId: USDC
        baseAssetRail: BLOCKCHAIN
        quoteAssetId: BTC
        quoteAssetRail: BLOCKCHAIN
        reQuote:
          type: RETRY
          count: 1
          slippageBps: 50
    ExecutionResponseDetails:
      discriminator:
        propertyName: type
        mapping:
          MARKET: '#/components/schemas/MarketExecutionResponseDetails'
          QUOTE: '#/components/schemas/QuoteExecutionWithRequoteResponseDetails'
      oneOf:
        - $ref: '#/components/schemas/MarketExecutionResponseDetails'
        - $ref: '#/components/schemas/QuoteExecutionWithRequoteResponseDetails'
    BlockchainAddress:
      type: object
      properties:
        blockchainAddress:
          type: string
          description: The blockchain address.
          example: '0x1234567890123456789012345678901234567890'
        tag:
          type: string
          description: The tag of the blockchain address. It is used to identify the address in the blockchain. It is optional.
          example: '1234567890'
      required:
        - blockchainAddress
      description: The blockchain address information.
      example:
        blockchainAddress: '0x1234567890123456789012345678901234567890'
        tag: '1234567890'
    BlockchainDestination:
      type: object
      properties:
        type:
          type: string
          description: The type of destination. Use "BLOCKCHAIN" for blockchain address destinations.
          example: BLOCKCHAIN
          enum:
            - BLOCKCHAIN
        address:
          $ref: '#/components/schemas/BlockchainAddress'
      required:
        - type
        - address
      example:
        type: BLOCKCHAIN
        address:
          blockchainAddress: '0x1234567890123456789012345678901234567890'
          tag: '1234567890'
    AccountHolderDetails:
      type: object
      properties:
        name:
          description: Full name of the account holder.
          type: string
        city:
          type: string
        country:
          description: Country code, as specified in ISO 3166-1 alpha-2.
          type: string
        subdivision:
          description: Country administrative subdivision, as specified in ISO 3166-2.
          type: string
        address:
          description: Account holder street address.
          type: string
        postalCode:
          type: string
      required:
        - name
      example:
        name: John Smith
        city: New York
        country: US
        subdivision: NY
        address: 123 Wall Street, Apt 4B
        postalCode: '10005'
    Iban:
      type: string
      pattern: ^[A-Z]{2}\d{2}[a-zA-Z0-9]{1,30}$
      example: GB82WEST12345698765432
    IbanAddress:
      type: object
      properties:
        accountHolder:
          $ref: '#/components/schemas/AccountHolderDetails'
        iban:
          $ref: '#/components/schemas/Iban'
      required:
        - accountHolder
        - iban
      example:
        accountHolder:
          name: Maria Gonzalez
          city: Madrid
          country: ES
          subdivision: MD
          address: Calle Gran Via 123, 2°B
          postalCode: '28013'
        iban: ES9121000418450200051332
    IbanDestination:
      type: object
      properties:
        type:
          type: string
          enum:
            - IBAN
        address:
          $ref: '#/components/schemas/IbanAddress'
      required:
        - type
        - address
      example:
        type: IBAN
        address:
          accountHolder:
            name: Maria Gonzalez
            city: Madrid
            country: ES
            subdivision: MD
            address: Calle Gran Via 123, 2°B
            postalCode: '28013'
          iban: ES9121000418450200051332
    SwiftCode:
      type: string
      pattern: ^[A-Z]{6}[A-Z0-9]{2}([A-Z0-9]{3})?$
      example: CHASUS33XXX
    SwiftAddress:
      type: object
      properties:
        accountHolder:
          $ref: '#/components/schemas/AccountHolderDetails'
        swiftCode:
          $ref: '#/components/schemas/SwiftCode'
        routingNumber:
          type: string
          description: Routing number identifying the bank account.
      required:
        - accountHolder
        - swiftCode
        - routingNumber
      example:
        accountHolder:
          name: Emma Watson
          city: London
          country: GB
          subdivision: ENG
          address: 25 Bank Street, Canary Wharf
          postalCode: E14 5JP
        swiftCode: CHASUS33XXX
        routingNumber: '026009593'
    SwiftDestination:
      type: object
      properties:
        type:
          type: string
          enum:
            - SWIFT
        address:
          $ref: '#/components/schemas/SwiftAddress'
      required:
        - type
        - address
      example:
        type: SWIFT
        address:
          accountHolder:
            name: Pierre Dupont
            city: Paris
            country: FR
            subdivision: IDF
            address: 25 Avenue des Champs-Élysées
            postalCode: '75008'
          swiftCode: BNPAFRPPXXX
          routingNumber: '20041'
    AchAccountType:
      type: string
      description: Type of the bank account.
      enum:
        - CHECKING
        - SAVINGS
      example: CHECKING
    AchAddress:
      type: object
      properties:
        accountHolder:
          $ref: '#/components/schemas/AccountHolderDetails'
        bankName:
          type: string
          description: Name of the bank.
        bankAccountNumber:
          type: string
          description: The bank account number for the ACH transfer.
          pattern: ^\d{4,17}$
        routingNumber:
          type: string
          pattern: ^\d{9}$
          description: Routing number identifying the bank account.
        accountType:
          $ref: '#/components/schemas/AchAccountType'
      required:
        - accountHolder
        - bankAccountNumber
        - routingNumber
        - accountType
      example:
        accountHolder:
          name: Sarah Johnson
          city: Austin
          country: US
          subdivision: TX
          address: 456 Oak Avenue
          postalCode: '78701'
        bankName: Chase Bank
        bankAccountNumber: '1234567890123'
        routingNumber: '021000021'
        accountType: CHECKING
    AchDestination:
      type: object
      properties:
        type:
          type: string
          enum:
            - ACH
        address:
          $ref: '#/components/schemas/AchAddress'
      required:
        - type
        - address
      example:
        type: ACH
        address:
          accountHolder:
            name: Sarah Johnson
            city: Austin
            country: US
            subdivision: TX
            address: 456 Oak Avenue
            postalCode: '78701'
          bankName: Chase Bank
          bankAccountNumber: '1234567890123'
          routingNumber: '021000021'
          accountType: CHECKING
    BankAddress:
      type: object
      properties:
        streetName:
          type: string
        buildingNumber:
          type: string
        postalCode:
          type: string
        city:
          type: string
        subdivision:
          type: string
        district:
          type: string
        country:
          type: string
      description: Address of the bank.
    USWireAddress:
      type: object
      properties:
        accountHolder:
          $ref: '#/components/schemas/AccountHolderDetails'
        bankName:
          type: string
          description: Name of the bank.
        bankAccountNumber:
          type: string
          description: The bank account number for the wire transfer.
        routingNumber:
          type: string
          description: Routing number identifying the bank account.
        bankAddress:
          $ref: '#/components/schemas/BankAddress'
      required:
        - accountHolder
        - bankAccountNumber
        - routingNumber
      example:
        accountHolder:
          name: Michael Thompson
          city: Chicago
          country: US
          subdivision: IL
          address: 200 West Jackson Blvd, Suite 1500
          postalCode: '60606'
        bankName: JPMorgan Chase Bank
        bankAccountNumber: '987654321012345'
        routingNumber: '021000021'
        bankAddress: 270 Park Avenue, New York, NY 10017
    USWireDestination:
      type: object
      properties:
        type:
          type: string
          enum:
            - WIRE
        address:
          $ref: '#/components/schemas/USWireAddress'
      required:
        - type
        - address
      example:
        type: WIRE
        address:
          accountHolder:
            name: John Smith
            city: New York
            country: US
            subdivision: NY
            address: 123 Wall Street
            postalCode: '10005'
          bankName: Chase Bank
          bankAccountNumber: '123456789012'
          routingNumber: '021000021'
          bankAddress: 270 Park Avenue, New York, NY 10017
    SpeiAddress:
      type: object
      properties:
        accountHolder:
          $ref: '#/components/schemas/AccountHolderDetails'
        bankName:
          type: string
          description: Name of the bank.
        bankAccountNumber:
          type: string
          description: The bank account number for the SPEI transfer.
      required:
        - accountHolder
        - bankAccountNumber
      example:
        accountHolder:
          name: Carlos Martinez Lopez
          city: Mexico City
          country: MX
          subdivision: CDMX
          address: Avenida Reforma 123
          postalCode: '06600'
        bankName: BBVA México
        bankAccountNumber: '012180001234567890'
    SpeiDestination:
      type: object
      properties:
        type:
          type: string
          enum:
            - SPEI
        address:
          $ref: '#/components/schemas/SpeiAddress'
      required:
        - type
        - address
      example:
        type: SPEI
        address:
          accountHolder:
            name: Carlos Martinez Lopez
            city: Mexico City
            country: MX
            subdivision: CDMX
            address: Avenida Reforma 123
            postalCode: '06600'
          bankName: BBVA México
          bankAccountNumber: '012180001234567890'
    SEPAAddress:
      type: object
      properties:
        accountHolder:
          $ref: '#/components/schemas/AccountHolderDetails'
        iban:
          $ref: '#/components/schemas/Iban'
        bic:
          type: string
          description: Bank Identifier Code (SWIFT/BIC)
        bankName:
          type: string
        bankBranch:
          type: string
        bankAddress:
          type: string
        purposeCode:
          type: string
          description: ISO purpose code for the transfer
        taxId:
          type: string
          description: Beneficiary tax identification number
      required:
        - accountHolder
        - iban
      example:
        accountHolder:
          name: Pierre Dubois
          city: Paris
          country: FR
          subdivision: '11'
          address: 15 Rue de la Paix
          postalCode: '75001'
        iban: FR1420041010050500013M02606
        bic: PSSTFRPPPAR
        bankName: La Banque Postale
        bankBranch: Paris Central
        bankAddress: 1 Boulevard de Vaugirard, 75015 Paris
        purposeCode: TRAD
        taxId: FR12345678901
    SEPADestination:
      type: object
      properties:
        type:
          type: string
          enum:
            - SEPA
        address:
          $ref: '#/components/schemas/SEPAAddress'
      required:
        - type
        - address
      example:
        type: SEPA
        address:
          accountHolder:
            name: Hans Mueller
            city: Berlin
            country: DE
            subdivision: BE
            address: Unter den Linden 15
            postalCode: '10117'
          iban: DE89370400440532013000
          bic: COBADEFFXXX
          bankName: Commerzbank AG
    PixAddress:
      type: object
      required:
        - accountHolder
        - pixKey
        - keyType
      properties:
        accountHolder:
          $ref: '#/components/schemas/AccountHolderDetails'
        pixKey:
          type: string
        keyType:
          type: string
          enum:
            - CPF
            - CNPJ
            - EMAIL
            - PHONE
            - RANDOM
        bankName:
          type: string
        bankCode:
          type: string
        qrCode:
          type: string
          description: The QR code to be used for the transfer
          example: qr_code_number
        expirationDate:
          type: string
          description: The expiration date of the QR code
          example: '2025-01-15T12:00:00Z'
      example:
        accountHolder:
          name: Maria Silva Santos
          city: São Paulo
          country: BR
          subdivision: SP
          address: Rua das Flores, 123
          postalCode: 01234-567
        pixKey: '11987654321'
        keyType: phone
        bankName: Banco do Brasil
        bankCode: '001'
        qrCode: qr_code_number
        expirationDate: '2025-01-15T12:00:00Z'
    PixDestination:
      type: object
      properties:
        type:
          type: string
          enum:
            - PIX
        address:
          $ref: '#/components/schemas/PixAddress'
      required:
        - type
        - address
      example:
        type: PIX
        address:
          accountHolder:
            name: Maria Silva Santos
            city: São Paulo
            country: BR
            subdivision: SP
            address: Rua das Flores, 123
            postalCode: 01234-567
          pixKey: '11987654321'
          keyType: phone
          bankName: Banco do Brasil
          bankCode: '001'
    LocalBankAfricaAccountNumber:
      type: string
      pattern: ^\d{4,17}$
      example: '1234567890123'
    PaymentRedirect:
      type: object
      description: URL returned by the provider that the end user will be redirected to in order to complete the payment on the bank/mobile provider page. After completion, the bank/mobile provider redirects the end user back to successRedirectUrl (provided in the RAMP request)
      properties:
        url:
          type: string
          description: URL to redirect to
          example: https://yellowcard.example.com/authorize?token=abc123&transactionId=16b8b2c3-bd61-4745-9c48-3d30c2bc6907
        expiresAt:
          type: string
          description: Expiration date of the redirect
          example: '2025-01-15T12:00:00Z'
    LocalBankTransferAfricaAddress:
      type: object
      properties:
        accountHolder:
          $ref: '#/components/schemas/AccountHolderDetails'
        accountNumber:
          $ref: '#/components/schemas/LocalBankAfricaAccountNumber'
        bankName:
          type: string
          description: Name of the bank
        bankCode:
          type: string
          description: Internal bank identifier
        successPaymentInstructionRedirectUrl:
          type: string
          description: The URL to redirect to after the payment instruction is successful
        paymentRedirect:
          $ref: '#/components/schemas/PaymentRedirect'
      required:
        - accountHolder
        - accountNumber
        - bankName
        - bankCode
      example:
        accountHolder:
          name: Adaora Okafor
          city: Lagos
          country: NG
          subdivision: LA
          address: 15 Victoria Island Road
          postalCode: '101001'
        accountNumber: '1234567890123'
        bankName: First Bank of Nigeria
        bankCode: '011'
        successPaymentInstructionRedirectUrl: https://yellowcard.example.com/authorize?token=abc123&transactionId=16b8b2c3-bd61-4745-9c48-3d30c2bc6907
        paymentRedirect:
          url: https://yellowcard.example.com/authorize?token=abc123&transactionId=16b8b2c3-bd61-4745-9c48-3d30c2bc6907
          expiresAt: '2025-01-15T12:00:00Z'
    LocalBankTransferAfricaDestination:
      type: object
      properties:
        type:
          type: string
          enum:
            - LOCAL_BANK_TRANSFER
        address:
          $ref: '#/components/schemas/LocalBankTransferAfricaAddress'
      required:
        - type
        - address
      example:
        type: LOCAL_BANK_TRANSFER
        address:
          accountHolder:
            name: Adaora Okafor
            city: Lagos
            country: NG
            subdivision: LA
            address: 15 Victoria Island Road
            postalCode: '101001'
          accountNumber: '1234567890123'
          bankName: First Bank of Nigeria
          bankCode: '011'
    MobileMoneyAddress:
      type: object
      required:
        - accountHolder
        - mobilePhoneNumber
        - provider
      properties:
        accountHolder:
          $ref: '#/components/schemas/AccountHolderDetails'
        mobilePhoneNumber:
          $ref: '#/components/schemas/MobilePhoneNumber'
        provider:
          type: string
          enum:
            - m-pesa
            - airtel
            - mtn
            - tigo
            - orange
          description: Mobile money provider
        beneficiaryDocumentId:
          type: string
          description: Beneficiary document identification (may be required)
        beneficiaryRelationship:
          type: string
          description: Relationship to beneficiary for AML purposes
        successPaymentInstructionRedirectUrl:
          type: string
          description: The URL to redirect to after the payment instruction is successful
        paymentRedirect:
          $ref: '#/components/schemas/PaymentRedirect'
      example:
        accountHolder:
          name: Grace Wanjiku Kamau
          city: Nairobi
          country: KE
          subdivision: NRB
          address: Westlands Avenue 45
          postalCode: '00100'
        mobilePhoneNumber: '+254712345678'
        provider: m-pesa
        beneficiaryDocumentId: '12345678'
        beneficiaryRelationship: self
        successPaymentInstructionRedirectUrl: https://yellowcard.example.com/authorize?token=abc123&transactionId=16b8b2c3-bd61-4745-9c48-3d30c2bc6907
        paymentRedirect:
          url: https://yellowcard.example.com/authorize?token=abc123&transactionId=16b8b2c3-bd61-4745-9c48-3d30c2bc6907
          expiresAt: '2025-01-15T12:00:00Z'
    MobileMoneyDestination:
      type: object
      properties:
        type:
          type: string
          enum:
            - MOBILE_MONEY
        address:
          $ref: '#/components/schemas/MobileMoneyAddress'
      required:
        - type
        - address
      example:
        type: MOBILE_MONEY
        address:
          accountHolder:
            name: Grace Wanjiku Kamau
            city: Nairobi
            country: KE
            subdivision: NRB
            address: Westlands Avenue 45
            postalCode: '00100'
          mobilePhoneNumber: '+254712345678'
          provider: m-pesa
          beneficiaryDocumentId: '12345678'
          beneficiaryRelationship: self
    EuropeanSEPAAddress:
      type: object
      properties:
        accountHolder:
          $ref: '#/components/schemas/AccountHolderDetails'
        iban:
          $ref: '#/components/schemas/Iban'
        bic:
          type: string
        bankName:
          type: string
        bankBranch:
          type: string
        bankAddress:
          type: string
        purposeCode:
          type: string
        taxId:
          type: string
      required:
        - accountHolder
        - iban
    EuropeanSEPADestination:
      type: object
      properties:
        type:
          type: string
          enum:
            - EUROPEAN_SEPA
        address:
          $ref: '#/components/schemas/EuropeanSEPAAddress'
      required:
        - type
        - address
    ChapsAddress:
      type: object
      required:
        - accountHolder
        - sortCode
        - accountNumber
        - bankAccountCountry
        - bankAccountHolderName
      properties:
        accountHolder:
          $ref: '#/components/schemas/AccountHolderDetails'
        sortCode:
          type: string
          description: UK bank sort code (format XX-XX-XX)
          example: 12-34-56
        accountNumber:
          type: string
          description: UK bank account number
          example: '12345678'
        bankName:
          type: string
          description: Name of the bank
          example: Barclays Bank
        bankAccountCountry:
          type: string
          pattern: ^\d{2}$
          description: CHAPS bank account holder name
          example: GB
        bankAccountHolderName:
          type: string
          pattern: ^(?=.{1,140}$)[^\s]+(\s+[^\s]+)*$
          example: John Smith
          description: CHAPS bank account holder name
      example:
        accountHolder:
          name: John Smith
          city: London
          country: GB
          subdivision: ENG
          address: 123 Oxford Street
          postalCode: W1D 1BS
        sortCode: 12-34-56
        accountNumber: '12345678'
        bankName: Barclays Bank
    ChapsDestination:
      type: object
      properties:
        type:
          type: string
          enum:
            - CHAPS
        address:
          $ref: '#/components/schemas/ChapsAddress'
      required:
        - type
        - address
      example:
        type: CHAPS
        address:
          accountHolder:
            name: John Smith
            city: London
            country: GB
            subdivision: ENG
            address: 123 Oxford Street
            postalCode: W1D 1BS
          sortCode: 12-34-56
          accountNumber: '12345678'
          bankName: Barclays Bank
    RecipientHandle:
      type: object
      required:
        - type
        - value
      properties:
        type:
          type: string
          enum:
            - EMAIL
        value:
          type: string
          description: The value of the recipient handle
          example: john.smith@email.com
    InteracAddress:
      type: object
      description: |-
        When true, funds are deposited directly into the recipient's bank account without a security question.
         When false, a security question and answer are required to complete the transfer
      required:
        - accountHolder
        - recipientHandle
        - autoDeposit
      properties:
        accountHolder:
          $ref: '#/components/schemas/AccountHolderDetails'
        recipientHandle:
          $ref: '#/components/schemas/RecipientHandle'
        message:
          type: string
          description: The message to be sent to the recipient
          example: Please deposit the funds into the account
        autoDeposit:
          type: boolean
          description: Whether to automatically deposit the funds into the account
          example: true
        securityQuestion:
          type: string
          description: The security question to be used for the security answer
          example: What is your mother's maiden name?
        securityAnswer:
          type: string
          description: The security answer to be used for the security question
          example: Jane Smith
      example:
        accountHolder:
          name: John Smith
          city: Toronto
          country: CA
          subdivision: 'ON'
          address: 123 Yonge Street
          postalCode: M5B 1M4
        recipientHandle:
          type: EMAIL
          value: john.smith@email.com
        message: Please deposit the funds into the account
        autoDeposit: true
        securityQuestion: What is your mother's maiden name?
        securityAnswer: Jane Smith
    InteracDestination:
      type: object
      properties:
        type:
          type: string
          enum:
            - INTERAC
        address:
          $ref: '#/components/schemas/InteracAddress'
      required:
        - type
        - address
      example:
        type: INTERAC
        address:
          accountHolder:
            name: John Smith
            city: Toronto
            country: CA
            subdivision: 'ON'
            address: 123 Yonge Street
            postalCode: M5B 1M4
          email: john.smith@email.com
          institutionNumber: '001'
          transitNumber: '12345'
          accountNumber: '1234567'
          bankName: Royal Bank of Canada
    PayidAddress:
      type: object
      required:
        - accountHolder
        - value
        - type
      properties:
        accountHolder:
          $ref: '#/components/schemas/AccountHolderDetails'
        value:
          type: string
          description: The PayID identifier (email, phone, ABN, or organization ID)
          example: john.williams@email.com
        type:
          type: string
          enum:
            - EMAIL
          description: The type of PayID being used
          example: EMAIL
        bsb:
          type: string
          description: Bank State Branch (BSB) number (6 digits, format XXX-XXX)
          example: 123-456
        accountNumber:
          type: string
          description: Australian bank account number
          example: '12345678'
      example:
        accountHolder:
          name: John Williams
          city: Sydney
          country: AU
          subdivision: NSW
          address: 456 George Street
          postalCode: '2000'
        value: john.williams@email.com
        type: EMAIL
        bsb: 123-456
        accountNumber: '12345678'
    PayidDestination:
      type: object
      properties:
        type:
          type: string
          enum:
            - PAYID
        address:
          $ref: '#/components/schemas/PayidAddress'
      required:
        - type
        - address
      example:
        type: PAYID
        address:
          accountHolder:
            name: John Williams
            city: Sydney
            country: AU
            subdivision: NSW
            address: 456 George Street
            postalCode: '2000'
          payId: john.williams@email.com
          payIdType: email
          bsb: 123-456
          accountNumber: '12345678'
          bankName: Commonwealth Bank
    InternalTransferAddress:
      type: object
      required:
        - externalSubAccountId
        - accountId
      properties:
        externalAccountId:
          type: string
          description: The provider's identifier for the external account. This enables the user to fund the account externally (outside of Fireblocks) if needed.
        accountId:
          type: string
          description: The Fireblocks account ID where the user should deposit the funds.
      example:
        externalSubAccountId: sub_acc_1234567890
        accountId: acc_1234567890
    InternalTransferDestination:
      type: object
      properties:
        type:
          type: string
          enum:
            - INTERNAL_TRANSFER
        address:
          $ref: '#/components/schemas/InternalTransferAddress'
      required:
        - type
      example:
        type: INTERNAL_TRANSFER
        address:
          externalSubAccountId: sub_acc_1234567890
          accountId: acc_1234567890
    FiatDestination:
      oneOf:
        - $ref: '#/components/schemas/IbanDestination'
        - $ref: '#/components/schemas/SwiftDestination'
        - $ref: '#/components/schemas/AchDestination'
        - $ref: '#/components/schemas/USWireDestination'
        - $ref: '#/components/schemas/SpeiDestination'
        - $ref: '#/components/schemas/SEPADestination'
        - $ref: '#/components/schemas/PixDestination'
        - $ref: '#/components/schemas/LocalBankTransferAfricaDestination'
        - $ref: '#/components/schemas/MobileMoneyDestination'
        - $ref: '#/components/schemas/EuropeanSEPADestination'
        - $ref: '#/components/schemas/ChapsDestination'
        - $ref: '#/components/schemas/InteracDestination'
        - $ref: '#/components/schemas/PayidDestination'
        - $ref: '#/components/schemas/InternalTransferDestination'
    FiatPaymentMetadata:
      type: object
      properties:
        referenceId:
          type: string
    PaymentInstructions:
      oneOf:
        - $ref: '#/components/schemas/BlockchainDestination'
        - allOf:
            - $ref: '#/components/schemas/FiatDestination'
            - $ref: '#/components/schemas/FiatPaymentMetadata'
    FailureReason:
      type: string
      enum:
        - INSUFFICIENT_FUNDS
        - UNKNOWN_REASON
        - INITIATE_PAYMENT_FAILURE
        - POLICY_REJECTION
        - TRANSACTION_FAILED
        - ACCOUNT_NOT_ACTIVE
        - ACCOUNT_NOT_FOUND
        - BAD_REQUEST
        - QUOTE_NOT_READY
        - INVALID_DATA
        - UNSUPPORTED_CONVERSION
        - UNSUPPORTED_RAMP_METHOD
        - REFUNDED
        - FAILED_BY_PROVIDER
        - ORDER_EXPIRED
        - TRANSACTION_CANCELLED
        - TRANSACTION_REJECTED
        - TRANSACTION_BLOCKED
        - PROVIDER_INTERNAL_ERROR
        - UNSUPPORTED_SOURCE_ASSET
        - UNSUPPORTED_DESTINATION_ASSET
        - AMOUNT_BELOW_MINIMUM
        - PII_MISSING
        - EXTERNAL_SOURCE_NOT_SUPPORTED
        - UNSUPPORTED_REGION
        - DESTINATION_NOT_WHITELISTED
    Failure:
      type: object
      properties:
        reason:
          $ref: '#/components/schemas/FailureReason'
      required:
        - reason
    OrderDetails:
      type: object
      properties:
        id:
          type: string
        via:
          $ref: '#/components/schemas/AccessType'
        status:
          $ref: '#/components/schemas/OrderStatus'
        createdAt:
          type: string
          format: date-time
        updatedAt:
          type: string
          format: date-time
        receipt:
          $ref: '#/components/schemas/TransferReceipt'
        generalFees:
          type: array
          items:
            $ref: '#/components/schemas/Fee'
        executionSteps:
          type: array
          items:
            $ref: '#/components/schemas/OrderExecutionStep'
        executionResponseDetails:
          $ref: '#/components/schemas/ExecutionResponseDetails'
        settlement:
          $ref: '#/components/schemas/Settlement'
        participantsIdentification:
          $ref: '#/components/schemas/ParticipantsIdentification'
        paymentInstructions:
          type: array
          items:
            $ref: '#/components/schemas/PaymentInstructions'
          description: Payment instructions for the order, the client can use one of these to pay the order.
        createdBy:
          type: string
          description: The ID of the user who created the order
        customerInternalReferenceId:
          type: string
          description: Internal reference ID for the customer
        note:
          type: string
          maxLength: 512
          description: Optional note for the Order
        expiresAt:
          type: string
          format: date-time
        failure:
          $ref: '#/components/schemas/Failure'
      required:
        - id
        - via
        - status
        - createdAt
        - createdBy
        - executionSteps
        - settlement
        - executionResponseDetails
      example:
        id: order_9f4e2d8b1c6a5e73
        via:
          type: PROVIDER_ACCOUNT
          providerId: bridge-provider-001
          accountId: acc_9f4e2d8b1c6a5e73
        status: PROCESSING
        createdAt: '2024-01-15T10:30:00.000Z'
        updatedAt: '2024-01-15T10:30:30.000Z'
        receipt:
          type: BLOCKCHAIN
          txHash: '0x1234567890abcdef'
          amount: '0.02458'
        generalFees:
          - feeType: ORDER
            assetId: USDC
            amountType: FIXED
            amount: '5.00'
        executionSteps:
          - type: EXECUTE
            status: PROCESSING
            fee:
              feeType: NETWORK
              assetId: ETH
              amountType: FIXED
              amount: '0.01'
            txId: tx_abc123def456
        executionResponseDetails:
          type: MARKET
          side: BUY
          baseAmount: '1000.00'
          baseAssetId: USDC
          quoteAssetId: BTC
        settlement:
          type: PREFUNDED
          destinationAccount:
            type: VAULT_ACCOUNT
            accountId: vault_acc_9f4e2d8b1c6a5e73
        createdBy: user_123abc456def789
        customerInternalReferenceId: order_ref_2024_001
        note: Monthly investment order
    OrderRequirementSubmissionJsonSchema:
      type: string
      description: |
        A JSON Schema (Draft-7) in string format describing the shape of the `data` object expected on the corresponding POST /trading/orders/{orderId}/requirement/data request. The schema is the contract: the client builds the `data` payload to match it, and SDKs can validate before sending. The string content is expected to be valid JSON (application/json).
      example: |
        {
          "$schema": "http://json-schema.org/draft-07/schema#",
          "type": "object",
          "required": ["sourceOfFunds", "purposeOfPayment"],
          "properties": {
            "sourceOfFunds": {
              "type": "string",
              "enum": ["SALARY", "SAVINGS", "INVESTMENT_RETURNS", "BUSINESS_INCOME", "OTHER"]
            },
            "purposeOfPayment": {
              "type": "string",
              "enum": ["BUSINESS_EXPENSES", "PERSONAL_EXPENSES", "INVESTMENT", "OTHER"]
            }
          }
        }
    OrderRequirementAllowedFileType:
      type: string
      description: Supported file formats for order requirement file uploads.
      enum:
        - PDF
        - JPEG
        - PNG
        - HEIC
        - HEIF
        - DOC
        - DOCX
        - XLS
        - XLSX
        - CSV
      example: PDF
    OrderRequirementFile:
      type: object
      description: A file the provider requires as part of the order requirement response.
      properties:
        fileKey:
          type: string
          description: Stable identifier for this required file. Used to correlate uploads on submission.
          example: identity_document
        description:
          type: string
          description: Human-readable description of what the file should contain.
          example: A clear photo or scan of the account holder's government-issued ID.
        allowedFileTypes:
          type: array
          description: File formats the provider accepts for this entry.
          items:
            $ref: '#/components/schemas/OrderRequirementAllowedFileType'
          example:
            - PDF
            - JPEG
            - PNG
      required:
        - fileKey
        - description
        - allowedFileTypes
      example:
        fileKey: identity_document
        description: A clear photo or scan of the account holder's government-issued ID.
        allowedFileTypes:
          - PDF
          - JPEG
          - PNG
    OrderRequirementDetails:
      type: object
      description: Order requirement details for an order that is awaiting compliance requirements. Returned by GET /trading/orders/{orderId}/requirement.
      properties:
        requirementId:
          type: string
          description: Unique identifier of the order requirement request as issued by the provider.
          example: info_7c1f9b2e4a6d
        dueBy:
          type: string
          format: date-time
          description: ISO-8601 timestamp indicating when the order requirement submission is due.
          example: '2024-01-15T10:35:00.000Z'
        requiredData:
          $ref: '#/components/schemas/OrderRequirementSubmissionJsonSchema'
        requiredFiles:
          type: array
          description: Descriptors for files the provider requires as part of the order requirement response. Empty when no files are required. Each entry's `fileKey` is used to correlate uploads on the corresponding upload request.
          items:
            $ref: '#/components/schemas/OrderRequirementFile'
          example:
            - fileKey: identity_document
              description: A clear photo or scan of the account holder's government-issued ID.
              allowedFileTypes:
                - PDF
                - JPEG
                - PNG
      required:
        - requirementId
        - requiredData
        - requiredFiles
    SubmitOrderRequirementRequest:
      type: object
      description: Body of POST /trading/orders/{orderId}/requirement/data. Carries the textual response (`data`). Any required files are uploaded separately via POST /trading/orders/{orderId}/requirement/file.
      properties:
        data:
          type: object
          description: Free-form object that MUST conform to the `requiredData` JSON Schema returned by the GET endpoint. Carries text/select fields.
          additionalProperties: true
          example:
            fullName: Jane Doe
            nationality: US
      required:
        - data
    OrderRequirementFileUpload:
      type: object
      description: Multipart body of POST /trading/orders/{orderId}/requirement/file. Uploads a single file as part of an order requirement response. Fireblocks encrypts and uploads each file individually to the underlying provider.
      properties:
        fileKey:
          type: string
          description: Identifier of the required file this upload satisfies. Must match a `fileKey` from `requiredFiles` on the GET response.
          example: identity_document
        file:
          type: string
          format: binary
          description: The binary file content. The file's type must be one of the supported OrderRequirementAllowedFileType values; the file name and type are derived from the uploaded part.
          example: <binary file content>
      required:
        - fileKey
        - file
    SetAdminQuorumThresholdRequest:
      type: object
      properties:
        adminQuorumThreshold:
          type: number
          description: The number of admins that will requires to approve an operation
    SetAdminQuorumThresholdResponse:
      type: object
      properties:
        message:
          type: string
          description: The message which indicates the result of the operation.
          example: Admin quorum threshold request sent successfully.
      required:
        - message
    Paging:
      type: object
      properties:
        next:
          type: string
          description: Cursor to the next page
      required:
        - next
    MediaEntityResponse:
      type: object
      properties:
        url:
          type: string
          description: Cached accessible URL
        contentType:
          type: string
          enum:
            - IMAGE
            - VIDEO
            - ANIMATION
            - THREE_D
            - TEXT
            - GIF
            - UNKNOWN_TYPE
            - SVG
            - AUDIO
          description: Media type
      required:
        - url
        - contentType
    SpamOwnershipResponse:
      type: object
      properties:
        result:
          type: boolean
          description: Token spam result
        source:
          type: string
          description: Source of Token's Spam status value
          enum:
            - OWNER
            - SYSTEM
      required:
        - result
        - source
    TokenCollectionResponse:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
        symbol:
          type: string
      required:
        - id
    TokenOwnershipResponse:
      type: object
      properties:
        id:
          type: string
          description: The Fireblocks NFT asset id
        tokenId:
          type: string
          description: Token id within the contract/collection
        standard:
          type: string
          description: ERC721 / ERC1155
        metadataURI:
          type: string
          description: URL of the original token JSON metadata
        cachedMetadataURI:
          type: string
          description: URL of the cached token JSON metadata
        media:
          description: Media items extracted from metadata JSON
          type: array
          items:
            $ref: '#/components/schemas/MediaEntityResponse'
        spam:
          description: Owned Token's Spam status
          allOf:
            - $ref: '#/components/schemas/SpamOwnershipResponse'
        collection:
          description: Parent collection information
          allOf:
            - $ref: '#/components/schemas/TokenCollectionResponse'
        balance:
          type: string
        vaultAccountId:
          type: string
        ownershipStartTime:
          type: number
        ownershipLastUpdateTime:
          type: number
        blockchainDescriptor:
          enum:
            - ETH
            - ETH_TEST3
            - ETH_TEST5
            - ETH_TEST6
            - POLYGON
            - POLYGON_TEST_MUMBAI
            - AMOY_POLYGON_TEST
            - XTZ
            - XTZ_TEST
            - BASECHAIN_ETH
            - BASECHAIN_ETH_TEST3
            - BASECHAIN_ETH_TEST5
            - ETHERLINK
            - ETHERLINK_TEST
            - MANTLE
            - MANTLE_TEST
            - GUN_GUNZILLA
            - GUN_GUNZILLA_TEST
            - ETH_SONEIUM
            - SONEIUM_MINATO_TEST
            - IOTX_IOTEX
            - KLAY_KAIA
            - KLAY_KAIA_TEST
            - APECHAIN
            - APECHAIN_TEST
            - CRONOS
            - CRONOS_TEST
            - ROBINHOOD_CHAIN_TESTNET_TEST
            - ARB
          type: string
        description:
          type: string
        name:
          type: string
        ncwId:
          type: string
          description: Ownership Non-Custodial Wallet ID
        ncwAccountId:
          type: string
          description: Ownership Non-Custodial Wallet's account ID
        status:
          type: string
          description: Owned Token's status
          enum:
            - LISTED
            - ARCHIVED
      required:
        - id
        - tokenId
        - standard
        - balance
        - ownershipStartTime
        - ownershipLastUpdateTime
        - blockchainDescriptor
        - status
    GetOwnershipTokensResponse:
      type: object
      properties:
        paging:
          $ref: '#/components/schemas/Paging'
        data:
          type: array
          items:
            $ref: '#/components/schemas/TokenOwnershipResponse'
    SpamTokenResponse:
      type: object
      properties:
        result:
          type: boolean
          description: Token spam result
      required:
        - result
    TokenResponse:
      type: object
      properties:
        id:
          type: string
          description: The Fireblocks NFT asset id
        tokenId:
          type: string
          description: Token id within the contract/collection
        standard:
          type: string
          description: ERC721 / ERC1155
        metadataURI:
          type: string
          description: URL of the original token JSON metadata
        cachedMetadataURI:
          type: string
          description: URL of the cached token JSON metadata
        media:
          description: Media items extracted from metadata JSON
          type: array
          items:
            $ref: '#/components/schemas/MediaEntityResponse'
        spam:
          description: Token spam status
          allOf:
            - $ref: '#/components/schemas/SpamTokenResponse'
        collection:
          description: Parent collection information
          allOf:
            - $ref: '#/components/schemas/TokenCollectionResponse'
        blockchainDescriptor:
          type: string
          enum:
            - ETH
            - ETH_TEST3
            - ETH_TEST5
            - ETH_TEST6
            - POLYGON
            - POLYGON_TEST_MUMBAI
            - AMOY_POLYGON_TEST
            - XTZ
            - XTZ_TEST
            - BASECHAIN_ETH
            - BASECHAIN_ETH_TEST3
            - BASECHAIN_ETH_TEST5
            - ETHERLINK
            - ETHERLINK_TEST
            - MANTLE
            - MANTLE_TEST
            - GUN_GUNZILLA
            - GUN_GUNZILLA_TEST
            - ETH_SONEIUM
            - SONEIUM_MINATO_TEST
            - IOTX_IOTEX
            - KLAY_KAIA
            - KLAY_KAIA_TEST
            - APECHAIN
            - APECHAIN_TEST
            - CRONOS
            - CRONOS_TEST
            - ROBINHOOD_CHAIN_TESTNET_TEST
            - ARB
        description:
          type: string
        name:
          type: string
      required:
        - id
        - tokenId
        - standard
        - blockchainDescriptor
    ListOwnedTokensResponse:
      type: object
      properties:
        paging:
          $ref: '#/components/schemas/Paging'
        data:
          type: array
          items:
            $ref: '#/components/schemas/TokenResponse'
    CollectionOwnershipResponse:
      type: object
      properties:
        id:
          type: string
          description: Fireblocks collection id
        name:
          type: string
          description: Collection name
        symbol:
          type: string
          description: Collection symbol
        standard:
          type: string
          description: Collection contract standard
        blockchainDescriptor:
          enum:
            - ETH
            - ETH_TEST3
            - ETH_TEST5
            - ETH_TEST6
            - POLYGON
            - POLYGON_TEST_MUMBAI
            - AMOY_POLYGON_TEST
            - XTZ
            - XTZ_TEST
            - BASECHAIN_ETH
            - BASECHAIN_ETH_TEST3
            - BASECHAIN_ETH_TEST5
            - ETHERLINK
            - ETHERLINK_TEST
            - MANTLE
            - MANTLE_TEST
            - GUN_GUNZILLA
            - GUN_GUNZILLA_TEST
            - ETH_SONEIUM
            - SONEIUM_MINATO_TEST
            - IOTX_IOTEX
            - KLAY_KAIA
            - KLAY_KAIA_TEST
            - APECHAIN
            - APECHAIN_TEST
            - CRONOS
            - CRONOS_TEST
            - ROBINHOOD_CHAIN_TESTNET_TEST
            - ARB
          type: string
          description: Collection's blockchain
        contractAddress:
          type: string
          description: Collection contract standard
      required:
        - id
        - blockchainDescriptor
    ListOwnedCollectionsResponse:
      type: object
      properties:
        paging:
          $ref: '#/components/schemas/Paging'
        data:
          type: array
          items:
            $ref: '#/components/schemas/CollectionOwnershipResponse'
    GetNFTsResponse:
      type: object
      properties:
        paging:
          $ref: '#/components/schemas/Paging'
        data:
          type: array
          items:
            $ref: '#/components/schemas/TokenResponse'
    UpdateTokenOwnershipStatusDto:
      type: object
      properties:
        status:
          type: string
          enum:
            - LISTED
            - ARCHIVED
      required:
        - status
    TokenOwnershipStatusUpdatePayload:
      type: object
      properties:
        assetId:
          type: string
          description: Token's asset id
          example: NFT-abcdefabcdefabcdefabcdefabcdefabcdefabcd
          x-fb-entity: asset
        status:
          type: string
          description: Token's ownership new status
          enum:
            - LISTED
            - ARCHIVED
          example: ARCHIVED
      required:
        - assetId
        - status
    UpdateTokensOwnershipStatusRequest:
      type: array
      items:
        $ref: '#/components/schemas/TokenOwnershipStatusUpdatePayload'
    TokenOwnershipSpamUpdatePayload:
      type: object
      properties:
        assetId:
          type: string
          description: Token's asset id
          example: NFT-abcdefabcdefabcdefabcdefabcdefabcdefabcd
          x-fb-entity: asset
        spam:
          type: boolean
          description: Token's ownership new spam value
          example: true
      required:
        - assetId
        - spam
    UpdateTokensOwnershipSpamRequest:
      type: array
      items:
        $ref: '#/components/schemas/TokenOwnershipSpamUpdatePayload'
    SessionMetadata:
      type: object
      properties:
        appUrl:
          type: string
        appName:
          type: string
        appDescription:
          type: string
        appIcon:
          type: string
      required:
        - appUrl
    SessionDTO:
      type: object
      properties:
        id:
          type: string
          description: Id of the connection
          example: 4e9e7051-f3b2-48e9-8ee6-b12492552657
        userId:
          type: string
          description: Id of the user that created the connection
        sessionMetadata:
          description: Metadata of the connection (provided by the dapp)
          allOf:
            - $ref: '#/components/schemas/SessionMetadata'
        vaultAccountId:
          type: number
          description: The vault to connect
          example: 1
        feeLevel:
          type: string
          description: The default fee level
          example: MEDIUM
          enum:
            - MEDIUM
            - HIGH
        chainIds:
          description: The chains approved for the connection
          example:
            - ETH
            - ETH_TEST
            - SOL
          type: array
          items:
            type: string
        connectionType:
          type: string
          description: The connection's type
          example: WalletConnect
          enum:
            - WalletConnect
        connectionMethod:
          type: string
          description: The method through which the connection was established
          example: API
          enum:
            - DESKTOP
            - MOBILE
            - API
        creationDate:
          format: date-time
          type: string
          description: Timestamp of the session's creation
      required:
        - id
        - userId
        - sessionMetadata
        - vaultAccountId
        - feeLevel
        - chainIds
        - connectionType
        - connectionMethod
        - creationDate
    GetConnectionsResponse:
      type: object
      properties:
        data:
          description: Array with the requested Web3 connection's data
          type: array
          items:
            $ref: '#/components/schemas/SessionDTO'
        paging:
          $ref: '#/components/schemas/Paging'
      required:
        - data
    CreateVaultAccountConnectionRequest:
      type: object
      properties:
        vaultAccountId:
          type: number
          description: The ID of the vault to connect to the dApp.
          example: 1
        feeLevel:
          type: string
          description: The default fee level. Valid values are `MEDIUM` and `HIGH`.
          example: MEDIUM
          enum:
            - MEDIUM
            - HIGH
        uri:
          type: string
          description: The WalletConnect uri provided by the dapp.
          example: wc:77752975-906f-48f5-b59f-047826ee947e@1?bridge=https%3A%2F%2F0.bridge.walletconnect.org&key=64be99adc6086b7a729b0ec8c7e1f174927ab92e84f5c6f9527050225344a637
        chainIds:
          description: The IDs of the blockchain networks used in the Web3 connection (Currently required in V1 connections only).
          example:
            - ETH
          type: array
          items:
            type: string
      required:
        - vaultAccountId
        - feeLevel
        - uri
    CreateNcwConnectionRequest:
      type: object
      properties:
        ncwId:
          type: string
          description: The ID of the Non-Custodial Wallet to connect to the dApp.
          example: b8337f1d-bd61-4d6c-afc1-4c9d60aa2132
        ncwAccountId:
          type: number
          description: The NCW account ID to connect to the dApp.
          example: 1
        feeLevel:
          type: string
          description: The default fee level. Valid values are `MEDIUM` and `HIGH`.
          example: MEDIUM
          enum:
            - MEDIUM
            - HIGH
        uri:
          type: string
          description: The WalletConnect uri provided by the dapp.
          example: wc:77752975-906f-48f5-b59f-047826ee947e@1?bridge=https%3A%2F%2F0.bridge.walletconnect.org&key=64be99adc6086b7a729b0ec8c7e1f174927ab92e84f5c6f9527050225344a637
        chainIds:
          description: The IDs of the blockchain networks used in the Web3 connection (Currently required in V1 connections only).
          example:
            - ETH
          type: array
          items:
            type: string
      required:
        - ncwId
        - ncwAccountId
        - feeLevel
        - uri
    CreateConnectionRequest:
      oneOf:
        - $ref: '#/components/schemas/CreateVaultAccountConnectionRequest'
        - $ref: '#/components/schemas/CreateNcwConnectionRequest'
    CreateConnectionResponse:
      type: object
      properties:
        id:
          type: string
          description: The ID of the Web3 connection initiated.
          example: 4e9e7051-f3b2-48e9-8ee6-b12492552657
        sessionMetadata:
          description: Metadata of the Web3 connection (provided by the DApp).
          allOf:
            - $ref: '#/components/schemas/SessionMetadata'
      required:
        - id
        - sessionMetadata
    RespondToConnectionRequest:
      type: object
      properties:
        approve:
          type: boolean
          description: Approval of the initiated Web3 connection.
          example: true
      required:
        - approve
    AddressRegistryTravelRuleProvider:
      type: string
      description: Travel Rule provider identifier (string enum value).
      enum:
        - TRAVEL_RULE_PROVIDER_NOTABENE
        - TRAVEL_RULE_PROVIDER_SYGNA
        - TRAVEL_RULE_PROVIDER_TRISA
        - TRAVEL_RULE_PROVIDER_OPENVASP
      example: TRAVEL_RULE_PROVIDER_NOTABENE
    AddressRegistryLegalEntity:
      type: object
      description: Legal entity details for a blockchain address.
      properties:
        leiData:
          type: boolean
          description: Indicates whether LEI (Legal Entity Identifier) data is available for this address from a verified public registry. A value of `false` means no LEI record was found.
          example: true
        entityName:
          type: string
          description: Legal entity display name.
          example: ACME Corporation
        jurisdiction:
          type: string
          description: Jurisdiction (e.g. ISO 3166-1 alpha-2 country code).
          example: US
        lei:
          type: string
          description: Legal Entity Identifier when available. Empty when `leiData` is `false`.
          example: 254900GC33RBE6FQA817
        travelRuleProviders:
          type: array
          items:
            $ref: '#/components/schemas/AddressRegistryTravelRuleProvider'
          example:
            - TRAVEL_RULE_PROVIDER_NOTABENE
            - TRAVEL_RULE_PROVIDER_SYGNA
        email:
          type: string
          description: Travel Rule contact email when available.
          example: compliance@example.com
      required:
        - leiData
        - entityName
        - jurisdiction
        - lei
        - travelRuleProviders
        - email
    AddressRegistryError:
      type: object
      description: Error body for address registry operations (4xx and 5xx).
      properties:
        code:
          type: integer
          description: |
            Application error code when present. For HTTP 400 on legal-entity lookup, distinguish: 4100 — request validation (e.g. missing, empty, or whitespace-only `address` after trim); 2140 — workspace not opted in to the address registry (`AR_OPT_IN_REQUIRED`). 2142 — not found (404). Other codes may appear, including on server errors.
          example: 2140
        message:
          type: string
          description: Human-readable error message
          example: Address registry opt-in required for this workspace.
      required:
        - message
    AddressRegistryTenantRegistryResponse:
      type: object
      description: Workspace participation in the address registry. Same shape for GET, POST (opt in), and DELETE (opt out).
      properties:
        status:
          type: string
          description: OPTED_IN or OPTED_OUT.
          enum:
            - OPTED_IN
            - OPTED_OUT
          example: OPTED_IN
      required:
        - status
    AddressRegistryVaultListOrder:
      type: string
      description: Sort order for the vault opt-out list by vault account id (ascending is the default when omitted).
      enum:
        - VAULT_OPT_OUT_LIST_ORDER_ASC
        - VAULT_OPT_OUT_LIST_ORDER_DESC
      default: VAULT_OPT_OUT_LIST_ORDER_ASC
      example: VAULT_OPT_OUT_LIST_ORDER_ASC
    AddressRegistryVaultOptOutItem:
      type: object
      description: A vault account excluded from the address registry for your workspace.
      properties:
        vaultAccountId:
          type: integer
          format: int32
          description: Vault account ID.
          example: 10001
      required:
        - vaultAccountId
    AddressRegistryListVaultOptOutsResponse:
      type: object
      properties:
        total:
          type: integer
          format: int32
          description: Total number of vault accounts excluded from the address registry for your workspace.
          example: 2
        data:
          type: array
          items:
            $ref: '#/components/schemas/AddressRegistryVaultOptOutItem'
          example:
            - vaultAccountId: 10001
            - vaultAccountId: 10002
        next:
          type: string
          description: Opaque cursor for the next page; empty when there is no next page.
          example: eyJvZmZzZXQiOjEwLCJwYWdlU2l6ZSI6MTB9
        prev:
          type: string
          description: Opaque cursor for the previous page; empty when there is no previous page.
          example: ''
      required:
        - total
        - data
    AddressRegistryAddVaultOptOutsRequest:
      type: object
      properties:
        vaultAccountIds:
          type: array
          description: |
            Vault account ids to add to the opt-out list (non-empty). Each element may be a JSON number or a decimal string; both forms are accepted.
          minItems: 1
          items:
            oneOf:
              - type: integer
                format: int32
                example: 10001
              - type: string
                example: '10001'
          example:
            - 10001
            - '10002'
      required:
        - vaultAccountIds
    AddressRegistryAddVaultOptOutsResponse:
      type: object
      description: Result of adding vault account ids to the workspace opt-out list for the address registry.
      properties:
        acceptedCount:
          type: integer
          format: int32
          description: Number of vault ids from the request that were processed. An empty `vaultAccountIds` list is rejected with HTTP 400, not a 200 with zero.
          example: 3
      required:
        - acceptedCount
    AddressRegistryRemoveAllVaultOptOutsResponse:
      type: object
      description: Result of clearing all vault-level opt-outs for the address registry on this workspace.
      properties:
        removedCount:
          type: integer
          format: int32
          description: Number of opt-out rows deleted (0 if none existed).
          example: 5
      required:
        - removedCount
    AddressRegistryGetVaultOptOutResponse:
      type: object
      description: Whether the given vault account is excluded from the address registry for your workspace.
      properties:
        optedOut:
          type: boolean
          description: |
            `true` if this vault account is excluded from the address registry; `false` if it is not excluded.
          example: false
      required:
        - optedOut
    AddressRegistryRemoveVaultOptOutResponse:
      type: object
      description: Body after removing one vault from the opt-out list; same fields as GET for that vault (`optedOut` is false).
      properties:
        optedOut:
          type: boolean
          description: Always false after a successful remove — the vault is not on the opt-out list.
          example: false
      required:
        - optedOut
    TravelRuleNotationEnum:
      type: array
      items:
        type: string
        enum:
          - fireblocks
          - notabene
    TravelRuleAddress:
      type: object
      properties:
        street:
          type: string
          example: 1234 Example St
          description: Street address
        city:
          type: string
          example: New York
          description: City
        state:
          type: string
          example: NY
          description: State or province
        postalCode:
          type: string
          example: '10001'
          description: Postal or ZIP code
    TravelRuleValidateTransactionRequest:
      type: object
      properties:
        transactionAsset:
          type: string
          example: BTC
          description: Transaction asset symbol (BTC,ETH)
        destination:
          type: string
          example: bc1qxy2kgdygjrsqtzq2n0yrf1234p83kkfjhx0wlh
          description: Transaction destination address
        transactionAmount:
          type: string
          example: '10'
          description: Transaction amount in the transaction asset
        transactionAssetDecimals:
          type: number
          example: 8
          description: Number of decimals in the transaction asset. This is used to convert the transaction amount to the smallest unit of the asset
        originatorVASPdid:
          type: string
          example: did:ethr:0x44957e75d6ce4a5bf37aae117da86422c848f7c2
          description: This is the identifier assigned to your VASP
        originatorEqualsBeneficiary:
          type: boolean
          example: false
          description: '"True" if the originator and beneficiary is the same person and you therefore do not need to collect any information. "False" if it is a third-party transfer.'
        travelRuleBehavior:
          type: boolean
          example: true
          description: This will also check if the transaction is a TRAVEL_RULE in the beneficiary VASP's jurisdiction
        beneficiaryVASPdid:
          type: string
          example: did:ethr:0x46a7ed5813ce735387df2bfb245bd7722e0de992
          description: This is the identifier assigned to the VASP the funds are being sent to
        beneficiaryVASPname:
          type: string
          example: HelloCrypto
          description: Beneficiary VASP name
        beneficiaryName:
          type: string
          example: John Doe
          description: Beneficiary  name
        beneficiaryAccountNumber:
          type: string
          example: 1234-1234-1234-12234
          description: Beneficiary  name
        beneficiaryAddress:
          $ref: '#/components/schemas/TravelRuleAddress'
      required:
        - transactionAsset
        - destination
        - transactionAmount
        - originatorVASPdid
        - originatorEqualsBeneficiary
    TravelRuleValidateTransactionResponse:
      type: object
      properties:
        isValid:
          type: boolean
          description: '"isValid" will tell you if you have collected all the information needed for the travel rule data transfer. Once this field = "true", you can move on to the next step which is to transfer the front-end information to your back-end and perform Travel Rule Transaction create'
          example: true
        type:
          type: string
          description: '"type" will tell you if the virtual asset value converted to FIAT value of the withdrawal request is above (=TRAVELRULE) or below (=BELOW_THRESHOLD) the threshold in your jurisdiction. If it is to an unhosted wallet which does not require travel rule information to be sent and only collected, it will say NON_CUSTODIAL.'
          example: TRAVELRULE
        beneficiaryAddressType:
          type: string
          enum:
            - UNKNOWN
            - HOSTED
            - UNHOSTED
          description: '"beneficiaryAddressType" will tell you if your blockchain analytics provider or internal address book has been able to identify the wallet address.'
          example: UNKNOWN
        addressSource:
          type: string
          enum:
            - UNKNOWN
            - ADDRESS_HASH
            - ADDRESS_GRAPH
            - CHAINALYSIS
            - ELLIPTIC
            - CRYSTAL
          description: '"addressSource" will tell you if the address was found in your internal address book or identified by the blockchain analytics provider.'
          example: UNKNOWN
        beneficiaryVASPdid:
          type: string
          description: The VASP DID of the beneficiary VASP
          example: did:ethr:0x46a7ed5813ce735387df2bfb245bd7722e0de992
        beneficiaryVASPname:
          type: string
          description: '"beneficiaryVASPname" will tell you the name of the VASP that has been identified as the owner of the wallet address. This name is used in a subsequent call to get its DID.'
          example: Fireblocks
        warnings:
          description: '"errors/warnings" will tell you what information about the beneficiary you need to collect from the sender.'
          example:
            - optional-beneficiaryAccountNumber
          type: array
          items:
            type: string
      required:
        - isValid
        - type
        - beneficiaryAddressType
        - addressSource
        - beneficiaryVASPdid
        - beneficiaryVASPname
        - warnings
    TravelRuleValidateNaturalNameIdentifier:
      type: object
      properties:
        primaryIdentifier:
          type: string
          description: The primary identifier of the name
          example: John
        secondaryIdentifier:
          type: string
          description: The secondary identifier of the name
          example: Doe
        nameIdentifierType:
          type: string
          description: 'Specifies the type of name for a natural person. Acceptable values are: - ''ALIA'': Alias name, a name other than the legal name by which a natural person is also known. - ''BIRT'': Name at birth, the name given to a natural person at birth. - ''MAID'': Maiden name, the original name of a natural person who has changed their name after marriage. - ''LEGL'': Legal name, the name that identifies a natural person for legal, official, or administrative purposes. - ''MISC'': Unspecified, a name by which a natural person may be known but cannot otherwise be categorized.'
          enum:
            - ALIA
            - BIRT
            - MAID
            - LEGL
            - MISC
          example: LEGL
    TravelRuleValidateNaturalPersonNameIdentifier:
      type: object
      properties:
        nameIdentifier:
          type: array
          items:
            $ref: '#/components/schemas/TravelRuleValidateNaturalNameIdentifier'
        localNameIdentifier:
          type: array
          items:
            $ref: '#/components/schemas/TravelRuleValidateNaturalNameIdentifier'
        phoneticNameIdentifier:
          type: array
          items:
            $ref: '#/components/schemas/TravelRuleValidateNaturalNameIdentifier'
    TravelRuleValidateGeographicAddress:
      type: object
      properties:
        streetName:
          type: string
          description: Name of a street or thoroughfare
          example: 123 Main St
        townName:
          type: string
          description: Name of a built-up area, with defined boundaries, and a local government
          example: New York
        country:
          type: string
          description: Nation with its own government (ISO-3166 Alpha-2 country code)
          example: US
        buildingNumber:
          type: string
          description: Number that identifies the position of a building on a street
          example: 123
        postCode:
          type: string
          description: Identifier consisting of a group of letters and/or numbers added to a postal address to assist the sorting of mail
          example: 12345
        addressType:
          type: string
          description: 'Specifies the type of address. Acceptable values are: - ''HOME'': Residential, the home address - ''BIZZ'': Business, the business address - ''GEOG'': Geographic, an unspecified physical (geographical) address'
          enum:
            - HOME
            - BIZZ
            - GEOG
          example: HOME
        department:
          type: string
          description: Identification of a division of a large organisation or building
          example: IT
        subDepartment:
          type: string
          description: Identification of a sub-division of a large organisation or building
          example: Security
        buildingName:
          type: string
          description: Name of the building or house
          example: Acme Building
        floor:
          type: string
          description: Floor or storey within a building
          example: 1
        postBox:
          type: string
          description: Numbered box in a post office
          example: 123
        room:
          type: string
          description: Building room number
          example: 101
        townLocationName:
          type: string
          description: Specific location name within the town
          example: Downtown
        districtName:
          type: string
          description: Identifies a subdivision within a country subdivision
          example: Manhattan
        countrySubDivision:
          type: string
          description: Identifies a subdivision of a country such as state, region, or province
          example: New York
        addressLine:
          type: array
          items:
            type: string
          description: Information that locates and identifies a specific address, presented in free format text
          example:
            - 123 Main St
            - New York
            - NY 12345
    TravelRuleValidateNationalIdentification:
      type: object
      description: Represents a national identifier for a person or entity
      properties:
        countryOfIssue:
          type: string
          description: Country that issued the national identifier (ISO-3166 Alpha-2 country code)
          example: US
        nationalIdentifier:
          type: string
          description: National identifier (max 35 characters)
          maxLength: 35
          example: 123456789
        nationalIdentifierType:
          type: string
          description: 'Type of national identifier. Acceptable values include: - ''PASSPORT'': Passport number - ''NATIONAL_ID'': National identification number - ''TAX_ID'': Tax identification number - ''SOCIAL_SECURITY'': Social security number'
          enum:
            - PASSPORT
            - NATIONAL_ID
            - TAX_ID
            - SOCIAL_SECURITY
          example: NATIONAL_ID
        registrationAuthority:
          type: string
          description: Registration authority (format -> RA followed by 6 digits)
          pattern: ^RA\d{6}$
          example: RA123456
    TravelRuleValidateDateAndPlaceOfBirth:
      type: object
      description: Represents the date and place of birth for a natural person
      properties:
        dateOfBirth:
          type: string
          description: Date of birth in ISO 8601 format (YYYY-MM-DD)
          example: '1990-01-01'
        placeOfBirth:
          type: string
          description: Place of birth
          example: New York, USA
    TravelRuleValidateNaturalPerson:
      type: object
      properties:
        name:
          type: array
          items:
            $ref: '#/components/schemas/TravelRuleValidateNaturalPersonNameIdentifier'
          description: An array of structured name identifiers for the natural person, referencing the TravelRuleNaturalPersonNameIdentifier schema.
        geographicAddress:
          type: array
          items:
            $ref: '#/components/schemas/TravelRuleValidateGeographicAddress'
          description: An array of geographic addresses associated with the natural person, referencing the TravelRuleGeographicAddress schema.
        nationalIdentification:
          $ref: '#/components/schemas/TravelRuleValidateNationalIdentification'
        dateAndPlaceOfBirth:
          $ref: '#/components/schemas/TravelRuleValidateDateAndPlaceOfBirth'
        customerIdentification:
          type: string
          description: A unique identifier for the customer within the organization's context.
          example: CUST123456
        countryOfResidence:
          type: string
          description: The ISO-3166 Alpha-2 country code of the natural person's residence.
          example: US
        customerNumber:
          type: string
          description: A distinct identifier that uniquely identifies the customer within the organization.
          example: 123456789
    TravelRuleValidateLegalPersonNameIdentifier:
      type: object
      properties:
        legalPersonName:
          type: string
          description: Name by which the legal person is known.
          maxLength: 100
          example: Acme Corporation
        legalPersonNameIdentifierType:
          type: string
          description: 'Specifies the type of name for a legal person. Acceptable values are: - ''REGISTERED'': The official registered name. - ''TRADE'': A trading name or DBA (Doing Business As) name. - ''OTHER'': Any other type of name.'
          enum:
            - REGISTERED
            - TRADE
            - OTHER
          example: REGISTERED
    TravelRuleValidateLegalPerson:
      type: object
      properties:
        name:
          $ref: '#/components/schemas/TravelRuleValidateLegalPersonNameIdentifier'
        geographicAddress:
          type: array
          items:
            $ref: '#/components/schemas/TravelRuleValidateGeographicAddress'
          description: The array of geographic addresses associated with the legal person.
        nationalIdentification:
          $ref: '#/components/schemas/TravelRuleValidateNationalIdentification'
        customerIdentification:
          type: string
          description: A unique identifier that identifies the customer in the organization's context.
          example: CUST987654
        customerNumber:
          type: string
          description: A distinct identifier that uniquely identifies the customer within the organization.
          example: 123456789
        countryOfRegistration:
          type: string
          description: The ISO-3166 Alpha-2 country code where the legal person is registered.
          example: US
    TravelRuleValidatePerson:
      type: object
      properties:
        naturalPerson:
          $ref: '#/components/schemas/TravelRuleValidateNaturalPerson'
        legalPerson:
          $ref: '#/components/schemas/TravelRuleValidateLegalPerson'
    TravelRuleValidatePiiIVMS:
      type: object
      description: Information about the originator of the transaction.
      properties:
        originatorPersons:
          type: array
          description: Information about the originator of the transaction
          items:
            $ref: '#/components/schemas/TravelRuleValidatePerson'
        beneficiaryPersons:
          type: array
          description: Information about the beneficiary of the transaction
          items:
            $ref: '#/components/schemas/TravelRuleValidatePerson'
        accountNumber:
          type: array
          description: Beneficiary account number
          items:
            type: string
    TravelRuleValidateFullTransactionRequest:
      type: object
      properties:
        originatorVASPdid:
          type: string
          description: The Decentralized Identifier (DID) of the exchange (VASP) that is sending the virtual assets. This identifier is unique to the exchange and is generated when the exchange's account is  created in the Notabene network.
          example: did:ethr:0x44957e75d6ce4a5bf37aae117da86422c848f7c2
        beneficiaryVASPdid:
          type: string
          description: The Decentralized Identifier (DID) of the exchange (VASP) that is receiving the virtual assets. This identifier is unique to the exchange and is generated when the exchange's account is  created in the Notabene network.
          example: did:ethr:0x17fe2dd11a2daa7f6c1fdf22532a4763f963aea6
        transactionAsset:
          type: string
          description: 'Transaction asset symbol (e.g., BTC, ETH, USDC).  By using the `notation` query string, users can select the type of asset notation: - `fireblocks`: Converts asset symbols to Fireblocks notation. - `notabene`: Retains the original Notabene asset symbol format.'
          example: BTC
        transactionAmount:
          type: string
          description: 'Transaction amount in the transaction asset. For example, if the asset is BTC, the amount  is the value in BTC units.  By using the `notation` query string, users can select the type of amount notation: - `fireblocks`: Converts the amount to Fireblocks notation (e.g., adjusted for decimals). - `notabene`: Retains the original Notabene amount format.'
          example: '10'
        originatorVASPname:
          type: string
          description: The name of the VASP acting as the transaction originator.
          example: Originator VASP Ltd.
        beneficiaryVASPname:
          type: string
          description: The name of the VASP acting as the transaction beneficiary.
          example: Beneficiary VASP Inc.
        transactionBlockchainInfo:
          $ref: '#/components/schemas/TravelRuleTransactionBlockchainInfo'
        originator:
          $ref: '#/components/schemas/TravelRuleValidatePiiIVMS'
        beneficiary:
          $ref: '#/components/schemas/TravelRuleValidatePiiIVMS'
        encrypted:
          type: string
          description: Encrypted data related to the transaction.
          example: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...
        protocol:
          type: string
          enum:
            - TRLight
            - TRP
            - OpenVASP
            - GTR
          description: The protocol used to perform the travel rule.
          example: TRLight
        skipBeneficiaryDataValidation:
          type: boolean
          description: Whether to skip validation of beneficiary data.
          example: false
        travelRuleBehavior:
          type: boolean
          description: Whether to check if the transaction complies with the travel rule in the beneficiary VASP's jurisdiction.
          example: true
        originatorRef:
          type: string
          description: A reference ID related to the originator of the transaction.
          example: ORG123456
        beneficiaryRef:
          type: string
          description: A reference ID related to the beneficiary of the transaction.
          example: BEN654321
        travelRuleBehaviorRef:
          type: string
          description: A reference ID related to the travel rule behavior.
          example: TRB987654
        originatorProof:
          $ref: '#/components/schemas/TravelRuleOwnershipProof'
        beneficiaryProof:
          $ref: '#/components/schemas/TravelRuleOwnershipProof'
        beneficiaryDid:
          type: string
          description: |-
            The Decentralized Identifier (DID) of the person at the receiving exchange (VASP).  This identifier is generated when the customer is registered in the Notabene network,  or automatically created based on the `beneficiaryRef`.  - If neither `beneficiaryRef` nor `beneficiaryDid` is provided in the `txCreate` payload, 
              a new random DID is generated for every transaction.
          example: did:key:z6Mkf67890Zghijkl67890
        originatorDid:
          type: string
          description: |-
            The Decentralized Identifier (DID) of the person at the exchange (VASP) who is requesting the withdrawal. This identifier is generated when the customer is registered in the Notabene network or automatically created based on the `originatorRef`.  - If neither `originatorRef` nor `originatorDid` is provided in the `txCreate` payload, 
              a new random DID is generated for every transaction.
          example: did:key:z6Mkf12345Zabcdef12345
        isNonCustodial:
          type: boolean
          description: Indicates if the transaction involves a non-custodial wallet.
          example: true
        notificationEmail:
          type: string
          description: The email address where a notification should be sent upon completion of the travel rule
        pii:
          $ref: '#/components/schemas/TravelRulePiiIVMS'
        pii_url:
          type: string
          description: The URL of the personal identifiable information related to the transaction
      required:
        - originator
        - beneficiary
    TravelRuleFieldsEnum:
      type: array
      items:
        type: string
        enum:
          - did
          - name
          - verificationStatus
          - addressLine1
          - addressLine2
          - city
          - country
          - emailDomains
          - website
          - logo
          - legalStructure
          - legalName
          - yearFounded
          - incorporationCountry
          - isRegulated
          - otherNames
          - identificationType
          - identificationCountry
          - businessNumber
          - regulatoryAuthorities
          - jurisdictions
          - street
          - number
          - unit
          - postCode
          - state
          - certificates
          - description
          - travelRule_OPENVASP
          - travelRule_SYGNA
          - travelRule_TRISA
          - travelRule_TRLIGHT
          - travelRule_EMAIL
          - travelRule_TRP
          - travelRule_SHYFT
          - travelRule_USTRAVELRULEWG
          - createdAt
          - createdBy
          - updatedAt
          - updatedBy
          - lastSentDate
          - lastReceivedDate
          - documents
          - hasAdmin
          - isNotifiable
          - issuers
      example:
        - name
        - country
        - website
    TravelRuleIssuer:
      type: object
      properties:
        issuerDid:
          type: string
      required:
        - issuerDid
    TravelRuleIssuers:
      type: object
      properties:
        yearFounded:
          $ref: '#/components/schemas/TravelRuleIssuer'
        isRegulated:
          $ref: '#/components/schemas/TravelRuleIssuer'
        regulatoryAuthorities:
          $ref: '#/components/schemas/TravelRuleIssuer'
        name:
          $ref: '#/components/schemas/TravelRuleIssuer'
        logo:
          $ref: '#/components/schemas/TravelRuleIssuer'
        website:
          $ref: '#/components/schemas/TravelRuleIssuer'
        legalName:
          $ref: '#/components/schemas/TravelRuleIssuer'
        legalStructure:
          $ref: '#/components/schemas/TravelRuleIssuer'
        incorporationCountry:
          $ref: '#/components/schemas/TravelRuleIssuer'
        businessNumber:
          $ref: '#/components/schemas/TravelRuleIssuer'
        addressLine1:
          $ref: '#/components/schemas/TravelRuleIssuer'
        city:
          $ref: '#/components/schemas/TravelRuleIssuer'
        country:
          $ref: '#/components/schemas/TravelRuleIssuer'
        description:
          $ref: '#/components/schemas/TravelRuleIssuer'
      required:
        - yearFounded
        - isRegulated
        - regulatoryAuthorities
        - name
        - logo
        - website
        - legalName
        - legalStructure
        - incorporationCountry
        - businessNumber
        - addressLine1
        - city
        - country
        - description
    TravelRuleVASP:
      type: object
      properties:
        did:
          type: string
          description: The Decentralized Identifier (DID) of the VASP.
          example: did:ethr:0x17fe2dd11a2daa7f6c1fdf22532a4763f963aea6
        name:
          type: string
          description: The name of the VASP.
          example: Fireblocks TST
        verificationStatus:
          type: string
          description: The current verification status of the VASP.
          example: VERIFIED
        addressLine1:
          type: string
          description: The first line of the VASP's address.
          example: 657 Campfire Street
        addressLine2:
          type: string
          description: The second line of the VASP's address (if applicable).
          example: Suite 10
        city:
          type: string
          description: The city where the VASP is located.
          example: New York
        country:
          type: string
          description: The country where the VASP is registered (ISO-3166 Alpha-2 code).
          example: US
        emailDomains:
          type: string
          description: Comma-separated list of email domains associated with the VASP.
          example: fireblocks.com,example.com
        website:
          type: string
          description: The official website of the VASP.
          example: https://fireblocks.com
        logo:
          type: string
          description: URL to the logo of the VASP.
          example: https://fireblocks.com/logo.png
        legalStructure:
          type: string
          description: The legal structure of the VASP (e.g., Corporation, LLC).
          example: CORPORATION
        legalName:
          type: string
          description: The legal name of the VASP.
          example: Fireblocks Inc.
        yearFounded:
          type: string
          description: The year the VASP was founded.
          example: '2019'
        incorporationCountry:
          type: string
          description: The country where the VASP is incorporated (ISO-3166 Alpha-2 code).
          example: US
        isRegulated:
          type: string
          description: Indicates whether the VASP is regulated.
          example: 'YES'
        otherNames:
          type: string
          description: Other names the VASP is known by.
          example: Fireblocks Test VASP
        identificationType:
          type: string
          description: The type of identification used by the VASP.
          example: Business License
        identificationCountry:
          type: string
          description: The country of identification for the VASP (ISO-3166 Alpha-2 code).
          example: US
        businessNumber:
          type: string
          description: The business registration number of the VASP.
          example: '123456789'
        regulatoryAuthorities:
          type: string
          description: The regulatory authorities overseeing the VASP.
          example: SEC, FINCEN
        jurisdictions:
          type: string
          description: The jurisdictions where the VASP operates.
          example: US, EU
        street:
          type: string
          description: The street name where the VASP is located.
          example: Wall Street
        number:
          type: string
          description: The building number of the VASP's address.
          example: '10'
        unit:
          type: string
          description: The unit or suite number of the VASP's address.
          example: Apt 2B
        postCode:
          type: string
          description: The postal code of the VASP's location.
          example: '10005'
        state:
          type: string
          description: The state or region where the VASP is located.
          example: NY
        certificates:
          type: string
          description: Certificates or licenses held by the VASP.
          example: ISO 27001
        description:
          type: string
          description: A brief description of the VASP.
          example: A leading provider of crypto security solutions.
        travelRule_OPENVASP:
          type: string
          description: Travel rule compliance status for OpenVASP.
          example: active
        travelRule_SYGNA:
          type: string
          description: Travel rule compliance status for Sygna.
          example: inactive
        travelRule_TRISA:
          type: string
          description: Travel rule compliance status for TRISA.
          example: pending
        travelRule_TRLIGHT:
          type: string
          description: Travel rule compliance status for TRLight.
          example: active
        travelRule_EMAIL:
          type: string
          description: Travel rule compliance status for EMAIL.
          example: inactive
        travelRule_TRP:
          type: string
          description: Travel rule compliance status for TRP.
          example: active
        travelRule_SHYFT:
          type: string
          description: Travel rule compliance status for Shyft.
          example: inactive
        travelRule_USTRAVELRULEWG:
          type: string
          description: Travel rule compliance status for US Travel Rule WG.
          example: pending
        createdAt:
          type: string
          description: Timestamp when the VASP record was created.
          example: '2023-09-19T12:23:59.711Z'
        createdBy:
          type: string
          description: User or system that created the VASP record.
          example: admin
        updatedAt:
          type: string
          description: Timestamp of the last update to the VASP record.
          example: '2024-08-29T08:23:51.416Z'
        updatedBy:
          type: string
          description: User or system that last updated the VASP record.
          example: system
        lastSentDate:
          type: string
          description: The last date a transaction was sent by the VASP.
          example: '2024-03-18T09:26:07.988Z'
        lastReceivedDate:
          type: string
          description: The last date a transaction was received by the VASP.
          example: '2024-03-20T11:45:30.212Z'
        documents:
          type: string
          description: Documents associated with the VASP.
          example: '[''license.pdf'', ''compliance.pdf'']'
        hasAdmin:
          type: boolean
          description: Indicates if the VASP has an admin.
          example: true
        isNotifiable:
          type: boolean
          description: Indicates if the VASP is notifiable for compliance reasons.
          example: true
        issuers:
          $ref: '#/components/schemas/TravelRuleIssuers'
      required:
        - did
        - name
        - verificationStatus
        - addressLine1
        - city
        - country
        - emailDomains
        - website
        - legalStructure
        - legalName
        - yearFounded
        - incorporationCountry
        - isRegulated
        - jurisdictions
        - travelRule_TRLIGHT
        - createdAt
        - hasAdmin
        - isNotifiable
        - issuers
    TravelRuleGetAllVASPsResponse:
      type: object
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/TravelRuleVASP'
          description: An array of VASP objects, referencing the TravelRuleVASP schema.
        total:
          type: integer
          description: The total number of VASPs.
          example: 2
        next:
          type: string
          description: The URL for the next page of results.
          example: eJ0eXAiOiJKV1QiLCJhbGcOiJIUzI1NiJ9
          nullable: true
      required:
        - data
    TravelRuleUpdateVASPDetails:
      type: object
      properties:
        did:
          type: string
          example: did:ethr:0x44957e75d6ce4a5bf37aae117da86422c848f7c2
          description: The decentralized identifier of the VASP
        pii_didkey:
          type: string
          example: did:key:z6Mks5CZRaiooKYhq5TwtXQC1gWhwiZnmiKfFrMnYY62MhYf
          description: The PII DID key of the VASP
      required:
        - did
        - pii_didkey
    TravelRuleVaspForVault:
      type: object
      properties:
        vaspDid:
          description: VASP DID
          type: string
          example: did:ethr:0x5dddec8dd669c49304ddbcba36ccc6e0798534dc
    TravelRulePolicyRuleResponse:
      type: object
      properties:
        sourceType:
          type: string
        sourceSubType:
          type: string
        destType:
          type: string
        destSubType:
          type: string
        destAddress:
          type: string
        sourceId:
          type: string
        destId:
          type: string
        asset:
          type: string
        baseAsset:
          type: string
        amount:
          type: number
        amountUSD:
          type: number
        networkProtocol:
          type: string
          description: The network protocol of the token
          example: ETH
        operation:
          type: string
        action:
          type: string
          enum:
            - SCREEN
            - PASS
            - FREEZE
      required:
        - action
    ScreeningPolicyResponse:
      type: object
      properties:
        policy:
          $ref: '#/components/schemas/TravelRulePolicyRuleResponse'
        policyStatus:
          type: string
        isDefault:
          type: boolean
        createDate:
          format: date-time
          type: string
        lastUpdate:
          format: date-time
          type: string
      required:
        - policy
        - isDefault
        - lastUpdate
    ScreeningProviderRulesConfigurationResponse:
      type: object
      properties:
        direction:
          type: string
          enum:
            - INBOUND
            - OUTBOUND
        status:
          type: string
          enum:
            - COMPLETED
            - PENDING
            - REJECTED
            - FAILED
            - CANCELED
            - BLOCKING_TIME_EXPIRED
        amountUSD:
          type: number
        amount:
          type: number
        asset:
          type: string
        action:
          type: string
          enum:
            - ACCEPT
            - REJECT
            - ALERT
            - WAIT
            - FREEZE
            - CANCEL
      required:
        - action
    ScreeningConfigurationsRequest:
      type: object
      properties:
        bypassScreeningDuringServiceOutages:
          type: boolean
          description: Flag to enable or disable bypass screening during service outages.
        inboundTransactionDelay:
          type: number
          description: Inbound transaction delay in seconds.
        outboundTransactionDelay:
          type: number
          description: Outbound transaction delay in seconds.
    TrustProofOfAddressRequest:
      type: object
      description: Request to create a cryptographic proof of address ownership for TRUST network compliance
      properties:
        vaultAccountId:
          type: string
          format: numeric
          x-fb-entity: vault_account
          description: The ID of the vault account.
          example: '0'
        asset:
          type: string
          description: The asset identifier for which proof of address is being created.
          example: ETH
        prefix:
          type: string
          description: The prefix to be used for signing messages.
          minLength: 1
          maxLength: 255
          example: trust_verification
        trustUuid:
          type: string
          format: uuid
          description: A unique identifier (UUID) obtained from TRUST (CreateAddressOwnership)
          example: 550e8400-e29b-41d4-a716-446655440000
      required:
        - vaultAccountId
        - asset
        - prefix
        - trustUuid
    TypedMessageTransactionStatusEnum:
      type: string
      description: Status of the typed message transaction from Fireblocks. For details, see [Primary transaction statuses](https://developers.fireblocks.com/reference/primary-transaction-statuses)
      enum:
        - SUBMITTED
        - QUEUED
        - PENDING_SIGNATURE
        - PENDING_AUTHORIZATION
        - PENDING_3RD_PARTY_MANUAL_APPROVAL
        - PENDING_3RD_PARTY
        - BROADCASTING
        - PENDING_AML_SCREENING
        - CONFIRMING
        - PARTIALLY_COMPLETED
        - PENDING_EMAIL_APPROVAL
        - CANCELLED
        - REJECTED
        - FAILED
        - TIMEOUT
        - BLOCKED
      example: PENDING_SIGNATURE
    TrustProofOfAddressCreateResponse:
      type: object
      description: Response from creating a proof of address transaction
      properties:
        transactionId:
          type: string
          format: uuid
          description: Transaction ID from Fireblocks (UUID format)
          example: 550e8400-e29b-41d4-a716-446655440000
        status:
          $ref: '#/components/schemas/TypedMessageTransactionStatusEnum'
      required:
        - transactionId
        - status
    TrustProofOfAddressResponse:
      type: object
      description: Response containing the TRUST-compatible encoded signature
      properties:
        transactionId:
          type: string
          format: uuid
          description: Transaction ID from Fireblocks (UUID format)
          example: 550e8400-e29b-41d4-a716-446655440000
        status:
          $ref: '#/components/schemas/TypedMessageTransactionStatusEnum'
        signature:
          type: string
          description: |
            TRUST-compatible encoded signature for proof of address verification.
          example: '0x6e6e0da016d49d2eaeefb2ce49efcde627151ce03d3e525963aa541ce07fb41c0f1f70d131f160480b4a68aaefbdae1b6fe3765eee3ceff0a8b47a8c979ccd961c'
      required:
        - transactionId
        - status
        - signature
    ScreeningUpdateConfigurations:
      type: object
      properties:
        disableBypass:
          type: boolean
          description: Flag to enable or disable bypass screening on tenant configuration.
        disableUnfreeze:
          type: boolean
          description: Flag to enable or disable unfreeze of transaction frozen by policy rule on tenant configuration.
    ScreeningAlertExposureTypeEnum:
      type: string
      description: Alert exposure type
      enum:
        - DIRECT
        - INDIRECT
      example: DIRECT
    ScreeningAmlAlert:
      type: object
      description: AML alert information
      properties:
        alertLevel:
          $ref: '#/components/schemas/AlertLevelEnum'
        alertName:
          type: string
          description: Name or type of the alert
          example: Sanctions Match
        category:
          type: string
          description: Alert category
          example: SANCTIONED_ENTITY
        service:
          type: string
          description: Service that generated the alert
          example: CHAINALYSIS
        externalId:
          type: string
          description: External identifier for the alert
          example: alert_12345
        alertAmount:
          type: number
          description: Amount associated with the alert
          example: 1000.5
        exposureType:
          $ref: '#/components/schemas/ScreeningAlertExposureTypeEnum'
        policyAction:
          type: string
          description: Recommended action based on policy
          example: BLOCK
        categoryId:
          type: number
          description: Category identifier
          example: 101
      required:
        - alertLevel
        - externalId
        - alertAmount
        - exposureType
    PolicyVerdictActionEnum-2:
      type: string
      description: Policy verdict action
      enum:
        - ALLOW
        - BLOCK
        - SCREEN
        - ACCEPT
        - REJECT
        - ALERT
        - WAIT
        - FREEZE
        - CANCEL
      example: ALLOW
    ScreeningAmlMatchedRule:
      type: object
      description: AML matched rule information
      properties:
        ruleId:
          type: string
          description: Identifier of the matched rule
          example: rule_001
        ruleName:
          type: string
          description: Name of the matched rule
          example: High Risk Sanctions Check
        action:
          $ref: '#/components/schemas/PolicyVerdictActionEnum-2'
    ScreeningAmlResult:
      type: object
      deprecated: true
      description: |
        Deprecated: This field is not currently returned in the API response.
        Detailed AML screening result information.
        Contains alerts, risk scores, and other AML-specific data from provider-specific responses.
      properties:
        alerts:
          type: array
          description: List of AML alerts triggered during screening
          items:
            $ref: '#/components/schemas/ScreeningAmlAlert'
        providerResponse:
          type: object
          description: |
            Complete response from the AML provider. This is a dynamic object that varies
            significantly between different AML providers (Chainalysis, Elliptic, etc.).
            Each provider has their own proprietary response format and schema.

            Examples of provider-specific structures:
            - Chainalysis: Contains cluster info, risk scores, sanctions data
            - Elliptic: Includes risk assessment, entity types, compliance flags

            The structure is provider-dependent and cannot be standardized as each
            vendor implements their own proprietary data models and response formats.
          additionalProperties: true
        matchedRule:
          $ref: '#/components/schemas/ScreeningAmlMatchedRule'
        matchedAlert:
          $ref: '#/components/schemas/ScreeningAmlAlert'
    ScreeningTravelRuleMatchedRule:
      type: object
      description: The travel rule configuration that was matched
      properties:
        direction:
          $ref: '#/components/schemas/TravelRuleDirectionEnum'
        status:
          $ref: '#/components/schemas/TravelRuleStatusEnum'
        amountUSD:
          type: number
          description: Amount in USD
          example: 1000.5
        amount:
          type: number
          description: Amount in base currency
          example: 0.025
        asset:
          type: string
          description: Asset identifier
          example: BTC
        action:
          $ref: '#/components/schemas/TravelRuleVerdictEnum'
    ScreeningTravelRuleResult:
      type: object
      deprecated: true
      description: |
        Deprecated: This field is not currently returned in the API response.
        Detailed Travel Rule screening result containing provider-specific data.
        Contains Travel Rule specific information like verified status, rule type, and actions.
      properties:
        direction:
          $ref: '#/components/schemas/TravelRuleDirectionEnum'
        isVerified:
          type: boolean
          description: Whether the travel rule information was verified
          example: true
        action:
          $ref: '#/components/schemas/TravelRuleVerdictEnum'
        providerResponse:
          type: object
          description: |
            Complete response from the travel rule provider. This is a dynamic object that varies
            significantly between different travel rule providers (NOTABENE etc.).
            Each provider has their own proprietary response format and schema.

            Examples of provider-specific structures:
            - NOTABENE: Contains VASP information, PII data, protocol-specific fields

            The structure is provider-dependent and cannot be standardized as each
            vendor implements their own proprietary data models and response formats.
          additionalProperties: true
        matchedRule:
          $ref: '#/components/schemas/ScreeningTravelRuleMatchedRule'
    TransferPeerTypeEnum-2:
      type: string
      description: Transfer peer type (source or destination)
      enum:
        - VAULT_ACCOUNT
        - EXCHANGE_ACCOUNT
        - INTERNAL_WALLET
        - EXTERNAL_WALLET
        - CONTRACT
        - NETWORK_CONNECTION
        - FIAT_ACCOUNT
        - COMPOUND
        - GAS_STATION
        - ONE_TIME_ADDRESS
        - UNKNOWN
        - END_USER_WALLET
        - PROGRAM_CALL
        - MULTI_DESTINATION
      example: VAULT_ACCOUNT
    ScreeningTravelRulePrescreeningRule:
      type: object
      description: |
        Matched prescreening rule details.
        Prescreening rules are evaluated before the main screening to determine
        if screening is necessary or should be bypassed.
      properties:
        bypassReason:
          type: string
          description: Reason for bypass if prescreening rule triggered a bypass
          example: MANUAL
        sourceType:
          $ref: '#/components/schemas/TransferPeerTypeEnum-2'
        sourceSubType:
          $ref: '#/components/schemas/TransferPeerSubTypeEnum'
        destType:
          $ref: '#/components/schemas/TransferPeerTypeEnum-2'
        destSubType:
          $ref: '#/components/schemas/TransferPeerSubTypeEnum'
        transferPeerType:
          $ref: '#/components/schemas/TransferPeerTypeEnum-2'
        transferPeerSubType:
          $ref: '#/components/schemas/TransferPeerSubTypeEnum'
        destAddress:
          type: string
          description: Destination address
          example: '0xA2dC2490ED1DcA2D21613508fdb0c82daEAb0715'
        sourceId:
          type: string
          description: Source ID
          example: '0'
        destId:
          type: string
          description: Destination ID
          example: '2'
        asset:
          type: string
          description: Asset identifier
          example: ETH
        baseAsset:
          type: string
          description: Base asset
          example: ETH
        amount:
          type: number
          description: Amount
          example: 0.5
        amountUSD:
          type: number
          description: Amount in USD
          example: 1000
        networkProtocol:
          type: string
          description: Network protocol
          example: ETH
        operation:
          $ref: '#/components/schemas/TransactionOperationEnum'
        action:
          $ref: '#/components/schemas/TravelRuleActionEnum'
    ComplianceScreeningResultFullPayload:
      type: object
      description: |
        The result of the AML/Travel Rule screening.
        This unified schema contains all fields that may be returned for both AML and Travel Rule screening results.
        Not all fields will be present in every response - the actual fields depend on the screening type and provider.
      properties:
        provider:
          type: string
          description: |
            The AML/Travel Rule provider name.
            For AML: ELLIPTIC, CHAINALYSIS, etc.
            For Travel Rule: NOTABENE, SUMSUB, GTR, or any TRLink provider name
          example: NOTABENE
        payload:
          type: object
          description: |
            The raw payload of the screening result from the provider.
            The payload is a JSON object that contains the screening result.
            The payload structure is different for each screening provider.
            This field contains the complete, unmodified response from the screening service.
        timestamp:
          type: number
          format: date-time
          description: Unix timestamp in milliseconds when the screening result was generated
          example: 1753459111824
        screeningStatus:
          type: string
          description: Current status of the screening process
          enum:
            - COMPLETED
            - PENDING
            - BYPASSED
            - FAILED
            - FROZEN
          example: COMPLETED
        bypassReason:
          type: string
          description: |
            Reason for bypassing the screening, if applicable.
            For AML: UNSUPPORTED_ASSET, PASSED_BY_POLICY.
            For Travel Rule: UNSUPPORTED_ASSET, NO_TRAVEL_RULE_MESSAGE, TRANSACTION_ZERO_AMOUNT.
          example: UNSUPPORTED_ASSET
        status:
          $ref: '#/components/schemas/AmlStatusEnum'
        prevStatus:
          $ref: '#/components/schemas/AmlStatusEnum'
        prevBypassReason:
          type: string
          deprecated: true
          description: |
            Deprecated: This field is not currently returned in the API response.
            Previous bypass reason before the current bypass reason change.
          example: BELOW_THRESHOLD
        verdict:
          $ref: '#/components/schemas/ScreeningVerdictEnum'
        risk:
          type: string
          description: |
            Risk level assessment for screening results.
            Values vary by provider and are not managed by this service.

            Known values by provider:
            - Chainalysis: severeRisk, highRisk, mediumRisk, lowRisk, noRiskInfo
            - Elliptic: noRiskDetected

            Legacy values (SCREAMING_SNAKE_CASE, may appear in old transactions):
            VERY_HIGH, SEVERE, HIGH, MEDIUM, LOW, NO_RISK_INFO, UNKNOWN
          example: lowRisk
        extendedRisk:
          type: string
          deprecated: true
          description: |
            Deprecated: This field is not currently returned in the API response.
            Use risk instead.
          example: lowRisk
        externalId:
          type: string
          description: External identifier for the screening (provider-specific)
          example: aml_screening_12345
        customerRefId:
          type: string
          description: Customer-provided reference identifier for tracking
          example: customer_ref_789
        refId:
          type: string
          deprecated: true
          description: |
            Deprecated: This field is not currently returned in the API response.
            Internal reference identifier.
          example: ref_12345
        category:
          type: string
          description: |
            Risk category classification.
            Examples: EXCHANGE, GAMBLING, MIXER, DARKNET_SERVICE, SANCTIONED_ENTITY
          example: EXCHANGE
        categoryId:
          type: number
          description: Numeric identifier for the risk category
          example: 5
        destAddress:
          type: string
          description: The destination blockchain address associated with the screening
          example: '0xA2dC2490ED1DcA2D21613508fdb0c82daEAb0715'
        destTag:
          type: string
          description: Destination tag or memo (for chains that support it like XRP, XLM)
          example: memo_12345
        destRecordId:
          type: string
          deprecated: true
          description: |
            Deprecated: This field is not currently returned in the API response.
            The destination record identifier used by the screening provider.
          example: record_001
        addressResolutionSignature:
          type: string
          deprecated: true
          description: |
            Deprecated: This field is not currently returned in the API response.
            Cryptographic signature for address resolution verification.
          example: '0x1234567890abcdef'
        amlResult:
          $ref: '#/components/schemas/ScreeningAmlResult'
        result:
          $ref: '#/components/schemas/ScreeningTravelRuleResult'
        detailsMessage:
          type: string
          description: Additional human-readable details or message about the screening result
          example: Travel rule screening completed successfully
        matchedAlert:
          type: object
          description: |
            Information about the AML alert that was matched, if any.
            Contains details about the specific alert that triggered during screening.
        matchedRule:
          type: object
          description: |
            The matched rule information for this screening result.
            Contains details about which screening rule was applied and matched.
        matchedPrescreeningRule:
          $ref: '#/components/schemas/ScreeningTravelRulePrescreeningRule'
        matchedNoTrmScreeningRule:
          type: object
          description: |
            Matched no-TRM (Travel Rule Message) screening rule details.
            Used when TRLink screening detects a missing TRM scenario.
        customerIntegrationId:
          type: string
          description: Customer integration identifier used by Travel Rule providers
          example: 3fa85f64-5717-4562-b3fc-2c963f66afa6
        customerShortName:
          type: string
          description: Customer short name registered with Travel Rule providers
          example: ACME Corp
        travelRuleMessageId:
          type: string
          description: Travel rule message identifier for linking and tracking across providers
          example: 3fa85f64-5717-4562-b3fc-2c963f66afa6
        providerResponse:
          $ref: '#/components/schemas/ScreeningProviderResponse'
    AmlRegistrationResultFullPayload:
      type: object
      description: The results of the AML address registration.
      properties:
        provider:
          type: string
        success:
          type: boolean
        timestamp:
          type: number
    TRLinkRegistrationStatusEnum:
      type: string
      description: TRLink registration status
      enum:
        - STARTING
        - PRESCREENED
        - COMPLETED
        - FAILED
        - VOID
      example: COMPLETED
    ScreeningTRLinkAmount:
      type: object
      description: TRLink amount definition with range and currency, compatible with TAP format from Policy Engine V2
      properties:
        range:
          $ref: '#/components/schemas/AmountRangeMinMax'
        currency:
          type: string
          description: Currency type
          enum:
            - USD
            - NATIVE
          example: USD
    ScreeningTRLinkRuleBase:
      type: object
      description: Base interface for TRLink policy rules
      properties:
        customerId:
          type: string
          description: Reference to TRLinkCustomer.id
          example: 3fa85f64-5717-4562-b3fc-2c963f66afa6
        direction:
          $ref: '#/components/schemas/TravelRuleDirectionEnum'
        sourceType:
          $ref: '#/components/schemas/TransferPeerTypeEnum-2'
        sourceSubType:
          $ref: '#/components/schemas/TransferPeerSubTypeEnum'
        sourceAddress:
          type: string
          description: Source address
          example: 1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa
        destType:
          $ref: '#/components/schemas/TransferPeerTypeEnum-2'
        destSubType:
          $ref: '#/components/schemas/TransferPeerSubTypeEnum'
        destAddress:
          type: string
          description: Destination address
          example: 1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa
        sourceId:
          type: string
          description: Source ID
          example: '1'
        destId:
          type: string
          description: Destination ID
          example: '1'
        asset:
          type: string
          description: Asset symbol
          example: BTC
        baseAsset:
          type: string
          description: Base asset symbol
          example: USD
        amount:
          $ref: '#/components/schemas/ScreeningTRLinkAmount'
        networkProtocol:
          type: string
          description: Network protocol
          example: BITCOIN
        operation:
          $ref: '#/components/schemas/TransactionOperationEnum'
        description:
          type: string
          description: Rule description
          example: Rule for high-value BTC transfers
        isDefault:
          type: boolean
          description: Whether this is a default rule
          default: false
    TRLinkPreScreeningActionEnum:
      type: string
      description: TRLink pre-screening action
      enum:
        - SCREEN
        - PASS
      example: SCREEN
    ScreeningTRLinkPrescreeningRule:
      type: object
      description: TRLink pre-screening rule definition
      allOf:
        - $ref: '#/components/schemas/ScreeningTRLinkRuleBase'
        - type: object
          properties:
            action:
              $ref: '#/components/schemas/TRLinkPreScreeningActionEnum'
          required:
            - action
    TRLinkRegistrationResultFullPayload:
      type: object
      description: TRLink registration result containing status and metadata
      properties:
        status:
          $ref: '#/components/schemas/TRLinkRegistrationStatusEnum'
        provider:
          type: string
          description: The TRLink provider name
          example: SUMSUB
        success:
          type: boolean
          description: Whether the registration was successful
          example: true
        timestamp:
          type: number
          description: Unix timestamp of the registration
          example: 1640995200000
        destRecordId:
          type: string
          description: Destination record identifier
          example: 3fa85f64-5717-4562-b3fc-2c963f66afa6
        travelRuleMessageId:
          type: string
          description: Travel rule message identifier for linking
          example: 3fa85f64-5717-4562-b3fc-2c963f66afa6
        customerIntegrationId:
          type: string
          description: Customer integration identifier
          example: 3fa85f64-5717-4562-b3fc-2c963f66afa6
        customerShortName:
          type: string
          description: Customer short name
          example: ACME Corp
        result:
          $ref: '#/components/schemas/TRLinkProviderResult'
        matchedPrescreeningRule:
          $ref: '#/components/schemas/ScreeningTRLinkPrescreeningRule'
      required:
        - status
        - timestamp
    TRLinkVerdictEnum:
      type: string
      description: TRLink verdict after screening
      enum:
        - ACCEPT
        - ALERT
        - REJECT
        - WAIT
      example: ACCEPT
    TRLinkTrmScreeningStatusEnum:
      type: string
      description: TRLink TRM screening status
      enum:
        - PENDING
        - ACCEPTED
        - REJECTED
        - FAILED
      example: ACCEPTED
    ScreeningTRLinkPostScreeningRule:
      type: object
      description: TRLink post-screening rule definition
      allOf:
        - $ref: '#/components/schemas/ScreeningTRLinkRuleBase'
        - type: object
          properties:
            providerIdent:
              type: string
              description: Provider identifier
              example: sumsub
            trmStatus:
              $ref: '#/components/schemas/TRLinkTrmScreeningStatusEnum'
            validBefore:
              type: number
              description: Unix timestamp when rule expires
              example: 1672531200000
            validAfter:
              type: number
              description: Unix timestamp when rule becomes valid
              example: 1640995200000
            action:
              $ref: '#/components/schemas/TRLinkVerdictEnum'
          required:
            - action
    TRLinkProviderResultWithRule-2:
      type: object
      description: Provider response and matched rule wrapper for TRLink screening results
      properties:
        providerResponse:
          type: object
          description: Raw provider response
        matchedRule:
          $ref: '#/components/schemas/ScreeningTRLinkPostScreeningRule'
    TRLinkMissingTrmActionEnum:
      type: string
      description: TRLink missing TRM action
      enum:
        - WAIT
        - REJECT
        - ACCEPT
        - INITIATE_TRM
      example: WAIT
    ScreeningTRLinkMissingTrmRule:
      type: object
      description: TRLink missing TRM rule definition
      allOf:
        - $ref: '#/components/schemas/ScreeningTRLinkRuleBase'
        - type: object
          properties:
            validBefore:
              type: number
              description: Unix timestamp when rule expires
              example: 1672531200000
            validAfter:
              type: number
              description: Unix timestamp when rule becomes valid
              example: 1640995200000
            action:
              $ref: '#/components/schemas/TRLinkMissingTrmActionEnum'
          required:
            - action
    ScreeningTRLinkMissingTrmDecision:
      type: object
      description: Interface for reporting missing TRM screening decisions in ITRLinkResult
      allOf:
        - $ref: '#/components/schemas/ScreeningTRLinkMissingTrmRule'
        - type: object
          properties:
            source:
              type: string
              description: TRLink missing TRM source
              example: policy
            timestamp:
              type: string
              format: date-time
              description: Timestamp of the decision
              example: '2023-10-05T14:48:00.000Z'
            reason:
              type: string
              description: Reason for the decision
              example: Missing travel rule message
          required:
            - source
    TRLinkResultFullPayload:
      type: object
      description: TRLink screening result
      properties:
        provider:
          type: string
          description: The TRLink provider name
          example: SUMSUB
        timestamp:
          type: number
          description: Unix timestamp of the screening result
          example: 1640995200000
        status:
          type: string
          description: Status of the TRLink screening
          enum:
            - COMPLETED
            - PENDING
            - BYPASSED
            - FAILED
            - FROZEN
        verdict:
          $ref: '#/components/schemas/TRLinkVerdictEnum'
        destAddress:
          type: string
          description: The destination address associated with the TRLink screening
          example: '0xA2dC2490ED1DcA2D21613508fdb0c82daEAb0715'
        destTag:
          type: string
          description: Destination tag for the screening
          example: memo_12345
        bypassReason:
          type: string
          description: Reason for bypassing the TRLink screening
          example: MANUAL
        detailsMessage:
          type: string
          description: Additional details message about the screening result
          example: Screening completed successfully
        customerIntegrationId:
          type: string
          description: Customer integration identifier
          example: 3fa85f64-5717-4562-b3fc-2c963f66afa6
        customerShortName:
          type: string
          description: Customer short name
          example: ACME Corp
        travelRuleMessageId:
          type: string
          description: Travel rule message identifier for linking
          example: 3fa85f64-5717-4562-b3fc-2c963f66afa6
        result:
          $ref: '#/components/schemas/TRLinkProviderResultWithRule-2'
        matchedPrescreeningRule:
          $ref: '#/components/schemas/ScreeningTRLinkPrescreeningRule'
        matchedNoTrmScreeningRule:
          $ref: '#/components/schemas/ScreeningTRLinkMissingTrmDecision'
      required:
        - provider
        - timestamp
        - status
    ComplianceResultFullPayload:
      type: object
      description: The result of the Compliance AML/Travel Rule screening.
      properties:
        aml:
          $ref: '#/components/schemas/ComplianceScreeningResultFullPayload'
        tr:
          $ref: '#/components/schemas/ComplianceScreeningResultFullPayload'
        amlList:
          type: array
          description: The list of all results of the AML screening.
          items:
            $ref: '#/components/schemas/ComplianceScreeningResultFullPayload'
        status:
          $ref: '#/components/schemas/ComplianceResultStatusesEnum'
        amlRegistration:
          $ref: '#/components/schemas/AmlRegistrationResultFullPayload'
        trlinkRegistration:
          $ref: '#/components/schemas/TRLinkRegistrationResultFullPayload'
        trlinkDestinations:
          type: array
          description: The list of TRLink destination screening results.
          items:
            $ref: '#/components/schemas/TRLinkResultFullPayload'
    AmlVerdictManualRequest:
      type: object
      required:
        - verdict
        - txId
      properties:
        verdict:
          type: string
          enum:
            - ACCEPT
            - REJECT
          description: The AML verdict to set for the transaction
          example: ACCEPT
        txId:
          type: string
          format: uuid
          description: The transaction ID to set the verdict for
          example: 550e8400-e29b-41d4-a716-446655440000
    AmlVerdictManualResponse:
      type: object
      required:
        - success
        - message
      properties:
        success:
          type: boolean
          example: true
        message:
          type: string
          example: AML verdict set successfully
    ByorkVerdictResponseStatusEnum:
      type: string
      enum:
        - PRE_ACCEPTED
        - COMPLETED
        - PENDING
        - RECEIVED
      example: COMPLETED
      description: |
        PRE_ACCEPTED - Verdict stored and will be applied when processing reaches the point where your decision is needed. COMPLETED - Verdict final and processing complete. PENDING - Transaction in BYORK flow; no final verdict yet (awaiting decision or processing). RECEIVED - Verdict final and stored; processing not yet complete.
    ByorkVerdictEnum:
      type: string
      enum:
        - ACCEPT
        - REJECT
        - WAIT
      example: ACCEPT
      description: |
        ACCEPT/REJECT - Final or pre-accepted verdict. WAIT - When status is PENDING (transaction awaiting decision).
    GetByorkVerdictResponse:
      type: object
      required:
        - status
        - verdict
      properties:
        status:
          $ref: '#/components/schemas/ByorkVerdictResponseStatusEnum'
        verdict:
          $ref: '#/components/schemas/ByorkVerdictEnum'
      description: Response for GET BYORK verdict (current verdict/status for a transaction).
    ByorkSetVerdictEnum:
      type: string
      enum:
        - ACCEPT
        - REJECT
      example: ACCEPT
      description: Verdict to apply (ACCEPT or REJECT).
    ByorkVerdictRequest:
      type: object
      required:
        - txId
        - verdict
      properties:
        txId:
          type: string
          description: Transaction ID to set the verdict for
          example: 550e8400-e29b-41d4-a716-446655440000
        verdict:
          $ref: '#/components/schemas/ByorkSetVerdictEnum'
    ByorkVerdictResponse:
      type: object
      required:
        - status
        - message
      properties:
        status:
          $ref: '#/components/schemas/ByorkVerdictResponseStatusEnum'
        message:
          type: string
          description: Human-readable message
          example: Verdict ACCEPT applied
    ByorkTimeoutRange:
      type: object
      description: Allowed range for timeout values (seconds). Use when calling PUT config/timeouts.
      properties:
        minSeconds:
          type: integer
          example: 10
        maxSeconds:
          type: integer
          example: 604800
    ByorkConfigResponse:
      type: object
      description: 'BYORK Light configuration for the tenant: wait-for-response timeouts, active flag, provider, last update time, and allowed timeout ranges for validation.'
      properties:
        incomingTimeoutSeconds:
          type: integer
          description: Timeout in seconds for incoming BYORK wait-for-response
          example: 86400
        outgoingTimeoutSeconds:
          type: integer
          description: Timeout in seconds for outgoing BYORK wait-for-response
          example: 3600
        active:
          type: boolean
          description: Whether BYORK Light is active for the tenant
          example: true
        provider:
          type: string
          description: Provider identifier
          example: BYORK_LITE
        lastUpdate:
          type: string
          format: date-time
          description: Last update timestamp of the configuration
          example: '2026-01-29T12:00:00.000Z'
        timeoutRangeIncoming:
          $ref: '#/components/schemas/ByorkTimeoutRange'
        timeoutRangeOutgoing:
          $ref: '#/components/schemas/ByorkTimeoutRange'
    ByorkSetTimeoutsRequest:
      type: object
      description: Request body for setting BYORK timeout values. At least one of incomingTimeoutSeconds or outgoingTimeoutSeconds is required. Allowed range per direction is returned in GET config (timeoutRangeIncoming, timeoutRangeOutgoing).
      properties:
        incomingTimeoutSeconds:
          type: integer
          description: Timeout in seconds for incoming BYORK wait-for-response. Allowed range in GET config (timeoutRangeIncoming).
          example: 86400
        outgoingTimeoutSeconds:
          type: integer
          description: Timeout in seconds for outgoing BYORK wait-for-response. Allowed range in GET config (timeoutRangeOutgoing).
          example: 3600
    ArsConfigResponse:
      type: object
      description: 'ARS (Address Registry Screening) configuration for the tenant: active flag and last update time.'
      properties:
        active:
          type: boolean
          description: Whether ARS is active for the tenant
          example: true
        lastUpdate:
          type: string
          format: date-time
          description: Last update timestamp of the configuration
          example: '2026-01-29T12:00:00.000Z'
    TRLinkPartnerResponse:
      type: object
      properties:
        id:
          type: string
          format: uuid
          description: Partner unique identifier
          example: 123e4567-e89b-12d3-a456-426614174000
        ident:
          type: string
          description: Partner identification code
          example: notabene
        name:
          type: string
          description: Partner display name
          example: Notabene
        description:
          type: string
          nullable: true
          description: Partner description
          example: Travel Rule compliance provider
        baseUrl:
          type: string
          description: Partner API base URL
          example: https://api.notabene.id
        active:
          type: boolean
          description: Whether the partner is active
          example: true
        isTest:
          type: boolean
          description: Whether this is a test/sandbox partner
          example: false
      required:
        - id
        - ident
        - name
        - baseUrl
        - active
        - isTest
    TRLinkPartnersListResponse:
      type: array
      items:
        $ref: '#/components/schemas/TRLinkPartnerResponse'
    TRLinkDiscoverableStatus:
      type: string
      nullable: true
      description: Customer discoverability status in the Travel Rule network
      enum:
        - anonymous
        - hidden
        - discoverable
      example: discoverable
    TRLinkGeographicAddressRequest:
      type: object
      nullable: true
      description: Geographic address following IVMS101 standard
      properties:
        addressLine:
          type: array
          items:
            type: string
            maxLength: 70
          maxItems: 3
          nullable: true
          description: Address lines (max 3, each up to 70 characters)
          example:
            - Suite 100
        streetName:
          type: string
          maxLength: 70
          nullable: true
          description: Street name (required if buildingNumber is provided)
          example: Main Street
        buildingNumber:
          type: string
          maxLength: 255
          nullable: true
          description: Building number
          example: '123'
        floor:
          type: string
          maxLength: 70
          nullable: true
          description: Floor number
          example: '5'
        postBox:
          type: string
          maxLength: 16
          nullable: true
          description: Post box number
          example: PO Box 456
        postCode:
          type: string
          maxLength: 16
          nullable: true
          description: Postal code (required if townName is provided)
          example: '10001'
        townName:
          type: string
          maxLength: 35
          nullable: true
          description: City or town name (required if postCode is provided)
          example: New York
        districtName:
          type: string
          maxLength: 35
          nullable: true
          description: District name
          example: Manhattan
        countrySubDivision:
          type: string
          maxLength: 35
          nullable: true
          description: State or province (validated against country)
          example: NY
        country:
          type: string
          nullable: true
          description: ISO 3166-1 alpha-2 country code (required if town, district, or sub-division provided)
          example: US
    TRLinkCustomerResponse:
      type: object
      properties:
        id:
          type: string
          format: uuid
          description: Customer unique identifier
          example: 550e8400-e29b-41d4-a716-446655440001
        discoverable:
          $ref: '#/components/schemas/TRLinkDiscoverableStatus'
        shortName:
          type: string
          description: Short display name
          example: Acme Corp
        fullLegalName:
          type: string
          description: Full legal entity name
          example: Acme Corporation Ltd.
        geographicAddress:
          $ref: '#/components/schemas/TRLinkGeographicAddressRequest'
        countryOfRegistration:
          type: string
          description: ISO 3166-1 alpha-2 country code where the entity is registered
          example: US
        nationalIdentification:
          type: string
          nullable: true
          description: 'National identification, returned exactly as stored: a compact, whitespace-free JSON-encoded string with these optional keys (in this order): `nationalIdentifier`, `nationalIdentifierType` (e.g. `LEIX` for an LEI), `countryOfIssue` (ISO 3166-1 alpha-2), `registrationAuthority`. Maximum length is 240 characters.'
          example: '{"nationalIdentifier":"EXAMPLELEI1234567890","nationalIdentifierType":"LEIX","countryOfIssue":"US"}'
        dateOfIncorporation:
          type: string
          format: date
          nullable: true
          description: Date of entity incorporation (ISO 8601 format)
          example: '2015-03-15'
        vaults:
          type: array
          items:
            type: integer
          nullable: true
          description: Associated Fireblocks vault account IDs
          example:
            - 0
            - 1
            - 2
        trPrimaryPurpose:
          type: string
          description: 'Primary Travel Rule role for this customer; determines how the customer''s Travel Rule messages are routed. Valid values: `notabene`, `trlink`.'
          example: trlink
        createDate:
          type: string
          format: date-time
          description: Timestamp when the customer was created (ISO 8601 format)
          example: '2025-01-20T10:30:00.000Z'
        lastUpdate:
          type: string
          format: date-time
          description: Timestamp when the customer was last updated (ISO 8601 format)
          example: '2025-01-24T08:45:00.000Z'
      required:
        - id
        - discoverable
        - shortName
        - fullLegalName
        - countryOfRegistration
        - trPrimaryPurpose
        - createDate
        - lastUpdate
    TRLinkCustomersListResponse:
      type: array
      items:
        $ref: '#/components/schemas/TRLinkCustomerResponse'
    TRLinkCreateCustomerRequest:
      type: object
      properties:
        discoverable:
          $ref: '#/components/schemas/TRLinkDiscoverableStatus'
        shortName:
          type: string
          description: Short display name (required)
          example: Acme Corp
        fullLegalName:
          type: string
          nullable: true
          description: Full legal entity name
          example: Acme Corporation Ltd.
        geographicAddress:
          $ref: '#/components/schemas/TRLinkGeographicAddressRequest'
        countryOfRegistration:
          type: string
          nullable: true
          description: ISO 3166-1 alpha-2 country code where the entity is registered
          example: US
        nationalIdentification:
          type: string
          nullable: true
          description: 'National identification, sent as a JSON-encoded string. The server normalizes input into a compact JSON with these optional keys: `nationalIdentifier`, `nationalIdentifierType` (e.g. `LEIX` for an LEI), `countryOfIssue` (ISO 3166-1 alpha-2), `registrationAuthority`. If the input is not a JSON object, it is wrapped as `{"nationalIdentifier":"<value>"}`; if the value matches the LEI format, `nationalIdentifierType` is set to `LEIX` automatically and `countryOfIssue` defaults to this request''s `countryOfRegistration` if not provided. The compacted JSON must be 240 characters or fewer. On read, the value is returned exactly as stored.'
          example: '{"nationalIdentifier":"EXAMPLELEI1234567890","nationalIdentifierType":"LEIX","countryOfIssue":"US"}'
        dateOfIncorporation:
          type: string
          format: date
          nullable: true
          description: 'Date of entity incorporation (ISO 8601 format: YYYY-MM-DD)'
          example: '2015-03-15'
        vaults:
          type: array
          items:
            type: integer
          nullable: true
          description: Associated Fireblocks vault account IDs
          example:
            - 0
            - 1
            - 2
        trPrimaryPurpose:
          type: string
          default: trlink
          description: 'Primary Travel Rule role for this customer; determines how the customer''s Travel Rule messages are routed. Valid values: `notabene`, `trlink`.'
          example: trlink
      required:
        - shortName
    TRLinkUpdateCustomerRequest:
      type: object
      properties:
        discoverable:
          $ref: '#/components/schemas/TRLinkDiscoverableStatus'
        shortName:
          type: string
          description: Short display name (required)
          example: Acme Corporation
        fullLegalName:
          type: string
          nullable: true
          description: Full legal entity name
          example: Acme Corporation Ltd.
        geographicAddress:
          $ref: '#/components/schemas/TRLinkGeographicAddressRequest'
        countryOfRegistration:
          type: string
          nullable: true
          description: ISO 3166-1 alpha-2 country code where the entity is registered
          example: US
        nationalIdentification:
          type: string
          nullable: true
          description: 'National identification, sent as a JSON-encoded string. The server normalizes input into a compact JSON with these optional keys: `nationalIdentifier`, `nationalIdentifierType` (e.g. `LEIX` for an LEI), `countryOfIssue` (ISO 3166-1 alpha-2), `registrationAuthority`. If the input is not a JSON object, it is wrapped as `{"nationalIdentifier":"<value>"}`; if the value matches the LEI format, `nationalIdentifierType` is set to `LEIX` automatically and `countryOfIssue` defaults to this request''s `countryOfRegistration` if not provided. The compacted JSON must be 240 characters or fewer. Omitting this field leaves the stored value unchanged; setting it to `null` clears it. On read, the value is returned exactly as stored.'
          example: '{"nationalIdentifier":"EXAMPLELEI1234567890","nationalIdentifierType":"LEIX","countryOfIssue":"US"}'
        dateOfIncorporation:
          type: string
          format: date
          nullable: true
          description: 'Date of entity incorporation (ISO 8601 format: YYYY-MM-DD)'
          example: '2015-03-15'
        vaults:
          type: array
          items:
            type: integer
          nullable: true
          description: Associated Fireblocks vault account IDs
          example:
            - 0
            - 1
            - 2
            - 3
        trPrimaryPurpose:
          type: string
          description: 'Primary Travel Rule role for this customer; determines how the customer''s Travel Rule messages are routed. Valid values: `notabene`, `trlink`. Omit the field to leave the stored value unchanged.'
          example: trlink
      required:
        - shortName
    TRLinkCustomerIntegrationResponse:
      type: object
      properties:
        customerIntegrationId:
          type: string
          format: uuid
          description: Customer integration unique identifier
          example: 123e4567-e89b-12d3-a456-426614174000
        apiKey:
          type: string
          nullable: true
          description: API key for partner integration (censored for security)
          example: fb_***************
        secret:
          type: string
          nullable: true
          description: Secret for partner integration (censored for security)
          example: '***'
        createDate:
          type: string
          format: date-time
          description: Timestamp when the integration was created (ISO 8601 format)
          example: '2025-01-20T10:30:00.000Z'
        lastUpdate:
          type: string
          format: date-time
          description: Timestamp when the integration was last updated (ISO 8601 format)
          example: '2025-01-24T08:45:00.000Z'
        partner:
          $ref: '#/components/schemas/TRLinkPartnerResponse'
        customer:
          $ref: '#/components/schemas/TRLinkCustomerResponse'
      required:
        - customerIntegrationId
        - createDate
        - lastUpdate
        - partner
        - customer
    TRLinkCustomerIntegrationsListResponse:
      type: array
      items:
        $ref: '#/components/schemas/TRLinkCustomerIntegrationResponse'
    TRLinkCreateIntegrationRequest:
      type: object
      properties:
        customerId:
          type: string
          format: uuid
          description: Customer unique identifier
          example: 550e8400-e29b-41d4-a716-446655440001
        partnerIdent:
          type: string
          description: Partner identification code (e.g., "sumsub", "notabene")
          example: sumsub
        customerIntegrationId:
          type: string
          format: uuid
          description: Optional. When supplied and permitted for the tenant (feature flag / CSM arrangement), this value is used as the TRLink integration identifier instead of a server-generated UUID. If omitted, the API generates a UUID. If supplied when the tenant is not permitted to set a custom id, the request fails with 400. Contact your CSM if you need a custom integration id.
          example: 660e8400-e29b-41d4-a716-446655440099
      required:
        - customerId
        - partnerIdent
    TRLinkConnectIntegrationRequest:
      type: object
      properties:
        apiKey:
          type: string
          description: API key provided by the Travel Rule partner
          example: fb_api_key_12345
        secret:
          type: string
          nullable: true
          description: Secret/password provided by the Travel Rule partner (optional)
          example: secret_value_67890
      required:
        - apiKey
    TRLinkJwkPublicKey:
      type: object
      description: JSON Web Key (JWK) format public key
      properties:
        kty:
          type: string
          enum:
            - RSA
          description: Key type
          example: RSA
        e:
          type: string
          description: RSA public exponent
          example: AQAB
        use:
          type: string
          enum:
            - enc
          description: Public key use (encryption)
          example: enc
        kid:
          type: string
          description: Key ID
          example: key-12345
        'n':
          type: string
          description: RSA modulus
          example: xGOr-H7A...
      required:
        - kty
        - e
        - use
        - kid
        - 'n'
    TRLinkPublicKeyResponse:
      type: object
      properties:
        issuer:
          type: string
          description: Partner issuer identifier
          example: notabene
        publicKey:
          $ref: '#/components/schemas/TRLinkJwkPublicKey'
      required:
        - issuer
        - publicKey
    TRLinkTestConnectionResponse:
      type: object
      properties:
        success:
          type: boolean
          description: Whether the connection test was successful
          example: true
        message:
          type: string
          nullable: true
          description: Additional message about the connection test (present when success is false)
          example: 'Connection test failed: Invalid API key'
        timestamp:
          type: string
          format: date-time
          description: Timestamp when the test was performed (ISO 8601 format)
          example: '2025-01-24T10:30:00.000Z'
        partnerIdent:
          type: string
          nullable: true
          description: Partner identification code
          example: notabene
        partnerName:
          type: string
          nullable: true
          description: Partner display name
          example: Notabene
      required:
        - success
        - timestamp
    TRLinkVaspNationalIdentification:
      type: object
      properties:
        identifier:
          type: string
          description: National identification number
          example: '123456789'
        type:
          type: string
          description: Type of national identification
          nullable: true
          example: LEI
        authority:
          type: string
          description: Issuing authority
          nullable: true
          example: Financial Conduct Authority
      required:
        - identifier
    TRLinkVaspGeographicAddress:
      type: object
      properties:
        formattedAddress:
          type: string
          description: Complete formatted address
          nullable: true
          example: 123 Main Street, New York, NY 10001, USA
        country:
          type: string
          description: Country code or name
          nullable: true
          example: USA
        streetName:
          type: string
          description: Street name
          nullable: true
          example: Main Street
        buildingNumber:
          type: string
          description: Building number
          nullable: true
          example: '123'
        city:
          type: string
          description: City name
          nullable: true
          example: New York
        postalCode:
          type: string
          description: Postal/ZIP code
          nullable: true
          example: '10001'
    TRLinkVaspListDto:
      type: object
      properties:
        id:
          type: string
          description: VASP unique identifier (DID format)
          example: did:ethr:0x1234567890abcdef
        name:
          type: string
          description: VASP display name
          example: ACME Virtual Assets
        legalName:
          type: string
          description: Legal entity name
          nullable: true
          example: ACME Virtual Assets Corporation
        nationalIdentification:
          $ref: '#/components/schemas/TRLinkVaspNationalIdentification'
        geographicAddress:
          $ref: '#/components/schemas/TRLinkVaspGeographicAddress'
      required:
        - id
        - name
      additionalProperties: true
    TRLinkPaging:
      type: object
      properties:
        next:
          type: string
          description: Cursor for next page
          example: eyJwYWdlIjoyLCJsaW1pdCI6MTAwfQ==
      required:
        - next
    TRLinkAPIPagedResponse:
      type: object
      description: Generic paginated response wrapper with cursor-based pagination
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/TRLinkVaspListDto'
          description: Array of result items
        paging:
          $ref: '#/components/schemas/TRLinkPaging'
      required:
        - data
    TRLinkVaspDto:
      type: object
      properties:
        id:
          type: string
          description: VASP unique identifier (DID format)
          example: did:ethr:0x1234567890abcdef
        name:
          type: string
          description: VASP display name
          example: ACME Virtual Assets
        legalName:
          type: string
          description: Legal entity name
          nullable: true
          example: ACME Virtual Assets Corporation
        nationalIdentification:
          $ref: '#/components/schemas/TRLinkVaspNationalIdentification'
        geographicAddress:
          $ref: '#/components/schemas/TRLinkVaspGeographicAddress'
        publicKey:
          type: string
          description: VASP public key for encryption
          nullable: true
          example: |-
            -----BEGIN PUBLIC KEY-----
            MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA...
            -----END PUBLIC KEY-----
      required:
        - id
        - name
      additionalProperties: true
    TRLinkPublicAssetInfo:
      type: object
      description: Public asset information with limited properties for API consumption
      properties:
        id:
          type: string
          description: The unique ID of the asset (e.g., Fireblocks asset ID)
          example: USDC_ETH
        name:
          type: string
          description: The name of the asset
          example: USD Coin
        type:
          type: string
          description: The type of the asset (e.g., BASE_ASSET, ERC20)
          example: ERC20
        contractAddress:
          type: string
          description: The contract address of the asset (for tokenized assets)
          example: '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48'
        nativeAsset:
          type: string
          description: The native asset of the network (e.g., ETH for ERC20 tokens)
          example: ETH
        decimals:
          type: number
          description: The number of decimal places for the asset
          example: 6
        issuerAddress:
          type: string
          description: The issuer address of the asset (optional)
          nullable: true
          example: '0x1234567890abcdef1234567890abcdef12345678'
      required:
        - id
        - name
        - type
        - contractAddress
        - nativeAsset
        - decimals
    TRLinkAssetsListPagedResponse:
      type: object
      description: Paginated list of supported assets with partner capability flag
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/TRLinkPublicAssetInfo'
          description: List of supported assets
        paging:
          $ref: '#/components/schemas/TRLinkPaging'
        partnerCanHandleAnyAsset:
          type: boolean
          description: Whether partner can handle any asset (not just explicitly listed ones)
          example: true
        note:
          type: string
          description: Note about asset support capabilities
          example: Partner can handle assets beyond those explicitly listed
      required:
        - data
        - partnerCanHandleAnyAsset
        - note
    TRLinkGetSupportedAssetResponse:
      type: object
      description: Response for getting a single supported asset by ID
      properties:
        fireblocksAsset:
          $ref: '#/components/schemas/TRLinkPublicAssetInfo'
        partnerResponse:
          type: object
          description: Raw partner response data
          nullable: true
          additionalProperties: true
          example:
            assetCode: USDC
            network: ethereum
            enabled: true
        partnerCanHandleAnyAsset:
          type: boolean
          description: Whether partner can handle any asset (not just explicitly listed ones)
          example: false
        note:
          type: string
          description: Note about asset support capabilities
          example: Partner supports only explicitly listed assets
        supported:
          type: boolean
          description: Whether the asset is supported by the partner
          example: true
      required:
        - fireblocksAsset
        - partnerResponse
        - partnerCanHandleAnyAsset
        - note
        - supported
    TRLinkOneTimeAddress:
      type: object
      properties:
        address:
          type: string
          description: Blockchain address
          example: '0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb'
        tag:
          type: string
          description: Destination tag (memo, memo ID, etc.)
          nullable: true
          example: '1234567890'
      required:
        - address
    TRLinkDestinationTransferPeerPath:
      type: object
      description: Destination peer path for transaction
      properties:
        type:
          type: string
          description: Destination peer type (e.g., ONE_TIME_ADDRESS, VAULT_ACCOUNT)
          example: ONE_TIME_ADDRESS
        id:
          type: string
          description: Destination peer ID
          nullable: true
          example: '45'
        walletId:
          type: string
          description: Destination wallet ID
          nullable: true
          example: '0'
        oneTimeAddress:
          $ref: '#/components/schemas/TRLinkOneTimeAddress'
      required:
        - type
    TRLinkSourceTransferPeerPath:
      type: object
      description: Source peer path for transaction
      properties:
        type:
          type: string
          description: Source peer type (e.g., VAULT_ACCOUNT, UNKNOWN)
          example: VAULT_ACCOUNT
        id:
          type: string
          description: Source peer ID
          nullable: true
          example: '12'
        walletId:
          type: string
          description: Source wallet ID
          nullable: true
          example: '0'
      required:
        - type
    TRLinkTransactionDirection:
      type: string
      enum:
        - INBOUND
        - OUTBOUND
      description: Transaction direction from workspace perspective
      example: OUTBOUND
    TRLinkAssessTravelRuleRequest:
      type: object
      description: Request to assess whether Travel Rule compliance is required for a transaction
      properties:
        txId:
          type: string
          format: uuid
          description: Fireblocks transaction ID (optional) - RECOMMENDED for inbound transactions
          nullable: true
          example: 550e8400-e29b-41d4-a716-446655440000
        amount:
          type: string
          description: Transaction amount (required when txId not provided)
          nullable: true
          example: '1000'
        amountUSD:
          type: string
          description: Transaction amount in USD (optional)
          nullable: true
          example: '1000.50'
        destination:
          $ref: '#/components/schemas/TRLinkDestinationTransferPeerPath'
        destAddress:
          type: string
          description: Destination address (optional)
          nullable: true
          example: '0x8d12A197cB00D4747a1fe03395095ce2A5CC6819'
        destTag:
          type: string
          description: Destination tag (optional)
          nullable: true
          example: '1234567890'
        source:
          $ref: '#/components/schemas/TRLinkSourceTransferPeerPath'
        srcAddress:
          type: string
          description: Source address (optional)
          nullable: true
          example: '0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb'
        assetId:
          type: string
          description: Asset identifier (e.g., ETH, BTC, USDC)
          nullable: true
          example: USDT_ERC20
        direction:
          $ref: '#/components/schemas/TRLinkTransactionDirection'
        txHash:
          type: string
          description: Transaction hash (optional)
          nullable: true
          example: '0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef'
        originatorVaspId:
          type: string
          description: Originator VASP identifier - required for inbound transactions
          nullable: true
          example: did:ethr:0x1234567890abcdef
        beneficiaryVaspId:
          type: string
          description: Beneficiary VASP identifier - required for outbound transactions
          nullable: true
          example: did:ethr:0xfedcba0987654321
    TRLinkAssessmentDecision:
      type: string
      enum:
        - REQUIRED
        - NOT_REQUIRED
        - NEED_MORE_INFO
      description: Decision about Travel Rule applicability
      example: REQUIRED
    TRLinkThresholds:
      type: object
      properties:
        amount:
          type: string
          description: Threshold amount
          example: '1000'
        currency:
          type: string
          description: Currency code
          example: USD
    TRLinkAssessTravelRuleResponse:
      type: object
      description: Response indicating whether Travel Rule compliance is required
      properties:
        decision:
          $ref: '#/components/schemas/TRLinkAssessmentDecision'
        reason:
          type: string
          description: Explanation of the decision
          example: Transaction amount exceeds Travel Rule threshold for this jurisdiction
        requiredFields:
          type: array
          items:
            type: string
          description: List of required fields if Travel Rule is required
          nullable: true
          example:
            - originator.name
            - originator.address
            - beneficiary.name
            - beneficiary.address
        missingInfo:
          type: array
          items:
            type: string
          description: List of missing fields if more information is needed
          nullable: true
          example:
            - beneficiary.nationalIdentification
            - beneficiary.dateOfBirth
        thresholds:
          $ref: '#/components/schemas/TRLinkThresholds'
      required:
        - decision
        - reason
    TRLinkIvms:
      type: object
      description: IVMS101 data structure containing encrypted PII
      properties:
        version:
          type: string
          description: IVMS version
          example: IVMS101.2023
        data:
          type: string
          description: Encrypted IVMS101 data containing originator and beneficiary information
          example: aGVsbG8gd29ybGQgdGhpcyBpcyBlbmNyeXB0ZWQgZGF0YQ==
        filledFields:
          type: array
          items:
            type: string
          description: List of fields that are filled in the IVMS data
          example:
            - Beneficiary.beneficiaryPersons[].legalPerson.name.nameIdentifier
            - Beneficiary.beneficiaryPersons[].naturalPerson.name.nameIdentifier
      required:
        - version
        - data
        - filledFields
    TRLinkCreateTrmRequest:
      type: object
      description: Request to create a Travel Rule Message with IVMS101 PII data
      properties:
        assetId:
          type: string
          description: Asset identifier (required when txId not provided)
          nullable: true
          example: USDT_ERC20
        amount:
          type: string
          description: Transaction amount (required when txId not provided)
          nullable: true
          example: '1000'
        amountUSD:
          type: string
          description: Amount in USD (optional)
          nullable: true
          example: '1000.50'
        source:
          $ref: '#/components/schemas/TRLinkSourceTransferPeerPath'
        srcAddress:
          type: string
          description: Source address (optional)
          nullable: true
          example: '0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb'
        destination:
          $ref: '#/components/schemas/TRLinkDestinationTransferPeerPath'
        destAddress:
          type: string
          description: Destination address (optional)
          nullable: true
          example: '0x8d12A197cB00D4747a1fe03395095ce2A5CC6819'
        destTag:
          type: string
          description: Destination tag (optional)
          nullable: true
          example: '1234567890'
        txId:
          type: string
          format: uuid
          description: Fireblocks transaction ID (optional) - RECOMMENDED for inbound transactions
          nullable: true
          example: 550e8400-e29b-41d4-a716-446655440000
        txHash:
          type: string
          description: Transaction hash (optional)
          nullable: true
          example: '0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef'
        direction:
          $ref: '#/components/schemas/TRLinkTransactionDirection'
        originatorVaspId:
          type: string
          description: Originator VASP identifier - required for inbound transactions
          nullable: true
          example: did:ethr:0x1234567890abcdef
        beneficiaryVaspId:
          type: string
          description: Beneficiary VASP identifier - required for outbound transactions
          nullable: true
          example: did:ethr:0xfedcba0987654321
        ivms101:
          $ref: '#/components/schemas/TRLinkIvms'
      required:
        - ivms101
    TRLinkTrmStatus:
      type: string
      nullable: true
      enum:
        - PENDING
        - ACCEPTED
        - REJECTED
        - FAILED
      description: Current status of the Travel Rule Message
      example: ACCEPTED
    TRLinkAssetFormat:
      type: string
      enum:
        - fireblocks
        - coinmarketcap
      description: Asset format type
      example: fireblocks
    TRLinkAssetData:
      type: object
      properties:
        ticker:
          type: string
          description: Asset ticker symbol (e.g., BTC, ETH, USDT)
          nullable: true
          example: USDT
        network:
          type: string
          description: Network identifier from Fireblocks (e.g., ETH, BTC)
          example: ETH
        ucid:
          type: number
          description: CoinMarketCap unique coin ID
          nullable: true
          example: 825
        contractAddress:
          type: string
          description: Contract address for tokens
          nullable: true
          example: '0xdac17f958d2ee523a2206206994597c13d831ec7'
        id:
          type: string
          description: Fireblocks asset ID
          nullable: true
          example: USDT_ERC20
      required:
        - network
    TRLinkAsset:
      type: object
      properties:
        format:
          $ref: '#/components/schemas/TRLinkAssetFormat'
        data:
          $ref: '#/components/schemas/TRLinkAssetData'
      required:
        - format
        - data
    TRLinkFiatValue:
      type: object
      properties:
        amount:
          type: string
          description: Fiat amount
          example: '1000.50'
        currency:
          type: string
          description: Fiat currency code
          example: USD
      required:
        - amount
        - currency
    TRLinkTrmDirection:
      type: string
      enum:
        - in
        - out
      description: Transaction direction for TRM (in = inbound, out = outbound)
      example: out
    TRLinkTxnInfo:
      type: object
      properties:
        originatorWalletAddress:
          type: string
          description: Originator's blockchain wallet address
          example: '0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb'
        beneficiaryWalletAddress:
          type: string
          description: Beneficiary's blockchain wallet address
          example: '0x8d12A197cB00D4747a1fe03395095ce2A5CC6819'
        txHash:
          type: string
          description: Blockchain transaction hash
          example: '0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef'
      required:
        - originatorWalletAddress
        - beneficiaryWalletAddress
        - txHash
    TRLinkIvmsResponse:
      type: object
      description: IVMS101 data in response format
      properties:
        version:
          type: string
          description: IVMS101 version
          example: '1.0'
        data:
          type: string
          description: Base64 encoded IVMS101 data containing originator and beneficiary information
          example: eyJvcmlnaW5hdG9yIjp7Im5hbWUiOiJKb2huIERvZSIsImFkZHJlc3MiOiIxMjMgTWFpbiBTdCJ9LCJiZW5lZmljaWFyeSI6eyJuYW1lIjoiSmFuZSBTbWl0aCIsImFkZHJlc3MiOiI0NTYgRWxtIFN0In19
        filledFields:
          type: array
          items:
            type: string
          description: List of fields that are filled in the IVMS101 data
          example:
            - originator.name
            - originator.address
            - beneficiary.name
            - beneficiary.address
      required:
        - version
        - data
        - filledFields
    TRLinkProviderData:
      type: object
      properties:
        provider:
          type: string
          description: Provider name
          nullable: true
          example: notabene
        data:
          type: object
          description: Provider-specific data
          additionalProperties: true
          nullable: true
          example:
            vasp_did: did:ethr:0x1234567890abcdef
            compliance_status: verified
    TRLinkTrmInfoResponse:
      type: object
      description: Travel Rule Message information
      properties:
        id:
          type: string
          description: TRM message ID
          example: trm_1234567890abcdef
        version:
          type: string
          description: TRM version
          nullable: true
          example: '1.0'
        status:
          $ref: '#/components/schemas/TRLinkTrmStatus'
        reason:
          type: string
          description: Human readable reason for the current status
          nullable: true
          example: Travel Rule compliance required for this transaction
        externalId:
          type: string
          description: External ID (e.g., Fireblocks ID)
          example: 550e8400-e29b-41d4-a716-446655440000
        asset:
          $ref: '#/components/schemas/TRLinkAsset'
        amount:
          type: string
          description: Transaction amount in asset units
          example: '1000'
        fiatValue:
          $ref: '#/components/schemas/TRLinkFiatValue'
        direction:
          $ref: '#/components/schemas/TRLinkTrmDirection'
        originatorVaspId:
          type: string
          description: ID of the originator VASP
          nullable: true
          example: did:ethr:0x1234567890abcdef
        beneficiaryVaspId:
          type: string
          description: ID of the beneficiary VASP
          nullable: true
          example: did:ethr:0xfedcba0987654321
        txnInfo:
          $ref: '#/components/schemas/TRLinkTxnInfo'
        ivms101:
          $ref: '#/components/schemas/TRLinkIvmsResponse'
        providerData:
          $ref: '#/components/schemas/TRLinkProviderData'
      required:
        - id
        - externalId
        - asset
        - amount
        - direction
        - txnInfo
        - ivms101
    TRLinkCancelTrmRequest:
      type: object
      properties:
        reason:
          type: string
          description: Reason for cancellation
          nullable: true
          example: Transaction no longer needed
        cancelledBy:
          type: string
          description: User ID who cancelled the TRM
          nullable: true
          example: user_123456
    TRLinkRedirectTrmRequest:
      type: object
      properties:
        subsidiaryVaspId:
          type: string
          description: ID of the subsidiary VASP to redirect the TRM to
          example: did:ethr:0xabcdef1234567890
      required:
        - subsidiaryVaspId
    TRLinkManualDecisionAction:
      type: string
      description: Decision action for destinations in NoTRM status
      enum:
        - ACCEPT
        - REJECT
      example: ACCEPT
    TRLinkManualDecisionRequest:
      type: object
      description: Request to manually accept or reject destinations stuck in NoTRM status
      properties:
        action:
          $ref: '#/components/schemas/TRLinkManualDecisionAction'
        reason:
          type: string
          description: Optional reason for the manual decision (e.g. 'Internal KYC approved'). Do not include PII.
          maxLength: 500
          example: Internal KYC approved
      required:
        - action
    TRLinkManualDecisionSource:
      type: string
      description: Source of the manual decision
      enum:
        - MANUAL
        - POLICY
      example: MANUAL
    TRLinkManualDecisionDestinationDetail:
      type: object
      description: Per-destination result of the manual decision
      properties:
        destinationScreeningId:
          type: string
          description: Destination screening record ID
          example: 3fa85f64-5717-4562-b3fc-2c963f66afa6
        applied:
          type: boolean
          description: Whether the decision was applied to this destination
          example: true
        skipReason:
          type: string
          description: Reason if the destination was skipped
          nullable: true
          example: null
      required:
        - destinationScreeningId
        - applied
    TRLinkManualDecisionResponse:
      type: object
      description: Response containing the result of the manual decision
      properties:
        action:
          $ref: '#/components/schemas/TRLinkManualDecisionAction'
        source:
          $ref: '#/components/schemas/TRLinkManualDecisionSource'
        txId:
          type: string
          description: Transaction ID
          example: b70701f4-d7b1-4795-a8ee-b09cdb5b850e
        destinationsAffected:
          type: integer
          description: Number of destinations where the decision was applied
          example: 2
        destinationsSkipped:
          type: integer
          description: Number of destinations that were skipped
          example: 0
        details:
          type: array
          minItems: 0
          maxItems: 100
          description: Per-destination details
          items:
            $ref: '#/components/schemas/TRLinkManualDecisionDestinationDetail'
      required:
        - action
        - source
        - txId
        - destinationsAffected
        - destinationsSkipped
        - details
    TRLinkRequiredField:
      type: object
      description: An IVMS101 field requirement with its type and path
      properties:
        type:
          type: string
          description: The person type for this field
          example: naturalPerson
        path:
          type: string
          description: IVMS101 field path
          example: Beneficiary.beneficiaryPerson[].naturalPerson.name.nameIdentifier[].primaryIdentifier
      required:
        - type
        - path
    TRLinkRequiredActionData:
      type: object
      description: |
        Data describing what fields are required to resolve the action.
        The structure varies by action type and is defined by the TRP provider.

        For UPLOAD_BENEFICIARY_PII action type:
        Contains beneficiaryRequiredFields and/or originatorRequiredFields
        listing the IVMS101 field paths that must be provided.
      nullable: true
      properties:
        beneficiaryRequiredFields:
          type: array
          minItems: 0
          maxItems: 30
          description: List of required beneficiary IVMS101 fields
          items:
            $ref: '#/components/schemas/TRLinkRequiredField'
        originatorRequiredFields:
          type: array
          minItems: 0
          maxItems: 30
          description: List of required originator IVMS101 fields
          items:
            $ref: '#/components/schemas/TRLinkRequiredField'
    TRLinkRequiredAction:
      type: object
      description: A required action for processing the TRM
      properties:
        type:
          type: string
          description: The action type identifier as defined by the Travel Rule provider. Values are provider-specific and may vary across different TRP implementations, so this field is intentionally not restricted to a fixed set of values.
          example: UPLOAD_BENEFICIARY_PII
        description:
          type: string
          description: Human-readable description of the action
          nullable: true
          example: Provide beneficiary PII fields to process the TR message
        data:
          $ref: '#/components/schemas/TRLinkRequiredActionData'
      required:
        - type
    TRLinkGetRequiredActionsResponse:
      type: object
      description: Response containing the list of required actions for a TRM
      properties:
        actions:
          type: array
          minItems: 0
          maxItems: 10
          description: List of required actions for the TRM
          items:
            $ref: '#/components/schemas/TRLinkRequiredAction'
      required:
        - actions
    TRLinkBeneficiaryPii:
      type: object
      description: Beneficiary PII data in IVMS101 format
      properties:
        ivms101:
          $ref: '#/components/schemas/TRLinkIvms'
      required:
        - ivms101
    TRLinkResolveActionData:
      type: object
      description: |
        Data to submit when resolving an action.
        The structure varies by action type and is validated by the TRP provider.

        For UPLOAD_BENEFICIARY_PII action type:
        Contains beneficiaryPii with IVMS101-encoded PII data.
      nullable: true
      properties:
        beneficiaryPii:
          $ref: '#/components/schemas/TRLinkBeneficiaryPii'
    TRLinkResolveActionRequest:
      type: object
      description: Request to resolve a pending TRM action
      properties:
        type:
          type: string
          description: The action type identifier as defined by the Travel Rule provider. Must match one of the types returned by the get required actions endpoint. Values are provider-specific and may vary across different TRP implementations.
          example: UPLOAD_BENEFICIARY_PII
        data:
          $ref: '#/components/schemas/TRLinkResolveActionData'
      required:
        - type
    ScreeningPolicyAmountRange:
      type: object
      description: Minimum and maximum amount range specification
      properties:
        min:
          type: string
          description: Minimum amount (inclusive)
          nullable: true
          example: '1000'
        max:
          type: string
          description: Maximum amount (inclusive)
          nullable: true
          example: '100000'
    ScreeningPolicyCurrency:
      type: string
      enum:
        - USD
        - NATIVE
      example: USD
    ScreeningPolicyAmount:
      type: object
      description: Amount specification with range and currency type (screening policy rules – BYORK, TRLink, etc.)
      properties:
        range:
          $ref: '#/components/schemas/ScreeningPolicyAmountRange'
        currency:
          $ref: '#/components/schemas/ScreeningPolicyCurrency'
      example:
        range:
          min: '1000'
          max: '100000'
        currency: USD
      required:
        - range
        - currency
    TRLinkPreScreeningAction-2:
      type: string
      enum:
        - SCREEN
        - PASS
    TRLinkPreScreeningRule-2:
      type: object
      description: Pre-screening rule that determines if a transaction should be screened
      properties:
        customerId:
          type: string
          description: Customer identifier
          nullable: true
          example: cust_123abc
        direction:
          $ref: '#/components/schemas/TRLinkTransactionDirection'
        sourceType:
          type: string
          description: Source entity type
          nullable: true
          example: VAULT_ACCOUNT
        sourceSubType:
          type: string
          description: Source entity subtype
          nullable: true
        sourceAddress:
          type: string
          description: Source blockchain address
          nullable: true
          example: '0x1234567890abcdef1234567890abcdef12345678'
        destType:
          type: string
          description: Destination entity type
          nullable: true
          example: EXTERNAL_WALLET
        destSubType:
          type: string
          description: Destination entity subtype
          nullable: true
        destAddress:
          type: string
          description: Destination blockchain address
          nullable: true
          example: '0xabcdefabcdefabcdefabcdefabcdefabcdefabcd'
        sourceId:
          type: string
          description: Source identifier
          nullable: true
        destId:
          type: string
          description: Destination identifier
          nullable: true
        asset:
          type: string
          description: Asset or cryptocurrency type
          nullable: true
          example: BTC
        baseAsset:
          type: string
          description: Base asset for derivatives
          nullable: true
        amount:
          $ref: '#/components/schemas/ScreeningPolicyAmount'
        networkProtocol:
          type: string
          description: Network protocol identifier
          nullable: true
          example: BITCOIN
        operation:
          type: string
          description: Operation type
          nullable: true
          example: TRANSFER
        description:
          type: string
          description: Rule description
          nullable: true
          example: Screen large BTC outbound transactions to external wallets
        isDefault:
          type: boolean
          description: Whether this is a default rule
          nullable: true
          example: false
        action:
          $ref: '#/components/schemas/TRLinkPreScreeningAction-2'
      required:
        - action
    TRLinkPostScreeningAction:
      type: string
      enum:
        - ACCEPT
        - ALERT
        - REJECT
        - WAIT
    TRLinkPostScreeningRule-2:
      type: object
      description: Post-screening rule that determines the verdict based on screening results
      properties:
        customerId:
          type: string
          description: Customer identifier
          nullable: true
          example: cust_123abc
        direction:
          $ref: '#/components/schemas/TRLinkTransactionDirection'
        sourceType:
          type: string
          description: Source entity type
          nullable: true
          example: EXTERNAL_WALLET
        sourceSubType:
          type: string
          description: Source entity subtype
          nullable: true
        sourceAddress:
          type: string
          description: Source blockchain address
          nullable: true
          example: '0x9876543210fedcba9876543210fedcba98765432'
        destType:
          type: string
          description: Destination entity type
          nullable: true
          example: VAULT_ACCOUNT
        destSubType:
          type: string
          description: Destination entity subtype
          nullable: true
        destAddress:
          type: string
          description: Destination blockchain address
          nullable: true
          example: '0x1234567890abcdef1234567890abcdef12345678'
        sourceId:
          type: string
          description: Source identifier
          nullable: true
        destId:
          type: string
          description: Destination identifier
          nullable: true
        asset:
          type: string
          description: Asset or cryptocurrency type
          nullable: true
          example: ETH
        baseAsset:
          type: string
          description: Base asset for derivatives
          nullable: true
        amount:
          $ref: '#/components/schemas/ScreeningPolicyAmount'
        networkProtocol:
          type: string
          description: Network protocol identifier
          nullable: true
          example: ETHEREUM
        operation:
          type: string
          description: Operation type
          nullable: true
          example: TRANSFER
        description:
          type: string
          description: Rule description
          nullable: true
          example: Accept transactions with TRM approval after January 2024
        isDefault:
          type: boolean
          description: Whether this is a default rule
          nullable: true
          example: false
        providerIdent:
          type: string
          description: TRP provider identifier
          nullable: true
          example: trm-provider-1
        trmStatus:
          $ref: '#/components/schemas/TRLinkTrmStatus'
        validBefore:
          type: integer
          format: int64
          description: Rule is valid before this timestamp (milliseconds)
          nullable: true
          example: 1735689600000
        validAfter:
          type: integer
          format: int64
          description: Rule is valid after this timestamp (milliseconds)
          nullable: true
          example: 1704067200000
        action:
          $ref: '#/components/schemas/TRLinkPostScreeningAction'
      required:
        - action
    TRLinkMissingTrmAction-2:
      type: string
      description: TRLink missing TRM action
      enum:
        - WAIT
        - REJECT
        - ACCEPT
    TRLinkMissingTrmRule-2:
      type: object
      description: Rule for handling transactions when TRM screening data is missing or unavailable
      properties:
        customerId:
          type: string
          description: Customer identifier
          nullable: true
          example: cust_123abc
        direction:
          $ref: '#/components/schemas/TRLinkTransactionDirection'
        sourceType:
          type: string
          description: Source entity type
          nullable: true
          example: EXTERNAL_WALLET
        sourceSubType:
          type: string
          description: Source entity subtype
          nullable: true
        sourceAddress:
          type: string
          description: Source blockchain address
          nullable: true
          example: '0xabcdef1234567890abcdef1234567890abcdef12'
        destType:
          type: string
          description: Destination entity type
          nullable: true
          example: VAULT_ACCOUNT
        destSubType:
          type: string
          description: Destination entity subtype
          nullable: true
        destAddress:
          type: string
          description: Destination blockchain address
          nullable: true
          example: '0x567890abcdef1234567890abcdef1234567890ab'
        sourceId:
          type: string
          description: Source identifier
          nullable: true
        destId:
          type: string
          description: Destination identifier
          nullable: true
        asset:
          type: string
          description: Asset or cryptocurrency type
          nullable: true
          example: BTC
        baseAsset:
          type: string
          description: Base asset for derivatives
          nullable: true
        amount:
          $ref: '#/components/schemas/ScreeningPolicyAmount'
        networkProtocol:
          type: string
          description: Network protocol identifier
          nullable: true
          example: BITCOIN
        operation:
          type: string
          description: Operation type
          nullable: true
          example: TRANSFER
        description:
          type: string
          description: Rule description
          nullable: true
          example: Wait for TRM screening on inbound transactions
        isDefault:
          type: boolean
          description: Whether this is a default rule
          nullable: true
          example: false
        validBefore:
          type: integer
          format: int64
          description: Rule is valid before this timestamp (milliseconds)
          nullable: true
          example: 1735689600000
        validAfter:
          type: integer
          format: int64
          description: Rule is valid after this timestamp (milliseconds)
          nullable: true
          example: 1704067200000
        action:
          $ref: '#/components/schemas/TRLinkMissingTrmAction-2'
      required:
        - action
    TRLinkPolicyResponse:
      type: object
      description: TRLink policy response containing pre-screening, post-screening, and missing TRM rules
      properties:
        preScreeningRules:
          type: array
          description: Pre-screening rules that determine whether transactions should be screened
          items:
            $ref: '#/components/schemas/TRLinkPreScreeningRule-2'
        postScreeningRules:
          type: array
          description: Post-screening rules that determine actions based on screening results
          items:
            $ref: '#/components/schemas/TRLinkPostScreeningRule-2'
        missingTrmRules:
          type: array
          description: Rules for handling transactions when TRM screening data is unavailable
          items:
            $ref: '#/components/schemas/TRLinkMissingTrmRule-2'
      required:
        - preScreeningRules
        - postScreeningRules
        - missingTrmRules
    TRLinkSetTransactionTravelRuleMessageIdRequest:
      type: object
      properties:
        travelRuleMessageId:
          type: string
          description: Travel Rule Message ID to associate with transaction (null to unset)
          nullable: true
          example: trm_1234567890abcdef
      required:
        - travelRuleMessageId
    TRLinkSetTransactionTravelRuleMessageIdResponse:
      type: object
      properties:
        success:
          type: boolean
          description: Whether the operation was successful
          example: true
      required:
        - success
    TRLinkTransferPeerPath:
      type: object
      description: Transfer peer path for destination matching
      properties:
        type:
          type: string
          description: Peer type
          nullable: true
          example: VAULT_ACCOUNT
        id:
          type: string
          description: Peer ID
          nullable: true
          example: '12'
        subType:
          type: string
          description: Peer subtype
          nullable: true
          example: '0'
        address:
          type: string
          description: Peer address
          nullable: true
          example: '0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb'
    TRLinkSetDestinationTravelRuleMessageIdRequest:
      type: object
      description: Request to set TRM ID for specific transaction destination
      properties:
        amount:
          type: string
          description: Destination amount for matching
          example: '1000'
        destination:
          $ref: '#/components/schemas/TRLinkTransferPeerPath'
        travelRuleMessageId:
          type: string
          description: Travel Rule Message ID to associate with destination (null to unset)
          nullable: true
          example: trm_1234567890abcdef
      required:
        - amount
        - destination
        - travelRuleMessageId
    TRLinkSetDestinationTravelRuleMessageIdResponse:
      type: object
      properties:
        success:
          type: boolean
          description: Whether the operation was successful
          example: true
        updatedDestinations:
          type: number
          description: Number of destinations updated
          example: 1
        failedDestinations:
          type: number
          description: Number of destinations that failed to update
          example: 0
        errors:
          type: array
          items:
            type: string
          description: List of errors (if any)
          nullable: true
          example: []
      required:
        - success
        - updatedDestinations
        - failedDestinations
    GetOtaStatusResponse:
      type: object
      properties:
        enabled:
          type: boolean
          description: Current OTA status
    SetOtaStatusRequest:
      type: object
      properties:
        enabled:
          type: boolean
          description: Set true or false to enable or disable OTA transactions
    SetOtaStatusResponse:
      oneOf:
        - type: object
          properties:
            message:
              type: string
              description: Message indicating the result of the operation for example when no config change is needed
              example: No change needed. The current status is false
        - type: string
          description: Message indicating the result of the operation when config was successfully updated
          example: Accepted
    GetWorkspaceStatusResponse:
      type: object
      properties:
        status:
          type: string
          description: Current workspace status
    LegacyPolicySrcOrDestType:
      type: string
      enum:
        - EXCHANGE
        - UNMANAGED
        - VAULT
        - NETWORK_CONNECTION
        - COMPOUND
        - FIAT_ACCOUNT
        - ONE_TIME_ADDRESS
        - '*'
      description: |
        * EXCHANGE - A third-party exchange account connected to your workspace
        * UNMANAGED - A unmanaged wallet outside of Fireblocks workspace
        * VAULT - An account in your Fireblocks Vault
        * NETWORK_CONNECTION - A connection in your Fireblocks network
        * COMPOUND - (deprecated) An asset retrieved by using the Compound DeFI protocol
        * FIAT_ACCOUNT - A third-party fiat account connected to your workspace
        * ONE_TIME_ADDRESS - A non-whitelisted asset from your Fireblocks Workspace
        * "*" - All types
    LegacyPolicySrcOrDestSubType:
      type: string
      enum:
        - EXTERNAL
        - INTERNAL
        - CONTRACT
        - EXCHANGETEST
        - '*'
      description: |
        * EXTERNAL - A whitelisted wallet assigned as external is typically used for addresses managed by your clients and counterparties
        * INTERNAL - A whitelisted wallet assigned as internal, is typically used for addresses that you control outside of your Fireblocks workspace
        * CONTRACT - A whitelisted wallet assigned as contract is for identifying and managing external smart contracts
        * EXCHANGETEST - Exchanges which operate only on testnet assets
        * "*" - All subtypes
    LegacyPolicySrcOrDestId:
      type: string
      description: |
        Defines the account id, options are
        * "*" - All accounts
        * Specific account id
    LegacySrcOrDestAttributes:
      type: array
      description: |
        Defines source or destination component, options are:
        * id only
        * id and type - first item in the array MUST be id.
        * id, type and subtype - first item in the array MUST be id and second item MUST be type.
      items:
        anyOf:
          - $ref: '#/components/schemas/LegacyPolicySrcOrDestId'
          - $ref: '#/components/schemas/LegacyPolicySrcOrDestType'
          - $ref: '#/components/schemas/LegacyPolicySrcOrDestSubType'
      minItems: 1
      maxItems: 3
    LegacyAmountAggregationTimePeriodMethod:
      type: string
      enum:
        - PER_SINGLE_MATCH
        - ACROSS_ALL_MATCHES
      description: |
        * PER_SINGLE_MATCH - Apply the limit to each listed entity
        * ACROSS_ALL_MATCHES - Apply the limit to the sum of all listed entities
    LegacyPolicyRule:
      type: object
      description: Policy rule which is enforced on transactions
      properties:
        operator:
          type: string
          description: (deprecated - replaced by "operators")  | Defines users who can initiate the type of transaction to which the rule applies. options are * "*" - All users are allowed * Specific User id
          deprecated: true
        operators:
          type: object
          description: Defines users/groups who can initiate the type of transaction to which the rule applies.
          properties:
            wildcard:
              type: string
              enum:
                - '*'
              description: |
                If used then this property should appear as the only child property
                * "*" - All users are allowed
            users:
              type: array
              description: Set of users ids
              items:
                type: string
            usersGroups:
              type: array
              description: Set of group ids
              items:
                type: string
            services:
              type: array
              description: set of services to initiate transactions
              items:
                type: string
        transactionType:
          type: string
          enum:
            - TRANSFER
            - CONTRACT_CALL
            - APPROVE
            - MINT
            - BURN
            - SUPPLY
            - REDEEM
            - STAKE
            - RAW
            - TYPED_MESSAGE
            - PROGRAM_CALL
          description: |
            Defines the type of transaction to which the rule applies.
              * TRANSFER - Default. Transfers funds from one account to another
              * CONTRACT_CALL - Calls a smart contract, mainly for DeFi operations.
              * APPROVE - Allows a smart contract to withdraw from a designated wallet.
              * MINT - Perform a mint operation (increase supply) on a supported token
              * BURN - Perform a burn operation (reduce supply) on a supported token
              * SUPPLY - Use for DeFi to lend assets
              * REDEEM - Use for DeFi to get lending back
              * STAKE - Allows you to allocate and lock certain assets for earning staking rewards.
              * RAW - An off-chain message with no predefined format, use it to sign any message with your private key.
              * TYPED_MESSAGE - An off-chain message type that follows a predefined format, used to sign specific messages that are not actual transactions.
              * PROGRAM_CALL - In Solana refers to invoking on-chain programs (smart contracts) to execute transactions and interact with the blockchain.
        designatedSigner:
          type: string
          description: (deprecated - replaced by "designatedSigners") Id representing the user who signs transactions that match a specific rule
          deprecated: true
        designatedSigners:
          type: object
          description: Set of ids representing the users who signs transactions that match a specific rule
          properties:
            users:
              type: array
              description: Set of users ids
              items:
                type: string
            usersGroups:
              type: array
              description: Set of group ids
              items:
                type: string
        type:
          type: string
          description: Policy rule type
          enum:
            - TRANSFER
        action:
          type: string
          enum:
            - ALLOW
            - BLOCK
            - 2-TIER
          description: |
            Defines what occurs when a transaction meets the rule's criteria
            * ALLOW - The transaction goes through and can be signed without requiring additional approvals
            * BLOCK - The transaction is automatically blocked
            * 2-TIER - Only these users or user groups can approve 
                       If any of them reject the transaction before the required approval threshold is met, the transaction doesn't go through
                       The list of entities are set is "authorizationGroups" field
        asset:
          type: string
          description: |
            Defines the type of asset being transacted, options are
            * "*" - All assets
            * Specific asset
        srcType:
          description: (deprecated - replaced by "src") source account type
          deprecated: true
          allOf:
            - $ref: '#/components/schemas/LegacyPolicySrcOrDestType'
        srcSubType:
          description: (deprecated - replaced by "src") source sub account type
          deprecated: true
          allOf:
            - $ref: '#/components/schemas/LegacyPolicySrcOrDestSubType'
        srcId:
          description: (deprecated - replaced by "src") source account id
          deprecated: true
          allOf:
            - $ref: '#/components/schemas/LegacyPolicySrcOrDestId'
        src:
          type: object
          description: Defines source accounts the rule allows transfers to originate from
          properties:
            ids:
              type: array
              description: A set of ids in a tuple format
              items:
                $ref: '#/components/schemas/LegacySrcOrDestAttributes'
        dstType:
          description: (deprecated - replaced by "dst") destination account type
          deprecated: true
          allOf:
            - $ref: '#/components/schemas/LegacyPolicySrcOrDestType'
        dstSubType:
          description: (deprecated - replaced by "dst") destination sub account type
          deprecated: true
          allOf:
            - $ref: '#/components/schemas/LegacyPolicySrcOrDestSubType'
        dstId:
          description: (deprecated - replaced by "dst") destination account id
          deprecated: true
          allOf:
            - $ref: '#/components/schemas/LegacyPolicySrcOrDestId'
        dst:
          type: object
          description: Defines the destination accounts the rule allows transfers to
          properties:
            ids:
              type: array
              description: A set of ids in a tuple format
              items:
                $ref: '#/components/schemas/LegacySrcOrDestAttributes'
        dstAddressType:
          type: string
          enum:
            - WHITELISTED
            - ONE_TIME
            - '*'
          description: |
            Defines whether the destination to which you are sending funds must be whitelisted, to allow one-time transfers to non-whitelisted external addresses, or both.
            By default, you can only transfer to an external address after it’s whitelisted.
              * WHITELISTED - Can only be sent to whitelisted addresses.
              * ONE_TIME - Can only be sent to non-whitelisted external addresses.
              * "*" - can be sent to whitelisted addresses or non-whitelisted external
        amountCurrency:
          type: string
          enum:
            - USD
            - EUR
            - NATIVE
          description: |
            * USD - Limits the amount of any asset users can transfer based on the USD equivalent of the asset.
            * EUR - Limits the amount of any asset users can transfer based on the EURO equivalent of the asset.
            * NATIVE - Limits the amount of an asset a user can transfer when using a specific asset.
        amountScope:
          type: string
          enum:
            - SINGLE_TX
            - TIMEFRAME
          description: |
            * SINGLE_TX - limit applies to a single transaction
            * TIMEFRAME - limit applies to all transactions within the defined time period
        amount:
          description: Defines the value a transaction must exceed for the rule to apply to it (according to the amountCurrency field)
          anyOf:
            - type: string
              description: Numeric string (recommended)
            - type: number
              description: Number (deprecated)
        periodSec:
          type: number
          description: |
            Time period in seconds applied by the amountScope field to accumulate transferred amounts in transactions that match the rule, until the total exceeds the value you specify under Minimum.
            When the specified amount is reached within that period, whether by one or many transactions, further transactions in that period either fail or require more approvals.
        authorizers:
          type: array
          description: (deprecated - replaced by "authorizationGroups") Allowed entities which can approves a transaction
          deprecated: true
          items:
            type: string
        authorizersCount:
          type: number
          description: (deprecated - replaced by "authorizationGroups") Min amount of entities which are needed to approve a transaction
          deprecated: true
        authorizationGroups:
          type: object
          description: Defines the transaction approval terms
          properties:
            logic:
              type: string
              enum:
                - AND
                - OR
              description: |
                * AND - requires approval of all authorization groups
                * OR - requires approval of at least one of the authorization groups
            allowOperatorAsAuthorizer:
              type: boolean
              description: Defines whether the user who initiates a transaction can approve their own transaction and count toward the approval threshold for their transaction
            groups:
              type: array
              description: Groups of entities which can approve the transaction
              items:
                type: object
                properties:
                  users:
                    type: array
                    description: User ids
                    items:
                      type: string
                  usersGroups:
                    type: array
                    description: Group ids
                    items:
                      type: string
                  th:
                    type: number
                    description: Represents the min amount of entities which are required to approve the transaction, default is 1.
        amountAggregation:
          type: object
          description: |
            Defines the method by which the Policy Engine calculates accumulation.
            It uses the Initiator, Source, and Destination to calculate accumulation toward the value under Minimum, for the time under Time Period.
          properties:
            operators:
              $ref: '#/components/schemas/LegacyAmountAggregationTimePeriodMethod'
            srcTransferPeers:
              $ref: '#/components/schemas/LegacyAmountAggregationTimePeriodMethod'
            dstTransferPeers:
              $ref: '#/components/schemas/LegacyAmountAggregationTimePeriodMethod'
        rawMessageSigning:
          type: object
          description: Raw message signing configuration
          properties:
            algorithm:
              type: string
            derivationPath:
              type: object
              properties:
                path:
                  type: array
                  items:
                    type: number
        applyForApprove:
          type: boolean
          description: Applying this rule over APPROVE type transactions (can only be enabled when rule's transaction type is TRANSFER)
        applyForTypedMessage:
          type: boolean
          description: Applying this rule over TYPED_MESSAGE type transactions (can only be enabled when rule's transaction type is CONTRACT_CALL)
        externalDescriptor:
          type: string
          description: A unique id identifying the rule
      required:
        - type
        - action
        - asset
        - amountCurrency
        - amountScope
        - amount
        - periodSec
    LegacyPolicyMetadata:
      type: object
      description: Policy related metadata
      properties:
        editedBy:
          type: string
          description: The user id of the user who last edited the policy
        editedAt:
          type: string
          description: The timestamp of the last edit of the policy
        publishedBy:
          type: string
          description: The user id of the user who last published the policy
        publishedAt:
          type: string
          description: The timestamp of the last publish of the policy
    LegacyPolicyResponse:
      type: object
      description: Response object for policy operations
      properties:
        rules:
          type: array
          description: A set of policy rules
          items:
            $ref: '#/components/schemas/LegacyPolicyRule'
        metadata:
          $ref: '#/components/schemas/LegacyPolicyMetadata'
      required:
        - rules
        - metadata
    LegacyPolicyRuleError:
      type: object
      description: Rule validation result error
      properties:
        errorMessage:
          type: string
          description: Error message
        errorCode:
          type: number
          description: error code
        errorCodeName:
          type: string
          description: error code name
        errorField:
          type: string
          enum:
            - operator
            - operators
            - authorizationGroups
            - designatedSigner
            - designatedSigners
            - contractMethods
            - amountAggregation
            - src
            - dst
          description: |
            The field which the error relates to
            * operator - transaction initiator
            * operators - transaction initiators
            * authorizationGroups - transaction authorizer groups
            * designatedSigner - transaction signer
            * designatedSigners - transaction signers
            * contractMethods - contract methods
            * amountAggregation - transaction amount aggregation configuration
            * src - transaction source asset configuration
            * dst - transaction destination asset configuration
      required:
        - errorMessage
        - errorCode
        - errorCodeName
        - errorField
    LegacyPolicyRuleCheckResult:
      type: object
      description: The rule validation result
      properties:
        index:
          type: number
          description: Rule index number in the policy
        status:
          type: string
          description: Validation status
          enum:
            - ok
            - failure
        errors:
          type: array
          description: A set of rule validation error objects
          items:
            $ref: '#/components/schemas/LegacyPolicyRuleError'
      required:
        - index
        - status
        - errors
    LegacyPolicyCheckResult:
      type: object
      description: Policy rules validation result
      properties:
        errors:
          type: number
          description: Number of errors
        results:
          type: array
          description: A set of validation results
          items:
            $ref: '#/components/schemas/LegacyPolicyRuleCheckResult'
      required:
        - errors
        - results
    LegacyPolicyValidation:
      type: object
      description: Policy validation object
      properties:
        status:
          type: string
          description: Validation status
        checkResult:
          $ref: '#/components/schemas/LegacyPolicyCheckResult'
      required:
        - status
        - checkResult
    LegacyPolicyAndValidationResponse:
      type: object
      description: Policy validation
      properties:
        policy:
          $ref: '#/components/schemas/LegacyPolicyResponse'
        validation:
          $ref: '#/components/schemas/LegacyPolicyValidation'
      required:
        - policy
        - validation
    LegacyDraftResponse:
      type: object
      description: Response object for draft operations
      properties:
        status:
          type: string
          description: Operation status
        rules:
          type: array
          description: Draft rules
          items:
            $ref: '#/components/schemas/LegacyPolicyRule'
        draftId:
          type: string
          description: Draft unique id
        metadata:
          $ref: '#/components/schemas/LegacyPolicyMetadata'
      required:
        - draftId
        - status
        - rules
        - metadata
    LegacyDraftReviewAndValidationResponse:
      type: object
      description: Draft validation
      properties:
        draftResponse:
          $ref: '#/components/schemas/LegacyDraftResponse'
        validation:
          $ref: '#/components/schemas/LegacyPolicyValidation'
      required:
        - draftResponse
        - validation
    LegacyPolicyRules:
      type: object
      properties:
        rules:
          description: Policy rules
          type: array
          items:
            $ref: '#/components/schemas/LegacyPolicyRule'
    LegacyPublishDraftRequest:
      type: object
      properties:
        draftId:
          description: draft unique identifier
          type: string
    LegacyPolicyStatus:
      type: string
      enum:
        - SUCCESS
        - UNVALIDATED
        - INVALID_CONFIGURATION
        - PENDING
        - PENDING_CONSOLE_APPROVAL
        - AWAITING_QUORUM
        - UNHANDLED_ERROR
      description: |
        * SUCCESS - success
        * UNVALIDATED - not validated yet
        * INVALID_CONFIGURATION - at least one rule is invalid
        * PENDING - pending approval
        * PENDING_CONSOLE_APPROVAL - pending approval from the console app
        * AWAITING_QUORUM - pending quorum approval
        * UNHANDLED_ERROR - unhandled error
    LegacyPublishResult:
      type: object
      description: Response object of the publish policy operation
      properties:
        status:
          $ref: '#/components/schemas/LegacyPolicyStatus'
        rules:
          type: array
          items:
            $ref: '#/components/schemas/LegacyPolicyRule'
        checkResult:
          $ref: '#/components/schemas/LegacyPolicyCheckResult'
        metadata:
          $ref: '#/components/schemas/LegacyPolicyMetadata'
      required:
        - status
        - rules
        - checkResult
        - metadata
    PolicyType:
      type: string
      enum:
        - TRANSFER
        - STAKE
        - CONTRACT_CALL
        - TYPED_MESSAGE
        - APPROVE
        - MINT
        - BURN
        - RAW
        - COMPLIANCE
        - DEPLOYMENT
        - PROGRAM_CALL
        - DAPP_CONNECTION
        - UPGRADE
        - ORDER
        - AML_CHAINALYSIS_V2_SCREENING
        - AML_CHAINALYSIS_V2_POST_SCREENING
        - AML_ELLIPTIC_HOLISTIC_SCREENING
        - AML_ELLIPTIC_HOLISTIC_POST_SCREENING
        - TR_NOTABENE_SCREENING
        - TR_NOTABENE_POST_SCREENING
      description: Policy type enumeration
      example: TRANSFER
    PolicyUserIds:
      type: array
      items:
        type: string
      description: List of user IDs
      example:
        - user1
        - user2
    PolicyGroupIds:
      type: array
      items:
        type: string
      description: List of policy group IDs
      example:
        - group1
        - group2
    PolicyOperator:
      type: string
      enum:
        - INCLUDES
      description: Operator for selection
      example: INCLUDES
    InitiatorConfig:
      type: object
      description: Policy rule initiator configuration
      properties:
        users:
          $ref: '#/components/schemas/PolicyUserIds'
        groups:
          $ref: '#/components/schemas/PolicyGroupIds'
        services:
          type: array
          items:
            type: string
        fbAdminGroups:
          type: array
          items:
            type: string
        exchange:
          type: array
          items:
            type: string
        operator:
          $ref: '#/components/schemas/PolicyOperator'
    InitiatorConfigPattern:
      oneOf:
        - type: string
          enum:
            - '*'
          description: All users are allowed
          example: '*'
        - $ref: '#/components/schemas/InitiatorConfig'
    AssetTypesConfig:
      type: array
      items:
        oneOf:
          - type: string
          - enum:
              - '*'
      description: List of asset types
      example:
        - FUNGIBLE
        - NFT
        - '*'
    AssetConfig:
      type: object
      description: Policy asset configuration
      properties:
        nftTransfer:
          type: boolean
          description: Whether this is an NFT transfer
          example: false
        assetTypes:
          $ref: '#/components/schemas/AssetTypesConfig'
        operator:
          $ref: '#/components/schemas/PolicyOperator'
      required:
        - nftTransfer
    AccountType-2:
      type: string
      enum:
        - EXCHANGE
        - UNMANAGED
        - VAULT
        - GLOBAL_WHITELIST
        - NETWORK_CONNECTION
        - FIAT_ACCOUNT
        - CONNECTED_ACCOUNT
        - ONE_TIME_ADDRESS
        - SRC_DST_NA
        - MULTIPLE_VENUES
        - END_USER_WALLET
        - OEC_PARTNER
        - CONTRACT
        - INTERNAL
        - EXTERNAL
        - DAPP_CONNECTION
        - UNKNOWN
        - '*'
        - ANY
      description: Type of account
      example: VAULT
    AccountIdentifier:
      type: object
      description: Account identifier with type, ID, subtype, and address
      properties:
        type:
          $ref: '#/components/schemas/AccountType-2'
        id:
          type: string
          description: Account ID
          example: account123
        subType:
          type: string
          description: Account subtype
          example: INTERNAL
        address:
          type: string
          description: Account address
          example: 0x123...
      required:
        - type
    PolicyTag:
      type: object
      description: Policy tag for matching
      properties:
        id:
          type: string
          description: Tag identifier
          example: tag_001
      required:
        - id
    SourceConfig:
      type: object
      description: Source account configuration for policy rules
      properties:
        type:
          type: array
          items:
            $ref: '#/components/schemas/AccountType-2'
          description: Source account types
          example:
            - VAULT
            - UNMANAGED
        subType:
          type: array
          items:
            $ref: '#/components/schemas/AccountIdentifier'
          description: Source account subtypes
        ids:
          type: array
          items:
            $ref: '#/components/schemas/AccountIdentifier'
          description: Source account identifiers
        tags:
          type: array
          items:
            $ref: '#/components/schemas/PolicyTag'
          description: Tags for source matching
        operator:
          $ref: '#/components/schemas/PolicyOperator'
        matchFrom:
          type: string
          enum:
            - ACCOUNT
          description: Whether to match from account (relevant only for ORDER policy type)
          example: ACCOUNT
      required:
        - operator
    DestinationConfig:
      type: object
      description: Destination configuration for policy rules
      properties:
        type:
          type: array
          items:
            $ref: '#/components/schemas/AccountType-2'
          description: Destination account types
        subType:
          type: array
          items:
            $ref: '#/components/schemas/AccountIdentifier'
        ids:
          type: array
          items:
            $ref: '#/components/schemas/AccountIdentifier'
        tags:
          type: array
          items:
            $ref: '#/components/schemas/PolicyTag'
          description: Tags for destination matching
        operator:
          $ref: '#/components/schemas/PolicyOperator'
        matchFrom:
          type: string
          enum:
            - ACCOUNT
            - SOURCE
          description: Whether to match from account or source (relevant only for ORDER policy type). If set to ACCOUNT, only matchFrom is allowed and other fields are not required.
          example: ACCOUNT
        addressType:
          type: string
          enum:
            - '*'
            - WHITELISTED
            - ONE_TIME
          description: Type of destination addresses allowed
          example: WHITELISTED
      required:
        - operator
        - addressType
      example:
        type:
          - EXTERNAL
        operator: INCLUDES
        addressType: WHITELISTED
    AccountConfig:
      type: object
      description: Policy account configuration
      properties:
        type:
          type: array
          items:
            $ref: '#/components/schemas/AccountType-2'
          description: Account types
        subType:
          type: array
          items:
            $ref: '#/components/schemas/AccountIdentifier'
        ids:
          type: array
          items:
            $ref: '#/components/schemas/AccountIdentifier'
        tags:
          type: array
          items:
            $ref: '#/components/schemas/PolicyTag'
          description: Tags for account matching
        operator:
          $ref: '#/components/schemas/PolicyOperator'
        matchFrom:
          type: string
          enum:
            - ACCOUNT
            - SOURCE
          description: Whether to match from account or source
          example: ACCOUNT
      required:
        - operator
    OrderSide:
      type: string
      enum:
        - BUY
        - SELL
        - ANY
      description: Order side for trading operations
      example: BUY
    ApproversConfig:
      type: object
      description: Approvers configuration
      properties:
        canInitiatorApprove:
          type: boolean
          description: Whether initiator can approve
          example: false
        operator:
          type: string
          enum:
            - AND
            - OR
          description: Operator for approval groups
          example: AND
        allowOperatorAsAuthorizer:
          type: boolean
          description: Whether operator can be authorizer
          example: false
        approvalGroups:
          type: array
          items:
            type: object
            properties:
              threshold:
                type: number
                description: Approval threshold
                example: 2
              users:
                $ref: '#/components/schemas/PolicyUserIds'
              groups:
                $ref: '#/components/schemas/PolicyGroupIds'
            required:
              - threshold
          description: List of approval groups
          example:
            - threshold: 2
              users:
                - user1
                - user2
      required:
        - canInitiatorApprove
    DesignatedSignersConfig:
      type: object
      description: Designated signers configuration
      properties:
        type:
          type: string
          enum:
            - SINGLE
            - MULTIPLE
            - INITIATOR
          description: Type of designated signers
          example: SINGLE
        users:
          $ref: '#/components/schemas/PolicyUserIds'
        groups:
          $ref: '#/components/schemas/PolicyGroupIds'
      required:
        - type
    VerdictConfig:
      type: object
      description: Verdict configuration
      properties:
        action:
          type: string
          enum:
            - ALLOW
            - BLOCK
            - 2-TIER
            - ACCEPT
            - REJECT
            - ALERT
            - SCREEN
            - PASS
            - WAIT
            - FREEZE
            - CANCEL
          description: Verdict action
          example: ALLOW
        approvers:
          $ref: '#/components/schemas/ApproversConfig'
        designatedSigners:
          $ref: '#/components/schemas/DesignatedSignersConfig'
      required:
        - action
    AmountRangeMinMax-2:
      type: object
      description: Amount range with minimum and maximum values
      properties:
        min:
          type: string
          description: Minimum amount
          example: '100'
        max:
          type: string
          description: Maximum amount
          example: '10000'
      required:
        - min
      example:
        min: '100'
        max: '10000'
    PolicyCurrency:
      type: string
      enum:
        - NATIVE
        - USD
        - EUR
      description: Currency for the amount
      example: USD
    TimePeriodMatchType:
      type: string
      enum:
        - PER_SINGLE_MATCH
        - ACROSS_ALL_MATCHES
      description: Type of match for time period application
      example: PER_SINGLE_MATCH
    TimePeriodConfig:
      type: object
      description: Time period configuration
      properties:
        seconds:
          type: string
          description: Time period in seconds
          example: '86400'
        initiator:
          $ref: '#/components/schemas/TimePeriodMatchType'
        source:
          $ref: '#/components/schemas/TimePeriodMatchType'
        destination:
          $ref: '#/components/schemas/TimePeriodMatchType'
      required:
        - seconds
        - initiator
        - source
        - destination
    AmountOverTimeConfig:
      type: object
      description: Amount over time configuration
      properties:
        range:
          $ref: '#/components/schemas/AmountRangeMinMax-2'
        currency:
          $ref: '#/components/schemas/PolicyCurrency'
        timePeriod:
          $ref: '#/components/schemas/TimePeriodConfig'
      required:
        - range
        - currency
        - timePeriod
    AmountRange:
      type: object
      description: Amount range with minimum and maximum values
      properties:
        range:
          $ref: '#/components/schemas/AmountRangeMinMax-2'
      required:
        - range
      example:
        range:
          min: '100'
          max: '10000'
    AmountConfigCurrency:
      type: object
      description: Currency property for amount configuration
      properties:
        currency:
          $ref: '#/components/schemas/PolicyCurrency'
    AmountConfig:
      allOf:
        - $ref: '#/components/schemas/AmountRange'
        - $ref: '#/components/schemas/AmountConfigCurrency'
      example:
        range:
          min: '100'
          max: '10000'
        currency: USD
    ContractMethodConfig:
      type: object
      description: Contract method configuration
      properties:
        methodCalls:
          type: array
          items:
            type: string
        operator:
          type: string
          enum:
            - EITHER
            - EXACT
          description: Operator for method calls
          example: EITHER
        payloadSuffix:
          type: string
          description: Payload suffix for method calls
          example: 0x123...
      required:
        - methodCalls
        - operator
      example:
        methodCalls:
          - transfer
          - approve
        operator: EITHER
    ContractMethodPattern:
      oneOf:
        - type: string
          enum:
            - '*'
          description: All methods allowed
          example: '*'
        - $ref: '#/components/schemas/ContractMethodConfig'
    ProgramCallConfig:
      type: object
      description: Program call configuration
      properties:
        allowedSolanaProgramCalls:
          type: string
          enum:
            - '*'
            - WHITELISTED
          description: Whether Solana program calls are allowed
          example: WHITELISTED
      required:
        - allowedSolanaProgramCalls
    ScreeningMetadataConfig:
      type: object
      description: Screening metadata configuration
      properties:
        direction:
          type: string
          enum:
            - INBOUND
            - OUTBOUND
            - ANY
          description: Direction of transaction
          example: OUTBOUND
        provider:
          type: string
          enum:
            - CHAINALYSIS
            - CHAINALYSIS_V2
            - ELLIPTIC
            - ELLIPTIC_HOLISTIC
            - NOTABENE
          nullable: true
          description: Screening provider
          example: CHAINALYSIS
        riskRating:
          type: string
          enum:
            - LOW
            - MEDIUM
            - HIGH
            - SEVERE
            - ANY
          description: Risk rating threshold
          example: MEDIUM
        riskScore:
          type: string
          description: Risk score threshold
          example: '0.8'
        exposureType:
          type: string
          enum:
            - DIRECT
            - INDIRECT
            - ANY
          description: Exposure type
          example: DIRECT
        category:
          type: array
          items:
            type: string
        name:
          type: array
          items:
            type: string
        categoryId:
          type: array
          items:
            type: string
        status:
          type: string
          enum:
            - COMPLETED
            - PENDING
            - REJECTED
            - FAILED
            - CANCELED
            - BLOCKING_TIME_EXPIRED
          description: Transaction status
          example: COMPLETED
        sourceAddress:
          type: string
          description: Source address
          example: 0x123...
        destAddress:
          type: string
          description: Destination address
          example: 0x456...
    DAppAddressConfig:
      type: object
      description: dApp address configuration for policy rules
      properties:
        globalWhitelisted:
          type: array
          items:
            type: string
          description: Globally whitelisted addresses
          example:
            - rabby.io
            - jup.ag
        tenantWhitelisted:
          type: array
          items:
            type: string
          description: Tenant whitelisted addresses
          example:
            - uniswap.com
            - opensea.io
        urls:
          type: array
          items:
            type: string
          description: Allowed all address
          example:
            - '*'
        operator:
          $ref: '#/components/schemas/PolicyOperator'
      required:
        - globalWhitelisted
        - tenantWhitelisted
        - urls
        - operator
    DerivationPathConfig:
      type: object
      description: Derivation path configuration
      properties:
        path:
          type: array
          items:
            type: number
          description: Derivation path as array of numbers
          example:
            - 44
            - 0
            - 0
            - 0
            - 0
        partial:
          type: boolean
          description: Whether this is a partial path
          example: false
      required:
        - path
      example:
        path:
          - 44
          - 0
          - 0
          - 0
          - 0
        partial: false
    PolicyRule:
      type: object
      description: V2 Policy rule which is enforced on transactions
      properties:
        name:
          type: string
          description: Name of the policy rule
          example: High Value Transfer Policy
        id:
          type: string
          description: Unique identifier for the policy rule
          example: policy_rule_001
        policyEngineVersion:
          type: string
          enum:
            - v2
          description: Policy engine version
          example: v2
        type:
          $ref: '#/components/schemas/PolicyType'
        subType:
          $ref: '#/components/schemas/PolicyType'
        initiator:
          $ref: '#/components/schemas/InitiatorConfigPattern'
        asset:
          $ref: '#/components/schemas/AssetConfig'
        source:
          $ref: '#/components/schemas/SourceConfig'
        destination:
          $ref: '#/components/schemas/DestinationConfig'
        account:
          $ref: '#/components/schemas/AccountConfig'
        side:
          $ref: '#/components/schemas/OrderSide'
        verdict:
          $ref: '#/components/schemas/VerdictConfig'
        amountOverTime:
          $ref: '#/components/schemas/AmountOverTimeConfig'
        amount:
          $ref: '#/components/schemas/AmountConfig'
        externalDescriptor:
          type: string
          description: External descriptor for the rule
          example: High value transfer policy for institutional clients
        method:
          $ref: '#/components/schemas/ContractMethodPattern'
        isGlobalPolicy:
          type: boolean
          description: Whether this is a global policy
          example: false
        programCall:
          $ref: '#/components/schemas/ProgramCallConfig'
        screeningMetadata:
          $ref: '#/components/schemas/ScreeningMetadataConfig'
        quoteAsset:
          $ref: '#/components/schemas/AssetConfig'
        baseAsset:
          $ref: '#/components/schemas/AssetConfig'
        quoteAmount:
          $ref: '#/components/schemas/AmountRange'
        baseAmount:
          $ref: '#/components/schemas/AmountRange'
        dAppAddress:
          $ref: '#/components/schemas/DAppAddressConfig'
        derivationPath:
          $ref: '#/components/schemas/DerivationPathConfig'
        index:
          type: number
          description: Index for the policy rule
          example: 1
      required:
        - name
        - id
        - policyEngineVersion
        - type
        - initiator
        - source
        - verdict
    PolicyMetadataEntry:
      type: object
      description: Policy metadata entry (per policy type)
      properties:
        editedBy:
          type: string
          description: The user ID of the user who last edited the policy
          example: user123
        editedAt:
          type: string
          description: The timestamp of the last edit of the policy
          example: '2024-01-15T10:30:00Z'
        publishedBy:
          type: string
          description: The user ID of the user who last published the policy
          example: user456
        publishedAt:
          type: string
          description: The timestamp of the last publish of the policy
          example: '2024-01-15T11:00:00Z'
    PolicyMetadata:
      description: Policy metadata keyed by policy type
      type: object
      additionalProperties:
        $ref: '#/components/schemas/PolicyMetadataEntry'
      example:
        TRANSFER:
          editedBy: user123
          editedAt: '2024-01-15T10:30:00Z'
          publishedBy: user456
          publishedAt: '2024-01-15T11:00:00Z'
    PolicyResponse:
      type: object
      description: Response object for policy operations
      properties:
        rules:
          type: array
          description: A set of policy rules
          items:
            $ref: '#/components/schemas/PolicyRule'
        metadata:
          $ref: '#/components/schemas/PolicyMetadata'
      required:
        - rules
        - metadata
    PolicyRuleError:
      type: object
      description: Rule validation result error
      properties:
        errorMessage:
          type: string
          description: Error message
        errorCode:
          type: number
          description: error code
        errorCodeName:
          type: string
          description: error code name
        errorField:
          type: string
          enum:
            - operator
            - operators
            - authorizationGroups
            - designatedSigner
            - designatedSigners
            - contractMethods
            - amountAggregation
            - src
            - dst
          description: |
            The field which the error relates to
            * operator - transaction initiator
            * operators - transaction initiators
            * authorizationGroups - transaction authorizer groups
            * designatedSigner - transaction signer
            * designatedSigners - transaction signers
            * contractMethods - contract methods
            * amountAggregation - transaction amount aggregation configuration
            * src - transaction source asset configuration
            * dst - transaction destination asset configuration
      required:
        - errorMessage
        - errorCode
        - errorCodeName
        - errorField
    PolicyRuleCheckResult:
      type: object
      description: The rule validation result
      properties:
        index:
          type: number
          description: Rule index number in the policy
        status:
          type: string
          description: Validation status
          enum:
            - ok
            - failure
        errors:
          type: array
          description: A set of rule validation error objects
          items:
            $ref: '#/components/schemas/PolicyRuleError'
      required:
        - index
        - status
        - errors
    PolicyCheckResult:
      type: object
      description: Policy rules validation result
      properties:
        errors:
          type: number
          description: Number of errors
        results:
          type: array
          description: A set of validation results
          items:
            $ref: '#/components/schemas/PolicyRuleCheckResult'
      required:
        - errors
        - results
    PolicyValidation:
      type: object
      description: Policy validation object
      properties:
        status:
          type: string
          description: Validation status
        checkResult:
          $ref: '#/components/schemas/PolicyCheckResult'
      required:
        - status
        - checkResult
    PolicyAndValidationResponse:
      type: object
      description: Policy validation
      properties:
        policy:
          $ref: '#/components/schemas/PolicyResponse'
        validation:
          $ref: '#/components/schemas/PolicyValidation'
      required:
        - policy
        - validation
    DraftResponse:
      type: object
      description: Response object for draft operations
      properties:
        status:
          type: string
          description: Operation status
        rules:
          type: array
          description: Draft rules
          items:
            $ref: '#/components/schemas/PolicyRule'
        draftId:
          type: string
          description: Draft unique id
        metadata:
          $ref: '#/components/schemas/PolicyMetadata'
      required:
        - draftId
        - status
        - rules
        - metadata
    DraftReviewAndValidationResponse:
      type: object
      description: Draft validation
      properties:
        draftResponse:
          $ref: '#/components/schemas/DraftResponse'
        validation:
          $ref: '#/components/schemas/PolicyValidation'
      required:
        - draftResponse
        - validation
    UpdateDraftRequest:
      type: object
      description: Request schema for updating draft with policy types and rules
      required:
        - policyTypes
        - rules
      properties:
        policyTypes:
          type: array
          items:
            $ref: '#/components/schemas/PolicyType'
        rules:
          type: array
          description: Array of policy rules
          items:
            $ref: '#/components/schemas/PolicyRule'
    PublishDraftRequest:
      type: object
      description: Request schema for publishing draft with policy types and draft ID
      required:
        - policyTypes
        - draftId
      properties:
        policyTypes:
          type: array
          items:
            $ref: '#/components/schemas/PolicyType'
        draftId:
          type: string
          description: The ID of the draft to publish
          example: draft-123
    PolicyStatus:
      type: string
      enum:
        - SUCCESS
        - UNVALIDATED
        - INVALID_CONFIGURATION
        - PENDING
        - PENDING_CONSOLE_APPROVAL
        - AWAITING_QUORUM
        - UNHANDLED_ERROR
      description: |
        * SUCCESS - success
        * UNVALIDATED - not validated yet
        * INVALID_CONFIGURATION - at least one rule is invalid
        * PENDING - pending approval
        * PENDING_CONSOLE_APPROVAL - pending approval from the console app
        * AWAITING_QUORUM - pending quorum approval
        * UNHANDLED_ERROR - unhandled error
    PublishResult:
      type: object
      description: Response object of the publish policy operation
      properties:
        status:
          $ref: '#/components/schemas/PolicyStatus'
        rules:
          type: array
          items:
            $ref: '#/components/schemas/PolicyRule'
        checkResult:
          $ref: '#/components/schemas/PolicyCheckResult'
        metadata:
          $ref: '#/components/schemas/PolicyMetadata'
      required:
        - status
        - rules
        - checkResult
        - metadata
    UserId:
      type: string
      description: The unique identifier of the user
    UserRole:
      type: string
      description: The role of the user
      enum:
        - OWNER
        - ADMIN
        - SIGNER
        - COLLATERALS_SIGNER
        - EDITOR
        - APPROVER
        - VIEWER
        - NON_SIGNING_ADMIN
        - AUDITOR
        - NCW_ADMIN
        - NCW_SIGNER
        - SECURITY_ADMIN
        - SECURITY_AUDITOR
    UserEnabled:
      type: boolean
      description: Whether the user is enabled
    UserStatus:
      type: string
      description: The status of the user
      enum:
        - PENDING_ACTIVATION
        - PENDING_DEVICE_PAIRING
        - PENDING_DEVICE_SETUP
        - READY
    UserType:
      type: string
      description: The type of the user
      enum:
        - API
        - CONSOLE
    ConsoleUser:
      type: object
      properties:
        id:
          $ref: '#/components/schemas/UserId'
        firstName:
          type: string
          description: The first name of the user
        lastName:
          type: string
          description: The last name of the user
        email:
          type: string
          description: The email address of the user
        role:
          $ref: '#/components/schemas/UserRole'
        enabled:
          $ref: '#/components/schemas/UserEnabled'
        status:
          $ref: '#/components/schemas/UserStatus'
        userType:
          $ref: '#/components/schemas/UserType'
    ConsoleUsers:
      type: array
      items:
        $ref: '#/components/schemas/ConsoleUser'
    GetConsoleUsersResponse:
      type: object
      properties:
        users:
          $ref: '#/components/schemas/ConsoleUsers'
      required:
        - users
    CreateConsoleUser:
      type: object
      properties:
        firstName:
          type: string
          description: users firstName
        lastName:
          type: string
          description: users lastName
        role:
          type: string
          description: users role
        email:
          type: string
          description: valid email address
      required:
        - firstName
        - lastName
        - role
        - email
    APIUser:
      type: object
      properties:
        id:
          $ref: '#/components/schemas/UserId'
        name:
          type: string
          description: The name of the user
        role:
          $ref: '#/components/schemas/UserRole'
        enabled:
          $ref: '#/components/schemas/UserEnabled'
        status:
          $ref: '#/components/schemas/UserStatus'
        userType:
          $ref: '#/components/schemas/UserType'
    APIUsers:
      type: array
      items:
        $ref: '#/components/schemas/APIUser'
    GetAPIUsersResponse:
      type: object
      properties:
        users:
          $ref: '#/components/schemas/APIUsers'
      required:
        - users
    CreateAPIUser:
      type: object
      properties:
        role:
          type: string
          description: Users role
        name:
          type: string
          description: Users name
        csrPem:
          type: string
          description: CSR file that is used to verify API requests. read more https://developers.fireblocks.com/docs/quickstart
          example: '-----BEGIN CERTIFICATE REQUEST-----aaa-----END CERTIFICATE REQUEST-----'
        coSignerSetupType:
          type: string
          description: Different environments allow for different setup options, field is required for management/signer role
          example: SGX_MACHINE
        coSignerSetupIsFirstUser:
          type: boolean
          description: pass as true if this is the first user on the coSigner machine
      required:
        - role
        - name
        - csrPem
    IssueApiUserPairingTokenResponse:
      type: object
      properties:
        id:
          $ref: '#/components/schemas/UserId'
        name:
          type: string
          description: The name of the user
          example: John Doe
        role:
          $ref: '#/components/schemas/UserRole'
        enabled:
          $ref: '#/components/schemas/UserEnabled'
        userType:
          $ref: '#/components/schemas/UserType'
        status:
          $ref: '#/components/schemas/UserStatus'
        pairingToken:
          type: string
          description: The device pairing token issued for the given user
          example: access-token-for-pairing
      required:
        - id
        - role
        - enabled
        - pairingToken
    GetWhitelistIpAddressesResponse:
      type: object
      properties:
        userId:
          type: string
          description: The ID of the user
        whitelistedIps:
          nullable: true
          type: array
          items:
            type: string
          description: List of whitelisted ip addresses
    SmartTransferTicketTerm:
      type: object
      description: Data object with result data
      nullable: true
      properties:
        id:
          type: string
          description: Unique id of Smart Transfer ticket term
          example: 84601ee2-b10f-4aa8-be9c-dba259a3533a
        ticketId:
          type: string
          description: Unique id of Smart Transfer ticket
          example: 900f04c3-83bc-428d-b681-aef682059637
        asset:
          type: string
          description: Asset name
          example: BTC
          x-fb-entity: asset
        amount:
          type: string
          description: Amount
          example: '133.789161216184'
        dvpSrcDstVaultId:
          type: string
          description: Identifier of the source and destination vault for DVP execution
          example: 1
        amountUsd:
          type: string
          description: Amount USD
          example: '1333.789161216184'
        fromNetworkId:
          type: string
          description: Identifier of the origination Network Profile
          example: 947c6115-1f5f-4fb4-9fd6-a1f9dee14670
        fromNetworkIdName:
          type: string
          description: Source network name
          example: Source network profile name
        toNetworkId:
          type: string
          description: Identifier of the destination Network Profile
          example: 5d009697-c29b-48e0-aff8-1f4305d19dc2
        toNetworkIdName:
          type: string
          description: Destination network name
          example: Destination network profile name
        txHash:
          type: string
          description: Blockchain TX hash
          example: '0x2446f1fd773fbb9f080e674b60c6a033c7ed7427b8b9413cf28a2a4a6da9b56c'
          nullable: true
        fbTxId:
          type: string
          description: Fireblocks transaction ID. It is set when the funding transaction is created.
          example: 79075e8c-1fd9-4c97-9575-3bd9229e5c0d
          nullable: true
        txStatus:
          type: string
          description: Ticket term transaction status
          example: COMPLETED
          nullable: true
          enum:
            - queued
            - submitted
            - pendingSignature
            - pendingAuthorization
            - broadcasting
            - confirming
            - pendingAmlScreening
            - completed
            - cancelled
            - failed
            - rejected
            - blocked
            - thirdPartyPendingManualApproval
            - thirdPartyPending
            - partiallyCompleted
            - cancelling
        status:
          type: string
          description: Ticket term status
          example: CREATED
          nullable: false
          enum:
            - CREATED
            - FUNDING
            - FUNDING_FAILED
            - FUNDED
            - REJECTED
        createdAt:
          format: date-time
          type: string
          description: Date and time when the term is created.
          example: '2023-03-01T11:23:00Z'
        updatedAt:
          format: date-time
          type: string
          description: Date and time of last term update.
          example: '2023-03-01T11:23:00Z'
      required:
        - id
        - ticketId
        - asset
        - amount
        - fromNetworkId
        - fromNetworkIdName
        - toNetworkId
        - toNetworkIdName
        - txHash
        - fbTxId
        - txStatus
        - status
        - createdAt
        - updatedAt
    SmartTransferTicket:
      type: object
      description: Data object with result data
      nullable: true
      properties:
        id:
          type: string
          description: Unique id of Smart Transfer ticket
          example: 118320d2-761f-46c7-96cf-65e71a370b36
        type:
          type: string
          enum:
            - ASYNC
            - DVP
          description: Kind of Smart Transfer. Can be either `ASYNC` or `DVP`
          example: ASYNC
        direction:
          enum:
            - EXCHANGE
            - SEND
            - RECEIVE
            - INTERMEDIATE
          type: string
          description: Direction of Smart Transfer.
          example: EXCHANGE
        status:
          enum:
            - DRAFT
            - PENDING_APPROVAL
            - OPEN
            - IN_SETTLEMENT
            - FULFILLED
            - EXPIRED
            - CANCELED
          type: string
          description: Current status of Smart Transfer ticket
          example: DRAFT
        dvpExecutionStatus:
          enum:
            - STARTED
            - CREATING_ORDER
            - ORDER_CREATED
            - FULFILLING
            - FULFILLING_ORDER_FAILED
            - CREATING_ORDER_FAILED
            - FULFILLED
          type: string
          description: Current status of DVP execution
          example: STARTED
        orderCreatedByNetworkId:
          type: string
          description: ID of network profile that created order
          example: 3eaa94c5-128b-4835-bb08-3111bb6564c7
        terms:
          description: Ticket terms (legs)
          example:
            - id: 84601ee2-b10f-4aa8-be9c-dba259a3533a
              ticketId: 118320d2-761f-46c7-96cf-65e71a370b36
              amount: '10.00'
              asset: ETH
              fromNetworkId: 947c6115-1f5f-4fb4-9fd6-a1f9dee14670
              toNetworkId: 5d009697-c29b-48e0-aff8-1f4305d19dc2
              status: CREATED
            - id: 84601ee2-b10f-4aa8-be9c-dba259a3533a
              ticketId: 118320d2-761f-46c7-96cf-65e71a370b36
              amount: '10.00'
              asset: ETH
              fromNetworkId: 947c6115-1f5f-4fb4-9fd6-a1f9dee14670
              fromNetworkIdName: Source network profile 1
              toNetworkId: 5d009697-c29b-48e0-aff8-1f4305d19dc2
              toNetworkIdName: Destination network profile 1
              status: FUNDING
              connectionId: 14817440-d5c8-4dbd-a754-ad415683610c
              fbTxId: 79075e8c-1fd9-4c97-9575-3bd9229e5c0d
              createdAt: '2023-03-01T11:23:00.000Z'
              updatedAt: '2023-03-01T11:23:00.000Z'
            - id: 84601ee2-b10f-4aa8-be9c-dba259a3533a
              ticketId: 118320d2-761f-46c7-96cf-65e71a370b36
              amount: '10.00'
              asset: ETH
              fromNetworkId: 947c6115-1f5f-4fb4-9fd6-a1f9dee14670
              fromNetworkIdName: Source network profile 2
              toNetworkId: 5d009697-c29b-48e0-aff8-1f4305d19dc2
              toNetworkIdName: Destination network profile 2
              status: FUNDED
              connectionId: 14817440-d5c8-4dbd-a754-ad415683610c
              fbTxId: 79075e8c-1fd9-4c97-9575-3bd9229e5c0d
              txHash: '0xb5c8bd9430b6cc87a0e2fe110ece6bf527fa4f170a4bc8cd032f768fc5219838'
              createdAt: '2023-03-01T11:23:00.000Z'
              updatedAt: '2023-03-01T11:23:00.000Z'
          type: array
          items:
            $ref: '#/components/schemas/SmartTransferTicketTerm'
        expiresIn:
          type: number
          description: Number of hours for expiration.This data is valid only it ticket not in DRAFT state and it will be used to calculate expiresAt value
          example: '13'
        expiresAt:
          format: date-time
          type: string
          description: Date and time at which the ticket will expire if no funding is performed.
          example: '2023-03-01T11:23:00Z'
        submittedAt:
          format: date-time
          type: string
          description: Date and time when ticket is submitted.
          example: '2023-03-01T11:23:00Z'
        expiredAt:
          format: date-time
          type: string
          description: Date and time when ticket is expired.
          example: '2023-03-01T11:23:00Z'
        canceledAt:
          format: date-time
          type: string
          description: Date and time when ticket is canceled.
          example: '2023-03-01T11:23:00Z'
        fulfilledAt:
          format: date-time
          type: string
          description: Date and time when ticket is fulfilled.
          example: '2023-03-01T11:23:00Z'
        externalRefId:
          type: string
          description: External Ref ID for Smart Transfer ticket.
          example: 2631ffb9d8fe47c6b0825b5be28297da
        note:
          type: string
          description: Note
          example: Random note
        createdByNetworkId:
          type: string
          description: ID of network profile that created ticket
          example: 3eaa94c5-128b-4835-bb08-3111bb6564c7
        createdByNetworkIdName:
          type: string
          description: Name of network profile that created ticket
          example: Network id name
        canceledByNetworkIdName:
          type: string
          description: Name of network profile that canceled ticket
          example: Network id name
        createdAt:
          format: date-time
          type: string
          description: Date and time at which the ticket is created.
          example: '2023-03-01T11:23:00Z'
        updatedAt:
          format: date-time
          type: string
          description: Date and time of last ticket update.
          example: '2023-03-01T11:23:00Z'
        canceledByMe:
          type: boolean
        createdByMe:
          type: boolean
      required:
        - id
        - type
        - status
        - createdByNetworkId
        - createdByNetworkIdName
        - createdAt
        - updatedAt
    SmartTransferTicketFilteredResponse:
      type: object
      properties:
        message:
          type: string
          description: Result message
          example: Success
          nullable: true
        after:
          type: string
          description: Unique id of next filtered result
          example: 118320d2-761f-46c7-96cf-65e71a370b36
        data:
          description: Result that match given query criteria
          type: array
          items:
            $ref: '#/components/schemas/SmartTransferTicket'
      required:
        - message
        - after
        - data
    SmartTransferForbiddenResponse:
      type: object
      properties:
        message:
          type: string
          description: Forbidden error code
          example: You do not have permission to execute this action
        code:
          type: string
          description: Error code
          example: 3002
      required:
        - message
        - code
    SmartTransferCreateTicketTerm:
      type: object
      properties:
        asset:
          type: string
          description: Asset name
          example: BTC
          x-fb-entity: asset
        amount:
          type: string
          description: Amount
          example: '133.789161216184'
        fromNetworkId:
          type: string
          description: Identifier of the origination Network Profile
          example: 947c6115-1f5f-4fb4-9fd6-a1f9dee14670
        toNetworkId:
          type: string
          description: Identifier of the destination Network Profile
          example: 5d009697-c29b-48e0-aff8-1f4305d19dc2
      required:
        - asset
        - amount
        - fromNetworkId
        - toNetworkId
    SmartTransferCreateTicket:
      type: object
      properties:
        createdByNetworkId:
          type: string
        type:
          type: string
          enum:
            - ASYNC
            - DVP
        expiresIn:
          type: number
          minimum: 1
          maximum: 48
          description: Number of hours after which an OPEN ticket will expire if no term is funded.
        terms:
          type: array
          items:
            $ref: '#/components/schemas/SmartTransferCreateTicketTerm'
        externalRefId:
          type: string
          maxLength: 64
        note:
          type: string
          maxLength: 1024
        submit:
          type: boolean
      required:
        - createdByNetworkId
        - type
    SmartTransferTicketResponse:
      type: object
      properties:
        message:
          type: string
          description: Result message
          example: Success
          nullable: true
        data:
          $ref: '#/components/schemas/SmartTransferTicket'
      required:
        - message
    SmartTransferBadRequestResponse:
      type: object
      properties:
        message:
          type: string
          description: Bad request error message
          example: Your request contains invalid data
        code:
          type: string
          description: Bad request error code
          example: 2e7a7a5d-c85c-4ea5-9adf-668cba8b4eb4
      required:
        - message
        - code
    SmartTransferNotFoundResponse:
      type: object
      properties:
        message:
          type: string
          description: Not found error message
          example: Requested entity not found
        code:
          type: string
          description: Error code
          example: c943bdb8-ada0-4ba6-8645-74fcf188a10f
      required:
        - message
        - code
    SmartTransferSetTicketExpiration:
      type: object
      properties:
        expiresIn:
          type: number
          description: Sets ticket expiration time (in hours) after a ticket is submitted. If no funding source is set to any term, the ticket will automatically expire after given time.
          minimum: 1
          maximum: 48
      required:
        - expiresIn
    SmartTransferSetTicketExternalId:
      type: object
      properties:
        externalRefId:
          type: string
          minLength: 5
          maxLength: 64
          description: Each workspace can set their own external id they want to refer to this Ticket
      required:
        - externalRefId
    SmartTransferSubmitTicket:
      type: object
      properties:
        expiresIn:
          type: number
          description: Sets the ticket expiration time (in hours) after the ticket is submitted. If no funding source is set for any term, the ticket will automatically expire after given time. If expiresIn is not sent ticket will not expire.
          minimum: 1
          maximum: 48
    SmartTransferFundDvpTicket:
      type: object
      properties:
        fee:
          type: string
          description: Transaction fee
          example: '0.001'
        feeLevel:
          type: string
          enum:
            - LOW
            - MEDIUM
            - HIGH
          description: Transaction fee level.
          example: MEDIUM
        note:
          type: string
          description: Transaction note
          example: Transaction note
    SmartTransferTicketTermResponse:
      type: object
      properties:
        message:
          type: string
          description: Result message
          example: Success
          nullable: true
        data:
          $ref: '#/components/schemas/SmartTransferTicketTerm'
      required:
        - message
    SmartTransferUpdateTicketTerm:
      type: object
      properties:
        asset:
          type: string
          description: Asset name
          example: BTC
          x-fb-entity: asset
        amount:
          type: string
          description: Amount
          example: '133.789161216184'
        fromNetworkId:
          type: string
          description: Identifier of the origination Network Profile
          example: 947c6115-1f5f-4fb4-9fd6-a1f9dee14670
        toNetworkId:
          type: string
          description: Identifier of the destination Network Profile
          example: 5d009697-c29b-48e0-aff8-1f4305d19dc2
      required:
        - asset
        - amount
        - fromNetworkId
        - toNetworkId
    SmartTransferFundTerm:
      type: object
      properties:
        asset:
          type: string
          description: Asset name
          example: BTC
          x-fb-entity: asset
        amount:
          type: string
          description: Amount
          example: '133.789161216184'
        networkConnectionId:
          type: string
          description: Id of the network connection used.
          example: 0805153d-e77d-4f9b-8818-e507eeb2d122
        srcId:
          type: string
          description: Id of the vault that is used as the source of the asset.
          example: '2'
        srcType:
          type: string
          description: Source of the asset.
          example: VAULT_ACCOUNT
        fee:
          type: string
          description: Transaction fee
          example: '0.001'
        feeLevel:
          type: string
          description: Transaction fee level.
          example: MEDIUM
        note:
          type: string
          description: Transaction note
          example: Transaction note
      required:
        - asset
        - amount
        - networkConnectionId
        - srcId
        - srcType
    SmartTransferApproveTerm:
      type: object
      properties:
        asset:
          type: string
          description: Asset name
          example: USDC
          x-fb-entity: asset
        amount:
          type: string
          description: Amount
          example: '133.789161216184'
        srcId:
          type: string
          description: Id of the vault that is used as the source of the asset.
          example: '2'
        fee:
          type: string
          description: Transaction fee
          example: '0.001'
        feeLevel:
          type: string
          enum:
            - LOW
            - MEDIUM
            - HIGH
          description: Transaction fee level.
          example: MEDIUM
        note:
          type: string
          description: Transaction note
          example: Transaction note
      required:
        - asset
        - amount
        - srcId
    SmartTransferManuallyFundTerm:
      type: object
      properties:
        txHash:
          type: string
          maxLength: 64
      required:
        - txHash
    SmartTransferUserGroups:
      type: object
      description: Data object with result data
      nullable: true
      properties:
        userGroupIds:
          description: Data object with result data
          nullable: true
          type: array
          items:
            type: string
      required:
        - userGroupIds
    SmartTransferUserGroupsResponse:
      type: object
      properties:
        message:
          type: string
          description: Result message
          example: Success
          nullable: true
        data:
          $ref: '#/components/schemas/SmartTransferUserGroups'
      required:
        - message
    SmartTransferSetUserGroups:
      type: object
      properties:
        userGroupIds:
          type: array
          items:
            type: string
      required:
        - userGroupIds
    SmartTransferCoinStatistic:
      type: object
      description: Smart transfer coin statistic
      properties:
        asset:
          type: string
          example: BTC
        amount:
          type: string
          example: 15
    SmartTransferStatistic:
      type: object
      description: Smart transfers statistic
      properties:
        inflow:
          type: object
          description: Inflow tickets data
          properties:
            coins:
              type: array
              items:
                $ref: '#/components/schemas/SmartTransferCoinStatistic'
            ticketCount:
              type: integer
              example: 4
        outflow:
          type: object
          description: Outflow tickets data
          properties:
            coins:
              type: array
              items:
                $ref: '#/components/schemas/SmartTransferCoinStatistic'
            ticketCount:
              type: integer
              example: 4
        totalActiveTickets:
          description: Number of total active tickets
          type: integer
          example: 5
        totalInactiveTickets:
          description: Number of total inactive tickets (expired, canceled, completed)
          type: integer
          example: 5
      required:
        - inflow
        - outflow
        - totalActiveTickets
        - totalInactiveTickets
    TagsPagedResponse:
      type: object
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/Tag'
        next:
          type: string
          description: Cursor to the next page
          example: MjAyNS0wNy0wOSAxMDo1MzoxMy40NTI=:NA==
          nullable: true
      required:
        - data
        - next
    CreateTagRequest:
      type: object
      properties:
        label:
          type: string
          description: The tag label
          minLength: 2
          maxLength: 30
          example: VIP
        description:
          type: string
          description: Description for the tag
          maxLength: 250
          example: Tag for VIP customers
        color:
          type: string
          description: The tag color in hex format
          example: '#FF5733'
        isProtected:
          type: boolean
          description: Indication if the tag is protected tag
          default: false
        type:
          $ref: '#/components/schemas/TagType'
      required:
        - label
    UpdateTagRequest:
      type: object
      properties:
        label:
          type: string
          description: The tag label
          example: VIP
        description:
          type: string
          description: Description for the tag
          example: Tag for VIP customers
        color:
          type: string
          description: The tag color in hex format
          example: '#FF5733'
    VersionSummary:
      type: object
      properties:
        hash:
          type: string
          description: The version hash of the cosigner
          example: a1b2c3d4e5
        name:
          type: string
          description: The name of the version
          example: 1.0.0 (December 2025)
      required:
        - hash
    Cosigner:
      type: object
      properties:
        archived:
          type: boolean
          description: Whether the cosigner is archived
          example: false
        id:
          type: string
          description: The unique identifier of the cosigner
          example: 44fcead0-7053-4831-a53a-df7fb90d440f
          format: uuid
        name:
          type: string
          description: The name of the cosigner
          example: My Cosigner 1
        type:
          enum:
            - SANDBOX
            - SGX
            - GCP-CONFSPACE
            - AWS-NITRO
            - PLAIN
          type: string
          description: The type of the cosigner
          example: SGX
        version:
          $ref: '#/components/schemas/VersionSummary'
      required:
        - archived
        - id
    CosignersPaginatedResponse:
      type: object
      properties:
        data:
          type: array
          description: The data of the current page
          items:
            $ref: '#/components/schemas/Cosigner'
        next:
          type: string
          description: The ID of the next page
          example: eJ0eXAiOiJKV1QiLCJhbGcOiJIUzI1NiJ9
          nullable: true
      required:
        - data
    AddCosignerRequest:
      type: object
      properties:
        apiKeyId:
          type: string
          description: The id of the API key to be paired with the cosigner
          example: 123e4567-e89b-12d3-a456-426614174000
          format: uuid
        name:
          type: string
          description: The name of the cosigner
          example: My Cosigner 1
          minLength: 1
        existingCosigner:
          type: boolean
          description: Whether the cosigner already exists in another workspace
          default: false
          example: false
      required:
        - apiKeyId
        - name
    AddCosignerResponse:
      type: object
      properties:
        apiKeyId:
          type: string
          description: The id of the API key to be paired with the cosigner
          example: 123e4567-e89b-12d3-a456-426614174000
          format: uuid
        name:
          type: string
          description: The name of the cosigner
          example: My Cosigner 1
          minLength: 1
        existingCosigner:
          type: boolean
          description: Whether the cosigner already exists in another workspace
          default: false
          example: false
        pendingCosignerId:
          type: string
          description: The unique identifier of a pending cosigner
          example: 44fcead0-7053-4831-a53a-df7fb90d440f
          format: uuid
      required:
        - apiKeyId
        - name
        - pendingCosignerId
    RenameCosigner:
      type: object
      properties:
        name:
          type: string
          description: The new name of the cosigner
          example: My Cosigner 1
    CallbackHandler:
      type: object
      properties:
        url:
          type: string
          description: The callback handler's URL
          example: https://example.com/callback-handler
        publicKey:
          type: string
          description: The callback handler's public key
          example: |-
            -----BEGIN PUBLIC KEY-----
            ... truncated ...
            -----END PUBLIC KEY-----
        certPublicKeyHash:
          type: string
          description: A hashed representation of the public key of the callback handler's certificate
      required:
        - url
    ApiKey:
      type: object
      properties:
        id:
          type: string
          description: The unique identifier of the API key
          example: 44fcead0-7053-4831-a53a-df7fb90d440f
          format: uuid
        lastSeen:
          format: date-time
          type: string
          description: The date the API key was last seen
          example: '2021-07-01T00:00:00.000Z'
        callbackHandler:
          $ref: '#/components/schemas/CallbackHandler'
      required:
        - id
    ApiKeysPaginatedResponse:
      type: object
      properties:
        data:
          type: array
          description: The data of the current page
          items:
            $ref: '#/components/schemas/ApiKey'
        next:
          type: string
          description: The ID of the next page
          example: eJ0eXAiOiJKV1QiLCJhbGcOiJIUzI1NiJ9
          nullable: true
      required:
        - data
    CallbackHandlerRequest:
      type: object
      properties:
        url:
          type: string
          description: The callback handler's URL
          example: https://example.com/callback-handler
        publicKey:
          type: string
          description: The callback handler's public key
          example: |-
            -----BEGIN PUBLIC KEY-----
            ... truncated ...-----END PUBLIC KEY-----
        cert:
          type: string
          description: The callback handler's certificate
          example: |-
            -----BEGIN CERTIFICATE-----
            ... truncated ...
            -----END CERTIFICATE-----
      required:
        - url
    PairApiKeyRequest:
      type: object
      properties:
        callbackHandler:
          $ref: '#/components/schemas/CallbackHandlerRequest'
    PairApiKeyResponse:
      type: object
      properties:
        id:
          type: string
          description: The unique identifier of the API key
          example: 44fcead0-7053-4831-a53a-df7fb90d440f
          format: uuid
        callbackHandler:
          $ref: '#/components/schemas/CallbackHandlerRequest'
      required:
        - id
    UpdateCallbackHandlerRequest:
      type: object
      properties:
        callbackHandler:
          $ref: '#/components/schemas/CallbackHandlerRequest'
    UpdateCallbackHandlerResponse:
      type: object
      properties:
        id:
          type: string
          description: The unique identifier of the API key
          example: 44fcead0-7053-4831-a53a-df7fb90d440f
          format: uuid
        callbackHandler:
          $ref: '#/components/schemas/CallbackHandlerRequest'
      required:
        - id
    Status:
      type: object
      properties:
        status:
          type: string
          description: The status of the command
          enum:
            - WAITING_FOR_APPROVAL
            - APPROVED
            - CANCELLED
            - REJECTED
            - COMPLETED
          example: COMPLETED
        type:
          type: string
          description: The type of the command
          enum:
            - PAIR_API_KEY
            - UPDATE_CALLBACK_HANDLER
            - UNPAIR_API_KEY
          example: PAIR_API_KEY
      required:
        - status
        - type
    UtxoInput-2:
      type: object
      properties:
        txHash:
          type: string
          description: The transaction hash
          example: b34f0c3ce612f1e5a5c19d6b1e6b5e3e7f1a2b3c4d5e6f7a8b9c0d1e2f3a4b5c
        index:
          type: integer
          description: The output index (vout)
          example: 0
    UtxoOutput:
      type: object
      required:
        - input
        - utxoId
        - address
        - amount
        - status
      properties:
        input:
          $ref: '#/components/schemas/UtxoInput-2'
        utxoId:
          type: string
          description: The unique UTXO identifier
          example: '123456'
        address:
          type: string
          description: The address holding this UTXO
          example: 1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa
        amount:
          type: string
          description: The UTXO amount in the asset's native unit
          example: '0.00150000'
        confirmations:
          type: integer
          description: Number of confirmations
          example: 6
        status:
          type: string
          description: The UTXO status
          example: AVAILABLE
          enum:
            - PENDING
            - AVAILABLE
            - FROZEN
            - SELECTED
        isChange:
          type: boolean
          description: Whether this is a change output
          example: false
        isCoinbase:
          type: boolean
          description: Whether this is a coinbase output
          example: false
        fbTxId:
          type: string
          description: The Fireblocks transaction ID that created this UTXO
          example: b70701f4-d7b1-4795-a8ee-b09cdb5b850e
        createdByHash:
          type: string
          description: The on-chain block hash where this UTXO was created
          example: 000000000000000000024bead8df69990852c202db0e0097c1a12ea637d7e96d
        spentByFbTxId:
          type: array
          description: Fireblocks transaction IDs that selected/spent this UTXO
          example:
            - b70701f4-d7b1-4795-a8ee-b09cdb5b850e
          items:
            type: string
        createdByHeight:
          type: integer
          description: The block height at which this UTXO was created
          example: 800100
        createdAt:
          type: string
          format: date-time
          description: The timestamp when this UTXO was created
          example: '2025-01-16T15:45:00Z'
        updatedAt:
          type: string
          format: date-time
          description: The timestamp when this UTXO was last updated
          example: '2025-01-16T15:45:00Z'
        labels:
          type: array
          description: Labels attached to this UTXO
          example:
            - cold-storage
            - vip
          items:
            type: string
    ListUtxosResponse:
      type: object
      properties:
        data:
          type: array
          description: List of UTXOs
          items:
            $ref: '#/components/schemas/UtxoOutput'
        next:
          type: string
          description: Cursor to the next page
          example: MjAyNS0wNy0wOSAxMDo1MzoxMy40NTI=:NA==
          nullable: true
      required:
        - data
    UtxoIdentifier:
      type: object
      description: |-
        Identifies a UTXO by either a Fireblocks transaction ID (targets all outputs of that transaction)
        or a specific on-chain UTXO (txHash + index). Exactly one of these two forms must be provided.
      properties:
        txId:
          type: string
          description: Fireblocks transaction ID
          example: b70701f4-d7b1-4795-a8ee-b09cdb5b850e
        txHash:
          type: string
          description: On-chain transaction hash
          example: b34f0c3ce612f1e5a5c19d6b1e6b5e3e7f1a2b3c4d5e6f7a8b9c0d1e2f3a4b5c
        index:
          type: integer
          description: Output index (vout)
          example: 0
    AttachDetachUtxoLabelsRequest:
      type: object
      properties:
        utxoIdentifiers:
          description: List of UTXO identifiers to apply label changes to
          type: array
          minItems: 1
          maxItems: 200
          items:
            $ref: '#/components/schemas/UtxoIdentifier'
        labelsToAttach:
          description: Labels to attach to the specified UTXOs. At least one of labelsToAttach or labelsToDetach must be provided.
          example:
            - cold-storage
            - vip
          type: array
          minItems: 1
          maxItems: 5
          items:
            type: string
            maxLength: 30
        labelsToDetach:
          description: Labels to detach from the specified UTXOs. At least one of labelsToAttach or labelsToDetach must be provided.
          example:
            - deprecated
          type: array
          minItems: 1
          maxItems: 5
          items:
            type: string
            maxLength: 30
      required:
        - utxoIdentifiers
    AttachDetachUtxoLabelsResponse:
      type: object
      properties:
        utxos:
          type: array
          description: Modified UTXOs with updated labels
          items:
            $ref: '#/components/schemas/UtxoOutput'
    LeiStatus:
      type: string
      description: Approval status of a legal entity registration
      enum:
        - PENDING
        - APPROVED
        - DENIED
        - REVOKED
    TravelRuleProvider:
      type: string
      description: Travel rule compliance provider
      enum:
        - CODE
        - GTR
        - MY_OWN
        - NOTABENE
        - SYGNA
        - SUMSUB
        - TRISA
        - TRUST
        - TWENTY_ONE_ANALYTICS
        - VERIFY_VASP
    GleifOtherLegalEntityName:
      type: object
      properties:
        name:
          type: string
          description: Alternative name of the legal entity
          example: ExCorp
        language:
          type: string
          description: Two-letter ISO 639-1 language code
          example: en
      required:
        - name
        - language
    GleifData:
      type: object
      description: GLEIF (Global Legal Entity Identifier Foundation) data for a legal entity
      properties:
        lei:
          type: string
          description: Legal Entity Identifier (LEI) code
          example: 529900HNOAA1KXQJUQ27
        legalName:
          type: string
          description: Official legal name of the entity
          example: Example Corporation Ltd.
        legalNameLanguage:
          type: string
          description: Two-letter ISO 639-1 language code
          example: en
          minLength: 2
          maxLength: 2
        otherNames:
          type: array
          minItems: 0
          maxItems: 20
          items:
            $ref: '#/components/schemas/GleifOtherLegalEntityName'
          description: Alternative names for the entity
          example:
            - name: ExCorp
              language: en
            - name: Example Corp
              language: en
        legalAddressRegion:
          type: string
          description: Region or state of the legal address
          example: NY
        legalAddressCountry:
          type: string
          description: Country code of the legal address (ISO 3166-1 alpha-2)
          example: US
        nextRenewalDate:
          type: string
          format: date-time
          description: Date when the LEI registration must be renewed
          example: '2025-12-31T00:00:00Z'
      required:
        - lei
        - legalName
        - legalAddressCountry
    LegalEntityRegistration:
      type: object
      description: Legal entity registration record
      properties:
        id:
          type: string
          format: uuid
          description: Unique registration identifier
          example: 550e8400-e29b-41d4-a716-446655440000
        lei:
          type: string
          description: Legal Entity Identifier (LEI) code
          example: 529900HNOAA1KXQJUQ27
        status:
          $ref: '#/components/schemas/LeiStatus'
        isDefault:
          type: boolean
          description: Whether this is the default legal entity for the workspace
          example: false
        travelRuleProviders:
          type: array
          minItems: 0
          maxItems: 20
          items:
            $ref: '#/components/schemas/TravelRuleProvider'
          description: Travel rule providers configured for this registration
          example:
            - MY_OWN
        travelRuleContactEmail:
          type: string
          format: email
          description: Contact email for travel rule communications
          example: compliance@example.com
        gleifData:
          $ref: '#/components/schemas/GleifData'
        createdAt:
          type: string
          description: Creation timestamp in milliseconds since epoch
          example: '1700000000000'
        updatedAt:
          type: string
          description: Last update timestamp in milliseconds since epoch
          example: '1700000000000'
      required:
        - id
        - lei
        - tenantId
        - status
        - isDefault
        - travelRuleProviders
        - createdAt
        - updatedAt
    ListLegalEntitiesResponse:
      type: object
      description: Paginated response containing a list of legal entity registrations
      properties:
        total:
          type: integer
          description: Total number of legal entity registrations (optional)
          example: 5
        data:
          type: array
          items:
            $ref: '#/components/schemas/LegalEntityRegistration'
          description: Legal entity registrations for the current page
        next:
          type: string
          description: Cursor to pass as `pageCursor` to retrieve the next page
          example: eyJpZCI6IjEyMyJ9
      required:
        - data
    RegisterLegalEntityRequest:
      type: object
      description: Request body to register a new legal entity
      properties:
        lei:
          type: string
          description: Legal Entity Identifier (LEI) code to register. Must be a valid 20-character LEI present in the GLEIF registry.
          example: 529900HNOAA1KXQJUQ27
        travelRuleProviders:
          type: array
          items:
            $ref: '#/components/schemas/TravelRuleProvider'
          description: Travel rule providers to associate with this registration
          example:
            - MY_OWN
        travelRuleContactEmail:
          type: string
          format: email
          description: Contact email for travel rule communications
          example: compliance@example.com
      required:
        - lei
    UpdateLegalEntityRequest:
      type: object
      required:
        - isDefault
      properties:
        isDefault:
          type: boolean
          description: Whether to set this registration as the workspace default
    ListVaultsForRegistrationResponse:
      type: object
      description: Response containing vault account IDs assigned to a legal entity registration
      properties:
        total:
          type: integer
          description: Total number of legal entity registrations (optional)
          example: 5
        data:
          type: array
          items:
            type: string
          description: List of vault account IDs assigned to the legal entity registration
          example:
            - '23'
            - '12'
            - '1'
        next:
          type: string
          description: Cursor to pass as `pageCursor` to retrieve the next page
          example: eyJpZCI6IjEyMyJ9
      required:
        - data
    AssignVaultsToLegalEntityRequest:
      type: object
      description: Request body to assign vault accounts to a legal entity
      properties:
        vaultAccountIds:
          type: array
          items:
            type: string
          description: List of vault account IDs to assign to the legal entity
          minItems: 1
          example:
            - '0'
            - '1'
            - '2'
      required:
        - vaultAccountIds
    AssignVaultsToLegalEntityResponse:
      type: object
      description: Response after assigning vault accounts to a legal entity
      properties:
        assignedCount:
          type: integer
          description: Number of vault accounts successfully assigned
          example: 3
      required:
        - assignedCount
    GenieCreateSessionResponse:
      type: object
      required:
        - id
      properties:
        id:
          type: string
          description: The unique identifier of the newly created Genie session. Use this when sending messages in the conversation.
          example: 7c1b2e1c-1c2a-4f3a-9c2d-2e0a8a1f8e1a
        createdAt:
          type: integer
          format: int64
          description: Session creation timestamp in epoch milliseconds.
          example: 1735603200000
        title:
          type: string
          description: Session title. May be empty until the first message has been processed.
          example: Vault balance overview
    GenieSendMessageRequest:
      type: object
      required:
        - content
      properties:
        content:
          type: string
          description: The natural-language question or instruction to send to Genie.
          example: What is the latest balance on my BTC vault?
    GenieChatMessage:
      type: object
      required:
        - id
        - sessionId
        - role
        - content
      properties:
        id:
          type: string
          description: The unique identifier of the message.
          example: 0a237534-399f-4487-a869-72567b71511a
        sessionId:
          type: string
          description: The Genie session this message belongs to.
          example: 7c1b2e1c-1c2a-4f3a-9c2d-2e0a8a1f8e1a
        role:
          type: string
          description: Who produced the message — `USER` for the customer-supplied query, `ASSISTANT` for the Genie response.
          example: ASSISTANT
        content:
          type: string
          description: The natural-language body of the message.
          example: The latest balance on the BTC vault is 0.4231 BTC.
        createdAt:
          type: integer
          format: int64
          description: Message creation timestamp in epoch milliseconds.
          example: 1735603200000
    ReportStatus:
      type: string
      enum:
        - QUEUED
        - PROCESSING
        - COMPLETED
        - FAILED
      description: The current lifecycle state of a report job
      example: QUEUED
    ReportType:
      type: string
      enum:
        - ADDRESSES
      description: The type of report to generate
      example: ADDRESSES
    ReportOutputFormat:
      type: string
      enum:
        - CSV
      description: The output file format of the report
      example: CSV
    ReportJob:
      type: object
      description: 'A report job. Optional fields are status-dependent: `completedAt`, `rowCount`, and `fileSizeBytes` are present only when `status` is `COMPLETED`; `failedAt` is present only when `status` is `FAILED`.'
      required:
        - id
        - status
        - reportType
        - outputFormat
        - compress
        - requestedByUserId
        - createdAt
      properties:
        id:
          type: string
          description: Unique identifier of the report job
          example: 0190b3c2-7e4a-7c31-9f2a-1b6d8e5a0c11
        status:
          $ref: '#/components/schemas/ReportStatus'
        reportType:
          $ref: '#/components/schemas/ReportType'
        outputFormat:
          $ref: '#/components/schemas/ReportOutputFormat'
        compress:
          type: boolean
          description: Whether the output file is gzip-compressed
          example: true
        requestedByUserId:
          type: string
          description: ID of the user who requested the report
          example: 44fcead0-7053-4831-a53a-df7fb90d440f
        createdAt:
          type: integer
          format: int64
          description: Epoch milliseconds (UTC) when the job was created
          example: 1717190000000
        completedAt:
          type: integer
          format: int64
          description: Epoch milliseconds (UTC) when the report completed. Only present when `status` is `COMPLETED`.
          example: 1717191800000
        failedAt:
          type: integer
          format: int64
          description: Epoch milliseconds (UTC) when the report failed. Only present when `status` is `FAILED`.
          example: 1717191500000
        rowCount:
          type: integer
          description: Number of rows in the report file. Only present when `status` is `COMPLETED`.
          example: 42500
        fileSizeBytes:
          type: integer
          format: int64
          description: Size of the report file in bytes (includes compression when `compress` is `true`). Only present when `status` is `COMPLETED`.
          example: 1048576
    ReportListResponse:
      type: object
      description: Paginated list of report jobs. Download URLs are not included in list items — call `GET /v1/reports/{reportId}` to retrieve the download URL for a specific completed report.
      required:
        - data
        - next
        - prev
      properties:
        data:
          type: array
          description: Page of report jobs
          example: []
          items:
            $ref: '#/components/schemas/ReportJob'
        next:
          type: string
          description: Opaque cursor for the next page. Null on the last page.
          nullable: true
          example: eJ0eXAiOiJKV1QiLCJhbGcOiJIUzI1NiJ9
        prev:
          type: string
          description: Opaque cursor for the previous page. Null on the first page.
          nullable: true
          example: eJ0eXAiOiJKV1QiLCJhbGcOiJIUzI1NiJ9
    AddressesFilters:
      type: object
      description: Filter options for the `addresses` report type.
      additionalProperties: false
      properties:
        vaultAccountIds:
          type: array
          description: Restrict to the listed vault account IDs. Max 1000 items. Pass a single ID as a one-element array.
          items:
            type: string
          maxItems: 1000
          example:
            - '1'
            - '2'
        assets:
          type: array
          description: Filter by asset symbol (e.g., BTC, ETH). Max 1000 items. Pass a single symbol as a one-element array.
          items:
            type: string
          maxItems: 1000
          example:
            - BTC
            - ETH
    CreateAddressesReportRequest:
      type: object
      description: Request body for creating a new ADDRESSES report job
      required:
        - reportType
        - outputFormat
      properties:
        reportType:
          type: string
          description: The type of report to generate.
          enum:
            - ADDRESSES
          example: ADDRESSES
        outputFormat:
          $ref: '#/components/schemas/ReportOutputFormat'
        compress:
          type: boolean
          description: Gzip the output file. Defaults to true.
          default: false
          example: true
        filters:
          $ref: '#/components/schemas/AddressesFilters'
    CreateReportRequest:
      description: Request body for creating a new asynchronous report job
      discriminator:
        propertyName: reportType
        mapping:
          ADDRESSES: '#/components/schemas/CreateAddressesReportRequest'
      oneOf:
        - $ref: '#/components/schemas/CreateAddressesReportRequest'
    CreateReportResponse:
      type: object
      description: Returned when a report job is successfully created. Use the `id` to poll for status via `GET /v1/reports/{reportId}`.
      required:
        - id
      properties:
        id:
          type: string
          description: Unique identifier of the report job
          example: 0190b3c2-7e4a-7c31-9f2a-1b6d8e5a0c11
    ReportConflictResponse:
      type: object
      description: Returned when a report with the same type and filters is already being processed for your workspace
      required:
        - errorCode
        - name
        - id
      properties:
        errorCode:
          type: integer
          description: Fireblocks error code for this conflict
          example: 12005
        name:
          type: string
          description: Error name
          example: REPORT_ALREADY_IN_FLIGHT
        id:
          type: string
          description: The ID of the report currently being processed. Use this ID to poll for status.
          example: 0190b3c2-7e4a-7c31-9f2a-1b6d8e5a0c11
    ReportJobLinks:
      type: object
      description: Download URL for the report. Present only when `status` is `COMPLETED`, and only on `GET /v1/reports/{reportId}` — not included in list responses.
      required:
        - downloadUrl
        - downloadUrlExpiresAt
      properties:
        downloadUrl:
          type: string
          description: URL to download the report file. A new URL is generated on each request to `GET /v1/reports/{reportId}` while `status` is `COMPLETED`. Re-poll to obtain a fresh URL after the previous one expires (approximately 1 hour).
          example: https://s3.amazonaws.com/fireblocks-reports/report-0190b3c2.csv.gz?X-Amz-Expires=3600&...
        downloadUrlExpiresAt:
          type: integer
          format: int64
          description: Epoch milliseconds (UTC) when the download URL expires
          example: 1717200000000
    ReportJobResponse:
      type: object
      description: 'A report job. Optional fields are status-dependent: `completedAt`, `rowCount`, `fileSizeBytes`, and `links` are present only when `status` is `COMPLETED`; `failedAt` is present only when `status` is `FAILED`.'
      required:
        - id
        - status
        - reportType
        - outputFormat
        - compress
        - requestedByUserId
        - createdAt
      properties:
        id:
          type: string
          description: Unique identifier of the report job
          example: 0190b3c2-7e4a-7c31-9f2a-1b6d8e5a0c11
        status:
          $ref: '#/components/schemas/ReportStatus'
        reportType:
          $ref: '#/components/schemas/ReportType'
        outputFormat:
          $ref: '#/components/schemas/ReportOutputFormat'
        compress:
          type: boolean
          description: Whether the output file is gzip-compressed
          example: true
        requestedByUserId:
          type: string
          description: ID of the user who requested the report
          example: 44fcead0-7053-4831-a53a-df7fb90d440f
        createdAt:
          type: integer
          format: int64
          description: Epoch milliseconds (UTC) when the job was created
          example: 1717190000000
        completedAt:
          type: integer
          format: int64
          description: Epoch milliseconds (UTC) when the report completed. Only present when `status` is `COMPLETED`.
          example: 1717191800000
        failedAt:
          type: integer
          format: int64
          description: Epoch milliseconds (UTC) when the report failed. Only present when `status` is `FAILED`.
          example: 1717191500000
        rowCount:
          type: integer
          description: Number of rows in the report file. Only present when `status` is `COMPLETED`.
          example: 42500
        fileSizeBytes:
          type: integer
          format: int64
          description: Size of the report file in bytes (includes compression when `compress` is `true`). Only present when `status` is `COMPLETED`.
          example: 1048576
        links:
          $ref: '#/components/schemas/ReportJobLinks'
  responses:
    Error:
      description: Error Response
      headers:
        X-Request-ID:
          $ref: '#/components/headers/X-Request-ID'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorSchema'
    BadRequestError:
      description: Bad request, invalid input data or parameters
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          example:
            error:
              type: VALIDATION
              message: Invalid input data or parameters
    OriginalTokenLinkNotFoundError:
      description: Token link not found
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          example:
            error:
              type: NOT_FOUND
              message: The specified token link was not found
    TokenLinkPreparationError:
      description: Token link preparation error
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          example:
            error:
              type: UNPROCESSABLE_ENTITY
              message: An error occurred during token link preparation
    OriginalTokenLinkNotFungibleError:
      description: Token link is not fungible
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          example:
            error:
              type: UNPROCESSABLE_ENTITY
              message: The token link is not of fungible type
    InternalServerError:
      description: Internal server error
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          example:
            error:
              type: INTERNAL
              message: An unexpected error occurred during execution. Please try again later.
    TokenLinkProcessingError:
      description: Token link processing error
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          example:
            error:
              type: UNPROCESSABLE_ENTITY
              message: An error occurred during token link processing
    BridgingProtocolBlockchainMetadataNotFoundError:
      description: Bridging protocol blockchain metadata not found
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          example:
            error:
              type: NOT_FOUND
              message: Bridging to the specified blockchain is not supported
  parameters:
    X-Idempotency-Key:
      name: Idempotency-Key
      in: header
      description: A unique identifier for the request. If the request is sent multiple times with the same idempotency key, the server will return the same response as the first request. The idempotency key is valid for 24 hours.
      required: false
      schema:
        type: string
    X-End-User-Wallet-Id_required:
      name: X-End-User-Wallet-Id
      in: header
      description: Unique ID of the End-User wallet to the API request. Required for end-user wallet operations.
      required: true
      schema:
        type: string
        format: uuid
    X-End-User-Wallet-Id:
      name: X-End-User-Wallet-Id
      in: header
      description: Unique ID of the End-User wallet to the API request. Required for end-user wallet operations.
      required: false
      schema:
        type: string
        format: uuid
    TokenPageCursor:
      name: pageCursor
      in: query
      description: Page cursor to get the next page
      example: MjAyMy0xMi0xMyAyMDozNjowOC4zMDI=:MTEwMA==
      schema:
        type: string
      required: false
    TokenPageSize:
      name: pageSize
      in: query
      description: Number of items per page (max 100), requesting more than 100 will return 100 items
      example: 10
      schema:
        type: integer
        minimum: 1
        maximum: 100
      required: false
    TokenOrder:
      name: order
      in: query
      description: ASC / DESC ordering (default DESC)
      required: false
      schema:
        type: string
        enum:
          - ASC
          - DESC
        default: DESC
    TokenStartDate:
      name: startDate
      in: query
      description: Start date of the time range in ISO 8601 format
      example: '2025-01-16T15:45:00Z'
      schema:
        type: string
        format: date-time
      required: false
    TokenEndDate:
      name: endDate
      in: query
      description: End date of the time range in ISO 8601 format
      example: '2025-01-16T15:45:00Z'
      schema:
        type: string
        format: date-time
      required: false
    TokenInterval:
      name: interval
      in: query
      description: Time interval for grouping data
      example: DAY
      schema:
        type: string
        enum:
          - HOUR
          - DAY
          - WEEK
          - MONTH
        default: DAY
      required: false
    TokenSortByTimestamp:
      name: sortBy
      in: query
      description: Sorting field (enum). Sorting only supported by 'blockTimestamp'
      required: false
      schema:
        type: string
        enum:
          - blockTimestamp
        default: blockTimestamp
    TokenBalancesSortBy:
      name: sortBy
      in: query
      description: Sorting field for balances
      required: false
      schema:
        type: string
        enum:
          - accountAddress
          - blockTimestamp
        default: blockTimestamp
    TokenAccountAddress:
      name: accountAddress
      in: path
      required: true
      description: The account address to get balance history for
      schema:
        type: string
        example: '0x1234567890abcdef1234567890abcdef12345678'
    BaseAssetId:
      name: baseAssetId
      in: path
      description: The blockchain base assetId
      example: ETH_TEST3
      schema:
        type: string
      required: true
    ContractAddress:
      name: contractAddress
      in: path
      description: The contract address
      example: '0xC2c4e1Db41F0bB97996D0eD0542D2170d146FB66'
      schema:
        type: string
      required: true
    AccessRegistryAddress:
      name: accessRegistryAddress
      in: path
      description: The access registry address
      example: '0xC2c4e1Db41F0bB97996D0eD0542D2170d146FB66'
      schema:
        type: string
      required: true
    PageCursor:
      name: pageCursor
      in: query
      description: Page cursor to get the next page"
      example: MjAyMy0xMi0xMyAyMDozNjowOC4zMDI=:MTEwMA==
      schema:
        type: string
      required: false
    PageSize:
      name: pageSize
      in: query
      description: Number of items per page (max 100), requesting more then 100 will return 100 items
      example: 10
      schema:
        type: integer
        minimum: 1
        maximum: 100
      required: false
    ListAccessRegistrySortBy:
      name: sortBy
      in: query
      description: Sorting field (enum).
      required: false
      schema:
        type: string
        enum:
          - dateAdded
          - address
        default: dateAdded
    Order:
      name: order
      in: query
      description: ASC / DESC ordering (default DESC)
      required: false
      schema:
        type: string
        enum:
          - ASC
          - DESC
        default: DESC
    StartDate:
      name: startDate
      in: query
      description: Start date of the time range in ISO 8601 format
      example: '2025-01-16T15:45:00Z'
      schema:
        type: string
        format: date-time
      required: false
    EndDate:
      name: endDate
      in: query
      description: End date of the time range in ISO 8601 format
      example: '2025-01-16T15:45:00Z'
      schema:
        type: string
        format: date-time
      required: false
    TransactionsSortBy:
      name: sortBy
      in: query
      description: Sorting field (enum).
      required: false
      schema:
        type: string
        enum:
          - blockTimestamp
          - blockNumber
          - transactionHash
        default: blockTimestamp
    Interval:
      name: interval
      in: query
      description: Time interval for grouping data
      example: day
      schema:
        type: string
        enum:
          - hour
          - day
          - week
          - month
        default: day
      required: false
    SortByTimestamp:
      name: sortBy
      in: query
      description: Sorting field (enum). Sorting only supported by 'blockTimestamp'
      required: false
      schema:
        type: string
        enum:
          - blockTimestamp
        default: blockTimestamp
    AccountAddress:
      name: accountAddress
      in: path
      required: true
      description: The account address to get balance history for
      schema:
        type: string
        example: '0x1234567890abcdef1234567890abcdef12345678'
    AccountAddressQuery:
      name: accountAddress
      in: query
      description: Optional filter to get balance for a specific account address
      required: false
      schema:
        type: string
        example: '0x1234567890abcdef1234567890abcdef12345678'
    BalancesSortBy:
      name: sortBy
      in: query
      description: Sorting field for balances
      required: false
      schema:
        type: string
        enum:
          - accountAddress
          - blockTimestamp
        default: blockTimestamp
x-readme:
  explorer-enabled: false
  samples-languages:
    - curl
    - javascript
    - python
