RPC API changes, pre-Betanet (June 2018)

This document describes the changes made to RPC services provided by the Tezos node in June 2018.

Summary

  • Usage of GET requests and query-string parameters when possible
  • Easy access to the protocol-specific part of block headers and of operations
  • New metadata for block headers (e.g. baker, ...) and for operations (e.g. internal transfers, ...)
  • Easy access to delegate’s data (list of delegating contracts, frozen balance, ...)
  • Prefixed /blocks by /chains/<chain_id> for easier testing of protocol updates
  • Explicit distinction between the listing RPCs and the monitoring RPCs
  • Homogeneous error handling

Detailled changes

Modified RPCs

Some RPCs were simply renamed but some has significant changes in the expected arguments or the returned JSON object. See the notes for details.

In the follwing table:

  • chain_id is a symbolic chain identifier, e.g. main or test, or their equivalent Base58-encoded hash, e. g. NetXzGDuYoAawjv.
  • block_id is a symbolic block identifier, e.g. head of genesis, or any Base58-encoded block hash, e.g. BKicMfwtgtAL28iD2uZk12PpuS6i2pFysC3syVT44nMNLkGb4QA. It might also be head~n or <block_hash>~n to denotes the n-th predecessor of head or <block_hash>.
  • contract_id is either a implicit contract identifier, i.e. a Base58-encoded public jye hash tz1btz2tcu8dTwPrtMpyzh1irGdGkAaSE4bY, or an originated contract identifier, e.g. TZ1fyLSGZ7n2QRynStXUf9ihQtH7k4t4vTLe.
  • peer_id is a cryptographic peer identifier, e.g. idtpXYaRSBXe6KJU6rk1X9ninWt8Bz.
Old path Notes New path
/blocks [3] GET /chains/<chain_id>/blocks
[4] GET /monitor/valid_blocks
[5] GET /monitor/heads/<chain_id>
/blocks/<block_id> [1] GET /chains/<chain_id>/blocks/<block_id>
/blocks/<block_id>/chain_id   GET /chains/<chain_id>/chain_id
/blocks/<block_id>/complete/<prefix>   GET /chains/<chain_id>/blocks/<block_id>/helpers/complete/<prefix>
/blocks/<block_id>/fitness   GET /chains/<chain_id>/blocks/<block_id>/header/shell/fitness
/blocks/<block_id>/hash   GET /chains/<chain_id>/blocks/<block_id>/hash
/blocks/<block_id>/level   GET /chains/<chain_id>/blocks/<block_id>/header/shell/level
/blocks/<block_id>/operations [2] GET /chains/<chain_id>/blocks/<block_id>/operations
/blocks/<block_id>/preapply [8] POST /chains/<chain_id>/blocks/<block_id>/helpers/preapply/block
/blocks/<block_id>/predecessor   GET /chains/<chain_id>/blocks/<block_id>/header/shell/predecessor
/blocks/<block_id>/predecessors [10] GET /chains/<chain_id>/blocks
/blocks/<block_id>/protocol [13] GET /chains/<chain_id>/blocks/<block_id>/metadata/protocol_hash
GET /chains/<chain_id>/blocks/<block_id>/metadata/next_protocol_hash
/blocks/<block_id>/proto/constants   GET /chains/<chain_id>/blocks/<block_id>/context/constants
/blocks/<block_id>/proto/context/contracts   GET /chains/<chain_id>/blocks/<block_id>/context/contracts
/blocks/<block_id>/proto/context/contracts/<contract_id>   GET /chains/<chain_id>/blocks/<block_id>/context/contracts/<contract_id>
/blocks/<block_id>/proto/context/level [6] GET /chains/<chain_id>/blocks/<block_id>/metadata/protocol_data
/blocks/<block_id>/proto/context/next_level [7] GET /chains/<chain_id>/blocks/<block_id>/helpers/current_level
/blocks/<block_id>/proto/context/nonce/<block_level>   GET /chains/<chain_id>/blocks/<block_id>/context/nonces/<block_level>
/blocks/<block_id>/proto/context/voting_period_kind [6] GET /chains/<chain_id>/blocks/<block_id>/metadata/protocol_data
/blocks/<block_id>/proto/header   GET /chains/<chain_id>/blocks/<block_id>/header/protocol_data
/blocks/<block_id>/proto/helpers/apply_operation [9] POST /chains/<chain_id>/blocks/<block_id>/helpers/preapply/operations
/blocks/<block_id>/proto/helpers/forge/operations   POST /chains/<chain_id>/blocks/<block_id>/helpers/forge/operations
/blocks/<block_id>/proto/helpers/forge/protocol_data   POST /chains/<chain_id>/blocks/<block_id>/helpers/forge/protocol_data
/blocks/<block_id>/proto/helpers/hash_data   POST /chains/<chain_id>/blocks/<block_id>/helpers/scripts/hash_data
/blocks/<block_id>/proto/helpers/level/<block_level> [11] GET /chains/<chain_id>/blocks/<block_id>/helpers/current_level
/blocks/<block_id>/proto/helpers/levels/<block_cycle> [12] GET /chains/<chain_id>/blocks/<block_id>/helpers/levels_in_current_cycle
/blocks/<block_id>/proto/helpers/minimal_timestamp [15] GET /chains/<chain_id>/blocks/<block_id>/helpers/baking_rights
/blocks/<block_id>/proto/helpers/parse/block   POST /chains/<chain_id>/blocks/<block_id>/helpers/parse/block
/blocks/<block_id>/proto/helpers/parse/operations   POST /chains/<chain_id>/blocks/<block_id>/helpers/parse/operations
/blocks/<block_id>/proto/helpers/rights/baking [15] GET /chains/<chain_id>/blocks/<block_id>/helpers/baking_rights
/blocks/<block_id>/proto/helpers/rights/baking/delegate/<pkh> [15] GET /chains/<chain_id>/blocks/<block_id>/helpers/baking_rights
/blocks/<block_id>/proto/helpers/rights/baking/level/<block_level> [15] GET /chains/<chain_id>/blocks/<block_id>/helpers/baking_rights
/blocks/<block_id>/proto/helpers/rights/endorsement [16] GET /chains/<chain_id>/blocks/<block_id>/helpers/endorsing_rights
/blocks/<block_id>/proto/helpers/rights/endorsement/delegate/<pkh> [16] GET /chains/<chain_id>/blocks/<block_id>/helpers/endorsing_rights
/blocks/<block_id>/proto/helpers/rights/endorsement/level/<block_level> [16] GET /chains/<chain_id>/blocks/<block_id>/helpers/endorsing_rights
/blocks/<block_id>/proto/helpers/run_code   POST /chains/<chain_id>/blocks/<block_id>/helpers/scripts/run_code
/blocks/<block_id>/proto/helpers/trace_code   POST /chains/<chain_id>/blocks/<block_id>/helpers/scripts/trace_code
/blocks/<block_id>/proto/helpers/typecheck_code   POST /chains/<chain_id>/blocks/<block_id>/helpers/scripts/typecheck_code
/blocks/<block_id>/proto/helpers/typecheck_data   POST /chains/<chain_id>/blocks/<block_id>/helpers/scripts/typecheck_data
/blocks/<block_id>/proto/operations [2] GET /chains/<chain_id>/blocks/<block_id>/operations
/blocks/<block_id>/raw_context   GET /chains/<chain_id>/blocks/<block_id>/context/raw
/blocks/<block_id>/test_chain   GET /chains/<chain_id>/blocks/<block_id>/metadata/test_chain_status
/blocks/<block_id>/timestamp   GET /chains/<chain_id>/blocks/<block_id>/header/shell/timestamp
/bootstrapped   GET /monitor/bootstrapped
/complete/<prefix>   GET /chains/main/blocks/head/helpers/complete/<prefix>
/describe   GET /describe
/errors   GET /errors
/forge_block_header   POST /chains/main/blocks/head/helpers/forge/block_header
/inject_block   POST /injection/block
/inject_operation   POST /injection/operation
/inject_protocol   POST /injection/protocol
/invalid_blocks   GET /chains/<chain_id>/invalid_blocks
/invalid_blocks/<block_hash>   GET /chains/<chain_id>/invalid_blocks/<block_hash>
/invalid_blocks/<block_hash>/unmark   DELETE /chains/<chain_id>/invalid_blocks/<block_hash>
/mempool/pending_operations   GET /chains/<chain_id>/mempool/pending_operations
/p2p/connections   GET /network/connections
/p2p/connections/<peer_id>   GET /network/connections/<peer_id>
/p2p/connections/<peer_id>/kick   DELETE /network/connections/<peer_id>
/p2p/connect/<point>   PUT /network/points/<point>
/p2p/log   GET /network/log
/p2p/peers   GET /network/peers/
/p2p/peers/<peer_id>   GET /network/peers/<peer_id>
/p2p/peers/<peer_id>/log   GET /network/peers/<peer_id>/log
/networks/point   GET /network/points
/p2p/points/<point>   GET /network/points/<point>
/p2p/points/<point>/log   GET /network/points/<point>/log
/p2p/stat   GET /network/stat
/p2p/versions   GET /network/versions
/protocols [14] GET /protocols
GET /monitor/protocols
/protocols/<protocol_hash>   GET /protocols/<protocol_hash>
/workers/block_validator   GET /workers/block_validator
/workers/chain_validators   GET /workers/chain_validators
/workers/chain_validators/<chain_id>   GET /workers/chain_validators/<chain_id>
/workers/peer_validators/<chain_id>   GET /workers/chain_validators/<chain_id>/peers_validators
/workers/peer_validators/<chain_id>/<peer_id>   GET /workers/chain_validators/<chain_id>/peers_validators/<peer_id>
/workers/prevalidators   GET /workers/prevalidators
/workers/prevalidators/<chain_id>   GET /workers/prevalidators/<chain_id>
[1](1, 2)

The return type of /chain/<chain_id>/blocks/<block_id> has changed. It now returns more informations:

  • the protocol-specific part of the block header is now fully parsed, instead of being returned as hex-encoded bytes. This allows for instance direct access to the block priority.
  • some metadata is also added: the baker, the current cycle, the current voting period, ...
  • the operations are also fully parsed, in the same way than the previous RPC /blocks/<block_id>/proto/operations
  • some metadata is also added to the operations. For instance, the list of created contracts, the list of internal transfers, the delegate associated to a endorsement, etc.

The returned JSON being more detailled than previously, new RPCs for fetching partial information are added:

  • /chain/<chain_id>/blocks/<block_id>/header
  • /chain/<chain_id>/blocks/<block_id>/metadata
  • /chain/<chain_id>/blocks/<block_id>/operations/<list_offset>/<operation_offset>
  • /chain/<chain_id>/blocks/<block_id>/operation_hashes/<list_offset>/<operation_offset>
[2](1, 2)

Like the operations listed in /chain/<chain_id>/blocks/<block_id> [1], the protocol-specific part of operations is now fully-parsed, instead of being returned as hex-encoded bytes.

The same metadata is added: the list of created contracts, the list of internal transfers, the delegate associated to a endorsement, etc.

[3]

The old RPC /blocks has been splitted in three: one RPCs for listing heads and blocks, and two RPCs for monitoring new blocks.

The new list RPCs only returns the hash of the current head.

[4]This new RPCs allows to monitor all valid blocks. It only returns the hash of the new blocks.
[5]This new RPCs allows to only monitor the head changes in a given chain. It only returns the hash of the new heads.
[6](1, 2) The detailled level of a block (i.e. with the cycle and voting period details) is now included in the block metadata.
[7]For the same behaviour, this RPC should be called with the offset query parameter: e.g. /chains/main/blocks/head/helpers/current_level?offset=1.
[8]This function now expects a readable JSON object for the block header and the operations, instead of the hex-encoded sequence of bytes it was previously expecting.
[9]

This function now expects a readable JSON object for the operation instead of the hex-encoded sequence of bytes it was previously expecting. It also accepts to apply a list of operation in sequence instead of a single operations.

When the operations apply succesfully, this RPC now returns all the metadata associated to operation (the list of created contracts, the list of internal operations, ...) instead of just “success”.

[10]For the same behaviour, this RPC should be called with the length query parameter: e.g. /chains/main/blocks?head=<b58_block_hash>&length=12.
[11]Instead of taking a level as parameter, this RPCs now expects the difference between the expected level and the current level. For instance, for querying the level details for the next block: /chains/main/blocks/head/helpers/current_level?offset=1.
[12]Instead of taking a cycle as parameter, this RPCs now expects the difference between the expected cycle and the current cycle. For instance, for querying the levels in the previous cycle: /chains/main/blocks/head/helpers/levels_in_current_cycle?offset=-1.
[13]To avoid confusion protocol_hash is the hash of protocol used to bake and validate the current block. And next_protocol_hash is the hash of the protocol that should be used to bake the next block. The previous RPC protocol was returning the next_protocol_hash.
[14]The old RPC /protocols has been splitted in two: one RPCs for listing the known economic protocols, and one RPCs for monitoring new economic protocols. In both cases the new RPCs only returns hash of protocols instead of the protocol sources.
[15](1, 2, 3, 4)

All the three RPCs used to query baking rights are now grouped in one RPCs. By default, this RPCs returns the first allowed bakers for the next block, in their priority order and with the time at which they are allowed to bake.

Some additional query arguments allow to filter the answer with a given list of delegates, or to query informations for other levels or cycles (in that case the provided timestamp will only be an estimation).

[16](1, 2, 3)

All the three RPCs used to query endorsing rights are now grouped in one RPCs. By default, this RPCs returns the list of allowed endorsers for the next block.

Some additional query arguments allow to filter the answer with a limited list of delegates, or to query informations for others level or cycles.

New RPCs

  • GET /chains/<chain_id>/blocks/<block_id>/context/delegates

    List all registered delegates.

  • GET /chains/<chain_id>/blocks/<block_id>/context/delegates/<pkh>

    List all information about a given delegate. This includes:

    • GET /chains/<chain_id>/blocks/<block_id>/context/delegates/<pkh>/balance

      The full balance of a delegate: i.e. the balance of its delegate account plus the total amount of frozen deposits/rewards/fees.

    • GET /chains/<chain_id>/blocks/<block_id>/context/delegates/<pkh>/frozen_balance

      The total amount of frozen deposits/rewards/fees.

    • GET /chains/<chain_id>/blocks/<block_id>/context/delegates/<pkh>/frozen_balance_by_cycle

      The details of frozen deposits/rewards/fees indexed by the cycle at the end of which they will be unfrozen.

    • GET /chains/<chain_id>/blocks/<block_id>/context/delegates/<pkh>/staking_balance

      The total amount of tokens the delegate stakes for. This includes the balance of all contracts delegated to <pkh>, but also the delegate own account and the frozen deposits and fees. This does not include the frozen rewards.

    • GET /chains/<chain_id>/blocks/<block_id>/context/delegates/<pkh>/delegated_contracts

      The list of contracts that are delegated to <pkh>.

    • GET /chains/<chain_id>/blocks/<block_id>/context/delegates/<pkh>/delegated_balance

      The total balance of all the contracts that delegates to <pkh>. This excludes the delegate own balance and its frozen balances.

    • GET /chains/<chain_id>/blocks/<block_id>/context/delegates/<pkh>/deactivated

      Tells whether the delegate has been tagged as inactive by the system or not, i.e. a delegate is inactive when she did not baked or endorsed any block in the last 5 cycles.

      A deactivated delegate won’t receive any baking or endorsing rights until she registers itself again as a delegate. No rolls were lost in the process, except if delegating contracts changed their delegate in the meantime of course.

    • GET /chains/<chain_id>/blocks/<block_id>/context/delegates/<pkh>/grace_period

      The cycle by the end of which the delegate will be tagged as deactivated if she did not bake or endorse until then.

  • GET /chains/<chain_id>/blocks/<block_id>/header

    Simple accessor to a block header, or to its shell-specific or version-specific fragments.

    • GET /chains/<chain_id>/blocks/<block_id>/header/shell
    • GET /chains/<chain_id>/blocks/<block_id>/header/protocol_data
  • GET /chains/<chain_id>/blocks/<block_id>/metadata

    Simple accessor to the metadata associated to a block header.

    • GET /chains/<chain_id>/blocks/<block_id>/metadata/protocol_data

      The version-specific part of the metadata. For the protocol Alpha this includes, for instance, the baker of the block.

    • GET /chains/<chain_id>/blocks/<block_id>/metadata/protocol_hash

      The hash of the protocol used to bake the block.

    • GET /chains/<chain_id>/blocks/<block_id>/metadata/next_protocol_hash

      The hash of the protocol that should be used to bake the next block.

  • GET /chains/<chain_id>/blocks/<block_id>/operation_hashes

    The list of the hash of the operations included in the block.

    Also direct accessor to the n-th hash in the m-th validation pass.

    • GET /chains/<chain_id>/blocks/<block_id>/operation_hashes/<list_offset>
    • GET /chains/<chain_id>/blocks/<block_id>/operation_hashes/<list_offset>/<operation_offset>
  • GET /chains/<chain_id>/blocks/<block_id>/operations

    The list of the operations included in the block, with their metadata.

    Also direct accessor to the n-th operation in the m-th validation pass.

    • GET /chains/<chain_id>/blocks/<block_id>/operations/<list_offset>
    • GET /chains/<chain_id>/blocks/<block_id>/operations/<list_offset>/<operation_offset>
  • GET /chains/<chain_id>/blocks/<block_id>/context/contracts/<contract_id>/manager_key

    The public key of the contract’s manager, if it has been revealed.

Consolidated Index

Shell

  • /
    • /chains
      • /chains/<chain_id>
        • /chains/<chain_id>/blocks (GET)
          • /chains/<chain_id>/blocks/<block_id> (<dyn>)
        • /chains/<chain_id>/chain_id (GET)
        • /chains/<chain_id>/invalid_blocks (GET)
          • /chains/<chain_id>/invalid_blocks/<block_hash> (GET DELETE)
        • /chains/<chain_id>/mempool (GET)
    • /describe (GET)
    • /errors (GET)
    • /injection
      • /injection/block (POST)
      • /injection/operation (POST)
      • /injection/protocol (POST)
    • /monitor
      • /monitor/bootstrapped (GET)
      • /monitor/heads
        • /monitor/heads/<chain_id> (GET)
      • /monitor/protocols (GET)
      • /monitor/valid_blocks (GET)
    • /network
      • /network/connections (GET)
        • /network/connections/<peer_id> (GET DELETE)
      • /network/greylist
        • /network/greylist/clear (GET)
      • /network/log (GET)
      • /network/peers (GET)
        • /network/peers/<peer_id> (GET)
          • /network/peers/<peer_id>/ban (GET)
          • /network/peers/<peer_id>/banned (GET)
          • /network/peers/<peer_id>/log (GET)
          • /network/peers/<peer_id>/trust (GET)
      • /network/points (GET)
        • /network/points/<point> (GET PUT)
          • /network/points/<point>/ban (GET)
          • /network/points/<point>/banned (GET)
          • /network/points/<point>/log (GET)
          • /network/points/<point>/trust (GET)
      • /network/stat (GET)
      • /network/versions (GET)
    • /protocols (GET)
      • /protocols/<Protocol_hash> (GET)
    • /workers
      • /workers/block_validator (GET)
      • /workers/chain_validators (GET)
        • /workers/chain_validators/<chain_id> (GET)
          • /workers/chain_validators/<chain_id>/peers_validators (GET)
            • /workers/chain_validators/<chain_id>/peers_validators/<peer_id> (GET)
      • /workers/prevalidators (GET)
        • /workers/prevalidators/<chain_id> (GET)

Protocol Alpha

  • ../<block_id> (GET)
    • ../<block_id>/context
      • ../<block_id>/context/constants (GET)
        • ../<block_id>/context/constants/block_reward (GET)
        • ../<block_id>/context/constants/block_security_deposit (GET)
        • ../<block_id>/context/constants/blocks_per_commitment (GET)
        • ../<block_id>/context/constants/blocks_per_cycle (GET)
        • ../<block_id>/context/constants/blocks_per_roll_snapshot (GET)
        • ../<block_id>/context/constants/blocks_per_voting_period (GET)
        • ../<block_id>/context/constants/cost_per_byte (GET)
        • ../<block_id>/context/constants/endorsement_reward (GET)
        • ../<block_id>/context/constants/endorsement_security_deposit (GET)
        • ../<block_id>/context/constants/endorsers_per_block (GET)
        • ../<block_id>/context/constants/errors (GET)
        • ../<block_id>/context/constants/first_free_baking_slot (GET)
        • ../<block_id>/context/constants/hard_gas_limits (GET)
        • ../<block_id>/context/constants/hard_storage_limits (GET)
        • ../<block_id>/context/constants/origination_burn (GET)
        • ../<block_id>/context/constants/preserved_cycles (GET)
        • ../<block_id>/context/constants/proof_of_work_threshold (GET)
        • ../<block_id>/context/constants/seed_nonce_revelation_tip (GET)
        • ../<block_id>/context/constants/time_between_slots (GET)
      • ../<block_id>/context/contracts (GET)
        • ../<block_id>/context/contracts/<contract_id> (GET)
          • ../<block_id>/context/contracts/<contract_id>/balance (GET)
          • ../<block_id>/context/contracts/<contract_id>/counter (GET)
          • ../<block_id>/context/contracts/<contract_id>/delegatable (GET)
          • ../<block_id>/context/contracts/<contract_id>/delegate (GET)
          • ../<block_id>/context/contracts/<contract_id>/manager (GET)
          • ../<block_id>/context/contracts/<contract_id>/manager_key (GET)
          • ../<block_id>/context/contracts/<contract_id>/script (GET)
          • ../<block_id>/context/contracts/<contract_id>/spendable (GET)
          • ../<block_id>/context/contracts/<contract_id>/storage (GET)
      • ../<block_id>/context/delegates (GET)
        • ../<block_id>/context/delegates/<pkh> (GET)
          • ../<block_id>/context/delegates/<pkh>/balance (GET)
          • ../<block_id>/context/delegates/<pkh>/deactivated (GET)
          • ../<block_id>/context/delegates/<pkh>/delegated_balance (GET)
          • ../<block_id>/context/delegates/<pkh>/delegated_contracts (GET)
          • ../<block_id>/context/delegates/<pkh>/frozen_balance (GET)
          • ../<block_id>/context/delegates/<pkh>/frozen_balance_by_cycle (GET)
          • ../<block_id>/context/delegates/<pkh>/grace_period (GET)
          • ../<block_id>/context/delegates/<pkh>/staking_balance (GET)
      • ../<block_id>/context/nonces
        • ../<block_id>/context/nonces/<block_level> (GET)
      • ../<block_id>/context/raw
        • ../<block_id>/context/raw/bytes (GET)
        • ../<block_id>/context/raw/json (<dyn>)
    • ../<block_id>/hash (GET)
    • ../<block_id>/header (GET)
      • ../<block_id>/header/protocol_data (GET)
      • ../<block_id>/header/shell (GET)
        • ../<block_id>/header/shell/context_hash (GET)
        • ../<block_id>/header/shell/fitness (GET)
        • ../<block_id>/header/shell/level (GET)
        • ../<block_id>/header/shell/operations_hash (GET)
        • ../<block_id>/header/shell/predecessor (GET)
        • ../<block_id>/header/shell/proto_level (GET)
        • ../<block_id>/header/shell/timestamp (GET)
        • ../<block_id>/header/shell/validation_passes (GET)
    • ../<block_id>/helpers
      • ../<block_id>/helpers/baking_rights (GET)
      • ../<block_id>/helpers/complete
        • ../<block_id>/helpers/complete/<prefix> (GET)
      • ../<block_id>/helpers/current_level (GET)
      • ../<block_id>/helpers/endorsing_rights (GET)
      • ../<block_id>/helpers/forge
        • ../<block_id>/helpers/forge/operations (POST)
        • ../<block_id>/helpers/forge/protocol_data (POST)
      • ../<block_id>/helpers/forge_block_header (POST)
      • ../<block_id>/helpers/levels_in_current_cycle (GET)
      • ../<block_id>/helpers/parse
        • ../<block_id>/helpers/parse/block (POST)
        • ../<block_id>/helpers/parse/operations (POST)
      • ../<block_id>/helpers/preapply
        • ../<block_id>/helpers/preapply/block (POST)
        • ../<block_id>/helpers/preapply/operations (POST)
      • ../<block_id>/helpers/scripts
        • ../<block_id>/helpers/scripts/hash_data (POST)
        • ../<block_id>/helpers/scripts/run_code (POST)
        • ../<block_id>/helpers/scripts/trace_code (POST)
        • ../<block_id>/helpers/scripts/typecheck_code (POST)
        • ../<block_id>/helpers/scripts/typecheck_data (POST)
    • ../<block_id>/metadata (GET)
      • ../<block_id>/metadata/max_block_header_length (GET)
      • ../<block_id>/metadata/max_operation_data_length (GET)
      • ../<block_id>/metadata/max_operations_ttl (GET)
      • ../<block_id>/metadata/next_protocol_hash (GET)
      • ../<block_id>/metadata/operation_list_quota (GET)
      • ../<block_id>/metadata/protocol_data (GET)
      • ../<block_id>/metadata/protocol_hash (GET)
      • ../<block_id>/metadata/test_chain_status (GET)
    • ../<block_id>/operation_hashes (GET)
      • ../<block_id>/operation_hashes/<list_offset> (GET)
        • ../<block_id>/operation_hashes/<list_offset>/<operation_offset> (GET)
    • ../<block_id>/operations (GET)
      • ../<block_id>/operations/<list_offset> (GET)
        • ../<block_id>/operations/<list_offset>/<operation_offset> (GET)

Consolidated descriptions

Shell

GET /chains/<chain_id>/blocks?[length=<int>]&(head=<block_hash>)*&[min_date=<date>]

Lists known heads of the blockchain sorted with decreasing fitness. Optional arguments allows to returns the list of predecessors for known heads or the list of predecessors for a given list of blocks.

Optional query arguments :

  • length = <int> : The requested number of predecessors to returns (per requested head).
  • head = <block_hash> : An empty argument requests blocks from the current heads. A non empty list allow to request specific fragment of the chain.
  • min_date = <date> : When `min_date` is provided, heads with a timestamp before `min_date` are filtered out

  [ [ string
  /* A block identifier (Base58Check-encoded) */ ... ] ... ]

GET /chains/<chain_id>/chain_id

The chain unique identifier.

  string
  /* Network identifier (Base58Check-encoded) */

GET /chains/<chain_id>/invalid_blocks

Lists blocks that have been declared invalid along with the errors that led to them being declared invalid.

  [ { "block": string /* A block identifier (Base58Check-encoded) */,
      "level": integer ∈ [-2^31-2, 2^31+2],
      "errors":
        any
        /* The full list of error is available with the global RPC `GET
           errors` */ } ... ]

GET /chains/<chain_id>/invalid_blocks/<block_hash>

The errors that appears during the block (in)validation.

  { "block": string /* A block identifier (Base58Check-encoded) */,
    "level": integer ∈ [-2^31-2, 2^31+2],
    "errors":
      any
      /* The full list of error is available with the global RPC `GET errors` */ }

DELETE /chains/<chain_id>/invalid_blocks/<block_hash>

Remove an invalid block for the tezos storage

  {  }

GET /chains/<chain_id>/mempool

List the not-yet-prevalidated operations.

  { "applied":
      [ { "hash": string /* A Tezos operation ID (Base58Check-encoded) */,
          "branch": string /* A block identifier (Base58Check-encoded) */,
          "data": /^[a-zA-Z0-9]+$/ } ... ],
    "refused":
      [ { "hash": string /* A Tezos operation ID (Base58Check-encoded) */,
          "branch": string /* A block identifier (Base58Check-encoded) */,
          "data": /^[a-zA-Z0-9]+$/,
          "error":
            any
            /* The full list of error is available with the global RPC `GET
               errors` */ } ... ],
    "branch_refused":
      [ { "hash": string /* A Tezos operation ID (Base58Check-encoded) */,
          "branch": string /* A block identifier (Base58Check-encoded) */,
          "data": /^[a-zA-Z0-9]+$/,
          "error":
            any
            /* The full list of error is available with the global RPC `GET
               errors` */ } ... ],
    "branch_delayed":
      [ { "hash": string /* A Tezos operation ID (Base58Check-encoded) */,
          "branch": string /* A block identifier (Base58Check-encoded) */,
          "data": /^[a-zA-Z0-9]+$/,
          "error":
            any
            /* The full list of error is available with the global RPC `GET
               errors` */ } ... ],
    "unprocessed":
      [ { "hash": string /* A Tezos operation ID (Base58Check-encoded) */,
          "branch": string /* A block identifier (Base58Check-encoded) */,
          "data": /^[a-zA-Z0-9]+$/ } ... ] }

GET /describe?[recurse=<bool>]

RPCs documentation and input/output schema

Optional query arguments :

  • recurse = <bool>

  $service_tree
  $service_tree:
    { "static":
        { "get_service"?:
            { "meth": "PATCH" | "GET" | "POST" | "PUT" | "DELETE",
              "path":
                [ string
                  || { "id": "single",
                       "name": string,
                       "descr"?: string }
                  || { "id": "multiple",
                       "name": string,
                       "descr"?: string } ... ],
              "description"?: string,
              "query":
                [ { "name": string,
                    "description"?: string,
                    "kind":
                      { "single":
                          { "id": "single",
                            "name": string,
                            "descr"?: string } }
                      || { "optional":
                             { "id": "single",
                               "name": string,
                               "descr"?: string } }
                      || { "flag": {  } }
                      || { "multi":
                             { "id": "single",
                               "name": string,
                               "descr"?: string } } } ... ],
              "input"?: any,
              "output": any,
              "erro": any },
          "post_service"?:
            { "meth": "PATCH" | "GET" | "POST" | "PUT" | "DELETE",
              "path":
                [ string
                  || { "id": "single",
                       "name": string,
                       "descr"?: string }
                  || { "id": "multiple",
                       "name": string,
                       "descr"?: string } ... ],
              "description"?: string,
              "query":
                [ { "name": string,
                    "description"?: string,
                    "kind":
                      { "single":
                          { "id": "single",
                            "name": string,
                            "descr"?: string } }
                      || { "optional":
                             { "id": "single",
                               "name": string,
                               "descr"?: string } }
                      || { "flag": {  } }
                      || { "multi":
                             { "id": "single",
                               "name": string,
                               "descr"?: string } } } ... ],
              "input"?: any,
              "output": any,
              "erro": any },
          "delete_service"?:
            { "meth": "PATCH" | "GET" | "POST" | "PUT" | "DELETE",
              "path":
                [ string
                  || { "id": "single",
                       "name": string,
                       "descr"?: string }
                  || { "id": "multiple",
                       "name": string,
                       "descr"?: string } ... ],
              "description"?: string,
              "query":
                [ { "name": string,
                    "description"?: string,
                    "kind":
                      { "single":
                          { "id": "single",
                            "name": string,
                            "descr"?: string } }
                      || { "optional":
                             { "id": "single",
                               "name": string,
                               "descr"?: string } }
                      || { "flag": {  } }
                      || { "multi":
                             { "id": "single",
                               "name": string,
                               "descr"?: string } } } ... ],
              "input"?: any,
              "output": any,
              "erro": any },
          "put_service"?:
            { "meth": "PATCH" | "GET" | "POST" | "PUT" | "DELETE",
              "path":
                [ string
                  || { "id": "single",
                       "name": string,
                       "descr"?: string }
                  || { "id": "multiple",
                       "name": string,
                       "descr"?: string } ... ],
              "description"?: string,
              "query":
                [ { "name": string,
                    "description"?: string,
                    "kind":
                      { "single":
                          { "id": "single",
                            "name": string,
                            "descr"?: string } }
                      || { "optional":
                             { "id": "single",
                               "name": string,
                               "descr"?: string } }
                      || { "flag": {  } }
                      || { "multi":
                             { "id": "single",
                               "name": string,
                               "descr"?: string } } } ... ],
              "input"?: any,
              "output": any,
              "erro": any },
          "patch_service"?:
            { "meth": "PATCH" | "GET" | "POST" | "PUT" | "DELETE",
              "path":
                [ string
                  || { "id": "single",
                       "name": string,
                       "descr"?: string }
                  || { "id": "multiple",
                       "name": string,
                       "descr"?: string } ... ],
              "description"?: string,
              "query":
                [ { "name": string,
                    "description"?: string,
                    "kind":
                      { "single":
                          { "id": "single",
                            "name": string,
                            "descr"?: string } }
                      || { "optional":
                             { "id": "single",
                               "name": string,
                               "descr"?: string } }
                      || { "flag": {  } }
                      || { "multi":
                             { "id": "single",
                               "name": string,
                               "descr"?: string } } } ... ],
              "input"?: any,
              "output": any,
              "erro": any },
          "subdirs"?:
            { "suffixes": [ { "name": string,
                              "tree": $service_tree } ... ] }
            || { "dynamic_dispatch":
                   { "arg":
                       { "id": "single",
                         "name": string,
                         "descr"?: string },
                     "tree": $service_tree } } } }
    || { "dynamic": string || null }

GET /errors

Schema for all the RPC errors from the shell

  any

POST /injection/block?[async]&[force]&[chain=<chain_id>]

Inject a block in the node and broadcast it. The `operations` embedded in `blockHeader` might be pre-validated using a contextual RPCs from the latest block (e.g. '/blocks/head/context/preapply'). Returns the ID of the block. By default, the RPC will wait for the block to be validated before answering.

Optional query arguments :

  • async
  • force
  • chain = <chain_id>

  { "data": /^[a-zA-Z0-9]+$/,
    "operations":
      [ [ { "branch": string /* A block identifier (Base58Check-encoded) */,
            "data": /^[a-zA-Z0-9]+$/ } ... ] ... ] }
  string
  /* A block identifier (Base58Check-encoded) */

POST /injection/operation?[async]&[chain=<chain_id>]

Inject an operation in node and broadcast it. Returns the ID of the operation. The `signedOperationContents` should be constructed using a contextual RPCs from the latest block and signed by the client. By default, the RPC will wait for the operation to be (pre-)validated before answering. See RPCs under /blocks/prevalidation for more details on the prevalidation context.

Optional query arguments :

  • async
  • chain = <chain_id>

  /^[a-zA-Z0-9]+$/
  string
  /* A Tezos operation ID (Base58Check-encoded) */

POST /injection/protocol?[async]&[force]

Inject a protocol in node. Returns the ID of the protocol.

Optional query arguments :

  • async
  • force

  { "expected_env_version": integer ∈ [-2^15, 2^15-1],
    "components":
      [ { "name": string,
          "interface"?: /^[a-zA-Z0-9]+$/,
          "implementation": /^[a-zA-Z0-9]+$/ } ... ] }
  string
  /* A Tezos protocol ID (Base58Check-encoded) */

GET /monitor/bootstrapped

  { "block": string /* A block identifier (Base58Check-encoded) */,
    "timestamp":
      /* timestamp */
      $timestamp || integer ∈ [-2^31-2, 2^31+2] || string }
  $timestamp:
    /* RFC 3339 formatted timestamp
       A date in human readble form as specified in RFC 3339. */
    string

GET /monitor/heads/<chain_id>?(next_protocol=<Protocol_hash>)*

Optional query arguments :

  • next_protocol = <Protocol_hash>

  string
  /* A block identifier (Base58Check-encoded) */

GET /monitor/protocols

...FIXME...

  string
  /* A Tezos protocol ID (Base58Check-encoded) */

GET /monitor/valid_blocks?(protocol=<Protocol_hash>)*&(next_protocol=<Protocol_hash>)*&(chain=<chain_id>)*

Optional query arguments :

  • protocol = <Protocol_hash>
  • next_protocol = <Protocol_hash>
  • chain = <chain_id>

  { "chain_id": string /* Network identifier (Base58Check-encoded) */,
    "hash": string /* A block identifier (Base58Check-encoded) */ }

GET /network/connections

List the running P2P connection.

  [ { "incoming": boolean,
      "peer_id": string /* A Cryptobox public key ID (Base58Check-encoded) */,
      "id_point": { "addr": string,
                    "port"?: integer ∈ [0, 2^16-1] },
      "remote_socket_port": integer ∈ [0, 2^16-1],
      "versions":
        [ { "name": string,
            "major": integer ∈ [0, 2^16-1],
            "minor": integer ∈ [0, 2^16-1] } ... ] } ... ]

GET /network/connections/<peer_id>

Details about the current P2P connection to the given peer.

  { "incoming": boolean,
    "peer_id": string /* A Cryptobox public key ID (Base58Check-encoded) */,
    "id_point": { "addr": string,
                  "port"?: integer ∈ [0, 2^16-1] },
    "remote_socket_port": integer ∈ [0, 2^16-1],
    "versions":
      [ { "name": string,
          "major": integer ∈ [0, 2^16-1],
          "minor": integer ∈ [0, 2^16-1] } ... ] }

DELETE /network/connections/<peer_id>?[wait]

Forced close of the current P2P connection to the given peer.

Optional query arguments :

  • wait

  {  }

GET /network/greylist/clear

Clear all greylists tables.

  {  }

GET /network/log

Stream of all network events

  { "event": "too_few_connections" }
  || { "event": "too_many_connections" }
  || { "event": "new_point",
       "point": string }
  || { "event": "new_peer",
       "peer_id":
         string
         /* A Cryptobox public key ID (Base58Check-encoded) */ }
  || { "event": "incoming_connection",
       "point": string }
  || { "event": "outgoing_connection",
       "point": string }
  || { "event": "authentication_failed",
       "point": string }
  || { "event": "accepting_request",
       "point": string,
       "id_point": { "addr": string,
                     "port"?: integer ∈ [0, 2^16-1] },
       "peer_id":
         string
         /* A Cryptobox public key ID (Base58Check-encoded) */ }
  || { "event": "rejecting_request",
       "point": string,
       "id_point": { "addr": string,
                     "port"?: integer ∈ [0, 2^16-1] },
       "peer_id":
         string
         /* A Cryptobox public key ID (Base58Check-encoded) */ }
  || { "event": "request_rejected",
       "point": string,
       "identity"?:
         [ { "addr": string,
             "port"?: integer ∈ [0, 2^16-1] },
           string
           /* A Cryptobox public key ID (Base58Check-encoded) */ ] }
  || { "event": "connection_established",
       "id_point": { "addr": string,
                     "port"?: integer ∈ [0, 2^16-1] },
       "peer_id":
         string
         /* A Cryptobox public key ID (Base58Check-encoded) */ }
  || { "event": "disconnection",
       "peer_id":
         string
         /* A Cryptobox public key ID (Base58Check-encoded) */ }
  || { "event": "external_disconnection",
       "peer_id":
         string
         /* A Cryptobox public key ID (Base58Check-encoded) */ }
  || { "event": "gc_points" }
  || { "event": "gc_peer_ids" }
  || { "event": "swap_request_received",
       "source": string /* A Cryptobox public key ID (Base58Check-encoded) */ }
  || { "event": "swap_ack_received",
       "source": string /* A Cryptobox public key ID (Base58Check-encoded) */ }
  || { "event": "swap_request_sent",
       "source": string /* A Cryptobox public key ID (Base58Check-encoded) */ }
  || { "event": "swap_ack_sent",
       "source": string /* A Cryptobox public key ID (Base58Check-encoded) */ }
  || { "event": "swap_request_ignored",
       "source": string /* A Cryptobox public key ID (Base58Check-encoded) */ }
  || { "event": "swap_success",
       "source": string /* A Cryptobox public key ID (Base58Check-encoded) */ }
  || { "event": "swap_failure",
       "source": string /* A Cryptobox public key ID (Base58Check-encoded) */ }

GET /network/peers?(filter=<p2p.point.state_filter>)*

List the peers the node ever met.

Optional query arguments :

  • filter = <p2p.point.state_filter>

  [ [ string
      /* A Cryptobox public key ID (Base58Check-encoded) */,
      { "score": number,
        "trusted": boolean,
        "state": "running" | "accepted" | "disconnected",
        "reachable_at"?: { "addr": string,
                           "port"?: integer ∈ [0, 2^16-1] },
        "stat":
          { "total_sent": integer ∈ [-2^31-2, 2^31+2] || string,
            "total_recv": integer ∈ [-2^31-2, 2^31+2] || string,
            "current_inflow": integer ∈ [-2^30-2, 2^30+2],
            "current_outflow": integer ∈ [-2^30-2, 2^30+2] },
        "last_failed_connection"?:
          [ { "addr": string,
              "port"?: integer ∈ [0, 2^16-1] },
            /* timestamp */
            $timestamp || integer ∈ [-2^31-2, 2^31+2] || string ],
        "last_rejected_connection"?:
          [ { "addr": string,
              "port"?: integer ∈ [0, 2^16-1] },
            /* timestamp */
            $timestamp || integer ∈ [-2^31-2, 2^31+2] || string ],
        "last_established_connection"?:
          [ { "addr": string,
              "port"?: integer ∈ [0, 2^16-1] },
            /* timestamp */
            $timestamp || integer ∈ [-2^31-2, 2^31+2] || string ],
        "last_disconnection"?:
          [ { "addr": string,
              "port"?: integer ∈ [0, 2^16-1] },
            /* timestamp */
            $timestamp || integer ∈ [-2^31-2, 2^31+2] || string ],
        "last_seen"?:
          [ { "addr": string,
              "port"?: integer ∈ [0, 2^16-1] },
            /* timestamp */
            $timestamp || integer ∈ [-2^31-2, 2^31+2] || string ],
        "last_miss"?:
          [ { "addr": string,
              "port"?: integer ∈ [0, 2^16-1] },
            /* timestamp */
            $timestamp || integer ∈ [-2^31-2, 2^31+2] || string ] } ] ... ]
  $timestamp:
    /* RFC 3339 formatted timestamp
       A date in human readble form as specified in RFC 3339. */
    string

GET /network/peers/<peer_id>

Details about a given peer.

  { "score": number,
    "trusted": boolean,
    "state": "running" | "accepted" | "disconnected",
    "reachable_at"?: { "addr": string,
                       "port"?: integer ∈ [0, 2^16-1] },
    "stat":
      { "total_sent": integer ∈ [-2^31-2, 2^31+2] || string,
        "total_recv": integer ∈ [-2^31-2, 2^31+2] || string,
        "current_inflow": integer ∈ [-2^30-2, 2^30+2],
        "current_outflow": integer ∈ [-2^30-2, 2^30+2] },
    "last_failed_connection"?:
      [ { "addr": string,
          "port"?: integer ∈ [0, 2^16-1] },
        /* timestamp */
        $timestamp || integer ∈ [-2^31-2, 2^31+2] || string ],
    "last_rejected_connection"?:
      [ { "addr": string,
          "port"?: integer ∈ [0, 2^16-1] },
        /* timestamp */
        $timestamp || integer ∈ [-2^31-2, 2^31+2] || string ],
    "last_established_connection"?:
      [ { "addr": string,
          "port"?: integer ∈ [0, 2^16-1] },
        /* timestamp */
        $timestamp || integer ∈ [-2^31-2, 2^31+2] || string ],
    "last_disconnection"?:
      [ { "addr": string,
          "port"?: integer ∈ [0, 2^16-1] },
        /* timestamp */
        $timestamp || integer ∈ [-2^31-2, 2^31+2] || string ],
    "last_seen"?:
      [ { "addr": string,
          "port"?: integer ∈ [0, 2^16-1] },
        /* timestamp */
        $timestamp || integer ∈ [-2^31-2, 2^31+2] || string ],
    "last_miss"?:
      [ { "addr": string,
          "port"?: integer ∈ [0, 2^16-1] },
        /* timestamp */
        $timestamp || integer ∈ [-2^31-2, 2^31+2] || string ] }
  $timestamp:
    /* RFC 3339 formatted timestamp
       A date in human readble form as specified in RFC 3339. */
    string

GET /network/peers/<peer_id>/ban

Blacklist the given peer.

  {  }

GET /network/peers/<peer_id>/banned

Check if a given peer is blacklisted or greylisted.

  boolean

GET /network/peers/<peer_id>/log?[monitor]

Monitor network events related to a given peer.

Optional query arguments :

  • monitor

  [ { "kind":
        "rejecting_request"
        | "incoming_request"
        | "disconnection"
        | "external_disconnection"
        | "connection_established"
        | "request_rejected",
      "timestamp":
        /* timestamp */
        $timestamp || integer ∈ [-2^31-2, 2^31+2] || string,
      "addr": string,
      "port"?: integer ∈ [-2^15, 2^15-1] } ... ]
  $timestamp:
    /* RFC 3339 formatted timestamp
       A date in human readble form as specified in RFC 3339. */
    string

GET /network/peers/<peer_id>/trust

Trust a given peer permanently: the peer cannot be blocked (but its host IP still can).

  {  }

GET /network/points?(filter=<p2p.point.state_filter>)*

List the pool of known `IP:port` used for establishing P2P connections.

Optional query arguments :

  • filter = <p2p.point.state_filter>

  [ [ string,
      { "trusted": boolean,
        "greylisted_until"?:
          /* timestamp */
          $timestamp || integer ∈ [-2^31-2, 2^31+2] || string,
        "state":
          { "event_kind": "requested" }
          || { "event_kind": "accepted",
               "p2p_peer_id":
                 string
                 /* A Cryptobox public key ID (Base58Check-encoded) */ }
          || { "event_kind": "running",
               "p2p_peer_id":
                 string
                 /* A Cryptobox public key ID (Base58Check-encoded) */ }
          || { "event_kind": "disconnected" },
        "p2p_peer_id"?:
          string
          /* A Cryptobox public key ID (Base58Check-encoded) */,
        "last_failed_connection"?:
          /* timestamp */
          $timestamp || integer ∈ [-2^31-2, 2^31+2] || string,
        "last_rejected_connection"?:
          [ string
            /* A Cryptobox public key ID (Base58Check-encoded) */,
            /* timestamp */
            $timestamp || integer ∈ [-2^31-2, 2^31+2] || string ],
        "last_established_connection"?:
          [ string
            /* A Cryptobox public key ID (Base58Check-encoded) */,
            /* timestamp */
            $timestamp || integer ∈ [-2^31-2, 2^31+2] || string ],
        "last_disconnection"?:
          [ string
            /* A Cryptobox public key ID (Base58Check-encoded) */,
            /* timestamp */
            $timestamp || integer ∈ [-2^31-2, 2^31+2] || string ],
        "last_seen"?:
          [ string
            /* A Cryptobox public key ID (Base58Check-encoded) */,
            /* timestamp */
            $timestamp || integer ∈ [-2^31-2, 2^31+2] || string ],
        "last_miss"?:
          /* timestamp */
          $timestamp || integer ∈ [-2^31-2, 2^31+2] || string } ] ... ]
  $timestamp:
    /* RFC 3339 formatted timestamp
       A date in human readble form as specified in RFC 3339. */
    string

GET /network/points/<point>

Details about a given `IP:addr`.

  { "trusted": boolean,
    "greylisted_until"?:
      /* timestamp */
      $timestamp || integer ∈ [-2^31-2, 2^31+2] || string,
    "state":
      { "event_kind": "requested" }
      || { "event_kind": "accepted",
           "p2p_peer_id":
             string
             /* A Cryptobox public key ID (Base58Check-encoded) */ }
      || { "event_kind": "running",
           "p2p_peer_id":
             string
             /* A Cryptobox public key ID (Base58Check-encoded) */ }
      || { "event_kind": "disconnected" },
    "p2p_peer_id"?:
      string
      /* A Cryptobox public key ID (Base58Check-encoded) */,
    "last_failed_connection"?:
      /* timestamp */
      $timestamp || integer ∈ [-2^31-2, 2^31+2] || string,
    "last_rejected_connection"?:
      [ string
        /* A Cryptobox public key ID (Base58Check-encoded) */,
        /* timestamp */
        $timestamp || integer ∈ [-2^31-2, 2^31+2] || string ],
    "last_established_connection"?:
      [ string
        /* A Cryptobox public key ID (Base58Check-encoded) */,
        /* timestamp */
        $timestamp || integer ∈ [-2^31-2, 2^31+2] || string ],
    "last_disconnection"?:
      [ string
        /* A Cryptobox public key ID (Base58Check-encoded) */,
        /* timestamp */
        $timestamp || integer ∈ [-2^31-2, 2^31+2] || string ],
    "last_seen"?:
      [ string
        /* A Cryptobox public key ID (Base58Check-encoded) */,
        /* timestamp */
        $timestamp || integer ∈ [-2^31-2, 2^31+2] || string ],
    "last_miss"?:
      /* timestamp */
      $timestamp || integer ∈ [-2^31-2, 2^31+2] || string }
  $timestamp:
    /* RFC 3339 formatted timestamp
       A date in human readble form as specified in RFC 3339. */
    string

PUT /network/points/<point>?[timeout=<float>]

Connect to a peer

Optional query arguments :

  • timeout = <float>

  {  }
  {  }

GET /network/points/<point>/ban

Blacklist the given address.

  {  }

GET /network/points/<point>/banned

Check is a given address is blacklisted or greylisted.

  boolean

GET /network/points/<point>/log?[monitor]

Monitor network events related to an `IP:addr`.

Optional query arguments :

  • monitor

  [ { "kind":
        { "event_kind": "outgoing_request" }
        || { "event_kind": "accepting_request",
             "p2p_peer_id":
               string
               /* A Cryptobox public key ID (Base58Check-encoded) */ }
        || { "event_kind": "rejecting_request",
             "p2p_peer_id":
               string
               /* A Cryptobox public key ID (Base58Check-encoded) */ }
        || { "event_kind": "request_rejected",
             "p2p_peer_id"?:
               string
               /* A Cryptobox public key ID (Base58Check-encoded) */ }
        || { "event_kind": "rejecting_request",
             "p2p_peer_id":
               string
               /* A Cryptobox public key ID (Base58Check-encoded) */ }
        || { "event_kind": "rejecting_request",
             "p2p_peer_id":
               string
               /* A Cryptobox public key ID (Base58Check-encoded) */ }
        || { "event_kind": "rejecting_request",
             "p2p_peer_id":
               string
               /* A Cryptobox public key ID (Base58Check-encoded) */ },
      "timestamp":
        /* timestamp */
        $timestamp || integer ∈ [-2^31-2, 2^31+2] || string } ... ]
  $timestamp:
    /* RFC 3339 formatted timestamp
       A date in human readble form as specified in RFC 3339. */
    string

GET /network/points/<point>/trust

Trust a given address permanently. Connections from this address can still be closed on authentication if the peer is blacklisted or greylisted.

  {  }

GET /network/stat

Global network bandwidth statistics in B/s.

  { "total_sent": integer ∈ [-2^31-2, 2^31+2] || string,
    "total_recv": integer ∈ [-2^31-2, 2^31+2] || string,
    "current_inflow": integer ∈ [-2^30-2, 2^30+2],
    "current_outflow": integer ∈ [-2^30-2, 2^30+2] }

GET /network/versions

Supported network layer versions.

  [ { "name": string,
      "major": integer ∈ [0, 2^16-1],
      "minor": integer ∈ [0, 2^16-1] } ... ]

GET /protocols

  [ string
  /* A Tezos protocol ID (Base58Check-encoded) */ ... ]

GET /protocols/<Protocol_hash>

  { "expected_env_version": integer ∈ [-2^15, 2^15-1],
    "components":
      [ { "name": string,
          "interface"?: /^[a-zA-Z0-9]+$/,
          "implementation": /^[a-zA-Z0-9]+$/ } ... ] }

GET /workers/block_validator

Introspect the state of the block_validator worker.

  { "status":
      { "phase": "launching",
        "since":
          /* timestamp */
          $timestamp || integer ∈ [-2^31-2, 2^31+2] || string }
      || { "phase": "running",
           "since":
             /* timestamp */
             $timestamp || integer ∈ [-2^31-2, 2^31+2] || string }
      || { "phase": "closing",
           "birth":
             /* timestamp */
             $timestamp || integer ∈ [-2^31-2, 2^31+2] || string,
           "since":
             /* timestamp */
             $timestamp || integer ∈ [-2^31-2, 2^31+2] || string }
      || { "phase": "closed",
           "birth":
             /* timestamp */
             $timestamp || integer ∈ [-2^31-2, 2^31+2] || string,
           "since":
             /* timestamp */
             $timestamp || integer ∈ [-2^31-2, 2^31+2] || string }
      || { "phase": "crashed",
           "birth":
             /* timestamp */
             $timestamp || integer ∈ [-2^31-2, 2^31+2] || string,
           "since":
             /* timestamp */
             $timestamp || integer ∈ [-2^31-2, 2^31+2] || string,
           "errors":
             any
             /* The full list of error is available with the global RPC `GET
                errors` */ },
    "pending_requests":
      [ { "pushed":
            /* timestamp */
            $timestamp || integer ∈ [-2^31-2, 2^31+2] || string,
          "request":
            { "block": string /* A block identifier (Base58Check-encoded) */,
              "chain_id":
                string
                /* Network identifier (Base58Check-encoded) */,
              "peer"?:
                string
                /* A Cryptobox public key ID (Base58Check-encoded) */ } } ... ],
    "backlog":
      [ { "level": string,
          "events":
            [ /* Event state */
            { "message": string }
            || { "successful_validation":
                   { "block":
                       string
                       /* A block identifier (Base58Check-encoded) */,
                     "chain_id":
                       string
                       /* Network identifier (Base58Check-encoded) */,
                     "peer"?:
                       string
                       /* A Cryptobox public key ID (Base58Check-encoded) */ },
                 "status":
                   { "pushed":
                       /* timestamp */
                       $timestamp || integer ∈ [-2^31-2, 2^31+2] || string,
                     "treated":
                       /* timestamp */
                       $timestamp || integer ∈ [-2^31-2, 2^31+2] || string,
                     "completed":
                       /* timestamp */
                       $timestamp || integer ∈ [-2^31-2, 2^31+2] || string } }
            || { "failed_validation":
                   { "block":
                       string
                       /* A block identifier (Base58Check-encoded) */,
                     "chain_id":
                       string
                       /* Network identifier (Base58Check-encoded) */,
                     "peer"?:
                       string
                       /* A Cryptobox public key ID (Base58Check-encoded) */ },
                 "status":
                   { "pushed":
                       /* timestamp */
                       $timestamp || integer ∈ [-2^31-2, 2^31+2] || string,
                     "treated":
                       /* timestamp */
                       $timestamp || integer ∈ [-2^31-2, 2^31+2] || string,
                     "completed":
                       /* timestamp */
                       $timestamp || integer ∈ [-2^31-2, 2^31+2] || string },
                 "errors"?:
                   any
                   /* The full list of error is available with the global RPC
                      `GET errors` */ } ... ] } ... ],
    "current_request"?:
      { "pushed":
          /* timestamp */
          $timestamp || integer ∈ [-2^31-2, 2^31+2] || string,
        "treated":
          /* timestamp */
          $timestamp || integer ∈ [-2^31-2, 2^31+2] || string,
        "request":
          { "block": string /* A block identifier (Base58Check-encoded) */,
            "chain_id": string /* Network identifier (Base58Check-encoded) */,
            "peer"?:
              string
              /* A Cryptobox public key ID (Base58Check-encoded) */ } } }
  $timestamp:
    /* RFC 3339 formatted timestamp
       A date in human readble form as specified in RFC 3339. */
    string

GET /workers/chain_validators

Lists the chain validator workers and their status.

  [ { "chain_id": string /* Network identifier (Base58Check-encoded) */,
      "status":
        { "phase": "launching",
          "since":
            /* timestamp */
            $timestamp || integer ∈ [-2^31-2, 2^31+2] || string }
        || { "phase": "running",
             "since":
               /* timestamp */
               $timestamp || integer ∈ [-2^31-2, 2^31+2] || string }
        || { "phase": "closing",
             "birth":
               /* timestamp */
               $timestamp || integer ∈ [-2^31-2, 2^31+2] || string,
             "since":
               /* timestamp */
               $timestamp || integer ∈ [-2^31-2, 2^31+2] || string }
        || { "phase": "closed",
             "birth":
               /* timestamp */
               $timestamp || integer ∈ [-2^31-2, 2^31+2] || string,
             "since":
               /* timestamp */
               $timestamp || integer ∈ [-2^31-2, 2^31+2] || string }
        || { "phase": "crashed",
             "birth":
               /* timestamp */
               $timestamp || integer ∈ [-2^31-2, 2^31+2] || string,
             "since":
               /* timestamp */
               $timestamp || integer ∈ [-2^31-2, 2^31+2] || string,
             "errors":
               any
               /* The full list of error is available with the global RPC
                  `GET errors` */ } } ... ]
  $timestamp:
    /* RFC 3339 formatted timestamp
       A date in human readble form as specified in RFC 3339. */
    string

GET /workers/chain_validators/<chain_id>

Introspect the state of a chain validator worker.

  { "status":
      { "phase": "launching",
        "since":
          /* timestamp */
          $timestamp || integer ∈ [-2^31-2, 2^31+2] || string }
      || { "phase": "running",
           "since":
             /* timestamp */
             $timestamp || integer ∈ [-2^31-2, 2^31+2] || string }
      || { "phase": "closing",
           "birth":
             /* timestamp */
             $timestamp || integer ∈ [-2^31-2, 2^31+2] || string,
           "since":
             /* timestamp */
             $timestamp || integer ∈ [-2^31-2, 2^31+2] || string }
      || { "phase": "closed",
           "birth":
             /* timestamp */
             $timestamp || integer ∈ [-2^31-2, 2^31+2] || string,
           "since":
             /* timestamp */
             $timestamp || integer ∈ [-2^31-2, 2^31+2] || string }
      || { "phase": "crashed",
           "birth":
             /* timestamp */
             $timestamp || integer ∈ [-2^31-2, 2^31+2] || string,
           "since":
             /* timestamp */
             $timestamp || integer ∈ [-2^31-2, 2^31+2] || string,
           "errors":
             any
             /* The full list of error is available with the global RPC `GET
                errors` */ },
    "pending_requests":
      [ { "pushed":
            /* timestamp */
            $timestamp || integer ∈ [-2^31-2, 2^31+2] || string,
          "request": string /* A block identifier (Base58Check-encoded) */ } ... ],
    "backlog":
      [ { "level": string,
          "events":
            [ { "request":
                  string
                  /* A block identifier (Base58Check-encoded) */,
                "status":
                  { "pushed":
                      /* timestamp */
                      $timestamp || integer ∈ [-2^31-2, 2^31+2] || string,
                    "treated":
                      /* timestamp */
                      $timestamp || integer ∈ [-2^31-2, 2^31+2] || string,
                    "completed":
                      /* timestamp */
                      $timestamp || integer ∈ [-2^31-2, 2^31+2] || string },
                "outcome": "branch" | "ignored" | "increment",
                "fitness": [ /^[a-zA-Z0-9]+$/ ... ] /* Tezos block fitness */ }
              || any
              /* The full list of error is available with the global RPC `GET
                 errors` */ ... ] } ... ],
    "current_request"?:
      { "pushed":
          /* timestamp */
          $timestamp || integer ∈ [-2^31-2, 2^31+2] || string,
        "treated":
          /* timestamp */
          $timestamp || integer ∈ [-2^31-2, 2^31+2] || string,
        "request": string /* A block identifier (Base58Check-encoded) */ } }
  $timestamp:
    /* RFC 3339 formatted timestamp
       A date in human readble form as specified in RFC 3339. */
    string

GET /workers/chain_validators/<chain_id>/peers_validators

Lists the peer validator workers and their status.

  [ { "peer_id": string /* A Cryptobox public key ID (Base58Check-encoded) */,
      "status":
        { "phase": "launching",
          "since":
            /* timestamp */
            $timestamp || integer ∈ [-2^31-2, 2^31+2] || string }
        || { "phase": "running",
             "since":
               /* timestamp */
               $timestamp || integer ∈ [-2^31-2, 2^31+2] || string }
        || { "phase": "closing",
             "birth":
               /* timestamp */
               $timestamp || integer ∈ [-2^31-2, 2^31+2] || string,
             "since":
               /* timestamp */
               $timestamp || integer ∈ [-2^31-2, 2^31+2] || string }
        || { "phase": "closed",
             "birth":
               /* timestamp */
               $timestamp || integer ∈ [-2^31-2, 2^31+2] || string,
             "since":
               /* timestamp */
               $timestamp || integer ∈ [-2^31-2, 2^31+2] || string }
        || { "phase": "crashed",
             "birth":
               /* timestamp */
               $timestamp || integer ∈ [-2^31-2, 2^31+2] || string,
             "since":
               /* timestamp */
               $timestamp || integer ∈ [-2^31-2, 2^31+2] || string,
             "errors":
               any
               /* The full list of error is available with the global RPC
                  `GET errors` */ } } ... ]
  $timestamp:
    /* RFC 3339 formatted timestamp
       A date in human readble form as specified in RFC 3339. */
    string

GET /workers/chain_validators/<chain_id>/peers_validators/<peer_id>

Introspect the state of a peer validator worker.

  { "status":
      { "phase": "launching",
        "since":
          /* timestamp */
          $timestamp || integer ∈ [-2^31-2, 2^31+2] || string }
      || { "phase": "running",
           "since":
             /* timestamp */
             $timestamp || integer ∈ [-2^31-2, 2^31+2] || string }
      || { "phase": "closing",
           "birth":
             /* timestamp */
             $timestamp || integer ∈ [-2^31-2, 2^31+2] || string,
           "since":
             /* timestamp */
             $timestamp || integer ∈ [-2^31-2, 2^31+2] || string }
      || { "phase": "closed",
           "birth":
             /* timestamp */
             $timestamp || integer ∈ [-2^31-2, 2^31+2] || string,
           "since":
             /* timestamp */
             $timestamp || integer ∈ [-2^31-2, 2^31+2] || string }
      || { "phase": "crashed",
           "birth":
             /* timestamp */
             $timestamp || integer ∈ [-2^31-2, 2^31+2] || string,
           "since":
             /* timestamp */
             $timestamp || integer ∈ [-2^31-2, 2^31+2] || string,
           "errors":
             any
             /* The full list of error is available with the global RPC `GET
                errors` */ },
    "pending_requests":
      [ { "pushed":
            /* timestamp */
            $timestamp || integer ∈ [-2^31-2, 2^31+2] || string,
          "request":
            { "request": "new_head",
              "block": string /* A block identifier (Base58Check-encoded) */ }
            || { "request": "new_branch",
                 "block":
                   string
                   /* A block identifier (Base58Check-encoded) */,
                 "locator_length": integer ∈ [0, 2^16-1] } } ... ],
    "backlog":
      [ { "level": string,
          "events":
            [ { "message": string }
              || { "request":
                     { "request": "new_head",
                       "block":
                         string
                         /* A block identifier (Base58Check-encoded) */ }
                     || { "request": "new_branch",
                          "block":
                            string
                            /* A block identifier (Base58Check-encoded) */,
                          "locator_length": integer ∈ [0, 2^16-1] },
                   "status":
                     { "pushed":
                         /* timestamp */
                         $timestamp
                         || integer ∈ [-2^31-2, 2^31+2] || string,
                       "treated":
                         /* timestamp */
                         $timestamp
                         || integer ∈ [-2^31-2, 2^31+2] || string,
                       "completed":
                         /* timestamp */
                         $timestamp
                         || integer ∈ [-2^31-2, 2^31+2] || string } }
              || { "error":
                     any
                     /* The full list of error is available with the global
                        RPC `GET errors` */,
                   "failed_request":
                     { "request": "new_head",
                       "block":
                         string
                         /* A block identifier (Base58Check-encoded) */ }
                     || { "request": "new_branch",
                          "block":
                            string
                            /* A block identifier (Base58Check-encoded) */,
                          "locator_length": integer ∈ [0, 2^16-1] },
                   "status":
                     { "pushed":
                         /* timestamp */
                         $timestamp
                         || integer ∈ [-2^31-2, 2^31+2] || string,
                       "treated":
                         /* timestamp */
                         $timestamp
                         || integer ∈ [-2^31-2, 2^31+2] || string,
                       "completed":
                         /* timestamp */
                         $timestamp
                         || integer ∈ [-2^31-2, 2^31+2] || string } } ... ] } ... ],
    "current_request"?:
      { "pushed":
          /* timestamp */
          $timestamp || integer ∈ [-2^31-2, 2^31+2] || string,
        "treated":
          /* timestamp */
          $timestamp || integer ∈ [-2^31-2, 2^31+2] || string,
        "request":
          { "request": "new_head",
            "block": string /* A block identifier (Base58Check-encoded) */ }
          || { "request": "new_branch",
               "block": string /* A block identifier (Base58Check-encoded) */,
               "locator_length": integer ∈ [0, 2^16-1] } } }
  $timestamp:
    /* RFC 3339 formatted timestamp
       A date in human readble form as specified in RFC 3339. */
    string

GET /workers/prevalidators

Lists the Prevalidator workers and their status.

  [ { "chain_id": string /* Network identifier (Base58Check-encoded) */,
      "status":
        { "phase": "launching",
          "since":
            /* timestamp */
            $timestamp || integer ∈ [-2^31-2, 2^31+2] || string }
        || { "phase": "running",
             "since":
               /* timestamp */
               $timestamp || integer ∈ [-2^31-2, 2^31+2] || string }
        || { "phase": "closing",
             "birth":
               /* timestamp */
               $timestamp || integer ∈ [-2^31-2, 2^31+2] || string,
             "since":
               /* timestamp */
               $timestamp || integer ∈ [-2^31-2, 2^31+2] || string }
        || { "phase": "closed",
             "birth":
               /* timestamp */
               $timestamp || integer ∈ [-2^31-2, 2^31+2] || string,
             "since":
               /* timestamp */
               $timestamp || integer ∈ [-2^31-2, 2^31+2] || string }
        || { "phase": "crashed",
             "birth":
               /* timestamp */
               $timestamp || integer ∈ [-2^31-2, 2^31+2] || string,
             "since":
               /* timestamp */
               $timestamp || integer ∈ [-2^31-2, 2^31+2] || string,
             "errors":
               any
               /* The full list of error is available with the global RPC
                  `GET errors` */ } } ... ]
  $timestamp:
    /* RFC 3339 formatted timestamp
       A date in human readble form as specified in RFC 3339. */
    string

GET /workers/prevalidators/<chain_id>

Introspect the state of a prevalidator worker.

  { "status":
      { "phase": "launching",
        "since":
          /* timestamp */
          $timestamp || integer ∈ [-2^31-2, 2^31+2] || string }
      || { "phase": "running",
           "since":
             /* timestamp */
             $timestamp || integer ∈ [-2^31-2, 2^31+2] || string }
      || { "phase": "closing",
           "birth":
             /* timestamp */
             $timestamp || integer ∈ [-2^31-2, 2^31+2] || string,
           "since":
             /* timestamp */
             $timestamp || integer ∈ [-2^31-2, 2^31+2] || string }
      || { "phase": "closed",
           "birth":
             /* timestamp */
             $timestamp || integer ∈ [-2^31-2, 2^31+2] || string,
           "since":
             /* timestamp */
             $timestamp || integer ∈ [-2^31-2, 2^31+2] || string }
      || { "phase": "crashed",
           "birth":
             /* timestamp */
             $timestamp || integer ∈ [-2^31-2, 2^31+2] || string,
           "since":
             /* timestamp */
             $timestamp || integer ∈ [-2^31-2, 2^31+2] || string,
           "errors":
             any
             /* The full list of error is available with the global RPC `GET
                errors` */ },
    "pending_requests":
      [ { "pushed":
            /* timestamp */
            $timestamp || integer ∈ [-2^31-2, 2^31+2] || string,
          "request":
            { "request": "flush",
              "block": string /* A block identifier (Base58Check-encoded) */ }
            || { "request": "notify",
                 "peer":
                   string
                   /* A Cryptobox public key ID (Base58Check-encoded) */,
                 "mempool":
                   { "known_valid":
                       [ string
                       /* A Tezos operation ID (Base58Check-encoded) */ ... ],
                     "pending":
                       [ string
                       /* A Tezos operation ID (Base58Check-encoded) */ ... ] } }
            || { "request": "inject",
                 "operation":
                   { "branch":
                       string
                       /* A block identifier (Base58Check-encoded) */,
                     "data": /^[a-zA-Z0-9]+$/ } }
            || { "request": "arrived",
                 "operation_hash":
                   string
                   /* A Tezos operation ID (Base58Check-encoded) */,
                 "operation":
                   { "branch":
                       string
                       /* A block identifier (Base58Check-encoded) */,
                     "data": /^[a-zA-Z0-9]+$/ } }
            || { "request": "advertise" } } ... ],
    "backlog":
      [ { "level": string,
          "events":
            [ { "message": string }
              || { "request":
                     { "request": "flush",
                       "block":
                         string
                         /* A block identifier (Base58Check-encoded) */ }
                     || { "request": "notify",
                          "peer":
                            string
                            /* A Cryptobox public key ID
                               (Base58Check-encoded) */,
                          "mempool":
                            { "known_valid":
                                [ string
                                /* A Tezos operation ID (Base58Check-encoded) */ ... ],
                              "pending":
                                [ string
                                /* A Tezos operation ID (Base58Check-encoded) */ ... ] } }
                     || { "request": "inject",
                          "operation":
                            { "branch":
                                string
                                /* A block identifier (Base58Check-encoded) */,
                              "data": /^[a-zA-Z0-9]+$/ } }
                     || { "request": "arrived",
                          "operation_hash":
                            string
                            /* A Tezos operation ID (Base58Check-encoded) */,
                          "operation":
                            { "branch":
                                string
                                /* A block identifier (Base58Check-encoded) */,
                              "data": /^[a-zA-Z0-9]+$/ } }
                     || { "request": "advertise" },
                   "status":
                     { "pushed":
                         /* timestamp */
                         $timestamp
                         || integer ∈ [-2^31-2, 2^31+2] || string,
                       "treated":
                         /* timestamp */
                         $timestamp
                         || integer ∈ [-2^31-2, 2^31+2] || string,
                       "completed":
                         /* timestamp */
                         $timestamp
                         || integer ∈ [-2^31-2, 2^31+2] || string } }
              || { "error":
                     any
                     /* The full list of error is available with the global
                        RPC `GET errors` */,
                   "failed_request":
                     { "request": "flush",
                       "block":
                         string
                         /* A block identifier (Base58Check-encoded) */ }
                     || { "request": "notify",
                          "peer":
                            string
                            /* A Cryptobox public key ID
                               (Base58Check-encoded) */,
                          "mempool":
                            { "known_valid":
                                [ string
                                /* A Tezos operation ID (Base58Check-encoded) */ ... ],
                              "pending":
                                [ string
                                /* A Tezos operation ID (Base58Check-encoded) */ ... ] } }
                     || { "request": "inject",
                          "operation":
                            { "branch":
                                string
                                /* A block identifier (Base58Check-encoded) */,
                              "data": /^[a-zA-Z0-9]+$/ } }
                     || { "request": "arrived",
                          "operation_hash":
                            string
                            /* A Tezos operation ID (Base58Check-encoded) */,
                          "operation":
                            { "branch":
                                string
                                /* A block identifier (Base58Check-encoded) */,
                              "data": /^[a-zA-Z0-9]+$/ } }
                     || { "request": "advertise" },
                   "status":
                     { "pushed":
                         /* timestamp */
                         $timestamp
                         || integer ∈ [-2^31-2, 2^31+2] || string,
                       "treated":
                         /* timestamp */
                         $timestamp
                         || integer ∈ [-2^31-2, 2^31+2] || string,
                       "completed":
                         /* timestamp */
                         $timestamp
                         || integer ∈ [-2^31-2, 2^31+2] || string } } ... ] } ... ],
    "current_request"?:
      { "pushed":
          /* timestamp */
          $timestamp || integer ∈ [-2^31-2, 2^31+2] || string,
        "treated":
          /* timestamp */
          $timestamp || integer ∈ [-2^31-2, 2^31+2] || string,
        "request":
          { "request": "flush",
            "block": string /* A block identifier (Base58Check-encoded) */ }
          || { "request": "notify",
               "peer":
                 string
                 /* A Cryptobox public key ID (Base58Check-encoded) */,
               "mempool":
                 { "known_valid":
                     [ string
                     /* A Tezos operation ID (Base58Check-encoded) */ ... ],
                   "pending":
                     [ string
                     /* A Tezos operation ID (Base58Check-encoded) */ ... ] } }
          || { "request": "inject",
               "operation":
                 { "branch":
                     string
                     /* A block identifier (Base58Check-encoded) */,
                   "data": /^[a-zA-Z0-9]+$/ } }
          || { "request": "arrived",
               "operation_hash":
                 string
                 /* A Tezos operation ID (Base58Check-encoded) */,
               "operation":
                 { "branch":
                     string
                     /* A block identifier (Base58Check-encoded) */,
                   "data": /^[a-zA-Z0-9]+$/ } }
          || { "request": "advertise" } } }
  $timestamp:
    /* RFC 3339 formatted timestamp
       A date in human readble form as specified in RFC 3339. */
    string

Protocol Alpha

GET ../<block_id>

All the information about a block.

  { "protocol": "PtCJ7pwoxe8JasnHY8YonnLYjcVHmhiARPJvqcC6VfHT5s8k8sY",
    "chain_id": string /* Network identifier (Base58Check-encoded) */,
    "hash": string /* A block identifier (Base58Check-encoded) */,
    "header": $raw_block_header,
    "metadata": $block_header_metadata,
    "operations": [ [ $operation ... ] ... ] }
  $bignum:
    /* Big number
       Decimal representation of a big number */
    string
  $block_header.alpha.full_header:
    { "level": integer ∈ [-2^31-2, 2^31+2],
      "proto": integer ∈ [0, 255],
      "predecessor": string /* A block identifier (Base58Check-encoded) */,
      "timestamp":
        /* timestamp */
        $timestamp || integer ∈ [-2^31-2, 2^31+2] || string,
      "validation_pass": integer ∈ [0, 255],
      "operations_hash":
        string
        /* A list of list of operations (Base58Check-encoded) */,
      "fitness": [ /^[a-zA-Z0-9]+$/ ... ] /* Tezos block fitness */,
      "context": string /* A hash of context (Base58Check-encoded) */,
      "priority": integer ∈ [0, 2^16-1],
      "proof_of_work_nonce": /^[a-zA-Z0-9]+$/,
      "seed_nonce_hash"?: string /* A nonce hash (Base58Check-encoded) */,
      "signature":
        string
        /* A Secp256k1 or Ed25519 signature (Base58Check-encoded) */ }
  $block_header_metadata:
    { "protocol": "PtCJ7pwoxe8JasnHY8YonnLYjcVHmhiARPJvqcC6VfHT5s8k8sY",
      "next_protocol": "PtCJ7pwoxe8JasnHY8YonnLYjcVHmhiARPJvqcC6VfHT5s8k8sY",
      "test_chain_status":
        /* Test chain status */
        { "status": "not_running" }
        || { "status": "forking",
             "protocol":
               string
               /* A Tezos protocol ID (Base58Check-encoded) */,
             "expiration":
               /* timestamp */
               $timestamp || integer ∈ [-2^31-2, 2^31+2] || string }
        || { "status": "running",
             "chain_id":
               string
               /* Network identifier (Base58Check-encoded) */,
             "genesis": string /* A block identifier (Base58Check-encoded) */,
             "protocol":
               string
               /* A Tezos protocol ID (Base58Check-encoded) */,
             "expiration":
               /* timestamp */
               $timestamp || integer ∈ [-2^31-2, 2^31+2] || string },
      "max_operations_ttl": integer ∈ [-2^30-2, 2^30+2],
      "max_operation_data_length": integer ∈ [-2^30-2, 2^30+2],
      "max_block_header_length": integer ∈ [-2^30-2, 2^30+2],
      "max_operation_list_length":
        [ { "max_size": integer ∈ [-2^30-2, 2^30+2],
            "max_op"?: integer ∈ [-2^30-2, 2^30+2] } ... ],
      "baker":
        string
        /* A Secp256k1 or Ed25519 public key hash (Base58Check-encoded) */,
      "level":
        { "level": integer ∈ [-2^31-2, 2^31+2],
          "level_position": integer ∈ [-2^31-2, 2^31+2],
          "cycle": integer ∈ [-2^31-2, 2^31+2],
          "cycle_position": integer ∈ [-2^31-2, 2^31+2],
          "voting_period": integer ∈ [-2^31-2, 2^31+2],
          "voting_period_position": integer ∈ [-2^31-2, 2^31+2],
          "expected_commitment": boolean },
      "voting_period_kind":
        "proposal" || "testing_vote" || "testing" || "promotion_vote" }
  $contract_id:
    /* A contract handle
       A contract notation as given to an RPC or inside scripts. Can be a
       base58 implicit contract hash or a base58 originated contract hash. */
    string
  $error:
    /* ... FIXME ... */
    any
  $micheline.michelson_v1.expression:
    /* Micheline expression (michelson_v1 variant) */
    { "int": $bignum }
    || { "string": string }
    || [ $micheline.michelson_v1.expression ... ]
    || { "prim":
           "CAR"
           | "LSR"
           | "ADDRESS"
           | "CREATE_CONTRACT"
           | "LSL"
           | "MANAGER"
           | "Elt"
           | "EDIV"
           | "OR"
           | "address"
           | "operation"
           | "ADD"
           | "AMOUNT"
           | "ISNAT"
           | "list"
           | "NEG"
           | "LOOP_LEFT"
           | "EMPTY_MAP"
           | "H"
           | "unit"
           | "SELF"
           | "Right"
           | "set"
           | "LAMBDA"
           | "MEM"
           | "ITER"
           | "storage"
           | "CONTRACT"
           | "CONS"
           | "XOR"
           | "STEPS_TO_QUOTA"
           | "False"
           | "AND"
           | "CREATE_ACCOUNT"
           | "COMPARE"
           | "or"
           | "GE"
           | "UPDATE"
           | "NEQ"
           | "SOURCE"
           | "int"
           | "timestamp"
           | "IMPLICIT_ACCOUNT"
           | "string"
           | "Unit"
           | "Some"
           | "ABS"
           | "PAIR"
           | "LT"
           | "CDR"
           | "EMPTY_SET"
           | "BALANCE"
           | "map"
           | "IF"
           | "SOME"
           | "MUL"
           | "NOT"
           | "NONE"
           | "None"
           | "DIP"
           | "GT"
           | "NOW"
           | "key_hash"
           | "NIL"
           | "contract"
           | "EXEC"
           | "SET_DELEGATE"
           | "UNIT"
           | "LOOP"
           | "SUB"
           | "CONCAT"
           | "DROP"
           | "MAP"
           | "RIGHT"
           | "LEFT"
           | "TRANSFER_TOKENS"
           | "INT"
           | "Left"
           | "big_map"
           | "signature"
           | "SWAP"
           | "mutez"
           | "EQ"
           | "GET"
           | "PUSH"
           | "option"
           | "IF_CONS"
           | "pair"
           | "nat"
           | "True"
           | "IF_LEFT"
           | "parameter"
           | "LE"
           | "HASH_KEY"
           | "SIZE"
           | "bool"
           | "Pair"
           | "lambda"
           | "FAIL"
           | "DUP"
           | "IF_NONE"
           | "key"
           | "code"
           | "CHECK_SIGNATURE",
         "args": [ $micheline.michelson_v1.expression ... ],
         "annot"?: string }
  $operation:
    { "protocol": "PtCJ7pwoxe8JasnHY8YonnLYjcVHmhiARPJvqcC6VfHT5s8k8sY",
      "chain_id": string /* Network identifier (Base58Check-encoded) */,
      "hash": string /* A Tezos operation ID (Base58Check-encoded) */,
      "branch": string /* A block identifier (Base58Check-encoded) */,
      "contents": [ $operation.alpha.operation_contents_and_result ... ],
      "signature"?:
        string
        /* A Secp256k1 or Ed25519 signature (Base58Check-encoded) */ }
  $operation.alpha.internal_operation_result:
    { "kind": "reveal",
      "source": $contract_id,
      "nonce": integer ∈ [0, 2^16-1],
      "public_key":
        string
        /* A Secp256k1 or Ed25519 public key (Base58Check-encoded) */,
      "result": $operation.alpha.operation_result.reveal }
    || { "kind": "transaction",
         "source": $contract_id,
         "nonce": integer ∈ [0, 2^16-1],
         "amount":
           /* Amount in mutez */
           integer ∈ [-2^31-2, 2^31+2] || string,
         "destination": $contract_id,
         "parameters"?: $micheline.michelson_v1.expression,
         "result": $operation.alpha.operation_result.transaction }
    || { "kind": "origination",
         "source": $contract_id,
         "nonce": integer ∈ [0, 2^16-1],
         "managerPubkey":
           string
           /* A Secp256k1 or Ed25519 public key hash (Base58Check-encoded) */,
         "balance":
           /* Amount in mutez */
           integer ∈ [-2^31-2, 2^31+2] || string,
         "spendable"?: boolean,
         "delegatable"?: boolean,
         "delegate"?:
           string
           /* A Secp256k1 or Ed25519 public key hash (Base58Check-encoded) */,
         "script"?:
           { "code": $micheline.michelson_v1.expression,
             "storage": $micheline.michelson_v1.expression },
         "result": $operation.alpha.operation_result.origination }
    || { "kind": "delegation",
         "source": $contract_id,
         "nonce": integer ∈ [0, 2^16-1],
         "delegate"?:
           string
           /* A Secp256k1 or Ed25519 public key hash (Base58Check-encoded) */,
         "result": $operation.alpha.operation_result.delegation }
  $operation.alpha.operation_contents_and_result:
    { "kind": "endorsement",
      "block": string /* A block identifier (Base58Check-encoded) */,
      "level": integer ∈ [-2^31-2, 2^31+2],
      "slots": [ integer ∈ [-2^30-2, 2^30+2] ... ],
      "metadata":
        { "delegate":
            string
            /* A Secp256k1 or Ed25519 public key hash (Base58Check-encoded) */,
          "slots": [ integer ∈ [0, 255] ... ] } }
    || { "kind": "seed_nonce_revelation",
         "level": integer ∈ [-2^31-2, 2^31+2],
         "nonce": /^[a-zA-Z0-9]+$/,
         "metadata":
           { "balance_updates": $operation_metadata.alpha.balance_updates } }
    || { "kind": "double_endorsement_evidence",
         "op1":
           { "branch": string /* A block identifier (Base58Check-encoded) */,
             "operations":
               { "kind": "endorsement",
                 "block":
                   string
                   /* A block identifier (Base58Check-encoded) */,
                 "level": integer ∈ [-2^31-2, 2^31+2],
                 "slots": [ integer ∈ [-2^30-2, 2^30+2] ... ] },
             "signature"?:
               string
               /* A Secp256k1 or Ed25519 signature (Base58Check-encoded) */ },
         "op2":
           { "branch": string /* A block identifier (Base58Check-encoded) */,
             "operations":
               { "kind": "endorsement",
                 "block":
                   string
                   /* A block identifier (Base58Check-encoded) */,
                 "level": integer ∈ [-2^31-2, 2^31+2],
                 "slots": [ integer ∈ [-2^30-2, 2^30+2] ... ] },
             "signature"?:
               string
               /* A Secp256k1 or Ed25519 signature (Base58Check-encoded) */ },
         "metadata":
           { "balance_updates": $operation_metadata.alpha.balance_updates } }
    || { "kind": "double_baking_evidence",
         "bh1": $block_header.alpha.full_header,
         "bh2": $block_header.alpha.full_header,
         "metadata":
           { "balance_updates": $operation_metadata.alpha.balance_updates } }
    || { "kind": "activate_account",
         "pkh": string /* An Ed25519 public key hash (Base58Check-encoded) */,
         "secret": /^[a-zA-Z0-9]+$/,
         "metadata":
           { "balance_updates": $operation_metadata.alpha.balance_updates } }
    || { "kind": "proposals",
         "source":
           string
           /* A Secp256k1 or Ed25519 public key hash (Base58Check-encoded) */,
         "period": integer ∈ [-2^31-2, 2^31+2],
         "proposals":
           [ string
           /* A Tezos protocol ID (Base58Check-encoded) */ ... ],
         "metadata": {  } }
    || { "kind": "ballot",
         "source":
           string
           /* A Secp256k1 or Ed25519 public key hash (Base58Check-encoded) */,
         "period": integer ∈ [-2^31-2, 2^31+2],
         "proposal": string /* A Tezos protocol ID (Base58Check-encoded) */,
         "ballot": "nay" | "yay" | "pass",
         "metadata": {  } }
    || { "kind": "reveal",
         "source": $contract_id,
         "fee": /* Amount in mutez */integer ∈ [-2^31-2, 2^31+2] || string,
         "counter": integer ∈ [-2^31-2, 2^31+2],
         "gas_limit": $bignum,
         "storage_limit": integer ∈ [-2^31-2, 2^31+2] || string,
         "public_key":
           string
           /* A Secp256k1 or Ed25519 public key (Base58Check-encoded) */,
         "metadata":
           { "balance_updates": $operation_metadata.alpha.balance_updates,
             "operation_result": $operation.alpha.operation_result.reveal,
             "internal_operation_results"?:
               [ $operation.alpha.internal_operation_result ... ] } }
    || { "kind": "transaction",
         "source": $contract_id,
         "fee": /* Amount in mutez */integer ∈ [-2^31-2, 2^31+2] || string,
         "counter": integer ∈ [-2^31-2, 2^31+2],
         "gas_limit": $bignum,
         "storage_limit": integer ∈ [-2^31-2, 2^31+2] || string,
         "amount":
           /* Amount in mutez */
           integer ∈ [-2^31-2, 2^31+2] || string,
         "destination": $contract_id,
         "parameters"?: $micheline.michelson_v1.expression,
         "metadata":
           { "balance_updates": $operation_metadata.alpha.balance_updates,
             "operation_result":
               $operation.alpha.operation_result.transaction,
             "internal_operation_results"?:
               [ $operation.alpha.internal_operation_result ... ] } }
    || { "kind": "origination",
         "source": $contract_id,
         "fee": /* Amount in mutez */integer ∈ [-2^31-2, 2^31+2] || string,
         "counter": integer ∈ [-2^31-2, 2^31+2],
         "gas_limit": $bignum,
         "storage_limit": integer ∈ [-2^31-2, 2^31+2] || string,
         "managerPubkey":
           string
           /* A Secp256k1 or Ed25519 public key hash (Base58Check-encoded) */,
         "balance":
           /* Amount in mutez */
           integer ∈ [-2^31-2, 2^31+2] || string,
         "spendable"?: boolean,
         "delegatable"?: boolean,
         "delegate"?:
           string
           /* A Secp256k1 or Ed25519 public key hash (Base58Check-encoded) */,
         "script"?:
           { "code": $micheline.michelson_v1.expression,
             "storage": $micheline.michelson_v1.expression },
         "metadata":
           { "balance_updates": $operation_metadata.alpha.balance_updates,
             "operation_result":
               $operation.alpha.operation_result.origination,
             "internal_operation_results"?:
               [ $operation.alpha.internal_operation_result ... ] } }
    || { "kind": "delegation",
         "source": $contract_id,
         "fee": /* Amount in mutez */integer ∈ [-2^31-2, 2^31+2] || string,
         "counter": integer ∈ [-2^31-2, 2^31+2],
         "gas_limit": $bignum,
         "storage_limit": integer ∈ [-2^31-2, 2^31+2] || string,
         "delegate"?:
           string
           /* A Secp256k1 or Ed25519 public key hash (Base58Check-encoded) */,
         "metadata":
           { "balance_updates": $operation_metadata.alpha.balance_updates,
             "operation_result": $operation.alpha.operation_result.delegation,
             "internal_operation_results"?:
               [ $operation.alpha.internal_operation_result ... ] } }
    || { "kind": "activate_protocol",
         "hash": string /* A Tezos protocol ID (Base58Check-encoded) */,
         "metadata": {  } }
    || { "kind": "activate_test_protocol",
         "hash": string /* A Tezos protocol ID (Base58Check-encoded) */,
         "metadata": {  } }
  $operation.alpha.operation_result.delegation:
    { "status": "applied" }
    || { "status": "failed",
         "errors": [ $error ... ] }
    || { "status": "skipped" }
  $operation.alpha.operation_result.origination:
    { "status": "applied",
      "balance_updates"?: $operation_metadata.alpha.balance_updates,
      "originated_contracts"?: [ $contract_id ... ],
      "consumed_gas"?: $bignum,
      "storage_size_diff"?: integer ∈ [-2^31-2, 2^31+2] || string }
    || { "status": "failed",
         "errors": [ $error ... ] }
    || { "status": "skipped" }
  $operation.alpha.operation_result.reveal:
    { "status": "applied" }
    || { "status": "failed",
         "errors": [ $error ... ] }
    || { "status": "skipped" }
  $operation.alpha.operation_result.transaction:
    { "status": "applied",
      "storage"?: $micheline.michelson_v1.expression,
      "balance_updates"?: $operation_metadata.alpha.balance_updates,
      "originated_contracts"?: [ $contract_id ... ],
      "consumed_gas"?: $bignum,
      "storage_size_diff"?: integer ∈ [-2^31-2, 2^31+2] || string }
    || { "status": "failed",
         "errors": [ $error ... ] }
    || { "status": "skipped" }
  $operation_metadata.alpha.balance_updates:
    [ { "kind": "contract",
        "contract": $contract_id,
        "credited":
          /* Amount in mutez */
          integer ∈ [-2^31-2, 2^31+2] || string }
      || { "kind": "contract",
           "contract": $contract_id,
           "debited":
             /* Amount in mutez */
             integer ∈ [-2^31-2, 2^31+2] || string }
      || { "kind": "freezer",
           "category": "rewards",
           "delegate":
             string
             /* A Secp256k1 or Ed25519 public key hash (Base58Check-encoded) */,
           "level": integer ∈ [-2^31-2, 2^31+2],
           "credited":
             /* Amount in mutez */
             integer ∈ [-2^31-2, 2^31+2] || string }
      || { "kind": "freezer",
           "category": "rewards",
           "delegate":
             string
             /* A Secp256k1 or Ed25519 public key hash (Base58Check-encoded) */,
           "level": integer ∈ [-2^31-2, 2^31+2],
           "debited":
             /* Amount in mutez */
             integer ∈ [-2^31-2, 2^31+2] || string }
      || { "kind": "freezer",
           "category": "fees",
           "delegate":
             string
             /* A Secp256k1 or Ed25519 public key hash (Base58Check-encoded) */,
           "level": integer ∈ [-2^31-2, 2^31+2],
           "credited":
             /* Amount in mutez */
             integer ∈ [-2^31-2, 2^31+2] || string }
      || { "kind": "freezer",
           "category": "fees",
           "delegate":
             string
             /* A Secp256k1 or Ed25519 public key hash (Base58Check-encoded) */,
           "level": integer ∈ [-2^31-2, 2^31+2],
           "debited":
             /* Amount in mutez */
             integer ∈ [-2^31-2, 2^31+2] || string }
      || { "kind": "freezer",
           "category": "deposits",
           "delegate":
             string
             /* A Secp256k1 or Ed25519 public key hash (Base58Check-encoded) */,
           "level": integer ∈ [-2^31-2, 2^31+2],
           "credited":
             /* Amount in mutez */
             integer ∈ [-2^31-2, 2^31+2] || string }
      || { "kind": "freezer",
           "category": "deposits",
           "delegate":
             string
             /* A Secp256k1 or Ed25519 public key hash (Base58Check-encoded) */,
           "level": integer ∈ [-2^31-2, 2^31+2],
           "debited":
             /* Amount in mutez */
             integer ∈ [-2^31-2, 2^31+2] || string } ... ]
  $raw_block_header:
    { "level": integer ∈ [-2^31-2, 2^31+2],
      "proto": integer ∈ [0, 255],
      "predecessor": string /* A block identifier (Base58Check-encoded) */,
      "timestamp":
        /* timestamp */
        $timestamp || integer ∈ [-2^31-2, 2^31+2] || string,
      "validation_pass": integer ∈ [0, 255],
      "operations_hash":
        string
        /* A list of list of operations (Base58Check-encoded) */,
      "fitness": [ /^[a-zA-Z0-9]+$/ ... ] /* Tezos block fitness */,
      "context": string /* A hash of context (Base58Check-encoded) */,
      "priority": integer ∈ [0, 2^16-1],
      "proof_of_work_nonce": /^[a-zA-Z0-9]+$/,
      "seed_nonce_hash"?: string /* A nonce hash (Base58Check-encoded) */,
      "signature":
        string
        /* A Secp256k1 or Ed25519 signature (Base58Check-encoded) */ }
  $timestamp:
    /* RFC 3339 formatted timestamp
       A date in human readble form as specified in RFC 3339. */
    string

GET ../<block_id>/context/constants

All constants

  { "proof_of_work_nonce_size": integer ∈ [0, 255],
    "nonce_length": integer ∈ [0, 255],
    "max_revelations_per_block": integer ∈ [0, 255],
    "preserved_cycles": integer ∈ [0, 255],
    "blocks_per_cycle": integer ∈ [-2^31-2, 2^31+2],
    "blocks_per_commitment": integer ∈ [-2^31-2, 2^31+2],
    "blocks_per_roll_snapshot": integer ∈ [-2^31-2, 2^31+2],
    "blocks_per_voting_period": integer ∈ [-2^31-2, 2^31+2],
    "time_between_blocks": [ integer ∈ [-2^31-2, 2^31+2] || string ... ],
    "first_free_baking_slot": integer ∈ [0, 2^16-1],
    "endorsers_per_block": integer ∈ [0, 2^16-1],
    "hard_gas_limit_per_operation": $bignum,
    "hard_gas_limit_per_block": $bignum,
    "proof_of_work_threshold": integer ∈ [-2^31-2, 2^31+2] || string,
    "max_operation_data_length": integer ∈ [-2^30-2, 2^30+2],
    "tokens_per_roll":
      /* Amount in mutez */
      integer ∈ [-2^31-2, 2^31+2] || string,
    "michelson_maximum_type_size": integer ∈ [0, 2^16-1],
    "seed_nonce_revelation_tip":
      /* Amount in mutez */
      integer ∈ [-2^31-2, 2^31+2] || string,
    "origination_burn":
      /* Amount in mutez */
      integer ∈ [-2^31-2, 2^31+2] || string,
    "block_security_deposit":
      /* Amount in mutez */
      integer ∈ [-2^31-2, 2^31+2] || string,
    "endorsement_security_deposit":
      /* Amount in mutez */
      integer ∈ [-2^31-2, 2^31+2] || string,
    "block_reward":
      /* Amount in mutez */
      integer ∈ [-2^31-2, 2^31+2] || string,
    "endorsement_reward":
      /* Amount in mutez */
      integer ∈ [-2^31-2, 2^31+2] || string,
    "cost_per_byte":
      /* Amount in mutez */
      integer ∈ [-2^31-2, 2^31+2] || string,
    "hard_storage_limit_per_operation":
      integer ∈ [-2^31-2, 2^31+2] || string,
    "hard_storage_limit_per_block": integer ∈ [-2^31-2, 2^31+2] || string }
  $bignum:
    /* Big number
       Decimal representation of a big number */
    string

GET ../<block_id>/context/constants/block_reward

block_reward

  /* Amount in mutez */
  integer ∈ [-2^31-2, 2^31+2] || string

GET ../<block_id>/context/constants/block_security_deposit

block_security_deposit

  /* Amount in mutez */
  integer ∈ [-2^31-2, 2^31+2] || string

GET ../<block_id>/context/constants/blocks_per_commitment

How many blocks between random seed's nonce commitment

  integer ∈ [-2^31-2, 2^31+2]

GET ../<block_id>/context/constants/blocks_per_cycle

Cycle length

  integer ∈ [-2^31-2, 2^31+2]

GET ../<block_id>/context/constants/blocks_per_roll_snapshot

How many blocks between roll snapshots

  integer ∈ [-2^31-2, 2^31+2]

GET ../<block_id>/context/constants/blocks_per_voting_period

Length of the voting period

  integer ∈ [-2^31-2, 2^31+2]

GET ../<block_id>/context/constants/cost_per_byte

The cost per bytes added to the storage

  { "cost_per_byte":
      /* Amount in mutez */
      integer ∈ [-2^31-2, 2^31+2] || string }

GET ../<block_id>/context/constants/endorsement_reward

endorsement_reward

  /* Amount in mutez */
  integer ∈ [-2^31-2, 2^31+2] || string

GET ../<block_id>/context/constants/endorsement_security_deposit

endorsement_security_deposit

  /* Amount in mutez */
  integer ∈ [-2^31-2, 2^31+2] || string

GET ../<block_id>/context/constants/endorsers_per_block

Max signing slot

  integer ∈ [0, 2^16-1]

GET ../<block_id>/context/constants/errors

Schema for all the RPC errors from this protocol version

  any

GET ../<block_id>/context/constants/first_free_baking_slot

First free baking slot

  integer ∈ [0, 2^16-1]

GET ../<block_id>/context/constants/hard_gas_limits

Hard maximum amount of gas per operation and per block

  { "per_block": $bignum,
    "per_operation": $bignum }
  $bignum:
    /* Big number
       Decimal representation of a big number */
    string

GET ../<block_id>/context/constants/hard_storage_limits

Hard maximum amount of bytes stored per operation and per block

  { "per_block": integer ∈ [-2^31-2, 2^31+2] || string,
    "per_operation": integer ∈ [-2^31-2, 2^31+2] || string }

GET ../<block_id>/context/constants/origination_burn

origination_burn

  /* Amount in mutez */
  integer ∈ [-2^31-2, 2^31+2] || string

GET ../<block_id>/context/constants/preserved_cycles

How many cycle before the 'no-automatic-fork point'

  integer ∈ [-2^30-2, 2^30+2]

GET ../<block_id>/context/constants/proof_of_work_threshold

Stamp threshold

  integer ∈ [-2^31-2, 2^31+2] || string

GET ../<block_id>/context/constants/seed_nonce_revelation_tip

seed_nonce_revelation_tip

  /* Amount in mutez */
  integer ∈ [-2^31-2, 2^31+2] || string

GET ../<block_id>/context/constants/time_between_slots

Slot durations

  [ integer ∈ [-2^31-2, 2^31+2] || string ... ]

GET ../<block_id>/context/contracts

All existing contracts (including non-empty default contracts).

  [ $contract_id ... ]
  $contract_id:
    /* A contract handle
       A contract notation as given to an RPC or inside scripts. Can be a
       base58 implicit contract hash or a base58 originated contract hash. */
    string

GET ../<block_id>/context/contracts/<contract_id>

Access the complete status of a contract.

  { "manager":
      string
      /* A Secp256k1 or Ed25519 public key hash (Base58Check-encoded) */,
    "balance": /* Amount in mutez */integer ∈ [-2^31-2, 2^31+2] || string,
    "spendable": boolean,
    "delegate":
      { "setable": boolean,
        "value"?:
          string
          /* A Secp256k1 or Ed25519 public key hash (Base58Check-encoded) */ },
    "script"?:
      { "code": $micheline.michelson_v1.expression,
        "storage": $micheline.michelson_v1.expression },
    "counter": integer ∈ [-2^31-2, 2^31+2] }
  $bignum:
    /* Big number
       Decimal representation of a big number */
    string
  $micheline.michelson_v1.expression:
    /* Micheline expression (michelson_v1 variant) */
    { "int": $bignum }
    || { "string": string }
    || [ $micheline.michelson_v1.expression ... ]
    || { "prim":
           "CAR"
           | "LSR"
           | "ADDRESS"
           | "CREATE_CONTRACT"
           | "LSL"
           | "MANAGER"
           | "Elt"
           | "EDIV"
           | "OR"
           | "address"
           | "operation"
           | "ADD"
           | "AMOUNT"
           | "ISNAT"
           | "list"
           | "NEG"
           | "LOOP_LEFT"
           | "EMPTY_MAP"
           | "H"
           | "unit"
           | "SELF"
           | "Right"
           | "set"
           | "LAMBDA"
           | "MEM"
           | "ITER"
           | "storage"
           | "CONTRACT"
           | "CONS"
           | "XOR"
           | "STEPS_TO_QUOTA"
           | "False"
           | "AND"
           | "CREATE_ACCOUNT"
           | "COMPARE"
           | "or"
           | "GE"
           | "UPDATE"
           | "NEQ"
           | "SOURCE"
           | "int"
           | "timestamp"
           | "IMPLICIT_ACCOUNT"
           | "string"
           | "Unit"
           | "Some"
           | "ABS"
           | "PAIR"
           | "LT"
           | "CDR"
           | "EMPTY_SET"
           | "BALANCE"
           | "map"
           | "IF"
           | "SOME"
           | "MUL"
           | "NOT"
           | "NONE"
           | "None"
           | "DIP"
           | "GT"
           | "NOW"
           | "key_hash"
           | "NIL"
           | "contract"
           | "EXEC"
           | "SET_DELEGATE"
           | "UNIT"
           | "LOOP"
           | "SUB"
           | "CONCAT"
           | "DROP"
           | "MAP"
           | "RIGHT"
           | "LEFT"
           | "TRANSFER_TOKENS"
           | "INT"
           | "Left"
           | "big_map"
           | "signature"
           | "SWAP"
           | "mutez"
           | "EQ"
           | "GET"
           | "PUSH"
           | "option"
           | "IF_CONS"
           | "pair"
           | "nat"
           | "True"
           | "IF_LEFT"
           | "parameter"
           | "LE"
           | "HASH_KEY"
           | "SIZE"
           | "bool"
           | "Pair"
           | "lambda"
           | "FAIL"
           | "DUP"
           | "IF_NONE"
           | "key"
           | "code"
           | "CHECK_SIGNATURE",
         "args": [ $micheline.michelson_v1.expression ... ],
         "annot"?: string }

GET ../<block_id>/context/contracts/<contract_id>/balance

Access the balance of a contract.

  /* Amount in mutez */
  integer ∈ [-2^31-2, 2^31+2] || string

GET ../<block_id>/context/contracts/<contract_id>/counter

Access the counter of a contract, if any.

  integer ∈ [-2^31-2, 2^31+2]

GET ../<block_id>/context/contracts/<contract_id>/delegatable

Tells if the contract delegate can be changed.

  boolean

GET ../<block_id>/context/contracts/<contract_id>/delegate

Access the delegate of a contract, if any.

  string
  /* A Secp256k1 or Ed25519 public key hash (Base58Check-encoded) */

GET ../<block_id>/context/contracts/<contract_id>/manager

Access the manager of a contract.

  string
  /* A Secp256k1 or Ed25519 public key hash (Base58Check-encoded) */

GET ../<block_id>/context/contracts/<contract_id>/manager_key

Access the manager of a contract.

  { "manager":
      string
      /* A Secp256k1 or Ed25519 public key hash (Base58Check-encoded) */,
    "key"?:
      string
      /* A Secp256k1 or Ed25519 public key (Base58Check-encoded) */ }

GET ../<block_id>/context/contracts/<contract_id>/script

Access the code and data of the contract.

  { "code": $micheline.michelson_v1.expression,
    "storage": $micheline.michelson_v1.expression }
  $bignum:
    /* Big number
       Decimal representation of a big number */
    string
  $micheline.michelson_v1.expression:
    /* Micheline expression (michelson_v1 variant) */
    { "int": $bignum }
    || { "string": string }
    || [ $micheline.michelson_v1.expression ... ]
    || { "prim":
           "CAR"
           | "LSR"
           | "ADDRESS"
           | "CREATE_CONTRACT"
           | "LSL"
           | "MANAGER"
           | "Elt"
           | "EDIV"
           | "OR"
           | "address"
           | "operation"
           | "ADD"
           | "AMOUNT"
           | "ISNAT"
           | "list"
           | "NEG"
           | "LOOP_LEFT"
           | "EMPTY_MAP"
           | "H"
           | "unit"
           | "SELF"
           | "Right"
           | "set"
           | "LAMBDA"
           | "MEM"
           | "ITER"
           | "storage"
           | "CONTRACT"
           | "CONS"
           | "XOR"
           | "STEPS_TO_QUOTA"
           | "False"
           | "AND"
           | "CREATE_ACCOUNT"
           | "COMPARE"
           | "or"
           | "GE"
           | "UPDATE"
           | "NEQ"
           | "SOURCE"
           | "int"
           | "timestamp"
           | "IMPLICIT_ACCOUNT"
           | "string"
           | "Unit"
           | "Some"
           | "ABS"
           | "PAIR"
           | "LT"
           | "CDR"
           | "EMPTY_SET"
           | "BALANCE"
           | "map"
           | "IF"
           | "SOME"
           | "MUL"
           | "NOT"
           | "NONE"
           | "None"
           | "DIP"
           | "GT"
           | "NOW"
           | "key_hash"
           | "NIL"
           | "contract"
           | "EXEC"
           | "SET_DELEGATE"
           | "UNIT"
           | "LOOP"
           | "SUB"
           | "CONCAT"
           | "DROP"
           | "MAP"
           | "RIGHT"
           | "LEFT"
           | "TRANSFER_TOKENS"
           | "INT"
           | "Left"
           | "big_map"
           | "signature"
           | "SWAP"
           | "mutez"
           | "EQ"
           | "GET"
           | "PUSH"
           | "option"
           | "IF_CONS"
           | "pair"
           | "nat"
           | "True"
           | "IF_LEFT"
           | "parameter"
           | "LE"
           | "HASH_KEY"
           | "SIZE"
           | "bool"
           | "Pair"
           | "lambda"
           | "FAIL"
           | "DUP"
           | "IF_NONE"
           | "key"
           | "code"
           | "CHECK_SIGNATURE",
         "args": [ $micheline.michelson_v1.expression ... ],
         "annot"?: string }

GET ../<block_id>/context/contracts/<contract_id>/spendable

Tells if the contract tokens can be spent by the manager.

  boolean

GET ../<block_id>/context/contracts/<contract_id>/storage

Access the data of the contract.

  $micheline.michelson_v1.expression
  $bignum:
    /* Big number
       Decimal representation of a big number */
    string
  $micheline.michelson_v1.expression:
    /* Micheline expression (michelson_v1 variant) */
    { "int": $bignum }
    || { "string": string }
    || [ $micheline.michelson_v1.expression ... ]
    || { "prim":
           "CAR"
           | "LSR"
           | "ADDRESS"
           | "CREATE_CONTRACT"
           | "LSL"
           | "MANAGER"
           | "Elt"
           | "EDIV"
           | "OR"
           | "address"
           | "operation"
           | "ADD"
           | "AMOUNT"
           | "ISNAT"
           | "list"
           | "NEG"
           | "LOOP_LEFT"
           | "EMPTY_MAP"
           | "H"
           | "unit"
           | "SELF"
           | "Right"
           | "set"
           | "LAMBDA"
           | "MEM"
           | "ITER"
           | "storage"
           | "CONTRACT"
           | "CONS"
           | "XOR"
           | "STEPS_TO_QUOTA"
           | "False"
           | "AND"
           | "CREATE_ACCOUNT"
           | "COMPARE"
           | "or"
           | "GE"
           | "UPDATE"
           | "NEQ"
           | "SOURCE"
           | "int"
           | "timestamp"
           | "IMPLICIT_ACCOUNT"
           | "string"
           | "Unit"
           | "Some"
           | "ABS"
           | "PAIR"
           | "LT"
           | "CDR"
           | "EMPTY_SET"
           | "BALANCE"
           | "map"
           | "IF"
           | "SOME"
           | "MUL"
           | "NOT"
           | "NONE"
           | "None"
           | "DIP"
           | "GT"
           | "NOW"
           | "key_hash"
           | "NIL"
           | "contract"
           | "EXEC"
           | "SET_DELEGATE"
           | "UNIT"
           | "LOOP"
           | "SUB"
           | "CONCAT"
           | "DROP"
           | "MAP"
           | "RIGHT"
           | "LEFT"
           | "TRANSFER_TOKENS"
           | "INT"
           | "Left"
           | "big_map"
           | "signature"
           | "SWAP"
           | "mutez"
           | "EQ"
           | "GET"
           | "PUSH"
           | "option"
           | "IF_CONS"
           | "pair"
           | "nat"
           | "True"
           | "IF_LEFT"
           | "parameter"
           | "LE"
           | "HASH_KEY"
           | "SIZE"
           | "bool"
           | "Pair"
           | "lambda"
           | "FAIL"
           | "DUP"
           | "IF_NONE"
           | "key"
           | "code"
           | "CHECK_SIGNATURE",
         "args": [ $micheline.michelson_v1.expression ... ],
         "annot"?: string }

GET ../<block_id>/context/delegates?[active]&[inactive]

List all registred delegates.

Optional query arguments :

  • active
  • inactive

  [ string
  /* A Secp256k1 or Ed25519 public key hash (Base58Check-encoded) */ ... ]

GET ../<block_id>/context/delegates/<pkh>

Everything about a delegate.

  { "balance": /* Amount in mutez */integer ∈ [-2^31-2, 2^31+2] || string,
    "frozen_balance":
      /* Amount in mutez */
      integer ∈ [-2^31-2, 2^31+2] || string,
    "frozen_balance_by_cycle":
      [ { "cycle": integer ∈ [-2^31-2, 2^31+2],
          "deposit":
            /* Amount in mutez */
            integer ∈ [-2^31-2, 2^31+2] || string,
          "fees":
            /* Amount in mutez */
            integer ∈ [-2^31-2, 2^31+2] || string,
          "rewards":
            /* Amount in mutez */
            integer ∈ [-2^31-2, 2^31+2] || string } ... ],
    "staking_balance":
      /* Amount in mutez */
      integer ∈ [-2^31-2, 2^31+2] || string,
    "delegated_contracts":
      [ string
      /* A contract ID (Base58Check-encoded) */ ... ],
    "delegated_balance":
      /* Amount in mutez */
      integer ∈ [-2^31-2, 2^31+2] || string,
    "deactivated": boolean,
    "grace_period": integer ∈ [-2^31-2, 2^31+2] }

GET ../<block_id>/context/delegates/<pkh>/balance

Returns the full balance of a given delegate, including the frozen balances.

  /* Amount in mutez */
  integer ∈ [-2^31-2, 2^31+2] || string

GET ../<block_id>/context/delegates/<pkh>/deactivated

Returns whether the delegate is currently tagged as deactivated or not.

  boolean

GET ../<block_id>/context/delegates/<pkh>/delegated_balance

The includes the balance of all the contracts that delegates to it. This excludes the delegate own balance and its frozen balances.

  /* Amount in mutez */
  integer ∈ [-2^31-2, 2^31+2] || string

GET ../<block_id>/context/delegates/<pkh>/delegated_contracts

Returns the list of contract that delegates to a given delegate.

  [ string
  /* A contract ID (Base58Check-encoded) */ ... ]

GET ../<block_id>/context/delegates/<pkh>/frozen_balance

Returns the total frozen balances of a given delegate, this includes the frozen deposits, rewards and fees.

  /* Amount in mutez */
  integer ∈ [-2^31-2, 2^31+2] || string

GET ../<block_id>/context/delegates/<pkh>/frozen_balance_by_cycle

Returns the frozen balances of a given delegate, indexed by the cycle by which it will be unfrozen

  [ { "cycle": integer ∈ [-2^31-2, 2^31+2],
      "deposit": /* Amount in mutez */integer ∈ [-2^31-2, 2^31+2] || string,
      "fees": /* Amount in mutez */integer ∈ [-2^31-2, 2^31+2] || string,
      "rewards": /* Amount in mutez */integer ∈ [-2^31-2, 2^31+2] || string } ... ]

GET ../<block_id>/context/delegates/<pkh>/grace_period

Returns the cycle by the end of which the delegate might be deactivated, whether should she failed to execute any delegate action until then. A deactivated delegate might be reactivated (without loosing any rolls) by simply re-register as a delegate. For deactivated delegate this value contains the cycle by which they were deactivated.

  integer ∈ [-2^31-2, 2^31+2]

GET ../<block_id>/context/delegates/<pkh>/staking_balance

Returns the total amount of token delegated to a given delegate. This includes the balance of all the contracts that delegates to it, but also the balance of the delegate itself and its frozen fees and deposits. The rewards do not count in the delegated balance until they are unfrozen.

  /* Amount in mutez */
  integer ∈ [-2^31-2, 2^31+2] || string

GET ../<block_id>/context/nonces/<block_level>

Info about the nonce of a previous block.

  { "nonce": /^[a-zA-Z0-9]+$/ }
  || { "hash": string /* A nonce hash (Base58Check-encoded) */ }
  || {  }

GET ../<block_id>/context/raw/bytes?[depth=<int>]

Returns the raw context.

Optional query arguments :

  • depth = <int>

  $raw_context
  $raw_context: /^[a-zA-Z0-9]+$/ || { *: $raw_context } || null

GET ../<block_id>/hash

The block's hash, its unique identifier.

  string
  /* A block identifier (Base58Check-encoded) */

GET ../<block_id>/header

The whole block header.

  $block_header
  $block_header:
    { "protocol": "PtCJ7pwoxe8JasnHY8YonnLYjcVHmhiARPJvqcC6VfHT5s8k8sY",
      "chain_id": string /* Network identifier (Base58Check-encoded) */,
      "hash": string /* A block identifier (Base58Check-encoded) */,
      "level": integer ∈ [-2^31-2, 2^31+2],
      "proto": integer ∈ [0, 255],
      "predecessor": string /* A block identifier (Base58Check-encoded) */,
      "timestamp":
        /* timestamp */
        $timestamp || integer ∈ [-2^31-2, 2^31+2] || string,
      "validation_pass": integer ∈ [0, 255],
      "operations_hash":
        string
        /* A list of list of operations (Base58Check-encoded) */,
      "fitness": [ /^[a-zA-Z0-9]+$/ ... ] /* Tezos block fitness */,
      "context": string /* A hash of context (Base58Check-encoded) */,
      "priority": integer ∈ [0, 2^16-1],
      "proof_of_work_nonce": /^[a-zA-Z0-9]+$/,
      "seed_nonce_hash"?: string /* A nonce hash (Base58Check-encoded) */,
      "signature":
        string
        /* A Secp256k1 or Ed25519 signature (Base58Check-encoded) */ }
  $timestamp:
    /* RFC 3339 formatted timestamp
       A date in human readble form as specified in RFC 3339. */
    string

GET ../<block_id>/header/protocol_data

The version-specific fragment of the block header.

  { "protocol": "PtCJ7pwoxe8JasnHY8YonnLYjcVHmhiARPJvqcC6VfHT5s8k8sY",
    "priority": integer ∈ [0, 2^16-1],
    "proof_of_work_nonce": /^[a-zA-Z0-9]+$/,
    "seed_nonce_hash"?: string /* A nonce hash (Base58Check-encoded) */,
    "signature":
      string
      /* A Secp256k1 or Ed25519 signature (Base58Check-encoded) */ }

GET ../<block_id>/header/shell

The shell-specific fragment of the block header.

  $block_header.shell
  $block_header.shell:
    { "level": integer ∈ [-2^31-2, 2^31+2],
      "proto": integer ∈ [0, 255],
      "predecessor": string /* A block identifier (Base58Check-encoded) */,
      "timestamp":
        /* timestamp */
        $timestamp || integer ∈ [-2^31-2, 2^31+2] || string,
      "validation_pass": integer ∈ [0, 255],
      "operations_hash":
        string
        /* A list of list of operations (Base58Check-encoded) */,
      "fitness": [ /^[a-zA-Z0-9]+$/ ... ] /* Tezos block fitness */,
      "context": string /* A hash of context (Base58Check-encoded) */ }
  $timestamp:
    /* RFC 3339 formatted timestamp
       A date in human readble form as specified in RFC 3339. */
    string

GET ../<block_id>/header/shell/context_hash

The hash of the resulting validation context.

  string
  /* A hash of context (Base58Check-encoded) */

GET ../<block_id>/header/shell/fitness

The block's fitness.

  [ /^[a-zA-Z0-9]+$/ ... ]
  /* Tezos block fitness */

GET ../<block_id>/header/shell/level

The block's level.

  integer ∈ [-2^31-2, 2^31+2]

GET ../<block_id>/header/shell/operations_hash

The hash of merkle tree of the operations included in the block.

  string
  /* A list of list of operations (Base58Check-encoded) */

GET ../<block_id>/header/shell/predecessor

The previous block's id.

  string
  /* A block identifier (Base58Check-encoded) */

GET ../<block_id>/header/shell/proto_level

The block's protocol level (modulo 256).

  integer ∈ [0, 255]

GET ../<block_id>/header/shell/timestamp

The block's timestamp.

  /* timestamp */
  $timestamp || integer ∈ [-2^31-2, 2^31+2] || string
  $timestamp:
    /* RFC 3339 formatted timestamp
       A date in human readble form as specified in RFC 3339. */
    string

GET ../<block_id>/header/shell/validation_passes

The number of validation passes for the block.

  integer ∈ [0, 255]

GET ../<block_id>/helpers/baking_rights?(level=<block_level>)*&(cycle=<block_cycle>)*&(delegate=<pkh>)*&[max_priority=<int>]&[all]

...FIXME...

Optional query arguments :

  • level = <block_level>
  • cycle = <block_cycle>
  • delegate = <pkh>
  • max_priority = <int>
  • all

  [ { "level": integer ∈ [-2^31-2, 2^31+2],
      "delegate":
        string
        /* A Secp256k1 or Ed25519 public key hash (Base58Check-encoded) */,
      "priority": integer ∈ [0, 2^16-1],
      "timestamp"?:
        /* timestamp */
        $timestamp || integer ∈ [-2^31-2, 2^31+2] || string } ... ]
  $timestamp:
    /* RFC 3339 formatted timestamp
       A date in human readble form as specified in RFC 3339. */
    string

GET ../<block_id>/helpers/complete/<prefix>

Try to complete a prefix of a Base58Check-encoded data. This RPC is actually able to complete hashes of block, operations, public_keys and contracts.

  [ string ... ]

GET ../<block_id>/helpers/current_level?[offset=<int32>]

...

Optional query arguments :

  • offset = <int32>

  { "level": integer ∈ [-2^31-2, 2^31+2],
    "level_position": integer ∈ [-2^31-2, 2^31+2],
    "cycle": integer ∈ [-2^31-2, 2^31+2],
    "cycle_position": integer ∈ [-2^31-2, 2^31+2],
    "voting_period": integer ∈ [-2^31-2, 2^31+2],
    "voting_period_position": integer ∈ [-2^31-2, 2^31+2],
    "expected_commitment": boolean }

GET ../<block_id>/helpers/endorsing_rights?(level=<block_level>)*&(cycle=<block_cycle>)*&(delegate=<pkh>)*

...FIXME...

Optional query arguments :

  • level = <block_level>
  • cycle = <block_cycle>
  • delegate = <pkh>

  [ { "level": integer ∈ [-2^31-2, 2^31+2],
      "delegate":
        string
        /* A Secp256k1 or Ed25519 public key hash (Base58Check-encoded) */,
      "slots": [ integer ∈ [0, 2^16-1] ... ],
      "estimated_time"?:
        /* timestamp */
        $timestamp || integer ∈ [-2^31-2, 2^31+2] || string } ... ]
  $timestamp:
    /* RFC 3339 formatted timestamp
       A date in human readble form as specified in RFC 3339. */
    string

POST ../<block_id>/helpers/forge/operations

Forge an operation

  $operation.alpha.unsigned_operation
  $bignum:
    /* Big number
       Decimal representation of a big number */
    string
  $block_header.alpha.full_header:
    { "level": integer ∈ [-2^31-2, 2^31+2],
      "proto": integer ∈ [0, 255],
      "predecessor": string /* A block identifier (Base58Check-encoded) */,
      "timestamp":
        /* timestamp */
        $timestamp || integer ∈ [-2^31-2, 2^31+2] || string,
      "validation_pass": integer ∈ [0, 255],
      "operations_hash":
        string
        /* A list of list of operations (Base58Check-encoded) */,
      "fitness": [ /^[a-zA-Z0-9]+$/ ... ] /* Tezos block fitness */,
      "context": string /* A hash of context (Base58Check-encoded) */,
      "priority": integer ∈ [0, 2^16-1],
      "proof_of_work_nonce": /^[a-zA-Z0-9]+$/,
      "seed_nonce_hash"?: string /* A nonce hash (Base58Check-encoded) */,
      "signature":
        string
        /* A Secp256k1 or Ed25519 signature (Base58Check-encoded) */ }
  $contract_id:
    /* A contract handle
       A contract notation as given to an RPC or inside scripts. Can be a
       base58 implicit contract hash or a base58 originated contract hash. */
    string
  $micheline.michelson_v1.expression:
    /* Micheline expression (michelson_v1 variant) */
    { "int": $bignum }
    || { "string": string }
    || [ $micheline.michelson_v1.expression ... ]
    || { "prim":
           "CAR"
           | "LSR"
           | "ADDRESS"
           | "CREATE_CONTRACT"
           | "LSL"
           | "MANAGER"
           | "Elt"
           | "EDIV"
           | "OR"
           | "address"
           | "operation"
           | "ADD"
           | "AMOUNT"
           | "ISNAT"
           | "list"
           | "NEG"
           | "LOOP_LEFT"
           | "EMPTY_MAP"
           | "H"
           | "unit"
           | "SELF"
           | "Right"
           | "set"
           | "LAMBDA"
           | "MEM"
           | "ITER"
           | "storage"
           | "CONTRACT"
           | "CONS"
           | "XOR"
           | "STEPS_TO_QUOTA"
           | "False"
           | "AND"
           | "CREATE_ACCOUNT"
           | "COMPARE"
           | "or"
           | "GE"
           | "UPDATE"
           | "NEQ"
           | "SOURCE"
           | "int"
           | "timestamp"
           | "IMPLICIT_ACCOUNT"
           | "string"
           | "Unit"
           | "Some"
           | "ABS"
           | "PAIR"
           | "LT"
           | "CDR"
           | "EMPTY_SET"
           | "BALANCE"
           | "map"
           | "IF"
           | "SOME"
           | "MUL"
           | "NOT"
           | "NONE"
           | "None"
           | "DIP"
           | "GT"
           | "NOW"
           | "key_hash"
           | "NIL"
           | "contract"
           | "EXEC"
           | "SET_DELEGATE"
           | "UNIT"
           | "LOOP"
           | "SUB"
           | "CONCAT"
           | "DROP"
           | "MAP"
           | "RIGHT"
           | "LEFT"
           | "TRANSFER_TOKENS"
           | "INT"
           | "Left"
           | "big_map"
           | "signature"
           | "SWAP"
           | "mutez"
           | "EQ"
           | "GET"
           | "PUSH"
           | "option"
           | "IF_CONS"
           | "pair"
           | "nat"
           | "True"
           | "IF_LEFT"
           | "parameter"
           | "LE"
           | "HASH_KEY"
           | "SIZE"
           | "bool"
           | "Pair"
           | "lambda"
           | "FAIL"
           | "DUP"
           | "IF_NONE"
           | "key"
           | "code"
           | "CHECK_SIGNATURE",
         "args": [ $micheline.michelson_v1.expression ... ],
         "annot"?: string }
  $operation.alpha.contents:
    { "kind": "endorsement",
      "block": string /* A block identifier (Base58Check-encoded) */,
      "level": integer ∈ [-2^31-2, 2^31+2],
      "slots": [ integer ∈ [-2^30-2, 2^30+2] ... ] }
    || { "kind": "seed_nonce_revelation",
         "level": integer ∈ [-2^31-2, 2^31+2],
         "nonce": /^[a-zA-Z0-9]+$/ }
    || { "kind": "double_endorsement_evidence",
         "op1":
           { "branch": string /* A block identifier (Base58Check-encoded) */,
             "operations":
               { "kind": "endorsement",
                 "block":
                   string
                   /* A block identifier (Base58Check-encoded) */,
                 "level": integer ∈ [-2^31-2, 2^31+2],
                 "slots": [ integer ∈ [-2^30-2, 2^30+2] ... ] },
             "signature"?:
               string
               /* A Secp256k1 or Ed25519 signature (Base58Check-encoded) */ },
         "op2":
           { "branch": string /* A block identifier (Base58Check-encoded) */,
             "operations":
               { "kind": "endorsement",
                 "block":
                   string
                   /* A block identifier (Base58Check-encoded) */,
                 "level": integer ∈ [-2^31-2, 2^31+2],
                 "slots": [ integer ∈ [-2^30-2, 2^30+2] ... ] },
             "signature"?:
               string
               /* A Secp256k1 or Ed25519 signature (Base58Check-encoded) */ } }
    || { "kind": "double_baking_evidence",
         "bh1": $block_header.alpha.full_header,
         "bh2": $block_header.alpha.full_header }
    || { "kind": "activate_account",
         "pkh": string /* An Ed25519 public key hash (Base58Check-encoded) */,
         "secret": /^[a-zA-Z0-9]+$/ }
    || { "kind": "proposals",
         "source":
           string
           /* A Secp256k1 or Ed25519 public key hash (Base58Check-encoded) */,
         "period": integer ∈ [-2^31-2, 2^31+2],
         "proposals":
           [ string
           /* A Tezos protocol ID (Base58Check-encoded) */ ... ] }
    || { "kind": "ballot",
         "source":
           string
           /* A Secp256k1 or Ed25519 public key hash (Base58Check-encoded) */,
         "period": integer ∈ [-2^31-2, 2^31+2],
         "proposal": string /* A Tezos protocol ID (Base58Check-encoded) */,
         "ballot": "nay" | "yay" | "pass" }
    || { "kind": "reveal",
         "source": $contract_id,
         "fee": /* Amount in mutez */integer ∈ [-2^31-2, 2^31+2] || string,
         "counter": integer ∈ [-2^31-2, 2^31+2],
         "gas_limit": $bignum,
         "storage_limit": integer ∈ [-2^31-2, 2^31+2] || string,
         "public_key":
           string
           /* A Secp256k1 or Ed25519 public key (Base58Check-encoded) */ }
    || { "kind": "transaction",
         "source": $contract_id,
         "fee": /* Amount in mutez */integer ∈ [-2^31-2, 2^31+2] || string,
         "counter": integer ∈ [-2^31-2, 2^31+2],
         "gas_limit": $bignum,
         "storage_limit": integer ∈ [-2^31-2, 2^31+2] || string,
         "amount":
           /* Amount in mutez */
           integer ∈ [-2^31-2, 2^31+2] || string,
         "destination": $contract_id,
         "parameters"?: $micheline.michelson_v1.expression }
    || { "kind": "origination",
         "source": $contract_id,
         "fee": /* Amount in mutez */integer ∈ [-2^31-2, 2^31+2] || string,
         "counter": integer ∈ [-2^31-2, 2^31+2],
         "gas_limit": $bignum,
         "storage_limit": integer ∈ [-2^31-2, 2^31+2] || string,
         "managerPubkey":
           string
           /* A Secp256k1 or Ed25519 public key hash (Base58Check-encoded) */,
         "balance":
           /* Amount in mutez */
           integer ∈ [-2^31-2, 2^31+2] || string,
         "spendable"?: boolean,
         "delegatable"?: boolean,
         "delegate"?:
           string
           /* A Secp256k1 or Ed25519 public key hash (Base58Check-encoded) */,
         "script"?:
           { "code": $micheline.michelson_v1.expression,
             "storage": $micheline.michelson_v1.expression } }
    || { "kind": "delegation",
         "source": $contract_id,
         "fee": /* Amount in mutez */integer ∈ [-2^31-2, 2^31+2] || string,
         "counter": integer ∈ [-2^31-2, 2^31+2],
         "gas_limit": $bignum,
         "storage_limit": integer ∈ [-2^31-2, 2^31+2] || string,
         "delegate"?:
           string
           /* A Secp256k1 or Ed25519 public key hash (Base58Check-encoded) */ }
    || { "kind": "activate_protocol",
         "hash": string /* A Tezos protocol ID (Base58Check-encoded) */ }
    || { "kind": "activate_test_protocol",
         "hash": string /* A Tezos protocol ID (Base58Check-encoded) */ }
  $operation.alpha.unsigned_operation:
    /* Unsigned Alpha operation */
    { "branch": string /* A block identifier (Base58Check-encoded) */,
      "contents": [ $operation.alpha.contents ... ] }
  $timestamp:
    /* RFC 3339 formatted timestamp
       A date in human readble form as specified in RFC 3339. */
    string
  /^[a-zA-Z0-9]+$/

POST ../<block_id>/helpers/forge/protocol_data

Forge the protocol-specific part of a block header

  { "priority": integer ∈ [0, 2^16-1],
    "nonce_hash"?: string /* A nonce hash (Base58Check-encoded) */,
    "proof_of_work_nonce"?: /^[a-zA-Z0-9]+$/ }
  { "protocol_data": /^[a-zA-Z0-9]+$/ }

POST ../<block_id>/helpers/forge_block_header

Forge a block header

  { "level": integer ∈ [-2^31-2, 2^31+2],
    "proto": integer ∈ [0, 255],
    "predecessor": string /* A block identifier (Base58Check-encoded) */,
    "timestamp":
      /* timestamp */
      $timestamp || integer ∈ [-2^31-2, 2^31+2] || string,
    "validation_pass": integer ∈ [0, 255],
    "operations_hash":
      string
      /* A list of list of operations (Base58Check-encoded) */,
    "fitness": [ /^[a-zA-Z0-9]+$/ ... ] /* Tezos block fitness */,
    "context": string /* A hash of context (Base58Check-encoded) */,
    "protocol_data": /^[a-zA-Z0-9]+$/ }
  $timestamp:
    /* RFC 3339 formatted timestamp
       A date in human readble form as specified in RFC 3339. */
    string
  { "block": /^[a-zA-Z0-9]+$/ }

GET ../<block_id>/helpers/levels_in_current_cycle?[offset=<int32>]

Levels of a cycle

Optional query arguments :

  • offset = <int32>

  { /* levels of a cycle */
    "first": integer ∈ [-2^31-2, 2^31+2],
    "last": integer ∈ [-2^31-2, 2^31+2] }

POST ../<block_id>/helpers/parse/block

Parse a block

  { "level": integer ∈ [-2^31-2, 2^31+2],
    "proto": integer ∈ [0, 255],
    "predecessor": string /* A block identifier (Base58Check-encoded) */,
    "timestamp":
      /* timestamp */
      $timestamp || integer ∈ [-2^31-2, 2^31+2] || string,
    "validation_pass": integer ∈ [0, 255],
    "operations_hash":
      string
      /* A list of list of operations (Base58Check-encoded) */,
    "fitness": [ /^[a-zA-Z0-9]+$/ ... ] /* Tezos block fitness */,
    "context": string /* A hash of context (Base58Check-encoded) */,
    "protocol_data": /^[a-zA-Z0-9]+$/ }
  $timestamp:
    /* RFC 3339 formatted timestamp
       A date in human readble form as specified in RFC 3339. */
    string
  $block_header.alpha.signed_contents
  $block_header.alpha.signed_contents:
    { "priority": integer ∈ [0, 2^16-1],
      "proof_of_work_nonce": /^[a-zA-Z0-9]+$/,
      "seed_nonce_hash"?: string /* A nonce hash (Base58Check-encoded) */,
      "signature":
        string
        /* A Secp256k1 or Ed25519 signature (Base58Check-encoded) */ }

POST ../<block_id>/helpers/parse/operations

Parse operations

  { "operations":
      [ { "branch": string /* A block identifier (Base58Check-encoded) */,
          "data": /^[a-zA-Z0-9]+$/ } ... ],
    "check_signature"?: boolean }
  [ { "branch": string /* A block identifier (Base58Check-encoded) */,
      "contents": [ $operation.alpha.contents ... ],
      "signature"?:
        string
        /* A Secp256k1 or Ed25519 signature (Base58Check-encoded) */ } ... ]
  $bignum:
    /* Big number
       Decimal representation of a big number */
    string
  $block_header.alpha.full_header:
    { "level": integer ∈ [-2^31-2, 2^31+2],
      "proto": integer ∈ [0, 255],
      "predecessor": string /* A block identifier (Base58Check-encoded) */,
      "timestamp":
        /* timestamp */
        $timestamp || integer ∈ [-2^31-2, 2^31+2] || string,
      "validation_pass": integer ∈ [0, 255],
      "operations_hash":
        string
        /* A list of list of operations (Base58Check-encoded) */,
      "fitness": [ /^[a-zA-Z0-9]+$/ ... ] /* Tezos block fitness */,
      "context": string /* A hash of context (Base58Check-encoded) */,
      "priority": integer ∈ [0, 2^16-1],
      "proof_of_work_nonce": /^[a-zA-Z0-9]+$/,
      "seed_nonce_hash"?: string /* A nonce hash (Base58Check-encoded) */,
      "signature":
        string
        /* A Secp256k1 or Ed25519 signature (Base58Check-encoded) */ }
  $contract_id:
    /* A contract handle
       A contract notation as given to an RPC or inside scripts. Can be a
       base58 implicit contract hash or a base58 originated contract hash. */
    string
  $micheline.michelson_v1.expression:
    /* Micheline expression (michelson_v1 variant) */
    { "int": $bignum }
    || { "string": string }
    || [ $micheline.michelson_v1.expression ... ]
    || { "prim":
           "CAR"
           | "LSR"
           | "ADDRESS"
           | "CREATE_CONTRACT"
           | "LSL"
           | "MANAGER"
           | "Elt"
           | "EDIV"
           | "OR"
           | "address"
           | "operation"
           | "ADD"
           | "AMOUNT"
           | "ISNAT"
           | "list"
           | "NEG"
           | "LOOP_LEFT"
           | "EMPTY_MAP"
           | "H"
           | "unit"
           | "SELF"
           | "Right"
           | "set"
           | "LAMBDA"
           | "MEM"
           | "ITER"
           | "storage"
           | "CONTRACT"
           | "CONS"
           | "XOR"
           | "STEPS_TO_QUOTA"
           | "False"
           | "AND"
           | "CREATE_ACCOUNT"
           | "COMPARE"
           | "or"
           | "GE"
           | "UPDATE"
           | "NEQ"
           | "SOURCE"
           | "int"
           | "timestamp"
           | "IMPLICIT_ACCOUNT"
           | "string"
           | "Unit"
           | "Some"
           | "ABS"
           | "PAIR"
           | "LT"
           | "CDR"
           | "EMPTY_SET"
           | "BALANCE"
           | "map"
           | "IF"
           | "SOME"
           | "MUL"
           | "NOT"
           | "NONE"
           | "None"
           | "DIP"
           | "GT"
           | "NOW"
           | "key_hash"
           | "NIL"
           | "contract"
           | "EXEC"
           | "SET_DELEGATE"
           | "UNIT"
           | "LOOP"
           | "SUB"
           | "CONCAT"
           | "DROP"
           | "MAP"
           | "RIGHT"
           | "LEFT"
           | "TRANSFER_TOKENS"
           | "INT"
           | "Left"
           | "big_map"
           | "signature"
           | "SWAP"
           | "mutez"
           | "EQ"
           | "GET"
           | "PUSH"
           | "option"
           | "IF_CONS"
           | "pair"
           | "nat"
           | "True"
           | "IF_LEFT"
           | "parameter"
           | "LE"
           | "HASH_KEY"
           | "SIZE"
           | "bool"
           | "Pair"
           | "lambda"
           | "FAIL"
           | "DUP"
           | "IF_NONE"
           | "key"
           | "code"
           | "CHECK_SIGNATURE",
         "args": [ $micheline.michelson_v1.expression ... ],
         "annot"?: string }
  $operation.alpha.contents:
    { "kind": "endorsement",
      "block": string /* A block identifier (Base58Check-encoded) */,
      "level": integer ∈ [-2^31-2, 2^31+2],
      "slots": [ integer ∈ [-2^30-2, 2^30+2] ... ] }
    || { "kind": "seed_nonce_revelation",
         "level": integer ∈ [-2^31-2, 2^31+2],
         "nonce": /^[a-zA-Z0-9]+$/ }
    || { "kind": "double_endorsement_evidence",
         "op1":
           { "branch": string /* A block identifier (Base58Check-encoded) */,
             "operations":
               { "kind": "endorsement",
                 "block":
                   string
                   /* A block identifier (Base58Check-encoded) */,
                 "level": integer ∈ [-2^31-2, 2^31+2],
                 "slots": [ integer ∈ [-2^30-2, 2^30+2] ... ] },
             "signature"?:
               string
               /* A Secp256k1 or Ed25519 signature (Base58Check-encoded) */ },
         "op2":
           { "branch": string /* A block identifier (Base58Check-encoded) */,
             "operations":
               { "kind": "endorsement",
                 "block":
                   string
                   /* A block identifier (Base58Check-encoded) */,
                 "level": integer ∈ [-2^31-2, 2^31+2],
                 "slots": [ integer ∈ [-2^30-2, 2^30+2] ... ] },
             "signature"?:
               string
               /* A Secp256k1 or Ed25519 signature (Base58Check-encoded) */ } }
    || { "kind": "double_baking_evidence",
         "bh1": $block_header.alpha.full_header,
         "bh2": $block_header.alpha.full_header }
    || { "kind": "activate_account",
         "pkh": string /* An Ed25519 public key hash (Base58Check-encoded) */,
         "secret": /^[a-zA-Z0-9]+$/ }
    || { "kind": "proposals",
         "source":
           string
           /* A Secp256k1 or Ed25519 public key hash (Base58Check-encoded) */,
         "period": integer ∈ [-2^31-2, 2^31+2],
         "proposals":
           [ string
           /* A Tezos protocol ID (Base58Check-encoded) */ ... ] }
    || { "kind": "ballot",
         "source":
           string
           /* A Secp256k1 or Ed25519 public key hash (Base58Check-encoded) */,
         "period": integer ∈ [-2^31-2, 2^31+2],
         "proposal": string /* A Tezos protocol ID (Base58Check-encoded) */,
         "ballot": "nay" | "yay" | "pass" }
    || { "kind": "reveal",
         "source": $contract_id,
         "fee": /* Amount in mutez */integer ∈ [-2^31-2, 2^31+2] || string,
         "counter": integer ∈ [-2^31-2, 2^31+2],
         "gas_limit": $bignum,
         "storage_limit": integer ∈ [-2^31-2, 2^31+2] || string,
         "public_key":
           string
           /* A Secp256k1 or Ed25519 public key (Base58Check-encoded) */ }
    || { "kind": "transaction",
         "source": $contract_id,
         "fee": /* Amount in mutez */integer ∈ [-2^31-2, 2^31+2] || string,
         "counter": integer ∈ [-2^31-2, 2^31+2],
         "gas_limit": $bignum,
         "storage_limit": integer ∈ [-2^31-2, 2^31+2] || string,
         "amount":
           /* Amount in mutez */
           integer ∈ [-2^31-2, 2^31+2] || string,
         "destination": $contract_id,
         "parameters"?: $micheline.michelson_v1.expression }
    || { "kind": "origination",
         "source": $contract_id,
         "fee": /* Amount in mutez */integer ∈ [-2^31-2, 2^31+2] || string,
         "counter": integer ∈ [-2^31-2, 2^31+2],
         "gas_limit": $bignum,
         "storage_limit": integer ∈ [-2^31-2, 2^31+2] || string,
         "managerPubkey":
           string
           /* A Secp256k1 or Ed25519 public key hash (Base58Check-encoded) */,
         "balance":
           /* Amount in mutez */
           integer ∈ [-2^31-2, 2^31+2] || string,
         "spendable"?: boolean,
         "delegatable"?: boolean,
         "delegate"?:
           string
           /* A Secp256k1 or Ed25519 public key hash (Base58Check-encoded) */,
         "script"?:
           { "code": $micheline.michelson_v1.expression,
             "storage": $micheline.michelson_v1.expression } }
    || { "kind": "delegation",
         "source": $contract_id,
         "fee": /* Amount in mutez */integer ∈ [-2^31-2, 2^31+2] || string,
         "counter": integer ∈ [-2^31-2, 2^31+2],
         "gas_limit": $bignum,
         "storage_limit": integer ∈ [-2^31-2, 2^31+2] || string,
         "delegate"?:
           string
           /* A Secp256k1 or Ed25519 public key hash (Base58Check-encoded) */ }
    || { "kind": "activate_protocol",
         "hash": string /* A Tezos protocol ID (Base58Check-encoded) */ }
    || { "kind": "activate_test_protocol",
         "hash": string /* A Tezos protocol ID (Base58Check-encoded) */ }
  $timestamp:
    /* RFC 3339 formatted timestamp
       A date in human readble form as specified in RFC 3339. */
    string

POST ../<block_id>/helpers/preapply/block?[sort]&[timestamp=<date>]

Simulate the validation of a block that would contain the given operations and return the resulting fitness and context hash.

Optional query arguments :

  • sort
  • timestamp = <date>

  { "protocol_data":
      { "protocol": "PtCJ7pwoxe8JasnHY8YonnLYjcVHmhiARPJvqcC6VfHT5s8k8sY",
        "priority": integer ∈ [0, 2^16-1],
        "proof_of_work_nonce": /^[a-zA-Z0-9]+$/,
        "seed_nonce_hash"?: string /* A nonce hash (Base58Check-encoded) */,
        "signature":
          string
          /* A Secp256k1 or Ed25519 signature (Base58Check-encoded) */ },
    "operations": [ [ $next_operation ... ] ... ] }
  $bignum:
    /* Big number
       Decimal representation of a big number */
    string
  $block_header.alpha.full_header:
    { "level": integer ∈ [-2^31-2, 2^31+2],
      "proto": integer ∈ [0, 255],
      "predecessor": string /* A block identifier (Base58Check-encoded) */,
      "timestamp":
        /* timestamp */
        $timestamp || integer ∈ [-2^31-2, 2^31+2] || string,
      "validation_pass": integer ∈ [0, 255],
      "operations_hash":
        string
        /* A list of list of operations (Base58Check-encoded) */,
      "fitness": [ /^[a-zA-Z0-9]+$/ ... ] /* Tezos block fitness */,
      "context": string /* A hash of context (Base58Check-encoded) */,
      "priority": integer ∈ [0, 2^16-1],
      "proof_of_work_nonce": /^[a-zA-Z0-9]+$/,
      "seed_nonce_hash"?: string /* A nonce hash (Base58Check-encoded) */,
      "signature":
        string
        /* A Secp256k1 or Ed25519 signature (Base58Check-encoded) */ }
  $contract_id:
    /* A contract handle
       A contract notation as given to an RPC or inside scripts. Can be a
       base58 implicit contract hash or a base58 originated contract hash. */
    string
  $micheline.michelson_v1.expression:
    /* Micheline expression (michelson_v1 variant) */
    { "int": $bignum }
    || { "string": string }
    || [ $micheline.michelson_v1.expression ... ]
    || { "prim":
           "CAR"
           | "LSR"
           | "ADDRESS"
           | "CREATE_CONTRACT"
           | "LSL"
           | "MANAGER"
           | "Elt"
           | "EDIV"
           | "OR"
           | "address"
           | "operation"
           | "ADD"
           | "AMOUNT"
           | "ISNAT"
           | "list"
           | "NEG"
           | "LOOP_LEFT"
           | "EMPTY_MAP"
           | "H"
           | "unit"
           | "SELF"
           | "Right"
           | "set"
           | "LAMBDA"
           | "MEM"
           | "ITER"
           | "storage"
           | "CONTRACT"
           | "CONS"
           | "XOR"
           | "STEPS_TO_QUOTA"
           | "False"
           | "AND"
           | "CREATE_ACCOUNT"
           | "COMPARE"
           | "or"
           | "GE"
           | "UPDATE"
           | "NEQ"
           | "SOURCE"
           | "int"
           | "timestamp"
           | "IMPLICIT_ACCOUNT"
           | "string"
           | "Unit"
           | "Some"
           | "ABS"
           | "PAIR"
           | "LT"
           | "CDR"
           | "EMPTY_SET"
           | "BALANCE"
           | "map"
           | "IF"
           | "SOME"
           | "MUL"
           | "NOT"
           | "NONE"
           | "None"
           | "DIP"
           | "GT"
           | "NOW"
           | "key_hash"
           | "NIL"
           | "contract"
           | "EXEC"
           | "SET_DELEGATE"
           | "UNIT"
           | "LOOP"
           | "SUB"
           | "CONCAT"
           | "DROP"
           | "MAP"
           | "RIGHT"
           | "LEFT"
           | "TRANSFER_TOKENS"
           | "INT"
           | "Left"
           | "big_map"
           | "signature"
           | "SWAP"
           | "mutez"
           | "EQ"
           | "GET"
           | "PUSH"
           | "option"
           | "IF_CONS"
           | "pair"
           | "nat"
           | "True"
           | "IF_LEFT"
           | "parameter"
           | "LE"
           | "HASH_KEY"
           | "SIZE"
           | "bool"
           | "Pair"
           | "lambda"
           | "FAIL"
           | "DUP"
           | "IF_NONE"
           | "key"
           | "code"
           | "CHECK_SIGNATURE",
         "args": [ $micheline.michelson_v1.expression ... ],
         "annot"?: string }
  $next_operation:
    /* Operations param */
    { "protocol": "PtCJ7pwoxe8JasnHY8YonnLYjcVHmhiARPJvqcC6VfHT5s8k8sY",
      "branch": string /* A block identifier (Base58Check-encoded) */,
      "contents": [ $operation.alpha.contents ... ],
      "signature"?:
        string
        /* A Secp256k1 or Ed25519 signature (Base58Check-encoded) */ }
  $operation.alpha.contents:
    { "kind": "endorsement",
      "block": string /* A block identifier (Base58Check-encoded) */,
      "level": integer ∈ [-2^31-2, 2^31+2],
      "slots": [ integer ∈ [-2^30-2, 2^30+2] ... ] }
    || { "kind": "seed_nonce_revelation",
         "level": integer ∈ [-2^31-2, 2^31+2],
         "nonce": /^[a-zA-Z0-9]+$/ }
    || { "kind": "double_endorsement_evidence",
         "op1":
           { "branch": string /* A block identifier (Base58Check-encoded) */,
             "operations":
               { "kind": "endorsement",
                 "block":
                   string
                   /* A block identifier (Base58Check-encoded) */,
                 "level": integer ∈ [-2^31-2, 2^31+2],
                 "slots": [ integer ∈ [-2^30-2, 2^30+2] ... ] },
             "signature"?:
               string
               /* A Secp256k1 or Ed25519 signature (Base58Check-encoded) */ },
         "op2":
           { "branch": string /* A block identifier (Base58Check-encoded) */,
             "operations":
               { "kind": "endorsement",
                 "block":
                   string
                   /* A block identifier (Base58Check-encoded) */,
                 "level": integer ∈ [-2^31-2, 2^31+2],
                 "slots": [ integer ∈ [-2^30-2, 2^30+2] ... ] },
             "signature"?:
               string
               /* A Secp256k1 or Ed25519 signature (Base58Check-encoded) */ } }
    || { "kind": "double_baking_evidence",
         "bh1": $block_header.alpha.full_header,
         "bh2": $block_header.alpha.full_header }
    || { "kind": "activate_account",
         "pkh": string /* An Ed25519 public key hash (Base58Check-encoded) */,
         "secret": /^[a-zA-Z0-9]+$/ }
    || { "kind": "proposals",
         "source":
           string
           /* A Secp256k1 or Ed25519 public key hash (Base58Check-encoded) */,
         "period": integer ∈ [-2^31-2, 2^31+2],
         "proposals":
           [ string
           /* A Tezos protocol ID (Base58Check-encoded) */ ... ] }
    || { "kind": "ballot",
         "source":
           string
           /* A Secp256k1 or Ed25519 public key hash (Base58Check-encoded) */,
         "period": integer ∈ [-2^31-2, 2^31+2],
         "proposal": string /* A Tezos protocol ID (Base58Check-encoded) */,
         "ballot": "nay" | "yay" | "pass" }
    || { "kind": "reveal",
         "source": $contract_id,
         "fee": /* Amount in mutez */integer ∈ [-2^31-2, 2^31+2] || string,
         "counter": integer ∈ [-2^31-2, 2^31+2],
         "gas_limit": $bignum,
         "storage_limit": integer ∈ [-2^31-2, 2^31+2] || string,
         "public_key":
           string
           /* A Secp256k1 or Ed25519 public key (Base58Check-encoded) */ }
    || { "kind": "transaction",
         "source": $contract_id,
         "fee": /* Amount in mutez */integer ∈ [-2^31-2, 2^31+2] || string,
         "counter": integer ∈ [-2^31-2, 2^31+2],
         "gas_limit": $bignum,
         "storage_limit": integer ∈ [-2^31-2, 2^31+2] || string,
         "amount":
           /* Amount in mutez */
           integer ∈ [-2^31-2, 2^31+2] || string,
         "destination": $contract_id,
         "parameters"?: $micheline.michelson_v1.expression }
    || { "kind": "origination",
         "source": $contract_id,
         "fee": /* Amount in mutez */integer ∈ [-2^31-2, 2^31+2] || string,
         "counter": integer ∈ [-2^31-2, 2^31+2],
         "gas_limit": $bignum,
         "storage_limit": integer ∈ [-2^31-2, 2^31+2] || string,
         "managerPubkey":
           string
           /* A Secp256k1 or Ed25519 public key hash (Base58Check-encoded) */,
         "balance":
           /* Amount in mutez */
           integer ∈ [-2^31-2, 2^31+2] || string,
         "spendable"?: boolean,
         "delegatable"?: boolean,
         "delegate"?:
           string
           /* A Secp256k1 or Ed25519 public key hash (Base58Check-encoded) */,
         "script"?:
           { "code": $micheline.michelson_v1.expression,
             "storage": $micheline.michelson_v1.expression } }
    || { "kind": "delegation",
         "source": $contract_id,
         "fee": /* Amount in mutez */integer ∈ [-2^31-2, 2^31+2] || string,
         "counter": integer ∈ [-2^31-2, 2^31+2],
         "gas_limit": $bignum,
         "storage_limit": integer ∈ [-2^31-2, 2^31+2] || string,
         "delegate"?:
           string
           /* A Secp256k1 or Ed25519 public key hash (Base58Check-encoded) */ }
    || { "kind": "activate_protocol",
         "hash": string /* A Tezos protocol ID (Base58Check-encoded) */ }
    || { "kind": "activate_test_protocol",
         "hash": string /* A Tezos protocol ID (Base58Check-encoded) */ }
  $timestamp:
    /* RFC 3339 formatted timestamp
       A date in human readble form as specified in RFC 3339. */
    string
  { "shell_header": $block_header.shell,
    "operations":
      [ { "applied":
            [ { "hash":
                  string
                  /* A Tezos operation ID (Base58Check-encoded) */,
                "branch":
                  string
                  /* A block identifier (Base58Check-encoded) */,
                "data": /^[a-zA-Z0-9]+$/ } ... ],
          "refused":
            [ { "hash":
                  string
                  /* A Tezos operation ID (Base58Check-encoded) */,
                "branch":
                  string
                  /* A block identifier (Base58Check-encoded) */,
                "data": /^[a-zA-Z0-9]+$/,
                "error":
                  any
                  /* The full list of error is available with the global RPC
                     `GET errors` */ } ... ],
          "branch_refused":
            [ { "hash":
                  string
                  /* A Tezos operation ID (Base58Check-encoded) */,
                "branch":
                  string
                  /* A block identifier (Base58Check-encoded) */,
                "data": /^[a-zA-Z0-9]+$/,
                "error":
                  any
                  /* The full list of error is available with the global RPC
                     `GET errors` */ } ... ],
          "branch_delayed":
            [ { "hash":
                  string
                  /* A Tezos operation ID (Base58Check-encoded) */,
                "branch":
                  string
                  /* A block identifier (Base58Check-encoded) */,
                "data": /^[a-zA-Z0-9]+$/,
                "error":
                  any
                  /* The full list of error is available with the global RPC
                     `GET errors` */ } ... ] } ... ] }
  $block_header.shell:
    { "level": integer ∈ [-2^31-2, 2^31+2],
      "proto": integer ∈ [0, 255],
      "predecessor": string /* A block identifier (Base58Check-encoded) */,
      "timestamp":
        /* timestamp */
        $timestamp || integer ∈ [-2^31-2, 2^31+2] || string,
      "validation_pass": integer ∈ [0, 255],
      "operations_hash":
        string
        /* A list of list of operations (Base58Check-encoded) */,
      "fitness": [ /^[a-zA-Z0-9]+$/ ... ] /* Tezos block fitness */,
      "context": string /* A hash of context (Base58Check-encoded) */ }
  $timestamp:
    /* RFC 3339 formatted timestamp
       A date in human readble form as specified in RFC 3339. */
    string

POST ../<block_id>/helpers/preapply/operations

Simulate the validation of an operation.

  [ $next_operation ... ]
  $bignum:
    /* Big number
       Decimal representation of a big number */
    string
  $block_header.alpha.full_header:
    { "level": integer ∈ [-2^31-2, 2^31+2],
      "proto": integer ∈ [0, 255],
      "predecessor": string /* A block identifier (Base58Check-encoded) */,
      "timestamp":
        /* timestamp */
        $timestamp || integer ∈ [-2^31-2, 2^31+2] || string,
      "validation_pass": integer ∈ [0, 255],
      "operations_hash":
        string
        /* A list of list of operations (Base58Check-encoded) */,
      "fitness": [ /^[a-zA-Z0-9]+$/ ... ] /* Tezos block fitness */,
      "context": string /* A hash of context (Base58Check-encoded) */,
      "priority": integer ∈ [0, 2^16-1],
      "proof_of_work_nonce": /^[a-zA-Z0-9]+$/,
      "seed_nonce_hash"?: string /* A nonce hash (Base58Check-encoded) */,
      "signature":
        string
        /* A Secp256k1 or Ed25519 signature (Base58Check-encoded) */ }
  $contract_id:
    /* A contract handle
       A contract notation as given to an RPC or inside scripts. Can be a
       base58 implicit contract hash or a base58 originated contract hash. */
    string
  $micheline.michelson_v1.expression:
    /* Micheline expression (michelson_v1 variant) */
    { "int": $bignum }
    || { "string": string }
    || [ $micheline.michelson_v1.expression ... ]
    || { "prim":
           "CAR"
           | "LSR"
           | "ADDRESS"
           | "CREATE_CONTRACT"
           | "LSL"
           | "MANAGER"
           | "Elt"
           | "EDIV"
           | "OR"
           | "address"
           | "operation"
           | "ADD"
           | "AMOUNT"
           | "ISNAT"
           | "list"
           | "NEG"
           | "LOOP_LEFT"
           | "EMPTY_MAP"
           | "H"
           | "unit"
           | "SELF"
           | "Right"
           | "set"
           | "LAMBDA"
           | "MEM"
           | "ITER"
           | "storage"
           | "CONTRACT"
           | "CONS"
           | "XOR"
           | "STEPS_TO_QUOTA"
           | "False"
           | "AND"
           | "CREATE_ACCOUNT"
           | "COMPARE"
           | "or"
           | "GE"
           | "UPDATE"
           | "NEQ"
           | "SOURCE"
           | "int"
           | "timestamp"
           | "IMPLICIT_ACCOUNT"
           | "string"
           | "Unit"
           | "Some"
           | "ABS"
           | "PAIR"
           | "LT"
           | "CDR"
           | "EMPTY_SET"
           | "BALANCE"
           | "map"
           | "IF"
           | "SOME"
           | "MUL"
           | "NOT"
           | "NONE"
           | "None"
           | "DIP"
           | "GT"
           | "NOW"
           | "key_hash"
           | "NIL"
           | "contract"
           | "EXEC"
           | "SET_DELEGATE"
           | "UNIT"
           | "LOOP"
           | "SUB"
           | "CONCAT"
           | "DROP"
           | "MAP"
           | "RIGHT"
           | "LEFT"
           | "TRANSFER_TOKENS"
           | "INT"
           | "Left"
           | "big_map"
           | "signature"
           | "SWAP"
           | "mutez"
           | "EQ"
           | "GET"
           | "PUSH"
           | "option"
           | "IF_CONS"
           | "pair"
           | "nat"
           | "True"
           | "IF_LEFT"
           | "parameter"
           | "LE"
           | "HASH_KEY"
           | "SIZE"
           | "bool"
           | "Pair"
           | "lambda"
           | "FAIL"
           | "DUP"
           | "IF_NONE"
           | "key"
           | "code"
           | "CHECK_SIGNATURE",
         "args": [ $micheline.michelson_v1.expression ... ],
         "annot"?: string }
  $next_operation:
    /* Operations param */
    { "protocol": "PtCJ7pwoxe8JasnHY8YonnLYjcVHmhiARPJvqcC6VfHT5s8k8sY",
      "branch": string /* A block identifier (Base58Check-encoded) */,
      "contents": [ $operation.alpha.contents ... ],
      "signature"?:
        string
        /* A Secp256k1 or Ed25519 signature (Base58Check-encoded) */ }
  $operation.alpha.contents:
    { "kind": "endorsement",
      "block": string /* A block identifier (Base58Check-encoded) */,
      "level": integer ∈ [-2^31-2, 2^31+2],
      "slots": [ integer ∈ [-2^30-2, 2^30+2] ... ] }
    || { "kind": "seed_nonce_revelation",
         "level": integer ∈ [-2^31-2, 2^31+2],
         "nonce": /^[a-zA-Z0-9]+$/ }
    || { "kind": "double_endorsement_evidence",
         "op1":
           { "branch": string /* A block identifier (Base58Check-encoded) */,
             "operations":
               { "kind": "endorsement",
                 "block":
                   string
                   /* A block identifier (Base58Check-encoded) */,
                 "level": integer ∈ [-2^31-2, 2^31+2],
                 "slots": [ integer ∈ [-2^30-2, 2^30+2] ... ] },
             "signature"?:
               string
               /* A Secp256k1 or Ed25519 signature (Base58Check-encoded) */ },
         "op2":
           { "branch": string /* A block identifier (Base58Check-encoded) */,
             "operations":
               { "kind": "endorsement",
                 "block":
                   string
                   /* A block identifier (Base58Check-encoded) */,
                 "level": integer ∈ [-2^31-2, 2^31+2],
                 "slots": [ integer ∈ [-2^30-2, 2^30+2] ... ] },
             "signature"?:
               string
               /* A Secp256k1 or Ed25519 signature (Base58Check-encoded) */ } }
    || { "kind": "double_baking_evidence",
         "bh1": $block_header.alpha.full_header,
         "bh2": $block_header.alpha.full_header }
    || { "kind": "activate_account",
         "pkh": string /* An Ed25519 public key hash (Base58Check-encoded) */,
         "secret": /^[a-zA-Z0-9]+$/ }
    || { "kind": "proposals",
         "source":
           string
           /* A Secp256k1 or Ed25519 public key hash (Base58Check-encoded) */,
         "period": integer ∈ [-2^31-2, 2^31+2],
         "proposals":
           [ string
           /* A Tezos protocol ID (Base58Check-encoded) */ ... ] }
    || { "kind": "ballot",
         "source":
           string
           /* A Secp256k1 or Ed25519 public key hash (Base58Check-encoded) */,
         "period": integer ∈ [-2^31-2, 2^31+2],
         "proposal": string /* A Tezos protocol ID (Base58Check-encoded) */,
         "ballot": "nay" | "yay" | "pass" }
    || { "kind": "reveal",
         "source": $contract_id,
         "fee": /* Amount in mutez */integer ∈ [-2^31-2, 2^31+2] || string,
         "counter": integer ∈ [-2^31-2, 2^31+2],
         "gas_limit": $bignum,
         "storage_limit": integer ∈ [-2^31-2, 2^31+2] || string,
         "public_key":
           string
           /* A Secp256k1 or Ed25519 public key (Base58Check-encoded) */ }
    || { "kind": "transaction",
         "source": $contract_id,
         "fee": /* Amount in mutez */integer ∈ [-2^31-2, 2^31+2] || string,
         "counter": integer ∈ [-2^31-2, 2^31+2],
         "gas_limit": $bignum,
         "storage_limit": integer ∈ [-2^31-2, 2^31+2] || string,
         "amount":
           /* Amount in mutez */
           integer ∈ [-2^31-2, 2^31+2] || string,
         "destination": $contract_id,
         "parameters"?: $micheline.michelson_v1.expression }
    || { "kind": "origination",
         "source": $contract_id,
         "fee": /* Amount in mutez */integer ∈ [-2^31-2, 2^31+2] || string,
         "counter": integer ∈ [-2^31-2, 2^31+2],
         "gas_limit": $bignum,
         "storage_limit": integer ∈ [-2^31-2, 2^31+2] || string,
         "managerPubkey":
           string
           /* A Secp256k1 or Ed25519 public key hash (Base58Check-encoded) */,
         "balance":
           /* Amount in mutez */
           integer ∈ [-2^31-2, 2^31+2] || string,
         "spendable"?: boolean,
         "delegatable"?: boolean,
         "delegate"?:
           string
           /* A Secp256k1 or Ed25519 public key hash (Base58Check-encoded) */,
         "script"?:
           { "code": $micheline.michelson_v1.expression,
             "storage": $micheline.michelson_v1.expression } }
    || { "kind": "delegation",
         "source": $contract_id,
         "fee": /* Amount in mutez */integer ∈ [-2^31-2, 2^31+2] || string,
         "counter": integer ∈ [-2^31-2, 2^31+2],
         "gas_limit": $bignum,
         "storage_limit": integer ∈ [-2^31-2, 2^31+2] || string,
         "delegate"?:
           string
           /* A Secp256k1 or Ed25519 public key hash (Base58Check-encoded) */ }
    || { "kind": "activate_protocol",
         "hash": string /* A Tezos protocol ID (Base58Check-encoded) */ }
    || { "kind": "activate_test_protocol",
         "hash": string /* A Tezos protocol ID (Base58Check-encoded) */ }
  $timestamp:
    /* RFC 3339 formatted timestamp
       A date in human readble form as specified in RFC 3339. */
    string
  [ $operation.alpha.operation_with_metadata ... ]
  $bignum:
    /* Big number
       Decimal representation of a big number */
    string
  $block_header.alpha.full_header:
    { "level": integer ∈ [-2^31-2, 2^31+2],
      "proto": integer ∈ [0, 255],
      "predecessor": string /* A block identifier (Base58Check-encoded) */,
      "timestamp":
        /* timestamp */
        $timestamp || integer ∈ [-2^31-2, 2^31+2] || string,
      "validation_pass": integer ∈ [0, 255],
      "operations_hash":
        string
        /* A list of list of operations (Base58Check-encoded) */,
      "fitness": [ /^[a-zA-Z0-9]+$/ ... ] /* Tezos block fitness */,
      "context": string /* A hash of context (Base58Check-encoded) */,
      "priority": integer ∈ [0, 2^16-1],
      "proof_of_work_nonce": /^[a-zA-Z0-9]+$/,
      "seed_nonce_hash"?: string /* A nonce hash (Base58Check-encoded) */,
      "signature":
        string
        /* A Secp256k1 or Ed25519 signature (Base58Check-encoded) */ }
  $contract_id:
    /* A contract handle
       A contract notation as given to an RPC or inside scripts. Can be a
       base58 implicit contract hash or a base58 originated contract hash. */
    string
  $error:
    /* ... FIXME ... */
    any
  $micheline.michelson_v1.expression:
    /* Micheline expression (michelson_v1 variant) */
    { "int": $bignum }
    || { "string": string }
    || [ $micheline.michelson_v1.expression ... ]
    || { "prim":
           "CAR"
           | "LSR"
           | "ADDRESS"
           | "CREATE_CONTRACT"
           | "LSL"
           | "MANAGER"
           | "Elt"
           | "EDIV"
           | "OR"
           | "address"
           | "operation"
           | "ADD"
           | "AMOUNT"
           | "ISNAT"
           | "list"
           | "NEG"
           | "LOOP_LEFT"
           | "EMPTY_MAP"
           | "H"
           | "unit"
           | "SELF"
           | "Right"
           | "set"
           | "LAMBDA"
           | "MEM"
           | "ITER"
           | "storage"
           | "CONTRACT"
           | "CONS"
           | "XOR"
           | "STEPS_TO_QUOTA"
           | "False"
           | "AND"
           | "CREATE_ACCOUNT"
           | "COMPARE"
           | "or"
           | "GE"
           | "UPDATE"
           | "NEQ"
           | "SOURCE"
           | "int"
           | "timestamp"
           | "IMPLICIT_ACCOUNT"
           | "string"
           | "Unit"
           | "Some"
           | "ABS"
           | "PAIR"
           | "LT"
           | "CDR"
           | "EMPTY_SET"
           | "BALANCE"
           | "map"
           | "IF"
           | "SOME"
           | "MUL"
           | "NOT"
           | "NONE"
           | "None"
           | "DIP"
           | "GT"
           | "NOW"
           | "key_hash"
           | "NIL"
           | "contract"
           | "EXEC"
           | "SET_DELEGATE"
           | "UNIT"
           | "LOOP"
           | "SUB"
           | "CONCAT"
           | "DROP"
           | "MAP"
           | "RIGHT"
           | "LEFT"
           | "TRANSFER_TOKENS"
           | "INT"
           | "Left"
           | "big_map"
           | "signature"
           | "SWAP"
           | "mutez"
           | "EQ"
           | "GET"
           | "PUSH"
           | "option"
           | "IF_CONS"
           | "pair"
           | "nat"
           | "True"
           | "IF_LEFT"
           | "parameter"
           | "LE"
           | "HASH_KEY"
           | "SIZE"
           | "bool"
           | "Pair"
           | "lambda"
           | "FAIL"
           | "DUP"
           | "IF_NONE"
           | "key"
           | "code"
           | "CHECK_SIGNATURE",
         "args": [ $micheline.michelson_v1.expression ... ],
         "annot"?: string }
  $operation.alpha.internal_operation_result:
    { "kind": "reveal",
      "source": $contract_id,
      "nonce": integer ∈ [0, 2^16-1],
      "public_key":
        string
        /* A Secp256k1 or Ed25519 public key (Base58Check-encoded) */,
      "result": $operation.alpha.operation_result.reveal }
    || { "kind": "transaction",
         "source": $contract_id,
         "nonce": integer ∈ [0, 2^16-1],
         "amount":
           /* Amount in mutez */
           integer ∈ [-2^31-2, 2^31+2] || string,
         "destination": $contract_id,
         "parameters"?: $micheline.michelson_v1.expression,
         "result": $operation.alpha.operation_result.transaction }
    || { "kind": "origination",
         "source": $contract_id,
         "nonce": integer ∈ [0, 2^16-1],
         "managerPubkey":
           string
           /* A Secp256k1 or Ed25519 public key hash (Base58Check-encoded) */,
         "balance":
           /* Amount in mutez */
           integer ∈ [-2^31-2, 2^31+2] || string,
         "spendable"?: boolean,
         "delegatable"?: boolean,
         "delegate"?:
           string
           /* A Secp256k1 or Ed25519 public key hash (Base58Check-encoded) */,
         "script"?:
           { "code": $micheline.michelson_v1.expression,
             "storage": $micheline.michelson_v1.expression },
         "result": $operation.alpha.operation_result.origination }
    || { "kind": "delegation",
         "source": $contract_id,
         "nonce": integer ∈ [0, 2^16-1],
         "delegate"?:
           string
           /* A Secp256k1 or Ed25519 public key hash (Base58Check-encoded) */,
         "result": $operation.alpha.operation_result.delegation }
  $operation.alpha.operation_contents_and_result:
    { "kind": "endorsement",
      "block": string /* A block identifier (Base58Check-encoded) */,
      "level": integer ∈ [-2^31-2, 2^31+2],
      "slots": [ integer ∈ [-2^30-2, 2^30+2] ... ],
      "metadata":
        { "delegate":
            string
            /* A Secp256k1 or Ed25519 public key hash (Base58Check-encoded) */,
          "slots": [ integer ∈ [0, 255] ... ] } }
    || { "kind": "seed_nonce_revelation",
         "level": integer ∈ [-2^31-2, 2^31+2],
         "nonce": /^[a-zA-Z0-9]+$/,
         "metadata":
           { "balance_updates": $operation_metadata.alpha.balance_updates } }
    || { "kind": "double_endorsement_evidence",
         "op1":
           { "branch": string /* A block identifier (Base58Check-encoded) */,
             "operations":
               { "kind": "endorsement",
                 "block":
                   string
                   /* A block identifier (Base58Check-encoded) */,
                 "level": integer ∈ [-2^31-2, 2^31+2],
                 "slots": [ integer ∈ [-2^30-2, 2^30+2] ... ] },
             "signature"?:
               string
               /* A Secp256k1 or Ed25519 signature (Base58Check-encoded) */ },
         "op2":
           { "branch": string /* A block identifier (Base58Check-encoded) */,
             "operations":
               { "kind": "endorsement",
                 "block":
                   string
                   /* A block identifier (Base58Check-encoded) */,
                 "level": integer ∈ [-2^31-2, 2^31+2],
                 "slots": [ integer ∈ [-2^30-2, 2^30+2] ... ] },
             "signature"?:
               string
               /* A Secp256k1 or Ed25519 signature (Base58Check-encoded) */ },
         "metadata":
           { "balance_updates": $operation_metadata.alpha.balance_updates } }
    || { "kind": "double_baking_evidence",
         "bh1": $block_header.alpha.full_header,
         "bh2": $block_header.alpha.full_header,
         "metadata":
           { "balance_updates": $operation_metadata.alpha.balance_updates } }
    || { "kind": "activate_account",
         "pkh": string /* An Ed25519 public key hash (Base58Check-encoded) */,
         "secret": /^[a-zA-Z0-9]+$/,
         "metadata":
           { "balance_updates": $operation_metadata.alpha.balance_updates } }
    || { "kind": "proposals",
         "source":
           string
           /* A Secp256k1 or Ed25519 public key hash (Base58Check-encoded) */,
         "period": integer ∈ [-2^31-2, 2^31+2],
         "proposals":
           [ string
           /* A Tezos protocol ID (Base58Check-encoded) */ ... ],
         "metadata": {  } }
    || { "kind": "ballot",
         "source":
           string
           /* A Secp256k1 or Ed25519 public key hash (Base58Check-encoded) */,
         "period": integer ∈ [-2^31-2, 2^31+2],
         "proposal": string /* A Tezos protocol ID (Base58Check-encoded) */,
         "ballot": "nay" | "yay" | "pass",
         "metadata": {  } }
    || { "kind": "reveal",
         "source": $contract_id,
         "fee": /* Amount in mutez */integer ∈ [-2^31-2, 2^31+2] || string,
         "counter": integer ∈ [-2^31-2, 2^31+2],
         "gas_limit": $bignum,
         "storage_limit": integer ∈ [-2^31-2, 2^31+2] || string,
         "public_key":
           string
           /* A Secp256k1 or Ed25519 public key (Base58Check-encoded) */,
         "metadata":
           { "balance_updates": $operation_metadata.alpha.balance_updates,
             "operation_result": $operation.alpha.operation_result.reveal,
             "internal_operation_results"?:
               [ $operation.alpha.internal_operation_result ... ] } }
    || { "kind": "transaction",
         "source": $contract_id,
         "fee": /* Amount in mutez */integer ∈ [-2^31-2, 2^31+2] || string,
         "counter": integer ∈ [-2^31-2, 2^31+2],
         "gas_limit": $bignum,
         "storage_limit": integer ∈ [-2^31-2, 2^31+2] || string,
         "amount":
           /* Amount in mutez */
           integer ∈ [-2^31-2, 2^31+2] || string,
         "destination": $contract_id,
         "parameters"?: $micheline.michelson_v1.expression,
         "metadata":
           { "balance_updates": $operation_metadata.alpha.balance_updates,
             "operation_result":
               $operation.alpha.operation_result.transaction,
             "internal_operation_results"?:
               [ $operation.alpha.internal_operation_result ... ] } }
    || { "kind": "origination",
         "source": $contract_id,
         "fee": /* Amount in mutez */integer ∈ [-2^31-2, 2^31+2] || string,
         "counter": integer ∈ [-2^31-2, 2^31+2],
         "gas_limit": $bignum,
         "storage_limit": integer ∈ [-2^31-2, 2^31+2] || string,
         "managerPubkey":
           string
           /* A Secp256k1 or Ed25519 public key hash (Base58Check-encoded) */,
         "balance":
           /* Amount in mutez */
           integer ∈ [-2^31-2, 2^31+2] || string,
         "spendable"?: boolean,
         "delegatable"?: boolean,
         "delegate"?:
           string
           /* A Secp256k1 or Ed25519 public key hash (Base58Check-encoded) */,
         "script"?:
           { "code": $micheline.michelson_v1.expression,
             "storage": $micheline.michelson_v1.expression },
         "metadata":
           { "balance_updates": $operation_metadata.alpha.balance_updates,
             "operation_result":
               $operation.alpha.operation_result.origination,
             "internal_operation_results"?:
               [ $operation.alpha.internal_operation_result ... ] } }
    || { "kind": "delegation",
         "source": $contract_id,
         "fee": /* Amount in mutez */integer ∈ [-2^31-2, 2^31+2] || string,
         "counter": integer ∈ [-2^31-2, 2^31+2],
         "gas_limit": $bignum,
         "storage_limit": integer ∈ [-2^31-2, 2^31+2] || string,
         "delegate"?:
           string
           /* A Secp256k1 or Ed25519 public key hash (Base58Check-encoded) */,
         "metadata":
           { "balance_updates": $operation_metadata.alpha.balance_updates,
             "operation_result": $operation.alpha.operation_result.delegation,
             "internal_operation_results"?:
               [ $operation.alpha.internal_operation_result ... ] } }
    || { "kind": "activate_protocol",
         "hash": string /* A Tezos protocol ID (Base58Check-encoded) */,
         "metadata": {  } }
    || { "kind": "activate_test_protocol",
         "hash": string /* A Tezos protocol ID (Base58Check-encoded) */,
         "metadata": {  } }
  $operation.alpha.operation_result.delegation:
    { "status": "applied" }
    || { "status": "failed",
         "errors": [ $error ... ] }
    || { "status": "skipped" }
  $operation.alpha.operation_result.origination:
    { "status": "applied",
      "balance_updates"?: $operation_metadata.alpha.balance_updates,
      "originated_contracts"?: [ $contract_id ... ],
      "consumed_gas"?: $bignum,
      "storage_size_diff"?: integer ∈ [-2^31-2, 2^31+2] || string }
    || { "status": "failed",
         "errors": [ $error ... ] }
    || { "status": "skipped" }
  $operation.alpha.operation_result.reveal:
    { "status": "applied" }
    || { "status": "failed",
         "errors": [ $error ... ] }
    || { "status": "skipped" }
  $operation.alpha.operation_result.transaction:
    { "status": "applied",
      "storage"?: $micheline.michelson_v1.expression,
      "balance_updates"?: $operation_metadata.alpha.balance_updates,
      "originated_contracts"?: [ $contract_id ... ],
      "consumed_gas"?: $bignum,
      "storage_size_diff"?: integer ∈ [-2^31-2, 2^31+2] || string }
    || { "status": "failed",
         "errors": [ $error ... ] }
    || { "status": "skipped" }
  $operation.alpha.operation_with_metadata:
    { "contents": [ $operation.alpha.operation_contents_and_result ... ],
      "signature"?:
        string
        /* A Secp256k1 or Ed25519 signature (Base58Check-encoded) */ }
  $operation_metadata.alpha.balance_updates:
    [ { "kind": "contract",
        "contract": $contract_id,
        "credited":
          /* Amount in mutez */
          integer ∈ [-2^31-2, 2^31+2] || string }
      || { "kind": "contract",
           "contract": $contract_id,
           "debited":
             /* Amount in mutez */
             integer ∈ [-2^31-2, 2^31+2] || string }
      || { "kind": "freezer",
           "category": "rewards",
           "delegate":
             string
             /* A Secp256k1 or Ed25519 public key hash (Base58Check-encoded) */,
           "level": integer ∈ [-2^31-2, 2^31+2],
           "credited":
             /* Amount in mutez */
             integer ∈ [-2^31-2, 2^31+2] || string }
      || { "kind": "freezer",
           "category": "rewards",
           "delegate":
             string
             /* A Secp256k1 or Ed25519 public key hash (Base58Check-encoded) */,
           "level": integer ∈ [-2^31-2, 2^31+2],
           "debited":
             /* Amount in mutez */
             integer ∈ [-2^31-2, 2^31+2] || string }
      || { "kind": "freezer",
           "category": "fees",
           "delegate":
             string
             /* A Secp256k1 or Ed25519 public key hash (Base58Check-encoded) */,
           "level": integer ∈ [-2^31-2, 2^31+2],
           "credited":
             /* Amount in mutez */
             integer ∈ [-2^31-2, 2^31+2] || string }
      || { "kind": "freezer",
           "category": "fees",
           "delegate":
             string
             /* A Secp256k1 or Ed25519 public key hash (Base58Check-encoded) */,
           "level": integer ∈ [-2^31-2, 2^31+2],
           "debited":
             /* Amount in mutez */
             integer ∈ [-2^31-2, 2^31+2] || string }
      || { "kind": "freezer",
           "category": "deposits",
           "delegate":
             string
             /* A Secp256k1 or Ed25519 public key hash (Base58Check-encoded) */,
           "level": integer ∈ [-2^31-2, 2^31+2],
           "credited":
             /* Amount in mutez */
             integer ∈ [-2^31-2, 2^31+2] || string }
      || { "kind": "freezer",
           "category": "deposits",
           "delegate":
             string
             /* A Secp256k1 or Ed25519 public key hash (Base58Check-encoded) */,
           "level": integer ∈ [-2^31-2, 2^31+2],
           "debited":
             /* Amount in mutez */
             integer ∈ [-2^31-2, 2^31+2] || string } ... ]
  $timestamp:
    /* RFC 3339 formatted timestamp
       A date in human readble form as specified in RFC 3339. */
    string

POST ../<block_id>/helpers/scripts/hash_data

Computes the hash of some data expression using the same algorithm as script instruction H

  { "data": $micheline.michelson_v1.expression,
    "type": $micheline.michelson_v1.expression,
    "gas"?: $bignum }
  $bignum:
    /* Big number
       Decimal representation of a big number */
    string
  $micheline.michelson_v1.expression:
    /* Micheline expression (michelson_v1 variant) */
    { "int": $bignum }
    || { "string": string }
    || [ $micheline.michelson_v1.expression ... ]
    || { "prim":
           "CAR"
           | "LSR"
           | "ADDRESS"
           | "CREATE_CONTRACT"
           | "LSL"
           | "MANAGER"
           | "Elt"
           | "EDIV"
           | "OR"
           | "address"
           | "operation"
           | "ADD"
           | "AMOUNT"
           | "ISNAT"
           | "list"
           | "NEG"
           | "LOOP_LEFT"
           | "EMPTY_MAP"
           | "H"
           | "unit"
           | "SELF"
           | "Right"
           | "set"
           | "LAMBDA"
           | "MEM"
           | "ITER"
           | "storage"
           | "CONTRACT"
           | "CONS"
           | "XOR"
           | "STEPS_TO_QUOTA"
           | "False"
           | "AND"
           | "CREATE_ACCOUNT"
           | "COMPARE"
           | "or"
           | "GE"
           | "UPDATE"
           | "NEQ"
           | "SOURCE"
           | "int"
           | "timestamp"
           | "IMPLICIT_ACCOUNT"
           | "string"
           | "Unit"
           | "Some"
           | "ABS"
           | "PAIR"
           | "LT"
           | "CDR"
           | "EMPTY_SET"
           | "BALANCE"
           | "map"
           | "IF"
           | "SOME"
           | "MUL"
           | "NOT"
           | "NONE"
           | "None"
           | "DIP"
           | "GT"
           | "NOW"
           | "key_hash"
           | "NIL"
           | "contract"
           | "EXEC"
           | "SET_DELEGATE"
           | "UNIT"
           | "LOOP"
           | "SUB"
           | "CONCAT"
           | "DROP"
           | "MAP"
           | "RIGHT"
           | "LEFT"
           | "TRANSFER_TOKENS"
           | "INT"
           | "Left"
           | "big_map"
           | "signature"
           | "SWAP"
           | "mutez"
           | "EQ"
           | "GET"
           | "PUSH"
           | "option"
           | "IF_CONS"
           | "pair"
           | "nat"
           | "True"
           | "IF_LEFT"
           | "parameter"
           | "LE"
           | "HASH_KEY"
           | "SIZE"
           | "bool"
           | "Pair"
           | "lambda"
           | "FAIL"
           | "DUP"
           | "IF_NONE"
           | "key"
           | "code"
           | "CHECK_SIGNATURE",
         "args": [ $micheline.michelson_v1.expression ... ],
         "annot"?: string }
  { "hash": string,
    "gas": $bignum || "unaccounted" }
  $bignum:
    /* Big number
       Decimal representation of a big number */
    string

POST ../<block_id>/helpers/scripts/run_code

Run a piece of code in the current context

  { "script": $micheline.michelson_v1.expression,
    "storage": $micheline.michelson_v1.expression,
    "input": $micheline.michelson_v1.expression,
    "amount": /* Amount in mutez */integer ∈ [-2^31-2, 2^31+2] || string,
    "contract": $contract_id }
  $bignum:
    /* Big number
       Decimal representation of a big number */
    string
  $contract_id:
    /* A contract handle
       A contract notation as given to an RPC or inside scripts. Can be a
       base58 implicit contract hash or a base58 originated contract hash. */
    string
  $micheline.michelson_v1.expression:
    /* Micheline expression (michelson_v1 variant) */
    { "int": $bignum }
    || { "string": string }
    || [ $micheline.michelson_v1.expression ... ]
    || { "prim":
           "CAR"
           | "LSR"
           | "ADDRESS"
           | "CREATE_CONTRACT"
           | "LSL"
           | "MANAGER"
           | "Elt"
           | "EDIV"
           | "OR"
           | "address"
           | "operation"
           | "ADD"
           | "AMOUNT"
           | "ISNAT"
           | "list"
           | "NEG"
           | "LOOP_LEFT"
           | "EMPTY_MAP"
           | "H"
           | "unit"
           | "SELF"
           | "Right"
           | "set"
           | "LAMBDA"
           | "MEM"
           | "ITER"
           | "storage"
           | "CONTRACT"
           | "CONS"
           | "XOR"
           | "STEPS_TO_QUOTA"
           | "False"
           | "AND"
           | "CREATE_ACCOUNT"
           | "COMPARE"
           | "or"
           | "GE"
           | "UPDATE"
           | "NEQ"
           | "SOURCE"
           | "int"
           | "timestamp"
           | "IMPLICIT_ACCOUNT"
           | "string"
           | "Unit"
           | "Some"
           | "ABS"
           | "PAIR"
           | "LT"
           | "CDR"
           | "EMPTY_SET"
           | "BALANCE"
           | "map"
           | "IF"
           | "SOME"
           | "MUL"
           | "NOT"
           | "NONE"
           | "None"
           | "DIP"
           | "GT"
           | "NOW"
           | "key_hash"
           | "NIL"
           | "contract"
           | "EXEC"
           | "SET_DELEGATE"
           | "UNIT"
           | "LOOP"
           | "SUB"
           | "CONCAT"
           | "DROP"
           | "MAP"
           | "RIGHT"
           | "LEFT"
           | "TRANSFER_TOKENS"
           | "INT"
           | "Left"
           | "big_map"
           | "signature"
           | "SWAP"
           | "mutez"
           | "EQ"
           | "GET"
           | "PUSH"
           | "option"
           | "IF_CONS"
           | "pair"
           | "nat"
           | "True"
           | "IF_LEFT"
           | "parameter"
           | "LE"
           | "HASH_KEY"
           | "SIZE"
           | "bool"
           | "Pair"
           | "lambda"
           | "FAIL"
           | "DUP"
           | "IF_NONE"
           | "key"
           | "code"
           | "CHECK_SIGNATURE",
         "args": [ $micheline.michelson_v1.expression ... ],
         "annot"?: string }
  { "storage": $micheline.michelson_v1.expression,
    "operations": [ $operation.alpha.internal_operation ... ],
    "big_map_diff"?:
      [ [ string, $micheline.michelson_v1.expression || null ] ... ] }
  $bignum:
    /* Big number
       Decimal representation of a big number */
    string
  $contract_id:
    /* A contract handle
       A contract notation as given to an RPC or inside scripts. Can be a
       base58 implicit contract hash or a base58 originated contract hash. */
    string
  $micheline.michelson_v1.expression:
    /* Micheline expression (michelson_v1 variant) */
    { "int": $bignum }
    || { "string": string }
    || [ $micheline.michelson_v1.expression ... ]
    || { "prim":
           "CAR"
           | "LSR"
           | "ADDRESS"
           | "CREATE_CONTRACT"
           | "LSL"
           | "MANAGER"
           | "Elt"
           | "EDIV"
           | "OR"
           | "address"
           | "operation"
           | "ADD"
           | "AMOUNT"
           | "ISNAT"
           | "list"
           | "NEG"
           | "LOOP_LEFT"
           | "EMPTY_MAP"
           | "H"
           | "unit"
           | "SELF"
           | "Right"
           | "set"
           | "LAMBDA"
           | "MEM"
           | "ITER"
           | "storage"
           | "CONTRACT"
           | "CONS"
           | "XOR"
           | "STEPS_TO_QUOTA"
           | "False"
           | "AND"
           | "CREATE_ACCOUNT"
           | "COMPARE"
           | "or"
           | "GE"
           | "UPDATE"
           | "NEQ"
           | "SOURCE"
           | "int"
           | "timestamp"
           | "IMPLICIT_ACCOUNT"
           | "string"
           | "Unit"
           | "Some"
           | "ABS"
           | "PAIR"
           | "LT"
           | "CDR"
           | "EMPTY_SET"
           | "BALANCE"
           | "map"
           | "IF"
           | "SOME"
           | "MUL"
           | "NOT"
           | "NONE"
           | "None"
           | "DIP"
           | "GT"
           | "NOW"
           | "key_hash"
           | "NIL"
           | "contract"
           | "EXEC"
           | "SET_DELEGATE"
           | "UNIT"
           | "LOOP"
           | "SUB"
           | "CONCAT"
           | "DROP"
           | "MAP"
           | "RIGHT"
           | "LEFT"
           | "TRANSFER_TOKENS"
           | "INT"
           | "Left"
           | "big_map"
           | "signature"
           | "SWAP"
           | "mutez"
           | "EQ"
           | "GET"
           | "PUSH"
           | "option"
           | "IF_CONS"
           | "pair"
           | "nat"
           | "True"
           | "IF_LEFT"
           | "parameter"
           | "LE"
           | "HASH_KEY"
           | "SIZE"
           | "bool"
           | "Pair"
           | "lambda"
           | "FAIL"
           | "DUP"
           | "IF_NONE"
           | "key"
           | "code"
           | "CHECK_SIGNATURE",
         "args": [ $micheline.michelson_v1.expression ... ],
         "annot"?: string }
  $operation.alpha.internal_operation:
    { "source": $contract_id,
      "nonce": integer ∈ [0, 2^16-1],
      "kind": "reveal",
      "public_key":
        string
        /* A Secp256k1 or Ed25519 public key (Base58Check-encoded) */ }
    || { "source": $contract_id,
         "nonce": integer ∈ [0, 2^16-1],
         "kind": "transaction",
         "amount":
           /* Amount in mutez */
           integer ∈ [-2^31-2, 2^31+2] || string,
         "destination": $contract_id,
         "parameters"?: $micheline.michelson_v1.expression }
    || { "source": $contract_id,
         "nonce": integer ∈ [0, 2^16-1],
         "kind": "origination",
         "managerPubkey":
           string
           /* A Secp256k1 or Ed25519 public key hash (Base58Check-encoded) */,
         "balance":
           /* Amount in mutez */
           integer ∈ [-2^31-2, 2^31+2] || string,
         "spendable"?: boolean,
         "delegatable"?: boolean,
         "delegate"?:
           string
           /* A Secp256k1 or Ed25519 public key hash (Base58Check-encoded) */,
         "script"?:
           { "code": $micheline.michelson_v1.expression,
             "storage": $micheline.michelson_v1.expression } }
    || { "source": $contract_id,
         "nonce": integer ∈ [0, 2^16-1],
         "kind": "delegation",
         "delegate"?:
           string
           /* A Secp256k1 or Ed25519 public key hash (Base58Check-encoded) */ }

POST ../<block_id>/helpers/scripts/trace_code

Run a piece of code in the current context, keeping a trace

  { "script": $micheline.michelson_v1.expression,
    "storage": $micheline.michelson_v1.expression,
    "input": $micheline.michelson_v1.expression,
    "amount": /* Amount in mutez */integer ∈ [-2^31-2, 2^31+2] || string,
    "contract": $contract_id }
  $bignum:
    /* Big number
       Decimal representation of a big number */
    string
  $contract_id:
    /* A contract handle
       A contract notation as given to an RPC or inside scripts. Can be a
       base58 implicit contract hash or a base58 originated contract hash. */
    string
  $micheline.michelson_v1.expression:
    /* Micheline expression (michelson_v1 variant) */
    { "int": $bignum }
    || { "string": string }
    || [ $micheline.michelson_v1.expression ... ]
    || { "prim":
           "CAR"
           | "LSR"
           | "ADDRESS"
           | "CREATE_CONTRACT"
           | "LSL"
           | "MANAGER"
           | "Elt"
           | "EDIV"
           | "OR"
           | "address"
           | "operation"
           | "ADD"
           | "AMOUNT"
           | "ISNAT"
           | "list"
           | "NEG"
           | "LOOP_LEFT"
           | "EMPTY_MAP"
           | "H"
           | "unit"
           | "SELF"
           | "Right"
           | "set"
           | "LAMBDA"
           | "MEM"
           | "ITER"
           | "storage"
           | "CONTRACT"
           | "CONS"
           | "XOR"
           | "STEPS_TO_QUOTA"
           | "False"
           | "AND"
           | "CREATE_ACCOUNT"
           | "COMPARE"
           | "or"
           | "GE"
           | "UPDATE"
           | "NEQ"
           | "SOURCE"
           | "int"
           | "timestamp"
           | "IMPLICIT_ACCOUNT"
           | "string"
           | "Unit"
           | "Some"
           | "ABS"
           | "PAIR"
           | "LT"
           | "CDR"
           | "EMPTY_SET"
           | "BALANCE"
           | "map"
           | "IF"
           | "SOME"
           | "MUL"
           | "NOT"
           | "NONE"
           | "None"
           | "DIP"
           | "GT"
           | "NOW"
           | "key_hash"
           | "NIL"
           | "contract"
           | "EXEC"
           | "SET_DELEGATE"
           | "UNIT"
           | "LOOP"
           | "SUB"
           | "CONCAT"
           | "DROP"
           | "MAP"
           | "RIGHT"
           | "LEFT"
           | "TRANSFER_TOKENS"
           | "INT"
           | "Left"
           | "big_map"
           | "signature"
           | "SWAP"
           | "mutez"
           | "EQ"
           | "GET"
           | "PUSH"
           | "option"
           | "IF_CONS"
           | "pair"
           | "nat"
           | "True"
           | "IF_LEFT"
           | "parameter"
           | "LE"
           | "HASH_KEY"
           | "SIZE"
           | "bool"
           | "Pair"
           | "lambda"
           | "FAIL"
           | "DUP"
           | "IF_NONE"
           | "key"
           | "code"
           | "CHECK_SIGNATURE",
         "args": [ $micheline.michelson_v1.expression ... ],
         "annot"?: string }
  { "storage": $micheline.michelson_v1.expression,
    "operations": [ $operation.alpha.internal_operation ... ],
    "trace":
      [ { "location": $micheline.location,
          "gas": $bignum || "unaccounted",
          "stack": [ $micheline.michelson_v1.expression ... ] } ... ],
    "big_map_diff"?:
      [ [ string, $micheline.michelson_v1.expression || null ] ... ] }
  $bignum:
    /* Big number
       Decimal representation of a big number */
    string
  $contract_id:
    /* A contract handle
       A contract notation as given to an RPC or inside scripts. Can be a
       base58 implicit contract hash or a base58 originated contract hash. */
    string
  $micheline.location:
    /* Canonical location in a Micheline expression
       The location of a node in a Micheline expression tree in prefix order,
       with zero being the root and adding one for every basic node, sequence
       and primitive application. */
    integer ∈ [-2^30-2, 2^30+2]
  $micheline.michelson_v1.expression:
    /* Micheline expression (michelson_v1 variant) */
    { "int": $bignum }
    || { "string": string }
    || [ $micheline.michelson_v1.expression ... ]
    || { "prim":
           "CAR"
           | "LSR"
           | "ADDRESS"
           | "CREATE_CONTRACT"
           | "LSL"
           | "MANAGER"
           | "Elt"
           | "EDIV"
           | "OR"
           | "address"
           | "operation"
           | "ADD"
           | "AMOUNT"
           | "ISNAT"
           | "list"
           | "NEG"
           | "LOOP_LEFT"
           | "EMPTY_MAP"
           | "H"
           | "unit"
           | "SELF"
           | "Right"
           | "set"
           | "LAMBDA"
           | "MEM"
           | "ITER"
           | "storage"
           | "CONTRACT"
           | "CONS"
           | "XOR"
           | "STEPS_TO_QUOTA"
           | "False"
           | "AND"
           | "CREATE_ACCOUNT"
           | "COMPARE"
           | "or"
           | "GE"
           | "UPDATE"
           | "NEQ"
           | "SOURCE"
           | "int"
           | "timestamp"
           | "IMPLICIT_ACCOUNT"
           | "string"
           | "Unit"
           | "Some"
           | "ABS"
           | "PAIR"
           | "LT"
           | "CDR"
           | "EMPTY_SET"
           | "BALANCE"
           | "map"
           | "IF"
           | "SOME"
           | "MUL"
           | "NOT"
           | "NONE"
           | "None"
           | "DIP"
           | "GT"
           | "NOW"
           | "key_hash"
           | "NIL"
           | "contract"
           | "EXEC"
           | "SET_DELEGATE"
           | "UNIT"
           | "LOOP"
           | "SUB"
           | "CONCAT"
           | "DROP"
           | "MAP"
           | "RIGHT"
           | "LEFT"
           | "TRANSFER_TOKENS"
           | "INT"
           | "Left"
           | "big_map"
           | "signature"
           | "SWAP"
           | "mutez"
           | "EQ"
           | "GET"
           | "PUSH"
           | "option"
           | "IF_CONS"
           | "pair"
           | "nat"
           | "True"
           | "IF_LEFT"
           | "parameter"
           | "LE"
           | "HASH_KEY"
           | "SIZE"
           | "bool"
           | "Pair"
           | "lambda"
           | "FAIL"
           | "DUP"
           | "IF_NONE"
           | "key"
           | "code"
           | "CHECK_SIGNATURE",
         "args": [ $micheline.michelson_v1.expression ... ],
         "annot"?: string }
  $operation.alpha.internal_operation:
    { "source": $contract_id,
      "nonce": integer ∈ [0, 2^16-1],
      "kind": "reveal",
      "public_key":
        string
        /* A Secp256k1 or Ed25519 public key (Base58Check-encoded) */ }
    || { "source": $contract_id,
         "nonce": integer ∈ [0, 2^16-1],
         "kind": "transaction",
         "amount":
           /* Amount in mutez */
           integer ∈ [-2^31-2, 2^31+2] || string,
         "destination": $contract_id,
         "parameters"?: $micheline.michelson_v1.expression }
    || { "source": $contract_id,
         "nonce": integer ∈ [0, 2^16-1],
         "kind": "origination",
         "managerPubkey":
           string
           /* A Secp256k1 or Ed25519 public key hash (Base58Check-encoded) */,
         "balance":
           /* Amount in mutez */
           integer ∈ [-2^31-2, 2^31+2] || string,
         "spendable"?: boolean,
         "delegatable"?: boolean,
         "delegate"?:
           string
           /* A Secp256k1 or Ed25519 public key hash (Base58Check-encoded) */,
         "script"?:
           { "code": $micheline.michelson_v1.expression,
             "storage": $micheline.michelson_v1.expression } }
    || { "source": $contract_id,
         "nonce": integer ∈ [0, 2^16-1],
         "kind": "delegation",
         "delegate"?:
           string
           /* A Secp256k1 or Ed25519 public key hash (Base58Check-encoded) */ }

POST ../<block_id>/helpers/scripts/typecheck_code

Typecheck a piece of code in the current context

  { "program": $micheline.michelson_v1.expression,
    "gas"?: $bignum }
  $bignum:
    /* Big number
       Decimal representation of a big number */
    string
  $micheline.michelson_v1.expression:
    /* Micheline expression (michelson_v1 variant) */
    { "int": $bignum }
    || { "string": string }
    || [ $micheline.michelson_v1.expression ... ]
    || { "prim":
           "CAR"
           | "LSR"
           | "ADDRESS"
           | "CREATE_CONTRACT"
           | "LSL"
           | "MANAGER"
           | "Elt"
           | "EDIV"
           | "OR"
           | "address"
           | "operation"
           | "ADD"
           | "AMOUNT"
           | "ISNAT"
           | "list"
           | "NEG"
           | "LOOP_LEFT"
           | "EMPTY_MAP"
           | "H"
           | "unit"
           | "SELF"
           | "Right"
           | "set"
           | "LAMBDA"
           | "MEM"
           | "ITER"
           | "storage"
           | "CONTRACT"
           | "CONS"
           | "XOR"
           | "STEPS_TO_QUOTA"
           | "False"
           | "AND"
           | "CREATE_ACCOUNT"
           | "COMPARE"
           | "or"
           | "GE"
           | "UPDATE"
           | "NEQ"
           | "SOURCE"
           | "int"
           | "timestamp"
           | "IMPLICIT_ACCOUNT"
           | "string"
           | "Unit"
           | "Some"
           | "ABS"
           | "PAIR"
           | "LT"
           | "CDR"
           | "EMPTY_SET"
           | "BALANCE"
           | "map"
           | "IF"
           | "SOME"
           | "MUL"
           | "NOT"
           | "NONE"
           | "None"
           | "DIP"
           | "GT"
           | "NOW"
           | "key_hash"
           | "NIL"
           | "contract"
           | "EXEC"
           | "SET_DELEGATE"
           | "UNIT"
           | "LOOP"
           | "SUB"
           | "CONCAT"
           | "DROP"
           | "MAP"
           | "RIGHT"
           | "LEFT"
           | "TRANSFER_TOKENS"
           | "INT"
           | "Left"
           | "big_map"
           | "signature"
           | "SWAP"
           | "mutez"
           | "EQ"
           | "GET"
           | "PUSH"
           | "option"
           | "IF_CONS"
           | "pair"
           | "nat"
           | "True"
           | "IF_LEFT"
           | "parameter"
           | "LE"
           | "HASH_KEY"
           | "SIZE"
           | "bool"
           | "Pair"
           | "lambda"
           | "FAIL"
           | "DUP"
           | "IF_NONE"
           | "key"
           | "code"
           | "CHECK_SIGNATURE",
         "args": [ $micheline.michelson_v1.expression ... ],
         "annot"?: string }
  { "type_map":
      [ { "location": $micheline.location,
          "stackBefore": [ $micheline.michelson_v1.expression ... ],
          "stackAfter": [ $micheline.michelson_v1.expression ... ] } ... ],
    "gas": $bignum || "unaccounted" }
  $bignum:
    /* Big number
       Decimal representation of a big number */
    string
  $micheline.location:
    /* Canonical location in a Micheline expression
       The location of a node in a Micheline expression tree in prefix order,
       with zero being the root and adding one for every basic node, sequence
       and primitive application. */
    integer ∈ [-2^30-2, 2^30+2]
  $micheline.michelson_v1.expression:
    /* Micheline expression (michelson_v1 variant) */
    { "int": $bignum }
    || { "string": string }
    || [ $micheline.michelson_v1.expression ... ]
    || { "prim":
           "CAR"
           | "LSR"
           | "ADDRESS"
           | "CREATE_CONTRACT"
           | "LSL"
           | "MANAGER"
           | "Elt"
           | "EDIV"
           | "OR"
           | "address"
           | "operation"
           | "ADD"
           | "AMOUNT"
           | "ISNAT"
           | "list"
           | "NEG"
           | "LOOP_LEFT"
           | "EMPTY_MAP"
           | "H"
           | "unit"
           | "SELF"
           | "Right"
           | "set"
           | "LAMBDA"
           | "MEM"
           | "ITER"
           | "storage"
           | "CONTRACT"
           | "CONS"
           | "XOR"
           | "STEPS_TO_QUOTA"
           | "False"
           | "AND"
           | "CREATE_ACCOUNT"
           | "COMPARE"
           | "or"
           | "GE"
           | "UPDATE"
           | "NEQ"
           | "SOURCE"
           | "int"
           | "timestamp"
           | "IMPLICIT_ACCOUNT"
           | "string"
           | "Unit"
           | "Some"
           | "ABS"
           | "PAIR"
           | "LT"
           | "CDR"
           | "EMPTY_SET"
           | "BALANCE"
           | "map"
           | "IF"
           | "SOME"
           | "MUL"
           | "NOT"
           | "NONE"
           | "None"
           | "DIP"
           | "GT"
           | "NOW"
           | "key_hash"
           | "NIL"
           | "contract"
           | "EXEC"
           | "SET_DELEGATE"
           | "UNIT"
           | "LOOP"
           | "SUB"
           | "CONCAT"
           | "DROP"
           | "MAP"
           | "RIGHT"
           | "LEFT"
           | "TRANSFER_TOKENS"
           | "INT"
           | "Left"
           | "big_map"
           | "signature"
           | "SWAP"
           | "mutez"
           | "EQ"
           | "GET"
           | "PUSH"
           | "option"
           | "IF_CONS"
           | "pair"
           | "nat"
           | "True"
           | "IF_LEFT"
           | "parameter"
           | "LE"
           | "HASH_KEY"
           | "SIZE"
           | "bool"
           | "Pair"
           | "lambda"
           | "FAIL"
           | "DUP"
           | "IF_NONE"
           | "key"
           | "code"
           | "CHECK_SIGNATURE",
         "args": [ $micheline.michelson_v1.expression ... ],
         "annot"?: string }

POST ../<block_id>/helpers/scripts/typecheck_data

Check that some data expression is well formed and of a given type in the current context

  { "data": $micheline.michelson_v1.expression,
    "type": $micheline.michelson_v1.expression,
    "gas"?: $bignum }
  $bignum:
    /* Big number
       Decimal representation of a big number */
    string
  $micheline.michelson_v1.expression:
    /* Micheline expression (michelson_v1 variant) */
    { "int": $bignum }
    || { "string": string }
    || [ $micheline.michelson_v1.expression ... ]
    || { "prim":
           "CAR"
           | "LSR"
           | "ADDRESS"
           | "CREATE_CONTRACT"
           | "LSL"
           | "MANAGER"
           | "Elt"
           | "EDIV"
           | "OR"
           | "address"
           | "operation"
           | "ADD"
           | "AMOUNT"
           | "ISNAT"
           | "list"
           | "NEG"
           | "LOOP_LEFT"
           | "EMPTY_MAP"
           | "H"
           | "unit"
           | "SELF"
           | "Right"
           | "set"
           | "LAMBDA"
           | "MEM"
           | "ITER"
           | "storage"
           | "CONTRACT"
           | "CONS"
           | "XOR"
           | "STEPS_TO_QUOTA"
           | "False"
           | "AND"
           | "CREATE_ACCOUNT"
           | "COMPARE"
           | "or"
           | "GE"
           | "UPDATE"
           | "NEQ"
           | "SOURCE"
           | "int"
           | "timestamp"
           | "IMPLICIT_ACCOUNT"
           | "string"
           | "Unit"
           | "Some"
           | "ABS"
           | "PAIR"
           | "LT"
           | "CDR"
           | "EMPTY_SET"
           | "BALANCE"
           | "map"
           | "IF"
           | "SOME"
           | "MUL"
           | "NOT"
           | "NONE"
           | "None"
           | "DIP"
           | "GT"
           | "NOW"
           | "key_hash"
           | "NIL"
           | "contract"
           | "EXEC"
           | "SET_DELEGATE"
           | "UNIT"
           | "LOOP"
           | "SUB"
           | "CONCAT"
           | "DROP"
           | "MAP"
           | "RIGHT"
           | "LEFT"
           | "TRANSFER_TOKENS"
           | "INT"
           | "Left"
           | "big_map"
           | "signature"
           | "SWAP"
           | "mutez"
           | "EQ"
           | "GET"
           | "PUSH"
           | "option"
           | "IF_CONS"
           | "pair"
           | "nat"
           | "True"
           | "IF_LEFT"
           | "parameter"
           | "LE"
           | "HASH_KEY"
           | "SIZE"
           | "bool"
           | "Pair"
           | "lambda"
           | "FAIL"
           | "DUP"
           | "IF_NONE"
           | "key"
           | "code"
           | "CHECK_SIGNATURE",
         "args": [ $micheline.michelson_v1.expression ... ],
         "annot"?: string }
  { "gas": $bignum || "unaccounted" }
  $bignum:
    /* Big number
       Decimal representation of a big number */
    string

GET ../<block_id>/metadata

GET ../<block_id>/metadata/max_block_header_length

GET ../<block_id>/metadata/max_operation_data_length

GET ../<block_id>/metadata/max_operations_ttl

GET ../<block_id>/metadata/next_protocol_hash

GET ../<block_id>/metadata/operation_list_quota

GET ../<block_id>/metadata/protocol_data

GET ../<block_id>/metadata/protocol_hash

GET ../<block_id>/metadata/test_chain_status

GET ../<block_id>/operation_hashes

The hashes of all the operations included in the block.

  [ [ string
  /* A Tezos operation ID (Base58Check-encoded) */ ... ] ... ]

GET ../<block_id>/operation_hashes/<list_offset>

All the operations included in `n-th` validation pass of the block.

  [ string
  /* A Tezos operation ID (Base58Check-encoded) */ ... ]

GET ../<block_id>/operation_hashes/<list_offset>/<operation_offset>

The hash of then `m-th` operation in the `n-th` validation pass of the block.

  string
  /* A Tezos operation ID (Base58Check-encoded) */

GET ../<block_id>/operations

All the operations included in the block.

  [ [ $operation ... ] ... ]
  $bignum:
    /* Big number
       Decimal representation of a big number */
    string
  $block_header.alpha.full_header:
    { "level": integer ∈ [-2^31-2, 2^31+2],
      "proto": integer ∈ [0, 255],
      "predecessor": string /* A block identifier (Base58Check-encoded) */,
      "timestamp":
        /* timestamp */
        $timestamp || integer ∈ [-2^31-2, 2^31+2] || string,
      "validation_pass": integer ∈ [0, 255],
      "operations_hash":
        string
        /* A list of list of operations (Base58Check-encoded) */,
      "fitness": [ /^[a-zA-Z0-9]+$/ ... ] /* Tezos block fitness */,
      "context": string /* A hash of context (Base58Check-encoded) */,
      "priority": integer ∈ [0, 2^16-1],
      "proof_of_work_nonce": /^[a-zA-Z0-9]+$/,
      "seed_nonce_hash"?: string /* A nonce hash (Base58Check-encoded) */,
      "signature":
        string
        /* A Secp256k1 or Ed25519 signature (Base58Check-encoded) */ }
  $contract_id:
    /* A contract handle
       A contract notation as given to an RPC or inside scripts. Can be a
       base58 implicit contract hash or a base58 originated contract hash. */
    string
  $error:
    /* ... FIXME ... */
    any
  $micheline.michelson_v1.expression:
    /* Micheline expression (michelson_v1 variant) */
    { "int": $bignum }
    || { "string": string }
    || [ $micheline.michelson_v1.expression ... ]
    || { "prim":
           "CAR"
           | "LSR"
           | "ADDRESS"
           | "CREATE_CONTRACT"
           | "LSL"
           | "MANAGER"
           | "Elt"
           | "EDIV"
           | "OR"
           | "address"
           | "operation"
           | "ADD"
           | "AMOUNT"
           | "ISNAT"
           | "list"
           | "NEG"
           | "LOOP_LEFT"
           | "EMPTY_MAP"
           | "H"
           | "unit"
           | "SELF"
           | "Right"
           | "set"
           | "LAMBDA"
           | "MEM"
           | "ITER"
           | "storage"
           | "CONTRACT"
           | "CONS"
           | "XOR"
           | "STEPS_TO_QUOTA"
           | "False"
           | "AND"
           | "CREATE_ACCOUNT"
           | "COMPARE"
           | "or"
           | "GE"
           | "UPDATE"
           | "NEQ"
           | "SOURCE"
           | "int"
           | "timestamp"
           | "IMPLICIT_ACCOUNT"
           | "string"
           | "Unit"
           | "Some"
           | "ABS"
           | "PAIR"
           | "LT"
           | "CDR"
           | "EMPTY_SET"
           | "BALANCE"
           | "map"
           | "IF"
           | "SOME"
           | "MUL"
           | "NOT"
           | "NONE"
           | "None"
           | "DIP"
           | "GT"
           | "NOW"
           | "key_hash"
           | "NIL"
           | "contract"
           | "EXEC"
           | "SET_DELEGATE"
           | "UNIT"
           | "LOOP"
           | "SUB"
           | "CONCAT"
           | "DROP"
           | "MAP"
           | "RIGHT"
           | "LEFT"
           | "TRANSFER_TOKENS"
           | "INT"
           | "Left"
           | "big_map"
           | "signature"
           | "SWAP"
           | "mutez"
           | "EQ"
           | "GET"
           | "PUSH"
           | "option"
           | "IF_CONS"
           | "pair"
           | "nat"
           | "True"
           | "IF_LEFT"
           | "parameter"
           | "LE"
           | "HASH_KEY"
           | "SIZE"
           | "bool"
           | "Pair"
           | "lambda"
           | "FAIL"
           | "DUP"
           | "IF_NONE"
           | "key"
           | "code"
           | "CHECK_SIGNATURE",
         "args": [ $micheline.michelson_v1.expression ... ],
         "annot"?: string }
  $operation:
    { "protocol": "PtCJ7pwoxe8JasnHY8YonnLYjcVHmhiARPJvqcC6VfHT5s8k8sY",
      "chain_id": string /* Network identifier (Base58Check-encoded) */,
      "hash": string /* A Tezos operation ID (Base58Check-encoded) */,
      "branch": string /* A block identifier (Base58Check-encoded) */,
      "contents": [ $operation.alpha.operation_contents_and_result ... ],
      "signature"?:
        string
        /* A Secp256k1 or Ed25519 signature (Base58Check-encoded) */ }
  $operation.alpha.internal_operation_result:
    { "kind": "reveal",
      "source": $contract_id,
      "nonce": integer ∈ [0, 2^16-1],
      "public_key":
        string
        /* A Secp256k1 or Ed25519 public key (Base58Check-encoded) */,
      "result": $operation.alpha.operation_result.reveal }
    || { "kind": "transaction",
         "source": $contract_id,
         "nonce": integer ∈ [0, 2^16-1],
         "amount":
           /* Amount in mutez */
           integer ∈ [-2^31-2, 2^31+2] || string,
         "destination": $contract_id,
         "parameters"?: $micheline.michelson_v1.expression,
         "result": $operation.alpha.operation_result.transaction }
    || { "kind": "origination",
         "source": $contract_id,
         "nonce": integer ∈ [0, 2^16-1],
         "managerPubkey":
           string
           /* A Secp256k1 or Ed25519 public key hash (Base58Check-encoded) */,
         "balance":
           /* Amount in mutez */
           integer ∈ [-2^31-2, 2^31+2] || string,
         "spendable"?: boolean,
         "delegatable"?: boolean,
         "delegate"?:
           string
           /* A Secp256k1 or Ed25519 public key hash (Base58Check-encoded) */,
         "script"?:
           { "code": $micheline.michelson_v1.expression,
             "storage": $micheline.michelson_v1.expression },
         "result": $operation.alpha.operation_result.origination }
    || { "kind": "delegation",
         "source": $contract_id,
         "nonce": integer ∈ [0, 2^16-1],
         "delegate"?:
           string
           /* A Secp256k1 or Ed25519 public key hash (Base58Check-encoded) */,
         "result": $operation.alpha.operation_result.delegation }
  $operation.alpha.operation_contents_and_result:
    { "kind": "endorsement",
      "block": string /* A block identifier (Base58Check-encoded) */,
      "level": integer ∈ [-2^31-2, 2^31+2],
      "slots": [ integer ∈ [-2^30-2, 2^30+2] ... ],
      "metadata":
        { "delegate":
            string
            /* A Secp256k1 or Ed25519 public key hash (Base58Check-encoded) */,
          "slots": [ integer ∈ [0, 255] ... ] } }
    || { "kind": "seed_nonce_revelation",
         "level": integer ∈ [-2^31-2, 2^31+2],
         "nonce": /^[a-zA-Z0-9]+$/,
         "metadata":
           { "balance_updates": $operation_metadata.alpha.balance_updates } }
    || { "kind": "double_endorsement_evidence",
         "op1":
           { "branch": string /* A block identifier (Base58Check-encoded) */,
             "operations":
               { "kind": "endorsement",
                 "block":
                   string
                   /* A block identifier (Base58Check-encoded) */,
                 "level": integer ∈ [-2^31-2, 2^31+2],
                 "slots": [ integer ∈ [-2^30-2, 2^30+2] ... ] },
             "signature"?:
               string
               /* A Secp256k1 or Ed25519 signature (Base58Check-encoded) */ },
         "op2":
           { "branch": string /* A block identifier (Base58Check-encoded) */,
             "operations":
               { "kind": "endorsement",
                 "block":
                   string
                   /* A block identifier (Base58Check-encoded) */,
                 "level": integer ∈ [-2^31-2, 2^31+2],
                 "slots": [ integer ∈ [-2^30-2, 2^30+2] ... ] },
             "signature"?:
               string
               /* A Secp256k1 or Ed25519 signature (Base58Check-encoded) */ },
         "metadata":
           { "balance_updates": $operation_metadata.alpha.balance_updates } }
    || { "kind": "double_baking_evidence",
         "bh1": $block_header.alpha.full_header,
         "bh2": $block_header.alpha.full_header,
         "metadata":
           { "balance_updates": $operation_metadata.alpha.balance_updates } }
    || { "kind": "activate_account",
         "pkh": string /* An Ed25519 public key hash (Base58Check-encoded) */,
         "secret": /^[a-zA-Z0-9]+$/,
         "metadata":
           { "balance_updates": $operation_metadata.alpha.balance_updates } }
    || { "kind": "proposals",
         "source":
           string
           /* A Secp256k1 or Ed25519 public key hash (Base58Check-encoded) */,
         "period": integer ∈ [-2^31-2, 2^31+2],
         "proposals":
           [ string
           /* A Tezos protocol ID (Base58Check-encoded) */ ... ],
         "metadata": {  } }
    || { "kind": "ballot",
         "source":
           string
           /* A Secp256k1 or Ed25519 public key hash (Base58Check-encoded) */,
         "period": integer ∈ [-2^31-2, 2^31+2],
         "proposal": string /* A Tezos protocol ID (Base58Check-encoded) */,
         "ballot": "nay" | "yay" | "pass",
         "metadata": {  } }
    || { "kind": "reveal",
         "source": $contract_id,
         "fee": /* Amount in mutez */integer ∈ [-2^31-2, 2^31+2] || string,
         "counter": integer ∈ [-2^31-2, 2^31+2],
         "gas_limit": $bignum,
         "storage_limit": integer ∈ [-2^31-2, 2^31+2] || string,
         "public_key":
           string
           /* A Secp256k1 or Ed25519 public key (Base58Check-encoded) */,
         "metadata":
           { "balance_updates": $operation_metadata.alpha.balance_updates,
             "operation_result": $operation.alpha.operation_result.reveal,
             "internal_operation_results"?:
               [ $operation.alpha.internal_operation_result ... ] } }
    || { "kind": "transaction",
         "source": $contract_id,
         "fee": /* Amount in mutez */integer ∈ [-2^31-2, 2^31+2] || string,
         "counter": integer ∈ [-2^31-2, 2^31+2],
         "gas_limit": $bignum,
         "storage_limit": integer ∈ [-2^31-2, 2^31+2] || string,
         "amount":
           /* Amount in mutez */
           integer ∈ [-2^31-2, 2^31+2] || string,
         "destination": $contract_id,
         "parameters"?: $micheline.michelson_v1.expression,
         "metadata":
           { "balance_updates": $operation_metadata.alpha.balance_updates,
             "operation_result":
               $operation.alpha.operation_result.transaction,
             "internal_operation_results"?:
               [ $operation.alpha.internal_operation_result ... ] } }
    || { "kind": "origination",
         "source": $contract_id,
         "fee": /* Amount in mutez */integer ∈ [-2^31-2, 2^31+2] || string,
         "counter": integer ∈ [-2^31-2, 2^31+2],
         "gas_limit": $bignum,
         "storage_limit": integer ∈ [-2^31-2, 2^31+2] || string,
         "managerPubkey":
           string
           /* A Secp256k1 or Ed25519 public key hash (Base58Check-encoded) */,
         "balance":
           /* Amount in mutez */
           integer ∈ [-2^31-2, 2^31+2] || string,
         "spendable"?: boolean,
         "delegatable"?: boolean,
         "delegate"?:
           string
           /* A Secp256k1 or Ed25519 public key hash (Base58Check-encoded) */,
         "script"?:
           { "code": $micheline.michelson_v1.expression,
             "storage": $micheline.michelson_v1.expression },
         "metadata":
           { "balance_updates": $operation_metadata.alpha.balance_updates,
             "operation_result":
               $operation.alpha.operation_result.origination,
             "internal_operation_results"?:
               [ $operation.alpha.internal_operation_result ... ] } }
    || { "kind": "delegation",
         "source": $contract_id,
         "fee": /* Amount in mutez */integer ∈ [-2^31-2, 2^31+2] || string,
         "counter": integer ∈ [-2^31-2, 2^31+2],
         "gas_limit": $bignum,
         "storage_limit": integer ∈ [-2^31-2, 2^31+2] || string,
         "delegate"?:
           string
           /* A Secp256k1 or Ed25519 public key hash (Base58Check-encoded) */,
         "metadata":
           { "balance_updates": $operation_metadata.alpha.balance_updates,
             "operation_result": $operation.alpha.operation_result.delegation,
             "internal_operation_results"?:
               [ $operation.alpha.internal_operation_result ... ] } }
    || { "kind": "activate_protocol",
         "hash": string /* A Tezos protocol ID (Base58Check-encoded) */,
         "metadata": {  } }
    || { "kind": "activate_test_protocol",
         "hash": string /* A Tezos protocol ID (Base58Check-encoded) */,
         "metadata": {  } }
  $operation.alpha.operation_result.delegation:
    { "status": "applied" }
    || { "status": "failed",
         "errors": [ $error ... ] }
    || { "status": "skipped" }
  $operation.alpha.operation_result.origination:
    { "status": "applied",
      "balance_updates"?: $operation_metadata.alpha.balance_updates,
      "originated_contracts"?: [ $contract_id ... ],
      "consumed_gas"?: $bignum,
      "storage_size_diff"?: integer ∈ [-2^31-2, 2^31+2] || string }
    || { "status": "failed",
         "errors": [ $error ... ] }
    || { "status": "skipped" }
  $operation.alpha.operation_result.reveal:
    { "status": "applied" }
    || { "status": "failed",
         "errors": [ $error ... ] }
    || { "status": "skipped" }
  $operation.alpha.operation_result.transaction:
    { "status": "applied",
      "storage"?: $micheline.michelson_v1.expression,
      "balance_updates"?: $operation_metadata.alpha.balance_updates,
      "originated_contracts"?: [ $contract_id ... ],
      "consumed_gas"?: $bignum,
      "storage_size_diff"?: integer ∈ [-2^31-2, 2^31+2] || string }
    || { "status": "failed",
         "errors": [ $error ... ] }
    || { "status": "skipped" }
  $operation_metadata.alpha.balance_updates:
    [ { "kind": "contract",
        "contract": $contract_id,
        "credited":
          /* Amount in mutez */
          integer ∈ [-2^31-2, 2^31+2] || string }
      || { "kind": "contract",
           "contract": $contract_id,
           "debited":
             /* Amount in mutez */
             integer ∈ [-2^31-2, 2^31+2] || string }
      || { "kind": "freezer",
           "category": "rewards",
           "delegate":
             string
             /* A Secp256k1 or Ed25519 public key hash (Base58Check-encoded) */,
           "level": integer ∈ [-2^31-2, 2^31+2],
           "credited":
             /* Amount in mutez */
             integer ∈ [-2^31-2, 2^31+2] || string }
      || { "kind": "freezer",
           "category": "rewards",
           "delegate":
             string
             /* A Secp256k1 or Ed25519 public key hash (Base58Check-encoded) */,
           "level": integer ∈ [-2^31-2, 2^31+2],
           "debited":
             /* Amount in mutez */
             integer ∈ [-2^31-2, 2^31+2] || string }
      || { "kind": "freezer",
           "category": "fees",
           "delegate":
             string
             /* A Secp256k1 or Ed25519 public key hash (Base58Check-encoded) */,
           "level": integer ∈ [-2^31-2, 2^31+2],
           "credited":
             /* Amount in mutez */
             integer ∈ [-2^31-2, 2^31+2] || string }
      || { "kind": "freezer",
           "category": "fees",
           "delegate":
             string
             /* A Secp256k1 or Ed25519 public key hash (Base58Check-encoded) */,
           "level": integer ∈ [-2^31-2, 2^31+2],
           "debited":
             /* Amount in mutez */
             integer ∈ [-2^31-2, 2^31+2] || string }
      || { "kind": "freezer",
           "category": "deposits",
           "delegate":
             string
             /* A Secp256k1 or Ed25519 public key hash (Base58Check-encoded) */,
           "level": integer ∈ [-2^31-2, 2^31+2],
           "credited":
             /* Amount in mutez */
             integer ∈ [-2^31-2, 2^31+2] || string }
      || { "kind": "freezer",
           "category": "deposits",
           "delegate":
             string
             /* A Secp256k1 or Ed25519 public key hash (Base58Check-encoded) */,
           "level": integer ∈ [-2^31-2, 2^31+2],
           "debited":
             /* Amount in mutez */
             integer ∈ [-2^31-2, 2^31+2] || string } ... ]
  $timestamp:
    /* RFC 3339 formatted timestamp
       A date in human readble form as specified in RFC 3339. */
    string

GET ../<block_id>/operations/<list_offset>

All the operations included in `n-th` validation pass of the block.

  [ $operation ... ]
  $bignum:
    /* Big number
       Decimal representation of a big number */
    string
  $block_header.alpha.full_header:
    { "level": integer ∈ [-2^31-2, 2^31+2],
      "proto": integer ∈ [0, 255],
      "predecessor": string /* A block identifier (Base58Check-encoded) */,
      "timestamp":
        /* timestamp */
        $timestamp || integer ∈ [-2^31-2, 2^31+2] || string,
      "validation_pass": integer ∈ [0, 255],
      "operations_hash":
        string
        /* A list of list of operations (Base58Check-encoded) */,
      "fitness": [ /^[a-zA-Z0-9]+$/ ... ] /* Tezos block fitness */,
      "context": string /* A hash of context (Base58Check-encoded) */,
      "priority": integer ∈ [0, 2^16-1],
      "proof_of_work_nonce": /^[a-zA-Z0-9]+$/,
      "seed_nonce_hash"?: string /* A nonce hash (Base58Check-encoded) */,
      "signature":
        string
        /* A Secp256k1 or Ed25519 signature (Base58Check-encoded) */ }
  $contract_id:
    /* A contract handle
       A contract notation as given to an RPC or inside scripts. Can be a
       base58 implicit contract hash or a base58 originated contract hash. */
    string
  $error:
    /* ... FIXME ... */
    any
  $micheline.michelson_v1.expression:
    /* Micheline expression (michelson_v1 variant) */
    { "int": $bignum }
    || { "string": string }
    || [ $micheline.michelson_v1.expression ... ]
    || { "prim":
           "CAR"
           | "LSR"
           | "ADDRESS"
           | "CREATE_CONTRACT"
           | "LSL"
           | "MANAGER"
           | "Elt"
           | "EDIV"
           | "OR"
           | "address"
           | "operation"
           | "ADD"
           | "AMOUNT"
           | "ISNAT"
           | "list"
           | "NEG"
           | "LOOP_LEFT"
           | "EMPTY_MAP"
           | "H"
           | "unit"
           | "SELF"
           | "Right"
           | "set"
           | "LAMBDA"
           | "MEM"
           | "ITER"
           | "storage"
           | "CONTRACT"
           | "CONS"
           | "XOR"
           | "STEPS_TO_QUOTA"
           | "False"
           | "AND"
           | "CREATE_ACCOUNT"
           | "COMPARE"
           | "or"
           | "GE"
           | "UPDATE"
           | "NEQ"
           | "SOURCE"
           | "int"
           | "timestamp"
           | "IMPLICIT_ACCOUNT"
           | "string"
           | "Unit"
           | "Some"
           | "ABS"
           | "PAIR"
           | "LT"
           | "CDR"
           | "EMPTY_SET"
           | "BALANCE"
           | "map"
           | "IF"
           | "SOME"
           | "MUL"
           | "NOT"
           | "NONE"
           | "None"
           | "DIP"
           | "GT"
           | "NOW"
           | "key_hash"
           | "NIL"
           | "contract"
           | "EXEC"
           | "SET_DELEGATE"
           | "UNIT"
           | "LOOP"
           | "SUB"
           | "CONCAT"
           | "DROP"
           | "MAP"
           | "RIGHT"
           | "LEFT"
           | "TRANSFER_TOKENS"
           | "INT"
           | "Left"
           | "big_map"
           | "signature"
           | "SWAP"
           | "mutez"
           | "EQ"
           | "GET"
           | "PUSH"
           | "option"
           | "IF_CONS"
           | "pair"
           | "nat"
           | "True"
           | "IF_LEFT"
           | "parameter"
           | "LE"
           | "HASH_KEY"
           | "SIZE"
           | "bool"
           | "Pair"
           | "lambda"
           | "FAIL"
           | "DUP"
           | "IF_NONE"
           | "key"
           | "code"
           | "CHECK_SIGNATURE",
         "args": [ $micheline.michelson_v1.expression ... ],
         "annot"?: string }
  $operation:
    { "protocol": "PtCJ7pwoxe8JasnHY8YonnLYjcVHmhiARPJvqcC6VfHT5s8k8sY",
      "chain_id": string /* Network identifier (Base58Check-encoded) */,
      "hash": string /* A Tezos operation ID (Base58Check-encoded) */,
      "branch": string /* A block identifier (Base58Check-encoded) */,
      "contents": [ $operation.alpha.operation_contents_and_result ... ],
      "signature"?:
        string
        /* A Secp256k1 or Ed25519 signature (Base58Check-encoded) */ }
  $operation.alpha.internal_operation_result:
    { "kind": "reveal",
      "source": $contract_id,
      "nonce": integer ∈ [0, 2^16-1],
      "public_key":
        string
        /* A Secp256k1 or Ed25519 public key (Base58Check-encoded) */,
      "result": $operation.alpha.operation_result.reveal }
    || { "kind": "transaction",
         "source": $contract_id,
         "nonce": integer ∈ [0, 2^16-1],
         "amount":
           /* Amount in mutez */
           integer ∈ [-2^31-2, 2^31+2] || string,
         "destination": $contract_id,
         "parameters"?: $micheline.michelson_v1.expression,
         "result": $operation.alpha.operation_result.transaction }
    || { "kind": "origination",
         "source": $contract_id,
         "nonce": integer ∈ [0, 2^16-1],
         "managerPubkey":
           string
           /* A Secp256k1 or Ed25519 public key hash (Base58Check-encoded) */,
         "balance":
           /* Amount in mutez */
           integer ∈ [-2^31-2, 2^31+2] || string,
         "spendable"?: boolean,
         "delegatable"?: boolean,
         "delegate"?:
           string
           /* A Secp256k1 or Ed25519 public key hash (Base58Check-encoded) */,
         "script"?:
           { "code": $micheline.michelson_v1.expression,
             "storage": $micheline.michelson_v1.expression },
         "result": $operation.alpha.operation_result.origination }
    || { "kind": "delegation",
         "source": $contract_id,
         "nonce": integer ∈ [0, 2^16-1],
         "delegate"?:
           string
           /* A Secp256k1 or Ed25519 public key hash (Base58Check-encoded) */,
         "result": $operation.alpha.operation_result.delegation }
  $operation.alpha.operation_contents_and_result:
    { "kind": "endorsement",
      "block": string /* A block identifier (Base58Check-encoded) */,
      "level": integer ∈ [-2^31-2, 2^31+2],
      "slots": [ integer ∈ [-2^30-2, 2^30+2] ... ],
      "metadata":
        { "delegate":
            string
            /* A Secp256k1 or Ed25519 public key hash (Base58Check-encoded) */,
          "slots": [ integer ∈ [0, 255] ... ] } }
    || { "kind": "seed_nonce_revelation",
         "level": integer ∈ [-2^31-2, 2^31+2],
         "nonce": /^[a-zA-Z0-9]+$/,
         "metadata":
           { "balance_updates": $operation_metadata.alpha.balance_updates } }
    || { "kind": "double_endorsement_evidence",
         "op1":
           { "branch": string /* A block identifier (Base58Check-encoded) */,
             "operations":
               { "kind": "endorsement",
                 "block":
                   string
                   /* A block identifier (Base58Check-encoded) */,
                 "level": integer ∈ [-2^31-2, 2^31+2],
                 "slots": [ integer ∈ [-2^30-2, 2^30+2] ... ] },
             "signature"?:
               string
               /* A Secp256k1 or Ed25519 signature (Base58Check-encoded) */ },
         "op2":
           { "branch": string /* A block identifier (Base58Check-encoded) */,
             "operations":
               { "kind": "endorsement",
                 "block":
                   string
                   /* A block identifier (Base58Check-encoded) */,
                 "level": integer ∈ [-2^31-2, 2^31+2],
                 "slots": [ integer ∈ [-2^30-2, 2^30+2] ... ] },
             "signature"?:
               string
               /* A Secp256k1 or Ed25519 signature (Base58Check-encoded) */ },
         "metadata":
           { "balance_updates": $operation_metadata.alpha.balance_updates } }
    || { "kind": "double_baking_evidence",
         "bh1": $block_header.alpha.full_header,
         "bh2": $block_header.alpha.full_header,
         "metadata":
           { "balance_updates": $operation_metadata.alpha.balance_updates } }
    || { "kind": "activate_account",
         "pkh": string /* An Ed25519 public key hash (Base58Check-encoded) */,
         "secret": /^[a-zA-Z0-9]+$/,
         "metadata":
           { "balance_updates": $operation_metadata.alpha.balance_updates } }
    || { "kind": "proposals",
         "source":
           string
           /* A Secp256k1 or Ed25519 public key hash (Base58Check-encoded) */,
         "period": integer ∈ [-2^31-2, 2^31+2],
         "proposals":
           [ string
           /* A Tezos protocol ID (Base58Check-encoded) */ ... ],
         "metadata": {  } }
    || { "kind": "ballot",
         "source":
           string
           /* A Secp256k1 or Ed25519 public key hash (Base58Check-encoded) */,
         "period": integer ∈ [-2^31-2, 2^31+2],
         "proposal": string /* A Tezos protocol ID (Base58Check-encoded) */,
         "ballot": "nay" | "yay" | "pass",
         "metadata": {  } }
    || { "kind": "reveal",
         "source": $contract_id,
         "fee": /* Amount in mutez */integer ∈ [-2^31-2, 2^31+2] || string,
         "counter": integer ∈ [-2^31-2, 2^31+2],
         "gas_limit": $bignum,
         "storage_limit": integer ∈ [-2^31-2, 2^31+2] || string,
         "public_key":
           string
           /* A Secp256k1 or Ed25519 public key (Base58Check-encoded) */,
         "metadata":
           { "balance_updates": $operation_metadata.alpha.balance_updates,
             "operation_result": $operation.alpha.operation_result.reveal,
             "internal_operation_results"?:
               [ $operation.alpha.internal_operation_result ... ] } }
    || { "kind": "transaction",
         "source": $contract_id,
         "fee": /* Amount in mutez */integer ∈ [-2^31-2, 2^31+2] || string,
         "counter": integer ∈ [-2^31-2, 2^31+2],
         "gas_limit": $bignum,
         "storage_limit": integer ∈ [-2^31-2, 2^31+2] || string,
         "amount":
           /* Amount in mutez */
           integer ∈ [-2^31-2, 2^31+2] || string,
         "destination": $contract_id,
         "parameters"?: $micheline.michelson_v1.expression,
         "metadata":
           { "balance_updates": $operation_metadata.alpha.balance_updates,
             "operation_result":
               $operation.alpha.operation_result.transaction,
             "internal_operation_results"?:
               [ $operation.alpha.internal_operation_result ... ] } }
    || { "kind": "origination",
         "source": $contract_id,
         "fee": /* Amount in mutez */integer ∈ [-2^31-2, 2^31+2] || string,
         "counter": integer ∈ [-2^31-2, 2^31+2],
         "gas_limit": $bignum,
         "storage_limit": integer ∈ [-2^31-2, 2^31+2] || string,
         "managerPubkey":
           string
           /* A Secp256k1 or Ed25519 public key hash (Base58Check-encoded) */,
         "balance":
           /* Amount in mutez */
           integer ∈ [-2^31-2, 2^31+2] || string,
         "spendable"?: boolean,
         "delegatable"?: boolean,
         "delegate"?:
           string
           /* A Secp256k1 or Ed25519 public key hash (Base58Check-encoded) */,
         "script"?:
           { "code": $micheline.michelson_v1.expression,
             "storage": $micheline.michelson_v1.expression },
         "metadata":
           { "balance_updates": $operation_metadata.alpha.balance_updates,
             "operation_result":
               $operation.alpha.operation_result.origination,
             "internal_operation_results"?:
               [ $operation.alpha.internal_operation_result ... ] } }
    || { "kind": "delegation",
         "source": $contract_id,
         "fee": /* Amount in mutez */integer ∈ [-2^31-2, 2^31+2] || string,
         "counter": integer ∈ [-2^31-2, 2^31+2],
         "gas_limit": $bignum,
         "storage_limit": integer ∈ [-2^31-2, 2^31+2] || string,
         "delegate"?:
           string
           /* A Secp256k1 or Ed25519 public key hash (Base58Check-encoded) */,
         "metadata":
           { "balance_updates": $operation_metadata.alpha.balance_updates,
             "operation_result": $operation.alpha.operation_result.delegation,
             "internal_operation_results"?:
               [ $operation.alpha.internal_operation_result ... ] } }
    || { "kind": "activate_protocol",
         "hash": string /* A Tezos protocol ID (Base58Check-encoded) */,
         "metadata": {  } }
    || { "kind": "activate_test_protocol",
         "hash": string /* A Tezos protocol ID (Base58Check-encoded) */,
         "metadata": {  } }
  $operation.alpha.operation_result.delegation:
    { "status": "applied" }
    || { "status": "failed",
         "errors": [ $error ... ] }
    || { "status": "skipped" }
  $operation.alpha.operation_result.origination:
    { "status": "applied",
      "balance_updates"?: $operation_metadata.alpha.balance_updates,
      "originated_contracts"?: [ $contract_id ... ],
      "consumed_gas"?: $bignum,
      "storage_size_diff"?: integer ∈ [-2^31-2, 2^31+2] || string }
    || { "status": "failed",
         "errors": [ $error ... ] }
    || { "status": "skipped" }
  $operation.alpha.operation_result.reveal:
    { "status": "applied" }
    || { "status": "failed",
         "errors": [ $error ... ] }
    || { "status": "skipped" }
  $operation.alpha.operation_result.transaction:
    { "status": "applied",
      "storage"?: $micheline.michelson_v1.expression,
      "balance_updates"?: $operation_metadata.alpha.balance_updates,
      "originated_contracts"?: [ $contract_id ... ],
      "consumed_gas"?: $bignum,
      "storage_size_diff"?: integer ∈ [-2^31-2, 2^31+2] || string }
    || { "status": "failed",
         "errors": [ $error ... ] }
    || { "status": "skipped" }
  $operation_metadata.alpha.balance_updates:
    [ { "kind": "contract",
        "contract": $contract_id,
        "credited":
          /* Amount in mutez */
          integer ∈ [-2^31-2, 2^31+2] || string }
      || { "kind": "contract",
           "contract": $contract_id,
           "debited":
             /* Amount in mutez */
             integer ∈ [-2^31-2, 2^31+2] || string }
      || { "kind": "freezer",
           "category": "rewards",
           "delegate":
             string
             /* A Secp256k1 or Ed25519 public key hash (Base58Check-encoded) */,
           "level": integer ∈ [-2^31-2, 2^31+2],
           "credited":
             /* Amount in mutez */
             integer ∈ [-2^31-2, 2^31+2] || string }
      || { "kind": "freezer",
           "category": "rewards",
           "delegate":
             string
             /* A Secp256k1 or Ed25519 public key hash (Base58Check-encoded) */,
           "level": integer ∈ [-2^31-2, 2^31+2],
           "debited":
             /* Amount in mutez */
             integer ∈ [-2^31-2, 2^31+2] || string }
      || { "kind": "freezer",
           "category": "fees",
           "delegate":
             string
             /* A Secp256k1 or Ed25519 public key hash (Base58Check-encoded) */,
           "level": integer ∈ [-2^31-2, 2^31+2],
           "credited":
             /* Amount in mutez */
             integer ∈ [-2^31-2, 2^31+2] || string }
      || { "kind": "freezer",
           "category": "fees",
           "delegate":
             string
             /* A Secp256k1 or Ed25519 public key hash (Base58Check-encoded) */,
           "level": integer ∈ [-2^31-2, 2^31+2],
           "debited":
             /* Amount in mutez */
             integer ∈ [-2^31-2, 2^31+2] || string }
      || { "kind": "freezer",
           "category": "deposits",
           "delegate":
             string
             /* A Secp256k1 or Ed25519 public key hash (Base58Check-encoded) */,
           "level": integer ∈ [-2^31-2, 2^31+2],
           "credited":
             /* Amount in mutez */
             integer ∈ [-2^31-2, 2^31+2] || string }
      || { "kind": "freezer",
           "category": "deposits",
           "delegate":
             string
             /* A Secp256k1 or Ed25519 public key hash (Base58Check-encoded) */,
           "level": integer ∈ [-2^31-2, 2^31+2],
           "debited":
             /* Amount in mutez */
             integer ∈ [-2^31-2, 2^31+2] || string } ... ]
  $timestamp:
    /* RFC 3339 formatted timestamp
       A date in human readble form as specified in RFC 3339. */
    string

GET ../<block_id>/operations/<list_offset>/<operation_offset>

The `m-th` operation in the `n-th` validation pass of the block.

  $operation
  $bignum:
    /* Big number
       Decimal representation of a big number */
    string
  $block_header.alpha.full_header:
    { "level": integer ∈ [-2^31-2, 2^31+2],
      "proto": integer ∈ [0, 255],
      "predecessor": string /* A block identifier (Base58Check-encoded) */,
      "timestamp":
        /* timestamp */
        $timestamp || integer ∈ [-2^31-2, 2^31+2] || string,
      "validation_pass": integer ∈ [0, 255],
      "operations_hash":
        string
        /* A list of list of operations (Base58Check-encoded) */,
      "fitness": [ /^[a-zA-Z0-9]+$/ ... ] /* Tezos block fitness */,
      "context": string /* A hash of context (Base58Check-encoded) */,
      "priority": integer ∈ [0, 2^16-1],
      "proof_of_work_nonce": /^[a-zA-Z0-9]+$/,
      "seed_nonce_hash"?: string /* A nonce hash (Base58Check-encoded) */,
      "signature":
        string
        /* A Secp256k1 or Ed25519 signature (Base58Check-encoded) */ }
  $contract_id:
    /* A contract handle
       A contract notation as given to an RPC or inside scripts. Can be a
       base58 implicit contract hash or a base58 originated contract hash. */
    string
  $error:
    /* ... FIXME ... */
    any
  $micheline.michelson_v1.expression:
    /* Micheline expression (michelson_v1 variant) */
    { "int": $bignum }
    || { "string": string }
    || [ $micheline.michelson_v1.expression ... ]
    || { "prim":
           "CAR"
           | "LSR"
           | "ADDRESS"
           | "CREATE_CONTRACT"
           | "LSL"
           | "MANAGER"
           | "Elt"
           | "EDIV"
           | "OR"
           | "address"
           | "operation"
           | "ADD"
           | "AMOUNT"
           | "ISNAT"
           | "list"
           | "NEG"
           | "LOOP_LEFT"
           | "EMPTY_MAP"
           | "H"
           | "unit"
           | "SELF"
           | "Right"
           | "set"
           | "LAMBDA"
           | "MEM"
           | "ITER"
           | "storage"
           | "CONTRACT"
           | "CONS"
           | "XOR"
           | "STEPS_TO_QUOTA"
           | "False"
           | "AND"
           | "CREATE_ACCOUNT"
           | "COMPARE"
           | "or"
           | "GE"
           | "UPDATE"
           | "NEQ"
           | "SOURCE"
           | "int"
           | "timestamp"
           | "IMPLICIT_ACCOUNT"
           | "string"
           | "Unit"
           | "Some"
           | "ABS"
           | "PAIR"
           | "LT"
           | "CDR"
           | "EMPTY_SET"
           | "BALANCE"
           | "map"
           | "IF"
           | "SOME"
           | "MUL"
           | "NOT"
           | "NONE"
           | "None"
           | "DIP"
           | "GT"
           | "NOW"
           | "key_hash"
           | "NIL"
           | "contract"
           | "EXEC"
           | "SET_DELEGATE"
           | "UNIT"
           | "LOOP"
           | "SUB"
           | "CONCAT"
           | "DROP"
           | "MAP"
           | "RIGHT"
           | "LEFT"
           | "TRANSFER_TOKENS"
           | "INT"
           | "Left"
           | "big_map"
           | "signature"
           | "SWAP"
           | "mutez"
           | "EQ"
           | "GET"
           | "PUSH"
           | "option"
           | "IF_CONS"
           | "pair"
           | "nat"
           | "True"
           | "IF_LEFT"
           | "parameter"
           | "LE"
           | "HASH_KEY"
           | "SIZE"
           | "bool"
           | "Pair"
           | "lambda"
           | "FAIL"
           | "DUP"
           | "IF_NONE"
           | "key"
           | "code"
           | "CHECK_SIGNATURE",
         "args": [ $micheline.michelson_v1.expression ... ],
         "annot"?: string }
  $operation:
    { "protocol": "PtCJ7pwoxe8JasnHY8YonnLYjcVHmhiARPJvqcC6VfHT5s8k8sY",
      "chain_id": string /* Network identifier (Base58Check-encoded) */,
      "hash": string /* A Tezos operation ID (Base58Check-encoded) */,
      "branch": string /* A block identifier (Base58Check-encoded) */,
      "contents": [ $operation.alpha.operation_contents_and_result ... ],
      "signature"?:
        string
        /* A Secp256k1 or Ed25519 signature (Base58Check-encoded) */ }
  $operation.alpha.internal_operation_result:
    { "kind": "reveal",
      "source": $contract_id,
      "nonce": integer ∈ [0, 2^16-1],
      "public_key":
        string
        /* A Secp256k1 or Ed25519 public key (Base58Check-encoded) */,
      "result": $operation.alpha.operation_result.reveal }
    || { "kind": "transaction",
         "source": $contract_id,
         "nonce": integer ∈ [0, 2^16-1],
         "amount":
           /* Amount in mutez */
           integer ∈ [-2^31-2, 2^31+2] || string,
         "destination": $contract_id,
         "parameters"?: $micheline.michelson_v1.expression,
         "result": $operation.alpha.operation_result.transaction }
    || { "kind": "origination",
         "source": $contract_id,
         "nonce": integer ∈ [0, 2^16-1],
         "managerPubkey":
           string
           /* A Secp256k1 or Ed25519 public key hash (Base58Check-encoded) */,
         "balance":
           /* Amount in mutez */
           integer ∈ [-2^31-2, 2^31+2] || string,
         "spendable"?: boolean,
         "delegatable"?: boolean,
         "delegate"?:
           string
           /* A Secp256k1 or Ed25519 public key hash (Base58Check-encoded) */,
         "script"?:
           { "code": $micheline.michelson_v1.expression,
             "storage": $micheline.michelson_v1.expression },
         "result": $operation.alpha.operation_result.origination }
    || { "kind": "delegation",
         "source": $contract_id,
         "nonce": integer ∈ [0, 2^16-1],
         "delegate"?:
           string
           /* A Secp256k1 or Ed25519 public key hash (Base58Check-encoded) */,
         "result": $operation.alpha.operation_result.delegation }
  $operation.alpha.operation_contents_and_result:
    { "kind": "endorsement",
      "block": string /* A block identifier (Base58Check-encoded) */,
      "level": integer ∈ [-2^31-2, 2^31+2],
      "slots": [ integer ∈ [-2^30-2, 2^30+2] ... ],
      "metadata":
        { "delegate":
            string
            /* A Secp256k1 or Ed25519 public key hash (Base58Check-encoded) */,
          "slots": [ integer ∈ [0, 255] ... ] } }
    || { "kind": "seed_nonce_revelation",
         "level": integer ∈ [-2^31-2, 2^31+2],
         "nonce": /^[a-zA-Z0-9]+$/,
         "metadata":
           { "balance_updates": $operation_metadata.alpha.balance_updates } }
    || { "kind": "double_endorsement_evidence",
         "op1":
           { "branch": string /* A block identifier (Base58Check-encoded) */,
             "operations":
               { "kind": "endorsement",
                 "block":
                   string
                   /* A block identifier (Base58Check-encoded) */,
                 "level": integer ∈ [-2^31-2, 2^31+2],
                 "slots": [ integer ∈ [-2^30-2, 2^30+2] ... ] },
             "signature"?:
               string
               /* A Secp256k1 or Ed25519 signature (Base58Check-encoded) */ },
         "op2":
           { "branch": string /* A block identifier (Base58Check-encoded) */,
             "operations":
               { "kind": "endorsement",
                 "block":
                   string
                   /* A block identifier (Base58Check-encoded) */,
                 "level": integer ∈ [-2^31-2, 2^31+2],
                 "slots": [ integer ∈ [-2^30-2, 2^30+2] ... ] },
             "signature"?:
               string
               /* A Secp256k1 or Ed25519 signature (Base58Check-encoded) */ },
         "metadata":
           { "balance_updates": $operation_metadata.alpha.balance_updates } }
    || { "kind": "double_baking_evidence",
         "bh1": $block_header.alpha.full_header,
         "bh2": $block_header.alpha.full_header,
         "metadata":
           { "balance_updates": $operation_metadata.alpha.balance_updates } }
    || { "kind": "activate_account",
         "pkh": string /* An Ed25519 public key hash (Base58Check-encoded) */,
         "secret": /^[a-zA-Z0-9]+$/,
         "metadata":
           { "balance_updates": $operation_metadata.alpha.balance_updates } }
    || { "kind": "proposals",
         "source":
           string
           /* A Secp256k1 or Ed25519 public key hash (Base58Check-encoded) */,
         "period": integer ∈ [-2^31-2, 2^31+2],
         "proposals":
           [ string
           /* A Tezos protocol ID (Base58Check-encoded) */ ... ],
         "metadata": {  } }
    || { "kind": "ballot",
         "source":
           string
           /* A Secp256k1 or Ed25519 public key hash (Base58Check-encoded) */,
         "period": integer ∈ [-2^31-2, 2^31+2],
         "proposal": string /* A Tezos protocol ID (Base58Check-encoded) */,
         "ballot": "nay" | "yay" | "pass",
         "metadata": {  } }
    || { "kind": "reveal",
         "source": $contract_id,
         "fee": /* Amount in mutez */integer ∈ [-2^31-2, 2^31+2] || string,
         "counter": integer ∈ [-2^31-2, 2^31+2],
         "gas_limit": $bignum,
         "storage_limit": integer ∈ [-2^31-2, 2^31+2] || string,
         "public_key":
           string
           /* A Secp256k1 or Ed25519 public key (Base58Check-encoded) */,
         "metadata":
           { "balance_updates": $operation_metadata.alpha.balance_updates,
             "operation_result": $operation.alpha.operation_result.reveal,
             "internal_operation_results"?:
               [ $operation.alpha.internal_operation_result ... ] } }
    || { "kind": "transaction",
         "source": $contract_id,
         "fee": /* Amount in mutez */integer ∈ [-2^31-2, 2^31+2] || string,
         "counter": integer ∈ [-2^31-2, 2^31+2],
         "gas_limit": $bignum,
         "storage_limit": integer ∈ [-2^31-2, 2^31+2] || string,
         "amount":
           /* Amount in mutez */
           integer ∈ [-2^31-2, 2^31+2] || string,
         "destination": $contract_id,
         "parameters"?: $micheline.michelson_v1.expression,
         "metadata":
           { "balance_updates": $operation_metadata.alpha.balance_updates,
             "operation_result":
               $operation.alpha.operation_result.transaction,
             "internal_operation_results"?:
               [ $operation.alpha.internal_operation_result ... ] } }
    || { "kind": "origination",
         "source": $contract_id,
         "fee": /* Amount in mutez */integer ∈ [-2^31-2, 2^31+2] || string,
         "counter": integer ∈ [-2^31-2, 2^31+2],
         "gas_limit": $bignum,
         "storage_limit": integer ∈ [-2^31-2, 2^31+2] || string,
         "managerPubkey":
           string
           /* A Secp256k1 or Ed25519 public key hash (Base58Check-encoded) */,
         "balance":
           /* Amount in mutez */
           integer ∈ [-2^31-2, 2^31+2] || string,
         "spendable"?: boolean,
         "delegatable"?: boolean,
         "delegate"?:
           string
           /* A Secp256k1 or Ed25519 public key hash (Base58Check-encoded) */,
         "script"?:
           { "code": $micheline.michelson_v1.expression,
             "storage": $micheline.michelson_v1.expression },
         "metadata":
           { "balance_updates": $operation_metadata.alpha.balance_updates,
             "operation_result":
               $operation.alpha.operation_result.origination,
             "internal_operation_results"?:
               [ $operation.alpha.internal_operation_result ... ] } }
    || { "kind": "delegation",
         "source": $contract_id,
         "fee": /* Amount in mutez */integer ∈ [-2^31-2, 2^31+2] || string,
         "counter": integer ∈ [-2^31-2, 2^31+2],
         "gas_limit": $bignum,
         "storage_limit": integer ∈ [-2^31-2, 2^31+2] || string,
         "delegate"?:
           string
           /* A Secp256k1 or Ed25519 public key hash (Base58Check-encoded) */,
         "metadata":
           { "balance_updates": $operation_metadata.alpha.balance_updates,
             "operation_result": $operation.alpha.operation_result.delegation,
             "internal_operation_results"?:
               [ $operation.alpha.internal_operation_result ... ] } }
    || { "kind": "activate_protocol",
         "hash": string /* A Tezos protocol ID (Base58Check-encoded) */,
         "metadata": {  } }
    || { "kind": "activate_test_protocol",
         "hash": string /* A Tezos protocol ID (Base58Check-encoded) */,
         "metadata": {  } }
  $operation.alpha.operation_result.delegation:
    { "status": "applied" }
    || { "status": "failed",
         "errors": [ $error ... ] }
    || { "status": "skipped" }
  $operation.alpha.operation_result.origination:
    { "status": "applied",
      "balance_updates"?: $operation_metadata.alpha.balance_updates,
      "originated_contracts"?: [ $contract_id ... ],
      "consumed_gas"?: $bignum,
      "storage_size_diff"?: integer ∈ [-2^31-2, 2^31+2] || string }
    || { "status": "failed",
         "errors": [ $error ... ] }
    || { "status": "skipped" }
  $operation.alpha.operation_result.reveal:
    { "status": "applied" }
    || { "status": "failed",
         "errors": [ $error ... ] }
    || { "status": "skipped" }
  $operation.alpha.operation_result.transaction:
    { "status": "applied",
      "storage"?: $micheline.michelson_v1.expression,
      "balance_updates"?: $operation_metadata.alpha.balance_updates,
      "originated_contracts"?: [ $contract_id ... ],
      "consumed_gas"?: $bignum,
      "storage_size_diff"?: integer ∈ [-2^31-2, 2^31+2] || string }
    || { "status": "failed",
         "errors": [ $error ... ] }
    || { "status": "skipped" }
  $operation_metadata.alpha.balance_updates:
    [ { "kind": "contract",
        "contract": $contract_id,
        "credited":
          /* Amount in mutez */
          integer ∈ [-2^31-2, 2^31+2] || string }
      || { "kind": "contract",
           "contract": $contract_id,
           "debited":
             /* Amount in mutez */
             integer ∈ [-2^31-2, 2^31+2] || string }
      || { "kind": "freezer",
           "category": "rewards",
           "delegate":
             string
             /* A Secp256k1 or Ed25519 public key hash (Base58Check-encoded) */,
           "level": integer ∈ [-2^31-2, 2^31+2],
           "credited":
             /* Amount in mutez */
             integer ∈ [-2^31-2, 2^31+2] || string }
      || { "kind": "freezer",
           "category": "rewards",
           "delegate":
             string
             /* A Secp256k1 or Ed25519 public key hash (Base58Check-encoded) */,
           "level": integer ∈ [-2^31-2, 2^31+2],
           "debited":
             /* Amount in mutez */
             integer ∈ [-2^31-2, 2^31+2] || string }
      || { "kind": "freezer",
           "category": "fees",
           "delegate":
             string
             /* A Secp256k1 or Ed25519 public key hash (Base58Check-encoded) */,
           "level": integer ∈ [-2^31-2, 2^31+2],
           "credited":
             /* Amount in mutez */
             integer ∈ [-2^31-2, 2^31+2] || string }
      || { "kind": "freezer",
           "category": "fees",
           "delegate":
             string
             /* A Secp256k1 or Ed25519 public key hash (Base58Check-encoded) */,
           "level": integer ∈ [-2^31-2, 2^31+2],
           "debited":
             /* Amount in mutez */
             integer ∈ [-2^31-2, 2^31+2] || string }
      || { "kind": "freezer",
           "category": "deposits",
           "delegate":
             string
             /* A Secp256k1 or Ed25519 public key hash (Base58Check-encoded) */,
           "level": integer ∈ [-2^31-2, 2^31+2],
           "credited":
             /* Amount in mutez */
             integer ∈ [-2^31-2, 2^31+2] || string }
      || { "kind": "freezer",
           "category": "deposits",
           "delegate":
             string
             /* A Secp256k1 or Ed25519 public key hash (Base58Check-encoded) */,
           "level": integer ∈ [-2^31-2, 2^31+2],
           "debited":
             /* Amount in mutez */
             integer ∈ [-2^31-2, 2^31+2] || string } ... ]
  $timestamp:
    /* RFC 3339 formatted timestamp
       A date in human readble form as specified in RFC 3339. */
    string