Fireblocks Staking API

Execute and track staking operations across multiple proof-of-stake chains. Browse staking providers and validators, initiate stake / unstake / withdraw / claim-rewards actions, and query position state. Backs institutional Earn workflows for ETH, SOL, ADA, DOT, KSM, NEAR, TEZOS, MATIC, and more.

OpenAPI Specification

fireblocks-staking-api-openapi.yml Raw ↑
openapi: 3.0.0
info:
  title: Fireblocks Staking 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.8.0
  contact:
    email: [email protected]
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
security: []
paths:
  /staking/chains:
    get:
      operationId: getChains
      summary: List supported chains for Fireblocks Staking
      description: 'Return an alphabetical list of supported chains.

        </br>Endpoint Permission: Admin, Non-Signing Admin, Signer, Approver, Editor.'
      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
      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'
        default:
          $ref: '#/components/responses/Error'
      tags:
      - Staking
      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}/merge:
    post:
      operationId: mergeStakeAccounts
      summary: Merge operation on Solana stake accounts
      description: 'Perform a Solana Merge of two active stake accounts into one.

        Endpoint permissions: Admin, Non-Signing Admin, Signer, Approver, Editor.'
      parameters:
      - name: chainDescriptor
        required: true
        in: path
        description: The protocol identifier (e.g. "SOL"/"SOL_TEST") to use
        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 action has been executed successfully on vault and is associated with 201 status code.
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MergeStakeAccountsResponse'
        default:
          $ref: '#/components/responses/Error'
      tags:
      - Staking
  /staking/chains/{chainDescriptor}/chainInfo:
    get:
      operationId: getChainInfo
      summary: Get chain-specific staking summary
      description: 'Return chain-specific, staking-related information summary (e.g. epoch details, lockup durations, estimated
        rewards, etc.).

        </br>Endpoint Permission: Admin, Non-Signing Admin, Signer, Approver, Editor.'
      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
      parameters:
      - name: chainDescriptor
        required: true
        in: path
        description: The protocol identifier (e.g. "ETH"/"SOL"/"MATIC"/"STETH_ETH") to use
        example: SOL
        schema:
          $ref: '#/components/schemas/ChainDescriptor'
      responses:
        '200':
          description: Chain specific info summary was returned successfully
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ChainInfoResponse'
        default:
          $ref: '#/components/responses/Error'
      tags:
      - Staking
      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}/stake:
    post:
      operationId: stake
      summary: Initiate Stake Operation
      description: Perform a chain-specific Stake.
      parameters:
      - name: chainDescriptor
        required: true
        in: path
        description: The protocol identifier (e.g. "ETH"/"SOL"/"MATIC") to use
        example: SOL
        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 action has been executed successfully on vault and is associated with 201 status code.
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StakeResponse'
        default:
          $ref: '#/components/responses/Error'
      tags:
      - Staking
      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: Execute an Unstake operation
      description: Execute an Unstake operation
      parameters:
      - name: chainDescriptor
        required: true
        in: path
        description: The protocol identifier (e.g. "ETH"/"SOL"/"MATIC") to use
        example: SOL
        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 action has been executed successfully on vault and is associated with 201 status code.
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
        default:
          $ref: '#/components/responses/Error'
      tags:
      - Staking
      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: Execute a Withdraw operation
      description: Perform a chain-specific Withdraw.
      parameters:
      - name: chainDescriptor
        required: true
        in: path
        description: The protocol identifier (e.g. "ETH"/"SOL"/"MATIC") to use
        example: SOL
        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 action has been executed successfully on vault and is associated with 201 status code.
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
        default:
          $ref: '#/components/responses/Error'
      tags:
      - Staking
      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/chains/{chainDescriptor}/claim_rewards:
    post:
      operationId: claimRewards
      summary: Execute a Claim Rewards operation
      description: Perform a chain-specific Claim Rewards.
      parameters:
      - name: chainDescriptor
        required: true
        in: path
        description: The protocol identifier (e.g. "MATIC"/"SOL") to use
        example: MATIC
        schema:
          enum:
          - MATIC
          - SOL
          - SOL_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 action has been executed successfully on vault and is associated with 201 status code.
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
        default:
          $ref: '#/components/responses/Error'
      tags:
      - Staking
      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}/split:
    post:
      operationId: split
      summary: Execute a Split operation
      description: Perform a SOL/SOL_TEST Split on a stake account.
      parameters:
      - name: chainDescriptor
        required: true
        in: path
        description: The protocol identifier (e.g. "SOL"/"SOL_TEST") to use
        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 action has been executed successfully on vault and is associated with 201 status code.
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SplitResponse'
        default:
          $ref: '#/components/responses/Error'
      tags:
      - Staking
      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/positions:
    get:
      operationId: getAllDelegations
      summary: List staking positions details
      description: 'Return detailed information on all staking positions, including the staked amount, rewards, status and
        more.

        </br>Endpoint Permission: Admin, Non-Signing Admin, Signer, Approver, Editor.'
      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);
          name: Fireblocks SDK Java example
        - language: python
          code: response = fireblocks.staking.get_all_delegations(chain_descriptor);
          name: Fireblocks SDK Python example
      parameters:
      - name: chainDescriptor
        required: false
        in: query
        example: SOL
        description: Use "ETH" / "SOL" / "MATIC" / "STETH_ETH" in order to obtain information related to the specific blockchain
          network or retrieve information about all chains that have data available by providing no argument.
        schema:
          $ref: '#/components/schemas/ChainDescriptor'
      responses:
        '200':
          description: An array of position data was returned successfully
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StakingGetAllDelegationsResponse'
        default:
          $ref: '#/components/responses/Error'
      tags:
      - Staking
      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);
      - lang: Python
        source: response = fireblocks.staking.get_all_delegations(chain_descriptor);
  /staking/positions/summary:
    get:
      operationId: getSummary
      summary: Get staking summary details
      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
      description: 'Return a summary of all vaults, categorized by their status (active, inactive), the total amounts staked
        and total rewards per-chain.

        </br>Endpoint Permission: Admin, Non-Signing Admin, Signer, Approver, Editor.'
      responses:
        '200':
          description: A summary for all vaults were 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'
        default:
          $ref: '#/components/responses/Error'
      tags:
      - Staking
      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 staking summary details by vault
      description: 'Return a summary for each vault, categorized by their status (active, inactive), the total amounts staked
        and total rewards per-chain.

        </br>Endpoint Permission: Admin, Non-Signing Admin, Signer, Approver, Editor.'
      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
      responses:
        '200':
          description: A summary for each vault were 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'
        default:
          $ref: '#/components/responses/Error'
      tags:
      - Staking
      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/positions/{id}:
    get:
      operationId: getDelegationById
      summary: Get staking position details
      description: 'Return detailed information on a staking position, including the staked amount, rewards, status and more.

        </br>Endpoint Permission: Admin, Non-Signing Admin, Signer, Approver, Editor.'
      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
      parameters:
      - name: id
        required: true
        in: path
        description: The unique identifier of the staking position
        schema:
          type: string
          example: b70701f4-d7b1-4795-a8ee-b09cdb5b850d
      responses:
        '200':
          description: Position data was returned successfully
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Delegation'
        default:
          $ref: '#/components/responses/Error'
      tags:
      - Staking
      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/providers:
    get:
      operationId: getProviders
      summary: List staking providers details
      description: 'Return information on all the available staking providers.

        </br>Endpoint Permission: Admin, Non-Signing Admin, Signer, Approver, Editor.'
      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
      responses:
        '200':
          description: An array of supported providers was returned successfully
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StakingGetProvidersResponse'
        default:
          $ref: '#/components/responses/Error'
      tags:
      - Staking
      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 staking terms of service
      description: 'Approve the terms of service of the staking provider.

        This must be called before performing a staking action for the first time with this provider.

        </br>Endpoint Permission: Admin, Non-Signing Admin, Signer, Approver, Editor.'
      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
      parameters:
      - name: providerId
        required: true
        in: path
        description: The unique identifier of the staking provider
        example: kiln
        schema:
          $ref: '#/components/schemas/StakingProvider'
      - $ref: '#/components/parameters/X-Idempotency-Key'
      responses:
        '201':
          description: The terms of service have been successfully approved and is associated with 201 status code.
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
        default:
          $ref: '#/components/responses/Error'
      tags:
      - Staking
      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);
components:
  schemas:
    AdditionalInfo:
      type: object
      description: Additional information related to the blockchain. This may include extra details about the blockchain network.
      properties:
        estimatedAnnualReward:
          type: number
          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
    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
    ChainDescriptor:
      type: string
      enum:
      - ETH
      - SOL
      - MATIC
      - ETH_TEST6
      - SOL_TEST
    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
           

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