Skip to content
openapi-v1.yaml 51.3 KiB
Newer Older
  title: Substrate API Sidecar v1.
  description: Substrate API Sidecar is a REST service that makes it easy to
    interact with blockchain nodes built using Substrate's FRAME framework.
  contact:
    url: https://github.com/paritytech/substrate-api-sidecar
    name: GPL-3.0-or-later
    url: https://github.com/paritytech/substrate-api-sidecar/blob/master/LICENSE
  version: 1.0.0-oas3
tags:
- name: accounts
- name: blocks
- name: node
  description: node connected to sidecar
- name: pallets
  description: pallets employed in the runtime
- name: runtime
- name: transaction
paths:
  /accounts/{accountId}/balance-info:
    get:
      tags:
      - accounts
      summary: Get balance information for an account.
      description: Returns information about an account's balance.
        Replaces `/balance/{address}` from versions < v1.0.0.
      operationId: getAccountBalanceInfo
      parameters:
      - name: accountId
        in: path
        description: SS58 address of the account.
        required: true
        schema:
          type: string
          pattern: '^[1-9A-HJ-NP-Za-km-z]{8,64}$'
      - name: at
        in: query
        description: Block at which to query balance info for the
          specified account.
        required: false
        schema:
          type: string
          description: Block height (as a non-negative integer) or hash
            (as a hex string).
          format: unsignedInteger or $hex
      responses:
        "200":
          description: successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AccountBalanceInfo'
        "400":
          description: invalid blockId supplied for at query param
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        "404":
          description: account not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /accounts/{accountId}/staking-info:
    get:
      tags:
      - staking
      summary: Get staking information for a _Stash_ account.
      description: Returns information about a _Stash_ account's staking activity.
        Replaces `/staking/{address}` from versions < v1.0.0.
      operationId: getStakingSummaryByAccountId
      parameters:
      - name: accountId
        in: path
        description: SS58 address of the account. Must be a _Stash_ account.
        required: true
        schema:
          pattern: '^[1-9A-HJ-NP-Za-km-z]{8,64}$'
          type: string
      - name: at
        in: query
        description: Block at which to query the staking info for the
          specified account.
        required: false
        schema:
          type: string
          description: Block identifier, as the block height or block hash.
          format: unsignedInteger or $hex
      responses:
        "200":
          description: successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AccountStakingInfo'
        "400":
          description: invalid blockId supplied for at query param
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        "404":
          description: account not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /accounts/{accountId}/staking-payouts:
    get:
      tags:
      - staking
      summary: Get payout information for a _Stash_ account.
      description: Returns payout information for the last specified eras. If
        specifying both the depth and era query params, this endpoint will
        return information for (era - depth) through era. (i.e. if depth=5 and
        era=20 information will be returned for eras 16 through 20). N.B. You
        cannot query eras less then `current_era - HISTORY_DEPTH`. N.B. The 
        `nominator*` fields correspond to the address being queried, even if it
        is a validator's _Stash_ address. This is because a validator is technically
        nominating itself.
      operationId: getStakingPayoutsByAccountId
      parameters:
      - name: accountId
        in: path
        description: SS58 address of the account. Must be a _Stash_ account.
        required: true
        schema:
          pattern: '^[1-9A-HJ-NP-Za-km-z]{8,64}$'
          type: string
      - name: depth
        in: query
        description: The number of eras to query for payouts of. Must be less
          than or equal to `HISTORY_DEPTH`. In cases where `era - (depth -1)` is 
          less than 0, the first era queried will be 0.
        required: false
        schema:
          type: string
          format: unsignedInteger
        description: The era to query at.
        required: false
        schema:
          type: string
          default: '`active_era - 1`'
      - name: unclaimedOnly
        in: query
        description: Only return unclaimed rewards.
        required: false
        schema:
          type: string
          format: boolean
          default: true
      responses:
        "200":
          description: successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AccountStakingPayouts'
        "400":
          description: invalid blockId supplied for at query param
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        "404":
          description: account not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /accounts/{accountId}/vesting-info:
    get:
      tags:
      - accounts
      summary: Get vesting information for an account.
      description: Returns the vesting schedule for an account.
        Replaces `/vesting/{address}` from versions < v1.0.0.
      operationId: getVestingSummaryByAccountId
      parameters:
      - name: accountId
        in: path
        description: SS58 address of the account.
        required: true
        schema:
          pattern: '^[1-9A-HJ-NP-Za-km-z]{8,64}$'
          type: string
      - name: at
        in: query
        description: Block at which to query the vesting info for the
          specified account.
        required: false
        schema:
          type: string
          description: Block identifier, as the block height or block hash.
          format: unsignedInteger or $hex
      responses:
        "200":
          description: successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AccountVestingInfo'
        "400":
          description: invalid blockId supplied for at query param
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        "404":
          description: account not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /blocks/{blockId}:
    get:
      tags:
      - blocks
      summary: Get a block by its height or hash.
      description: Returns a single block. BlockId can either be a block hash or a
        block height. Replaces `/block/{number}` from versions < v1.0.0.
      operationId: getBlockById
      parameters:
      - name: blockId
        in: path
        description: Block identifier, as the block height or block hash.
        required: true
        schema:
          pattern: 'a-km-zA-HJ-NP-Z1-9{8,64}'
          type: string
      - name: eventDocs
        in: query
        description: When set to `true`, every event will have an extra `docs`
          property with a string of the events documentation.
        required: false
        schema:
          type: boolean
      - name: extrinsicDocs
        in: query
        description: When set to `true`, every extrinsic will have an extra `docs`
          property with a string of the extrinsics documentation.
        required: false
        schema:
          type: boolean
      responses:
        "200":
          description: successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Block'
        "400":
          description: invalid Block identifier supplied
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /blocks/head:
    get:
      tags:
      - blocks
      summary: Get the most recently finalized block.
      description: Returns the most recently finalized block. Replaces `/block`
        from versions < v1.0.0.
      operationId: getHeadBlock
      parameters:
      - name: finalized
        in: query
        description: Boolean representing whether or not to get the finalized head.
          If it is not set the value defaults to true. When set to false it will attempt
          to get the newest known block, which may not be finalized.
        required: false
        schema:
          type: boolean
      - name: eventDocs
        in: query
        description: When set to `true`, every event will have an extra `docs`
          property with a string of the events documentation.
        required: false
        schema:
          type: boolean
      - name: extrinsicDocs
        in: query
        description: When set to `true`, every extrinsic will have an extra `docs`
          property with a string of the extrinsics documentation.
        required: false
        schema:
          type: boolean
      responses:
        "200":
          description: successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Block'
  /node/network:
    get:
      tags:
      - node
      summary: Get information about the Substrate node's activity in the peer-to-peer network.
      description: Returns network related information of the node.
      operationId: getNodeNetworking
      responses:
        "200":
          description: successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NodeNetwork'
  /node/transaction-pool:
    get:
      tags:
      - node
      summary: Get pending extrinsics from the Substrate node.
      description: Returns the extrinsics that the node knows of that have not
        been included in a block.
      operationId: getNodeTransactionPool
      responses:
        "200":
          description: successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TransactionPool'
  /node/version:
    get:
      tags:
      - node
      summary: Get information about the Substrates node's implementation and versioning.
      description: Returns versioning information of the node.
      operationId: getNodeVersion
      responses:
        "200":
          description: successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NodeVersion'
  /transaction:
    post:
      tags:
      - transaction
      summary: Submit a transaction to the node's transaction pool.
      description: Accepts a valid signed extrinsic. Replaces `/tx` from versions
        < v1.0.0.
      operationId: submitTransaction
      requestBody:
        $ref: '#/components/requestBodies/Transaction'
      responses:
        "200":
          description: successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TransactionSuccess'
        "400":
            description: failed to parse or submit transaction
            content:
              application/json:
                schema:
                  $ref: '#/components/schemas/TransactionFailure'
  /transaction/dry-run:
    post:
      tags:
      - transaction
      summary: Dry run an extrinsic.
      description: Use the dryrun call to practice submission of a transaction.
      operationId: dryrunTransaction
      requestBody:
        $ref: '#/components/requestBodies/Transaction'
      responses:
        "200":
          description: successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TransactionDryRun'
        "500":
          description: failed to dry-run transaction
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TransactionFailure'
  /transaction/fee-estimate:
    post:
      tags:
      - transaction
      summary: Receive a fee estimate for a transaction.
      description: >-
        Send a serialized transaction and receive back a naive fee estimate.
        Note: `partialFee` does not include any tips that you may add to increase
        a transaction's priority. See the reference on `compute_fee`.
        Replaces `/tx/fee-estimate` from versions < v1.0.0.
        Substrate Reference:
        - `RuntimeDispatchInfo`: https://crates.parity.io/pallet_transaction_payment_rpc_runtime_api/struct.RuntimeDispatchInfo.html
        - `query_info`: https://crates.parity.io/pallet_transaction_payment/struct.Module.html#method.query_info
        - `compute_fee`: https://crates.parity.io/pallet_transaction_payment/struct.Module.html#method.compute_fee
      operationId: feeEstimateTransaction
      requestBody:
        $ref: '#/components/requestBodies/Transaction'
      responses:
        "200":
          description: successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TransactionFeeEstimate'
        "500":
          description: fee estimation failure
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TransactionFeeEstimateFailure'
  /transaction/material:
    get:
      tags:
      - transaction
      summary: Get all the network information needed to construct a transaction offline.
      description: Returns the material that is universal to constructing any
        signed transaction offline. Replaces `/tx/artifacts` from versions < v1.0.0.
      operationId: getTransactionMaterial
      parameters:
      - name: at
        in: query
        description: Block at which to retrieve the transaction construction
          material.
        required: false
        schema:
          type: string
          description: Block identifier, as the block height or block hash.
          format: unsignedInteger or $hex
      - name: noMeta
        in: query
        schema:
          type: boolean
          description: If true, does not return metadata hex. This is useful when
            metadata is not needed and response time is a concern. Defaults to false.
          default: false
      responses:
        "200":
          description: successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TransactionMaterial'
        "400":
          description: invalid blockId supplied for at query param
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /pallets/staking/progress:
    get:
      tags:
      - staking
      summary: Get progress on the general Staking pallet system.
      description: Returns information on the progress of key components of the
        staking system and estimates of future points of interest. Replaces
        `/staking-info` from versions < v1.0.0.
      operationId: getStakingProgress
      parameters:
      - name: at
        in: query
        description: Block at which to retrieve a staking progress report.
        required: false
        schema:
          type: string
          description: Block identifier, as the block height or block hash.
          format: unsignedInteger or $hex
      responses:
        "200":
          description: successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StakingProgress'
        "400":
          description: invalid blockId supplied for at query param
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /runtime/metadata:
    get:
      tags:
      - runtime
      summary: Get the runtime metadata in decoded, JSON form.
      description: >-
       Returns the runtime metadata as a JSON object.
       Substrate Reference:
       - FRAME Support: https://crates.parity.io/frame_support/metadata/index.html
       - Knowledge Base: https://substrate.dev/docs/en/knowledgebase/runtime/metadata
      parameters:
      - name: at
        in: query
        description: Block at which to retrieve the metadata at.
        required: false
        schema:
          type: string
          description: Block identifier, as the block height or block hash.
          format: unsignedInteger or $hex
      responses:
        "200":
          description: successful operation
          content:
            application/json:
              schema:
                type: object
                description: Response is dependent on the runtime metadata contents.
  /runtime/code:
    get:
      tags:
      - runtime
      summary: Get the runtime wasm blob.
      description: Returns the runtime Wasm blob in hex format.
      parameters:
      - name: at
        in: query
        description: Block at which to retrieve the runtime wasm blob at.
        required: false
        schema:
          type: string
          description: Block identifier, as the block height or block hash.
          format: unsignedInteger or $hex
      responses:
        "200":
          description: successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RuntimeCode'
  /runtime/spec:
    get:
      tags:
      - runtime
      summary: Get version information of the Substrate runtime.
      description: Returns version information related to the runtime.
      parameters:
      - name: at
        in: query
        description: Block at which to retrieve runtime version information at.
        required: false
        schema:
          type: string
          description: Block identifier, as the block height or block hash.
          format: unsignedInteger or $hex
      responses:
        "200":
          description: successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RuntimeSpec'
  /pallets/{palletId}/storage/{storageItemId}:
    get:
      tags:
      - pallets
      summary: Get the value of a storage item.
      description: Returns the value stored under the storageItemId. If it is a
        map, query param key1 is required. If the storage item is double map
        query params key1 and key2 are required.
      parameters:
      - name: palletId
        in: path
        description: Name or index of the pallet to query the storage of.
        required: true
        schema:
          type: string
      - name: storageItemId
        in: path
        description: Id of the storage item to query for.
        required: true
        schema:
          type: string
      - name: key1
        in: query
        description: Key for a map, or first key for a double map. Required for querying
          a map.
        required: false
        schema:
          type: string
      - name: key2
        in: query
        description: Second key for a double map. Required for querying a double map.
        required: false
        schema:
          type: string
      - name: at
        in: query
        description: Block at which to query the storage item at.
        required: false
        schema:
          type: string
          description: Block identifier, as the block height or block hash.
          format: unsignedInteger or $hex
      - name: metadata
        in: query
        description: Include the storage items metadata (including documentation)
          if set to true.
        required: false
        schema:
          default: false
          type: boolean
      responses:
        "200":
          description: successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PalletStorageItem'
        "400":
          description: invalid blockId supplied for at query param
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        "404":
          description: could not find resource with with id
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
components:
  schemas:
    BalanceLock:
      type: object
      properties:
        id:
          type: string
          description: An identifier for this lock. Only one lock may be in existence
            for each identifier.
        amount:
          type: string
          description: The amount below which the free balance may not drop with this
            lock in effect.
          format: unsignedInteger
        reasons:
          type: string
          description: Reasons for withdrawing balance.
          enum:
          - Fee = 0
          - Misc = 1
          - All = 2
    AccountBalanceInfo:
      type: object
      properties:
        at:
          $ref: '#/components/schemas/BlockIdentifiers'
        nonce:
          type: string
          description: Account nonce.
          format: unsignedInteger
        free:
          type: string
          description: Free balance of the account. Not equivalent to _spendable_
            balance. This is the only balance that matters in terms of most operations
            on tokens.
          format: unsignedInteger
        reserved:
          type: string
          description: Reserved balance of the account.
          format: unsignedInteger
        miscFrozen:
          type: string
          description: The amount that `free` may not drop below when withdrawing
            for anything except transaction fee payment.
          format: unsignedInteger
        feeFrozen:
          type: string
          description: The amount that `free` may not drop below when withdrawing
            specifically for transaction fee payment.
          format: unsignedInteger
        locks:
          type: array
          description: Array of locks on a balance. There can be many of these on
            an account and they "overlap", so the same balance is frozen by multiple
            locks
          items:
            $ref: '#/components/schemas/BalanceLock'
    StakingLedger:
      type: object
      properties:
        stash:
          type: string
          description: The _Stash_ account whose balance is actually locked and at stake.
          format: ss58
        total:
          type: string
          description: The total amount of the _Stash_'s balance that we are currently accounting
            for. Simply `active + unlocking`.
          format: unsignedInteger
        active:
          type: string
          description: The total amount of the _Stash_'s balance that will be at stake
            in any forthcoming eras.
          format: unsignedInteger
        unlocking:
          type: string
          description: Any balance that is becoming free, which may eventually be
            transferred out of the _Stash_ (assuming it doesn't get slashed first).
            Represented as an array of objects, each with an `era` at which `value`
            will be unlocked.
          format: unsignedInteger
        claimedRewards:
          type: array
          description: Array of eras for which the stakers behind a validator have
            claimed rewards. Only updated for _validators._
          items:
            type: string
            format: unsignedInteger
      description: The staking ledger.
    Nominations:
      type: object
      properties:
        targets:
          type: array
          items:
            type: string
          description: The targets of the nomination.
        submittedIn:
          type: string
          format: unsignedInteger
          description: >-
             The era the nominations were submitted. (Except for initial
             nominations which are considered submitted at era 0.)
        suppressed:
          type: boolean
          description: Whether the nominations have been suppressed.
    AccountStakingInfo:
      type: object
      properties:
        at:
          $ref: '#/components/schemas/BlockIdentifiers'
        rewardDestination:
          type: string
          description: The account to which rewards will be paid. Can be 'Staked' (Stash
            account, adding to the amount at stake), 'Stash' (Stash address, not
            adding to the amount at stake), or 'Controller' (Controller address).
          format: ss58
          enum:
          - Staked
          - Stash
          - Controller
        controller:
          type: string
          description: Controller address for the given Stash.
          format: ss58
        numSlashingSpans:
          type: string
          description: Number of slashing spans on Stash account; `null` if provided address
            is not a Controller.
          format: unsignedInteger
        nominations:
          $ref: '#/components/schemas/Nominations'
        stakingLedger:
          $ref: '#/components/schemas/StakingLedger'
      description: >-
        Note: Runtime versions of Kusama less than 1062 will either have `lastReward` in place of
        `claimedRewards`, or no field at all. This is related to changes in reward distribution. See: [Lazy Payouts](https://github.com/paritytech/substrate/pull/4474), [Simple Payouts](https://github.com/paritytech/substrate/pull/5406)
      type: array
      items:
        type: object
        properties:
            type: string
            description: AccountId of the validator the payout is coming from.
          nominatorStakingPayout:
            type: string
            format: unsignedInteger
            description: Payout for the reward destination associated with the
              accountId the query was made for.
          claimed:
            type: boolean
            description: Whether or not the reward has been claimed.
          totalValidatorRewardPoints:
            type: string
            format: unsignedInteger
            description: Number of reward points earned by the validator.
          validatorCommission:
            type: string
            format: unsignedInteger
            description: The percentage of the total payout that the validator takes as commission,
              expressed as a Perbill.
          totalValidatorExposure:
            type: string
            format: unsignedInteger
            description: The sum of the validator's and its nominators' stake.
          nominatorExposure:
            type: string
            format: unsignedInteger
            description: The amount of stake the nominator has behind the validator.
        description: Payout for a nominating _Stash_ address and
          information about the validator they were nominating.
    AccountStakingPayouts:
      type: object
      properties:
        at:
          $ref: '#/components/schemas/BlockIdentifiers'
        erasPayouts:
          type: array
          items:
            type: object
            properties:
              era:
                type: string
                format: unsignedInteger
                description: Era this information is associated with.
              totalEraRewardPoints:
                type: string
                format: unsignedInteger
                description: Total reward points for the era. Equals the sum of
                  reward points for all the validators in the set.
              totalEraPayout:
                type: string
                format: unsignedInteger
                description: Total payout for the era. Validators split the payout
                  based on the portion of `totalEraRewardPoints` they have.
              payouts:
                $ref: '#/components/schemas/Payouts'
    VestingSchedule:
      type: object
      properties:
        locked:
          type: string
          description: Number of tokens locked at start.
          format: unsignedInteger
        perBlock:
          type: string
          description: Number of tokens that gets unlocked every block after `startingBlock`.
          format: unsignedInteger
        startingBlock:
          type: string
          description: Starting block for unlocking (vesting).
          format: unsignedInteger
      description: Vesting schedule for an account.
    AccountVestingInfo:
      type: object
      properties:
        at:
          $ref: '#/components/schemas/BlockIdentifiers'
        vesting:
          $ref: '#/components/schemas/VestingSchedule'
    BlockIdentifiers:
      type: object
      properties:
        hash:
          type: string
          description: The block's hash.
          format: hex
        height:
          type: string
          description: The block's height.
          format: unsignedInteger
      description: Block number and hash at which the call was made.
    DigestItem:
      type: object
      properties:
        type:
          type: string
        index:
          type: string
          format: unsignedInteger
        value:
          type: array
          items:
            type: string
    SanitizedEvent:
      type: object
      properties:
        method:
          type: string
        data:
          type: array
          items:
            type: string
    Signature:
      type: object
      properties:
        signature:
          type: string
          format: hex
        signer:
          type: string
          format: ss58
      description: Object with `signature` and `signer`, or `null` if unsigned.
    RuntimeDispatchInfo:
      type: object
      properties:
        weight:
          type: string
          description: Extrinsic weight.
        class:
          type: string
          description: Extrinsic class.
          enum:
          - Normal
          - Operational
          - Mandatory
        partialFee:
          type: string
          description: The _inclusion fee_ of a transaction, i.e. the minimum fee required for a transaction. Includes weight and encoded length fees, but does not have access to any signed extensions, e.g. the `tip`.
          format: unsignedInteger
      description: RuntimeDispatchInfo for the transaction. Includes the `partialFee`.
    ExtrinsicMethod:
      type: object
      properties:
        pallet:
          type: string
Zeke Mostov's avatar
Zeke Mostov committed
        methodName:
          type: string
      description: Extrinsic method
    Extrinsic:
      type: object
      properties:
        method:
          $ref: '#/components/schemas/ExtrinsicMethod'
        signature:
          $ref: '#/components/schemas/Signature'
        nonce:
          type: string
          description: Account nonce, if applicable.
          format: unsignedInteger
        args:
          type: object
          description: >-
            Object of arguments keyed by parameter name. Note: if you are expecting an [`OpaqueCall`](https://substrate.dev/rustdocs/v2.0.0/pallet_multisig/type.OpaqueCall.html)
            and it is not decoded in the response (i.e. it is just a hex string), then Sidecar was
            not able to decode it and likely that it is not a valid call for the runtime.
        tip:
          type: string
          description: Any tip added to the transaction.
          format: unsignedInteger
        hash:
          type: string
          description: The transaction's hash.
          format: hex
        info:
          $ref: '#/components/schemas/RuntimeDispatchInfo'
        events:
          type: array
          description: An array of `SanitizedEvent`s that occurred during extrinsic
            execution.
          items:
            $ref: '#/components/schemas/SanitizedEvent'
        success:
          type: boolean
          description: Whether or not the extrinsic succeeded.
        paysFee:
          type: boolean
          description: Whether the extrinsic requires a fee. Careful! This field relates
            to whether or not the extrinsic requires a fee if called as a transaction.
            Block authors could insert the extrinsic as an inherent in the block
            and not pay a fee. Always check that `paysFee` is `true` and that the
            extrinsic is signed when reconciling old blocks.
    BlockInitialize:
      type: object
      properties:
        events:
          type: array
          items:
            $ref: '#/components/schemas/SanitizedEvent'
      description: Object with an array of `SanitizedEvent`s that occurred during
        block initialization with the `method` and `data` for each.
    BlockFinalize:
      type: object
      properties:
        events:
          type: array
          items:
            $ref: '#/components/schemas/SanitizedEvent'
      description: Object with an array of `SanitizedEvent`s that occurred during
        block construction finalization with the `method` and `data` for each.
    Block:
      type: object
      properties:
        hash:
          type: string
          description: The block's hash.
          format: hex
        height:
          type: string
          description: The block's height.
          format: unsignedInteger
        parentHash:
          type: string
          description: The hash of the parent block.