Rocket Pool Minipool API

The Minipool API from Rocket Pool — 7 operation(s) for minipool.

OpenAPI Specification

rocket-pool-minipool-api-openapi.yml Raw ↑
openapi: 3.0.3
info:
  title: Rocket Pool Protocol API (rocketpool-go) Auction Minipool API
  description: Read-oriented protocol surface exposed by the rocketpool-go Golang library on top of the Rocket Pool smart contracts deployed on Ethereum. The API described here is a logical mapping of rocketpool-go packages — auction, deposit, minipool, network, node, rewards, settings, tokens, dao/protocol, dao/trustednode — onto HTTP-style operations. There is no hosted HTTP endpoint for this API; integrators read the equivalent state via Ethereum JSON-RPC eth_call requests against the deployed contracts using the Go library, the rocketpool-js library, or directly via web3 clients.
  version: 1.0.0
  license:
    name: GPL-3.0
    url: https://github.com/rocket-pool/rocketpool-go/blob/master/LICENSE
  contact:
    name: Rocket Pool
    url: https://github.com/rocket-pool/rocketpool-go
servers:
- url: https://protocol.rocketpool.example/v1
  description: Logical base path — actual access is via Ethereum smart contracts
tags:
- name: Minipool
paths:
  /minipools:
    get:
      tags:
      - Minipool
      summary: List Minipools
      operationId: listMinipoolsProtocol
      parameters:
      - name: offset
        in: query
        schema:
          type: integer
      - name: limit
        in: query
        schema:
          type: integer
          maximum: 1000
      responses:
        '200':
          description: Page of minipools
          content:
            application/json:
              schema:
                type: object
                properties:
                  total:
                    type: integer
                  items:
                    type: array
                    items:
                      $ref: '#/components/schemas/MinipoolDetails'
  /minipools/{address}:
    get:
      tags:
      - Minipool
      summary: Get Minipool Details
      operationId: getMinipool
      parameters:
      - $ref: '#/components/parameters/Address'
      responses:
        '200':
          description: Minipool details
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MinipoolDetails'
  /minipool/status:
    get:
      tags:
      - Minipool
      summary: List Node Minipools
      operationId: listMinipools
      responses:
        '200':
          description: List of minipools belonging to the node
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Minipool'
  /minipool/{address}/stake:
    post:
      tags:
      - Minipool
      summary: Stake Minipool After Scrub Check
      operationId: stakeMinipool
      parameters:
      - $ref: '#/components/parameters/MinipoolAddress'
      responses:
        '200':
          description: Stake submitted
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TransactionResponse'
  /minipool/{address}/exit:
    post:
      tags:
      - Minipool
      summary: Exit Minipool From Beacon Chain
      operationId: exitMinipool
      parameters:
      - $ref: '#/components/parameters/MinipoolAddress'
      responses:
        '200':
          description: Exit signed and broadcast
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TransactionResponse'
  /minipool/{address}/close:
    post:
      tags:
      - Minipool
      summary: Close Minipool
      operationId: closeMinipool
      parameters:
      - $ref: '#/components/parameters/MinipoolAddress'
      responses:
        '200':
          description: Close submitted
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TransactionResponse'
  /minipool/{address}/distribute-balance:
    post:
      tags:
      - Minipool
      summary: Distribute Minipool Balance
      operationId: distributeMinipoolBalance
      parameters:
      - $ref: '#/components/parameters/MinipoolAddress'
      responses:
        '200':
          description: Distribute submitted
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TransactionResponse'
components:
  schemas:
    Minipool:
      type: object
      properties:
        address:
          $ref: '#/components/schemas/Address_2'
        validatorPubkey:
          $ref: '#/components/schemas/PublicKey_2'
        status:
          type: string
          enum:
          - Initialized
          - Prelaunch
          - Staking
          - Withdrawable
          - Dissolved
        depositType:
          type: string
          enum:
          - None
          - Full
          - Half
          - Empty
          - Variable
        nodeDepositBalance:
          $ref: '#/components/schemas/EthAmount_2'
        userDepositBalance:
          $ref: '#/components/schemas/EthAmount_2'
        nodeFee:
          type: number
          format: float
          description: Node commission rate (0..1)
        createdTime:
          type: string
          format: date-time
        useLatestDelegate:
          type: boolean
    TransactionResponse:
      type: object
      properties:
        status:
          type: string
          enum:
          - success
          - error
        txHash:
          $ref: '#/components/schemas/TransactionHash'
        gasInfo:
          type: object
          properties:
            estGasLimit:
              type: integer
            safeGasLimit:
              type: integer
        error:
          type: string
    PublicKey_2:
      type: string
      pattern: ^0x[a-fA-F0-9]{96}$
      description: BLS12-381 validator public key
    Address:
      type: string
      pattern: ^0x[a-fA-F0-9]{40}$
    PublicKey:
      type: string
      pattern: ^0x[a-fA-F0-9]{96}$
    Address_2:
      type: string
      pattern: ^0x[a-fA-F0-9]{40}$
      example: '0x0000000000000000000000000000000000000000'
    EthAmount_2:
      type: string
      description: Amount expressed in wei (1 ETH = 10^18 wei)
      example: '32000000000000000000'
    EthAmount:
      type: string
      description: Amount in wei
    MinipoolDetails:
      type: object
      properties:
        address:
          $ref: '#/components/schemas/Address'
        nodeAddress:
          $ref: '#/components/schemas/Address'
        validatorPubkey:
          $ref: '#/components/schemas/PublicKey'
        status:
          type: string
        depositType:
          type: string
        nodeDepositBalance:
          $ref: '#/components/schemas/EthAmount'
        userDepositBalance:
          $ref: '#/components/schemas/EthAmount'
        nodeFee:
          type: number
          format: float
        delegateAddress:
          $ref: '#/components/schemas/Address'
        useLatestDelegate:
          type: boolean
        finalised:
          type: boolean
    TransactionHash:
      type: string
      pattern: ^0x[a-fA-F0-9]{64}$
  parameters:
    MinipoolAddress:
      name: address
      in: path
      required: true
      description: The Ethereum address of the minipool contract
      schema:
        $ref: '#/components/schemas/Address_2'
    Address:
      name: address
      in: path
      required: true
      schema:
        $ref: '#/components/schemas/Address'