RPC API

This document contains the list of RPC services provided by the Tezos node. It is generated from the OCaml source code (master branch).

Usage

In order to interact with a Tezos node, you may use RPC calls through the client using this command tezos-admin-client rpc call <url>.

For instance, if you wish to request the current balance of a given block and contract, you can call the associated RPC via the command : $ tezos-admin-client rpc call /blocks/<block_id>/proto/context/contracts/<contract_id>/balance.

A RPC may takes an input and generates an output both in JSON format. For example, the previous RPC call, that does not require an input, would display on the standard output : { "balance": "4000000000000" }. When calling a RPC that requires an input through command-line, you will be prompted to provide the JSON input in your default configured text editor. Alternatively, you can provide the JSON input using command $ tezos-admin-client rpc call <url> with <JSON>. Don’t forget to quote the JSON according to your shell rules.

You can also obtain the list of RPCs on the command line with tezos-admin-client rpc list /, and the description of each service using tezos-admin-client rpc format <url>.

Of course, you can use your standard HTTP tool or library as well to perform all these tasks.

Client RPCs - Index

/blocks

/bootstrapped

/complete

/errors

/forge_block_header

/inject_block

/inject_operation

/inject_protocol

/invalid_blocks

/invalid_blocks/<Block_hash>

/mempool

/network

/protocols

/workers

Client RPCs - Full description

POST /blocks

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.

  { /* List blocks param */
    "include_ops"?:
      boolean
      /* Whether the resulting block informations should include the list
         of operations' hashes. Default false. */,
    "length"?:
      integer ∈ ]-2^30-2, 2^30+2[
      /* The requested number of predecessors to returns (per requested
         head). */,
    "heads"?:
      [ string
      /* A Tezos block ID (Base58Check-encoded) */ ... ]
      /* An empty argument requests blocks from the current heads. A non
         empty list allow to request specific fragment of the chain. */,
    "monitor"?:
      boolean
      /* When true, the socket is "kept alive" after the first answer and
         new heads are streamed when discovered. */,
    "delay"?:
      integer ∈ ]-2^30-2, 2^30+2[
      /* By default only the blocks that were validated by the node are
         considered. When this optional argument is 0, only blocks with a
         timestamp in the past are considered. Other values allows to
         adjust the current time. */,
    "min_date"?:
      /* timestamp
         When `min_date` is provided, heads with a timestamp before
         `min_date` are filtered ouf */
      $timestamp || integer ∈ ]-2^31-2, 2^31+2[ || string,
    "min_heads"?:
      integer ∈ ]-2^30-2, 2^30+2[
      /* When `min_date` is provided, returns at least `min_heads` even
         when their timestamp is before `min_date`. */ }
  $timestamp:
    /* RFC 3339 formatted timestamp
       A date in human readble form as specified in RFC 3339. */
    string
  { "blocks":
      [ [ { /* Block info */
            "hash": string /* A Tezos block ID (Base58Check-encoded) */,
            "chain_id":
              string
              /* Network identifier (Base58Check-encoded) */,
            "operations"?:
              [ [ { /* Operation hash */
                    "hash":
                      string
                      /* A Tezos operation ID (Base58Check-encoded) */,
                    "branch":
                      string
                      /* A Tezos block ID (Base58Check-encoded) */,
                    "data": /^[a-zA-Z0-9]+$/ } ... ] ... ],
            "protocol":
              string
              /* A Tezos protocol ID (Base58Check-encoded) */,
            "test_chain"?:
              /* 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 Tezos block ID (Base58Check-encoded) */,
                   "protocol":
                     string
                     /* A Tezos protocol ID (Base58Check-encoded) */,
                   "expiration":
                     /* timestamp */
                     $timestamp || integer ∈ ]-2^31-2, 2^31+2[ || string },
            "level": integer ∈ ]-2^31-2, 2^31+2[,
            "proto": integer ∈ ]0, 255[,
            "predecessor":
              string
              /* A Tezos block ID (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

POST /blocks/<block_id>

All the information about a block.

  { /* Operations */
    "operations"?: boolean }
  { /* Block info */
    "hash": string /* A Tezos block ID (Base58Check-encoded) */,
    "chain_id": string /* Network identifier (Base58Check-encoded) */,
    "operations"?:
      [ [ { /* Operation hash */
            "hash": string /* A Tezos operation ID (Base58Check-encoded) */,
            "branch": string /* A Tezos block ID (Base58Check-encoded) */,
            "data": /^[a-zA-Z0-9]+$/ } ... ] ... ],
    "protocol": string /* A Tezos protocol ID (Base58Check-encoded) */,
    "test_chain"?:
      /* 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 Tezos block ID (Base58Check-encoded) */,
           "protocol":
             string
             /* A Tezos protocol ID (Base58Check-encoded) */,
           "expiration":
             /* timestamp */
             $timestamp || integer ∈ ]-2^31-2, 2^31+2[ || string },
    "level": integer ∈ ]-2^31-2, 2^31+2[,
    "proto": integer ∈ ]0, 255[,
    "predecessor": string /* A Tezos block ID (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

POST /blocks/<block_id>/chain_id

Returns the chain in which the block belongs.

  { /* Chain ID */
    "chain_id": string /* Network identifier (Base58Check-encoded) */ }

POST /blocks/<block_id>/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 ... ]
  /* String list */

POST /blocks/<block_id>/fitness

Returns the block's fitness.

  { /* Fitness */
    "fitness": [ /^[a-zA-Z0-9]+$/ ... ] /* Tezos block fitness */ }

POST /blocks/<block_id>/hash

Returns the block's id.

  { "hash": string /* A Tezos block ID (Base58Check-encoded) */ }

POST /blocks/<block_id>/level

Returns the block's level.

  { /* Level */
    "level": integer ∈ ]-2^31-2, 2^31+2[ }

POST /blocks/<block_id>/operations

List the block operations.

  { /* Operations param */
    "contents"?: boolean }
  { /* Operations */
    "operations":
      [ [ { /* Operation, operation hash pairs */
            "hash": string /* A Tezos operation ID (Base58Check-encoded) */,
            "contents"?:
              { "branch":
                  string
                  /* A Tezos block ID (Base58Check-encoded) */,
                "data": /^[a-zA-Z0-9]+$/ } } ... ]
      /* Operation/operation hash pair list */ ... ] }

POST /blocks/<block_id>/preapply

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

  { /* Preapply param */
    "timestamp":
      /* timestamp */
      $timestamp || integer ∈ ]-2^31-2, 2^31+2[ || string,
    "protocol_data": /^[a-zA-Z0-9]+$/,
    "operations":
      [ [ { "branch": string /* A Tezos block ID (Base58Check-encoded) */,
            "data": /^[a-zA-Z0-9]+$/ } ... ] ... ],
    "sort_operations"?: boolean }
  $timestamp:
    /* RFC 3339 formatted timestamp
       A date in human readble form as specified in RFC 3339. */
    string
  { /* Preapply result */
    "shell_header":
      { "level": integer ∈ ]-2^31-2, 2^31+2[,
        "proto": integer ∈ ]0, 255[,
        "predecessor": string /* A Tezos block ID (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) */ },
    "operations":
      [ { "applied":
            [ { "hash":
                  string
                  /* A Tezos operation ID (Base58Check-encoded) */,
                "branch":
                  string
                  /* A Tezos block ID (Base58Check-encoded) */,
                "data": /^[a-zA-Z0-9]+$/ } ... ],
          "refused":
            [ { "hash":
                  string
                  /* A Tezos operation ID (Base58Check-encoded) */,
                "branch":
                  string
                  /* A Tezos block ID (Base58Check-encoded) */,
                "data": /^[a-zA-Z0-9]+$/,
                "error":
                  any
                  /* The full list of error is available with the global
                     RPC `POST errors` */ } ... ],
          "branch_refused":
            [ { "hash":
                  string
                  /* A Tezos operation ID (Base58Check-encoded) */,
                "branch":
                  string
                  /* A Tezos block ID (Base58Check-encoded) */,
                "data": /^[a-zA-Z0-9]+$/,
                "error":
                  any
                  /* The full list of error is available with the global
                     RPC `POST errors` */ } ... ],
          "branch_delayed":
            [ { "hash":
                  string
                  /* A Tezos operation ID (Base58Check-encoded) */,
                "branch":
                  string
                  /* A Tezos block ID (Base58Check-encoded) */,
                "data": /^[a-zA-Z0-9]+$/,
                "error":
                  any
                  /* The full list of error is available with the global
                     RPC `POST errors` */ } ... ] } ... ] }
  $timestamp:
    /* RFC 3339 formatted timestamp
       A date in human readble form as specified in RFC 3339. */
    string

POST /blocks/<block_id>/predecessor

Returns the previous block's id.

  { /* Predecessor */
    "predecessor": string /* A Tezos block ID (Base58Check-encoded) */ }

POST /blocks/<block_id>/predecessors

....

  { /* Num predecessors */
    "length": integer ∈ ]0, 2^16-1[ }
  { /* Block hash list */
    "blocks": [ string /* A Tezos block ID (Base58Check-encoded) */ ... ] }

POST /blocks/<block_id>/proto

All the RPCs which are specific to the protocol version.

POST /blocks/<block_id>/protocol

List the block protocol.

  { /* Block protocol */
    "protocol": string /* A Tezos protocol ID (Base58Check-encoded) */ }

POST /blocks/<block_id>/raw_context

Returns the raw context.

  { /* Raw Context */
    "content": $context_tree }
  $context_tree: /^[a-zA-Z0-9]+$/ || { *: $context_tree } || null

POST /blocks/<block_id>/test_chain

Returns the status of the associated test chain.

  /* 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 Tezos block ID (Base58Check-encoded) */,
       "protocol": string /* A Tezos protocol ID (Base58Check-encoded) */,
       "expiration":
         /* 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 /blocks/<block_id>/timestamp

Returns the block's timestamp.

  { /* Timestamp */
    "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

POST /bootstrapped

No description

  { "block": string /* A Tezos block 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

POST /complete/<prefix>

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

  [ string ... ]

POST /errors

Schema for all the RPC errors from the shell

  any

POST /forge_block_header

Forge a block header

  { "level": integer ∈ ]-2^31-2, 2^31+2[,
    "proto": integer ∈ ]0, 255[,
    "predecessor": string /* A Tezos block ID (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]+$/ }

POST /inject_block

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//context/preapply'). Returns the ID of the block. By default, the RPC will wait for the block to be validated before answering.

  { "data": /^[a-zA-Z0-9]+$/,
    "blocking"?:
      boolean
      /* Should the RPC wait for the block to be validated before
         answering. (default: true) */,
    "force"?:
      boolean
      /* Should we inject the block when its fitness is below the current
         head. (default: false) */,
    "chain_id"?: string /* Network identifier (Base58Check-encoded) */,
    "operations":
      [ [ { "branch": string /* A Tezos block ID (Base58Check-encoded) */,
            "data": /^[a-zA-Z0-9]+$/ } ... ] ... ]
      /* ... */ }
  { "block_hash": string /* A Tezos block ID (Base58Check-encoded) */ }

POST /inject_operation

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.

  { "signedOperationContents":
      /^[a-zA-Z0-9]+$/
      /* Tezos signed operation (hex encoded) */,
    "blocking"?:
      boolean
      /* Should the RPC wait for the operation to be (pre-)validated before
         answering. (default: true) */,
    "chain_id"?: string /* Network identifier (Base58Check-encoded) */ }
  { /* Hash of the injected operation */
    "injectedOperation":
      string
      /* A Tezos operation ID (Base58Check-encoded) */ }

POST /inject_protocol

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

  { "protocol":
      { /* Tezos protocol */
        "expected_env_version": integer ∈ ]-2^15, 2^15-1[,
        "components":
          [ { "name": string,
              "interface"?: /^[a-zA-Z0-9]+$/,
              "implementation": /^[a-zA-Z0-9]+$/ } ... ] },
    "blocking"?:
      boolean
      /* Should the RPC wait for the protocol to be validated before
         answering. (default: true) */,
    "force"?:
      boolean
      /* Should we inject protocol that is invalid. (default: false) */ }
  { /* Hash of the injected protocol */
    "injectedProtocol":
      string
      /* A Tezos protocol ID (Base58Check-encoded) */ }

POST /invalid_blocks

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

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

POST /invalid_blocks/<Block_hash>/unmark

Unmark an invalid block

POST /mempool/pending_operations

List the not-yet-prevalidated operations.

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

POST /network/connect/<point>

Connect to a peer

  { "timeout"?: number }

POST /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[ } ... ] } ... ]

POST /network/connections/<Crypto_box.Public_key_hash>

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[ } ... ] }

POST /network/connections/<Crypto_box.Public_key_hash>/kick

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

  { "wait": boolean }

POST /network/greylist/clear

Clear all greylists tables.

POST /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) */ }

POST /network/peers

List the peers the node ever met.

  { "filter"?: [ "running" | "accepted" | "disconnected" ... ] }
  [ [ 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

POST /network/peers/<Crypto_box.Public_key_hash>

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

POST /network/peers/<Crypto_box.Public_key_hash>/ban

Blacklist the given peer.

POST /network/peers/<Crypto_box.Public_key_hash>/banned

Check if a given peer is blacklisted or greylisted.

  boolean

POST /network/peers/<Crypto_box.Public_key_hash>/log

Monitor network events related to a given peer.

  { "monitor"?: boolean }
  [ { "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

POST /network/peers/<Crypto_box.Public_key_hash>/trust

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

POST /network/points

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

  { "filter"?:
      [ { "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" } ... ] }
  [ [ 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

POST /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

POST /network/points/<point>/ban

Blacklist the given address.

POST /network/points/<point>/banned

Check is a given address is blacklisted or greylisted.

  boolean

POST /network/points/<point>/log

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

  { "monitor"?: boolean }
  [ { "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

POST /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.

POST /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[ }

POST /network/versions

Supported network layer versions.

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

POST /protocols

No description

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

POST /protocols/<Protocol_hash>

No description

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

POST /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
                `POST errors` */ },
    "pending_requests":
      [ { "pushed":
            /* timestamp */
            $timestamp || integer ∈ ]-2^31-2, 2^31+2[ || string,
          "request":
            { "block": string /* A Tezos block ID (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 Tezos block ID (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 Tezos block ID (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 `POST 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 Tezos block ID (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

POST /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
                  `POST errors` */ } } ... ]
  $timestamp:
    /* RFC 3339 formatted timestamp
       A date in human readble form as specified in RFC 3339. */
    string

POST /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
                `POST errors` */ },
    "pending_requests":
      [ { "pushed":
            /* timestamp */
            $timestamp || integer ∈ ]-2^31-2, 2^31+2[ || string,
          "request": string /* A Tezos block ID (Base58Check-encoded) */ } ... ],
    "backlog":
      [ { "level": string,
          "events":
            [ { "request":
                  string
                  /* A Tezos block 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 },
                "outcome": "branch" | "ignored" | "increment",
                "fitness":
                  [ /^[a-zA-Z0-9]+$/ ... ]
                  /* Tezos block fitness */ }
              || any
              /* The full list of error is available with the global RPC
                 `POST 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 Tezos block ID (Base58Check-encoded) */ } }
  $timestamp:
    /* RFC 3339 formatted timestamp
       A date in human readble form as specified in RFC 3339. */
    string

POST /workers/peer_validators/<chain_id>

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
                  `POST errors` */ } } ... ]
  $timestamp:
    /* RFC 3339 formatted timestamp
       A date in human readble form as specified in RFC 3339. */
    string

POST /workers/peer_validators/<chain_id>/<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
                `POST errors` */ },
    "pending_requests":
      [ { "pushed":
            /* timestamp */
            $timestamp || integer ∈ ]-2^31-2, 2^31+2[ || string,
          "request":
            { "request": "new_head",
              "block": string /* A Tezos block ID (Base58Check-encoded) */ }
            || { "request": "new_branch",
                 "block":
                   string
                   /* A Tezos block ID (Base58Check-encoded) */,
                 "locator_length": integer ∈ ]0, 2^16-1[ } } ... ],
    "backlog":
      [ { "level": string,
          "events":
            [ { "message": string }
              || { "request":
                     { "request": "new_head",
                       "block":
                         string
                         /* A Tezos block ID (Base58Check-encoded) */ }
                     || { "request": "new_branch",
                          "block":
                            string
                            /* A Tezos block ID (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 `POST errors` */,
                   "failed_request":
                     { "request": "new_head",
                       "block":
                         string
                         /* A Tezos block ID (Base58Check-encoded) */ }
                     || { "request": "new_branch",
                          "block":
                            string
                            /* A Tezos block ID (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 Tezos block ID (Base58Check-encoded) */ }
          || { "request": "new_branch",
               "block": string /* A Tezos block ID (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

POST /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
                  `POST errors` */ } } ... ]
  $timestamp:
    /* RFC 3339 formatted timestamp
       A date in human readble form as specified in RFC 3339. */
    string

POST /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
                `POST errors` */ },
    "pending_requests":
      [ { "pushed":
            /* timestamp */
            $timestamp || integer ∈ ]-2^31-2, 2^31+2[ || string,
          "request":
            { "request": "flush",
              "block": string /* A Tezos block ID (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 Tezos block ID (Base58Check-encoded) */,
                     "data": /^[a-zA-Z0-9]+$/ } }
            || { "request": "arrived",
                 "operation_hash":
                   string
                   /* A Tezos operation ID (Base58Check-encoded) */,
                 "operation":
                   { "branch":
                       string
                       /* A Tezos block ID (Base58Check-encoded) */,
                     "data": /^[a-zA-Z0-9]+$/ } }
            || { "request": "advertise" } } ... ],
    "backlog":
      [ { "level": string,
          "events":
            [ { "message": string }
              || { "request":
                     { "request": "flush",
                       "block":
                         string
                         /* A Tezos block ID (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 Tezos block ID (Base58Check-encoded) */,
                              "data": /^[a-zA-Z0-9]+$/ } }
                     || { "request": "arrived",
                          "operation_hash":
                            string
                            /* A Tezos operation ID (Base58Check-encoded) */,
                          "operation":
                            { "branch":
                                string
                                /* A Tezos block ID (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 `POST errors` */,
                   "failed_request":
                     { "request": "flush",
                       "block":
                         string
                         /* A Tezos block ID (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 Tezos block ID (Base58Check-encoded) */,
                              "data": /^[a-zA-Z0-9]+$/ } }
                     || { "request": "arrived",
                          "operation_hash":
                            string
                            /* A Tezos operation ID (Base58Check-encoded) */,
                          "operation":
                            { "branch":
                                string
                                /* A Tezos block ID (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 Tezos block ID (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 Tezos block ID (Base58Check-encoded) */,
                   "data": /^[a-zA-Z0-9]+$/ } }
          || { "request": "arrived",
               "operation_hash":
                 string
                 /* A Tezos operation ID (Base58Check-encoded) */,
               "operation":
                 { "branch":
                     string
                     /* A Tezos block ID (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 RPCs - Index

/blocks/<block_id>/proto

/blocks/<block_id>/proto/constants

/blocks/<block_id>/proto/constants/ block_reward

/blocks/<block_id>/proto/constants/ endorsement_reward

/blocks/<block_id>/proto/constants/block_security_deposit

/blocks/<block_id>/proto/constants/blocks_per_commitment

/blocks/<block_id>/proto/constants/blocks_per_cycle

/blocks/<block_id>/proto/constants/blocks_per_roll_snapshot

/blocks/<block_id>/proto/constants/blocks_per_voting_period

/blocks/<block_id>/proto/constants/endorsement_security_deposit

/blocks/<block_id>/proto/constants/endorsers_per_block

/blocks/<block_id>/proto/constants/errors

/blocks/<block_id>/proto/constants/first_free_baking_slot

/blocks/<block_id>/proto/constants/max_gas

/blocks/<block_id>/proto/constants/origination_burn

/blocks/<block_id>/proto/constants/preserved_cycles

/blocks/<block_id>/proto/constants/proof_of_work_threshold

/blocks/<block_id>/proto/constants/seed_nonce_revelation_tip

/blocks/<block_id>/proto/constants/time_between_slots

/blocks/<block_id>/proto/context

/blocks/<block_id>/proto/context/contracts

/blocks/<block_id>/proto/context/level

/blocks/<block_id>/proto/context/next_level

/blocks/<block_id>/proto/context/nonce

/blocks/<block_id>/proto/context/voting_period_kind

/blocks/<block_id>/proto/delegate

/blocks/<block_id>/proto/delegate/<Signature.Public_key_hash>

/blocks/<block_id>/proto/header

/blocks/<block_id>/proto/helpers

/blocks/<block_id>/proto/helpers/apply_operation

/blocks/<block_id>/proto/helpers/forge

/blocks/<block_id>/proto/helpers/hash_data

/blocks/<block_id>/proto/helpers/level

/blocks/<block_id>/proto/helpers/levels

/blocks/<block_id>/proto/helpers/minimal_timestamp

/blocks/<block_id>/proto/helpers/parse

/blocks/<block_id>/proto/helpers/rights

/blocks/<block_id>/proto/helpers/run_code

/blocks/<block_id>/proto/helpers/trace_code

/blocks/<block_id>/proto/helpers/typecheck_code

/blocks/<block_id>/proto/helpers/typecheck_data

/blocks/<block_id>/proto/operations

Protocol Alpha RPCs - Full description

POST /blocks/<block_id>/proto/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[,
    "instructions_per_transaction": integer ∈ ]-2^30-2, 2^30+2[,
    "proof_of_work_threshold": integer ∈ ]-2^31-2, 2^31+2[ || string,
    "dictator_pubkey":
      string
      /* A Secp256k1 or Ed25519 public key (Base58Check-encoded) */,
    "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 }

POST /blocks/<block_id>/proto/constants/ block_reward

block_reward

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

POST /blocks/<block_id>/proto/constants/ endorsement_reward

endorsement_reward

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

POST /blocks/<block_id>/proto/constants/block_security_deposit

block_security_deposit

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

POST /blocks/<block_id>/proto/constants/blocks_per_commitment

How many blocks between random seed's nonce commitment

  { "blocks_per_commitment": integer ∈ ]-2^31-2, 2^31+2[ }

POST /blocks/<block_id>/proto/constants/blocks_per_cycle

Cycle length

  { "blocks_per_cycle": integer ∈ ]-2^31-2, 2^31+2[ }

POST /blocks/<block_id>/proto/constants/blocks_per_roll_snapshot

How many blocks between roll snapshots

  { "blocks_per_roll_snapshot": integer ∈ ]-2^31-2, 2^31+2[ }

POST /blocks/<block_id>/proto/constants/blocks_per_voting_period

Length of the voting period

  { "blocks_per_voting_period": integer ∈ ]-2^31-2, 2^31+2[ }

POST /blocks/<block_id>/proto/constants/endorsement_security_deposit

endorsement_security_deposit

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

POST /blocks/<block_id>/proto/constants/endorsers_per_block

Max signing slot

  { "endorsers_per_block": integer ∈ ]0, 2^16-1[ }

POST /blocks/<block_id>/proto/constants/errors

Schema for all the RPC errors from this protocol version

  any

POST /blocks/<block_id>/proto/constants/first_free_baking_slot

First free baking slot

  { "first_free_baking_slot": integer ∈ ]0, 2^16-1[ }

POST /blocks/<block_id>/proto/constants/max_gas

Instructions per transaction

  { "instructions_per_transaction": integer ∈ ]-2^30-2, 2^30+2[ }

POST /blocks/<block_id>/proto/constants/origination_burn

origination_burn

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

POST /blocks/<block_id>/proto/constants/preserved_cycles

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

  { "preserved_cycles": integer ∈ ]-2^30-2, 2^30+2[ }

POST /blocks/<block_id>/proto/constants/proof_of_work_threshold

Stamp threshold

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

POST /blocks/<block_id>/proto/constants/seed_nonce_revelation_tip

seed_nonce_revelation_tip

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

POST /blocks/<block_id>/proto/constants/time_between_slots

Slot durations

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

POST /blocks/<block_id>/proto/context/contracts

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

  [ string
  /* A contract handle
     A contract notation as given to an RPC or inside scripts. Can be a
     base58 public key hash, representing the implicit contract of this
     identity, or a base58 originated contract hash. */ ... ]

POST /blocks/<block_id>/proto/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 },
    "storage"?: $micheline.michelson_v1.expression,
    "counter": integer ∈ ]-2^31-2, 2^31+2[ }
  $micheline.michelson_v1.expression:
    /* Micheline expression (michelson_v1 variant) */
    { "int": string }
    || { "string": string }
    || [ $micheline.michelson_v1.expression ... ]
    || { "prim":
           "BALANCE"
           | "LSL"
           | "LOOP_LEFT"
           | "CREATE_ACCOUNT"
           | "LOOP"
           | "LT"
           | "False"
           | "DUP"
           | "NOW"
           | "ABS"
           | "ADD"
           | "contract"
           | "big_map"
           | "MUL"
           | "ITER"
           | "EDIV"
           | "Unit"
           | "SOME"
           | "Pair"
           | "string"
           | "INT"
           | "MAP"
           | "XOR"
           | "return"
           | "bool"
           | "CONCAT"
           | "UPDATE"
           | "SOURCE"
           | "code"
           | "AMOUNT"
           | "CONS"
           | "CHECK_SIGNATURE"
           | "set"
           | "FAIL"
           | "UNIT"
           | "NEG"
           | "SIZE"
           | "key_hash"
           | "CREATE_CONTRACT"
           | "timestamp"
           | "True"
           | "Right"
           | "H"
           | "OR"
           | "LSR"
           | "CAR"
           | "EMPTY_MAP"
           | "AND"
           | "nat"
           | "HASH_KEY"
           | "RIGHT"
           | "MEM"
           | "NONE"
           | "NIL"
           | "Left"
           | "DEFAULT_ACCOUNT"
           | "GET"
           | "NOT"
           | "list"
           | "NEQ"
           | "key"
           | "EQ"
           | "SWAP"
           | "TRANSFER_TOKENS"
           | "LEFT"
           | "SELF"
           | "COMPARE"
           | "DIP"
           | "MANAGER"
           | "PUSH"
           | "LE"
           | "SUB"
           | "IF_NONE"
           | "Elt"
           | "option"
           | "tez"
           | "STEPS_TO_QUOTA"
           | "unit"
           | "EMPTY_SET"
           | "GE"
           | "PAIR"
           | "pair"
           | "IF"
           | "signature"
           | "or"
           | "Some"
           | "IF_CONS"
           | "parameter"
           | "LAMBDA"
           | "GT"
           | "REDUCE"
           | "int"
           | "None"
           | "map"
           | "EXEC"
           | "DROP"
           | "IF_LEFT"
           | "lambda"
           | "storage"
           | "CDR",
         "args": [ $micheline.michelson_v1.expression ... ],
         "annot"?: string }

POST /blocks/<block_id>/proto/context/contracts/<contract_id>/balance

Access the balance of a contract.

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

POST /blocks/<block_id>/proto/context/contracts/<contract_id>/counter

Access the counter of a contract, if any.

  { "counter": integer ∈ ]-2^31-2, 2^31+2[ }

POST /blocks/<block_id>/proto/context/contracts/<contract_id>/delegatable

Tells if the contract delegate can be changed.

  { "delegatable": boolean }

POST /blocks/<block_id>/proto/context/contracts/<contract_id>/delegate

Access the delegate of a contract, if any.

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

POST /blocks/<block_id>/proto/context/contracts/<contract_id>/manager

Access the manager of a contract.

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

POST /blocks/<block_id>/proto/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) */ }

POST /blocks/<block_id>/proto/context/contracts/<contract_id>/script

Access the code and data of the contract.

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

POST /blocks/<block_id>/proto/context/contracts/<contract_id>/spendable

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

  { "spendable": boolean }

POST /blocks/<block_id>/proto/context/contracts/<contract_id>/storage

Access the data of the contract.

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

POST /blocks/<block_id>/proto/context/level

Detailled level information for the current block

  { "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 }

POST /blocks/<block_id>/proto/context/next_level

Detailled level information for the next block

  { "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 }

POST /blocks/<block_id>/proto/context/nonce

Hash of the current block's nonce.

  string
  /* A nonce hash (Base58Check-encoded) */

POST /blocks/<block_id>/proto/context/nonce/<block_level>

Info about the nonce of a previous block.

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

POST /blocks/<block_id>/proto/context/voting_period_kind

Voting period kind for the current block

  { "voting_period_kind":
      "proposal" || "testing_vote" || "testing" || "promotion_vote" }

POST /blocks/<block_id>/proto/delegate/<Signature.Public_key_hash>/frozen_balances

Returns the amount of frozen tokens associated to a given key.

  { "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 }

POST /blocks/<block_id>/proto/header

The header of the block (fully decoded).

  { "level": integer ∈ ]-2^31-2, 2^31+2[,
    "proto": integer ∈ ]0, 255[,
    "predecessor": string /* A Tezos block ID (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

POST /blocks/<block_id>/proto/header/priority

Baking priority of the block.

  { "priority": integer ∈ ]0, 2^16-1[ }

POST /blocks/<block_id>/proto/header/seed_nonce_hash

Hash of the seed nonce of the block.

  string
  /* A nonce hash (Base58Check-encoded) */

POST /blocks/<block_id>/proto/helpers/apply_operation

Applies an operation in the current context

  { "pred_block": string /* A Tezos block ID (Base58Check-encoded) */,
    "operation_hash":
      string
      /* A Tezos operation ID (Base58Check-encoded) */,
    "forged_operation": /^[a-zA-Z0-9]+$/,
    "signature"?:
      string
      /* A Secp256k1 or Ed25519 signature (Base58Check-encoded) */ }
  { "contracts":
      [ string
      /* A contract handle
         A contract notation as given to an RPC or inside scripts. Can be a
         base58 public key hash, representing the implicit contract of this
         identity, or a base58 originated contract hash. */ ... ] }

POST /blocks/<block_id>/proto/helpers/forge/operations

Forge an operation

  /* Unsigned Alpha operation */
  { "branch": string /* A Tezos block ID (Base58Check-encoded) */,
    "kind": "endorsement",
    "block": string /* A Tezos block ID (Base58Check-encoded) */,
    "level": integer ∈ ]-2^31-2, 2^31+2[,
    "slots": [ integer ∈ ]-2^30-2, 2^30+2[ ... ] }
  || { "branch": string /* A Tezos block ID (Base58Check-encoded) */,
       "source":
         string
         /* A Secp256k1 or Ed25519 public key hash (Base58Check-encoded) */,
       "kind": "proposal",
       "period": integer ∈ ]-2^31-2, 2^31+2[,
       "proposals":
         [ string
         /* A Tezos protocol ID (Base58Check-encoded) */ ... ] }
     || { "branch": string /* A Tezos block ID (Base58Check-encoded) */,
          "source":
            string
            /* A Secp256k1 or Ed25519 public key hash (Base58Check-encoded) */,
          "kind": "ballot",
          "period": integer ∈ ]-2^31-2, 2^31+2[,
          "proposal":
            string
            /* A Tezos protocol ID (Base58Check-encoded) */,
          "ballot": "nay" | "yay" | "pass" }
  || { "branch": string /* A Tezos block ID (Base58Check-encoded) */,
       "kind": "manager",
       "source":
         string
         /* A contract handle
            A contract notation as given to an RPC or inside scripts. Can
            be a base58 public key hash, representing the implicit contract
            of this identity, or a base58 originated contract hash. */,
       "fee": /* Amount in mutez */integer ∈ ]-2^31-2, 2^31+2[ || string,
       "counter": integer ∈ ]-2^31-2, 2^31+2[,
       "operations":
         [ { /* Reveal operation */
             "kind": "reveal",
             "public_key":
               string
               /* A Secp256k1 or Ed25519 public key (Base58Check-encoded) */ }
           || { /* Transaction operation */
                "kind": "transaction",
                "amount":
                  /* Amount in mutez */
                  integer ∈ ]-2^31-2, 2^31+2[ || string,
                "destination":
                  string
                  /* A contract handle
                     A contract notation as given to an RPC or inside
                     scripts. Can be a base58 public key hash, representing
                     the implicit contract of this identity, or a base58
                     originated contract hash. */,
                "parameters"?: $micheline.michelson_v1.expression }
           || { /* Origination operation */
                "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 } }
           || { /* Delegation operation */
                "kind": "delegation",
                "delegate"?:
                  string
                  /* A Secp256k1 or Ed25519 public key hash
                     (Base58Check-encoded) */ } ... ] }
  || { "branch": string /* A Tezos block ID (Base58Check-encoded) */,
       "chain": "activate",
       "hash": string /* A Tezos protocol ID (Base58Check-encoded) */ }
     || { "branch": string /* A Tezos block ID (Base58Check-encoded) */,
          "chain": "activate_testchain",
          "hash": string /* A Tezos protocol ID (Base58Check-encoded) */ }
  || { "branch": string /* A Tezos block ID (Base58Check-encoded) */,
       "operations":
         [ { "kind": "seed_nonce_revelation",
             "level": integer ∈ ]-2^31-2, 2^31+2[,
             "nonce": /^[a-zA-Z0-9]+$/ }
           || { "kind": "double_endorsement_evidence",
                "op1": $operation,
                "op2": $operation }
           || { "kind": "double_baking_evidence",
                "op1":
                  { "level": integer ∈ ]-2^31-2, 2^31+2[,
                    "proto": integer ∈ ]0, 255[,
                    "predecessor":
                      string
                      /* A Tezos block ID (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) */ },
                "op2":
                  { "level": integer ∈ ]-2^31-2, 2^31+2[,
                    "proto": integer ∈ ]0, 255[,
                    "predecessor":
                      string
                      /* A Tezos block ID (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) */ } }
           || { "kind": "activation",
                "pkh":
                  string
                  /* An Ed25519 public key hash (Base58Check-encoded) */,
                "secret": /^[a-zA-Z0-9]+$/ } ... ] }
  $micheline.michelson_v1.expression:
    /* Micheline expression (michelson_v1 variant) */
    { "int": string }
    || { "string": string }
    || [ $micheline.michelson_v1.expression ... ]
    || { "prim":
           "BALANCE"
           | "LSL"
           | "LOOP_LEFT"
           | "CREATE_ACCOUNT"
           | "LOOP"
           | "LT"
           | "False"
           | "DUP"
           | "NOW"
           | "ABS"
           | "ADD"
           | "contract"
           | "big_map"
           | "MUL"
           | "ITER"
           | "EDIV"
           | "Unit"
           | "SOME"
           | "Pair"
           | "string"
           | "INT"
           | "MAP"
           | "XOR"
           | "return"
           | "bool"
           | "CONCAT"
           | "UPDATE"
           | "SOURCE"
           | "code"
           | "AMOUNT"
           | "CONS"
           | "CHECK_SIGNATURE"
           | "set"
           | "FAIL"
           | "UNIT"
           | "NEG"
           | "SIZE"
           | "key_hash"
           | "CREATE_CONTRACT"
           | "timestamp"
           | "True"
           | "Right"
           | "H"
           | "OR"
           | "LSR"
           | "CAR"
           | "EMPTY_MAP"
           | "AND"
           | "nat"
           | "HASH_KEY"
           | "RIGHT"
           | "MEM"
           | "NONE"
           | "NIL"
           | "Left"
           | "DEFAULT_ACCOUNT"
           | "GET"
           | "NOT"
           | "list"
           | "NEQ"
           | "key"
           | "EQ"
           | "SWAP"
           | "TRANSFER_TOKENS"
           | "LEFT"
           | "SELF"
           | "COMPARE"
           | "DIP"
           | "MANAGER"
           | "PUSH"
           | "LE"
           | "SUB"
           | "IF_NONE"
           | "Elt"
           | "option"
           | "tez"
           | "STEPS_TO_QUOTA"
           | "unit"
           | "EMPTY_SET"
           | "GE"
           | "PAIR"
           | "pair"
           | "IF"
           | "signature"
           | "or"
           | "Some"
           | "IF_CONS"
           | "parameter"
           | "LAMBDA"
           | "GT"
           | "REDUCE"
           | "int"
           | "None"
           | "map"
           | "EXEC"
           | "DROP"
           | "IF_LEFT"
           | "lambda"
           | "storage"
           | "CDR",
         "args": [ $micheline.michelson_v1.expression ... ],
         "annot"?: string }
  $operation:
    { "branch": string /* A Tezos block ID (Base58Check-encoded) */,
      "kind": "endorsement",
      "block": string /* A Tezos block ID (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) */ }
    || { "branch": string /* A Tezos block ID (Base58Check-encoded) */,
         "source":
           string
           /* A Secp256k1 or Ed25519 public key hash (Base58Check-encoded) */,
         "kind": "proposal",
         "period": integer ∈ ]-2^31-2, 2^31+2[,
         "proposals":
           [ string
           /* A Tezos protocol ID (Base58Check-encoded) */ ... ],
         "signature"?:
           string
           /* A Secp256k1 or Ed25519 signature (Base58Check-encoded) */ }
       || { "branch": string /* A Tezos block ID (Base58Check-encoded) */,
            "source":
              string
              /* A Secp256k1 or Ed25519 public key hash
                 (Base58Check-encoded) */,
            "kind": "ballot",
            "period": integer ∈ ]-2^31-2, 2^31+2[,
            "proposal":
              string
              /* A Tezos protocol ID (Base58Check-encoded) */,
            "ballot": "nay" | "yay" | "pass",
            "signature"?:
              string
              /* A Secp256k1 or Ed25519 signature (Base58Check-encoded) */ }
    || { "branch": string /* A Tezos block ID (Base58Check-encoded) */,
         "kind": "manager",
         "source":
           string
           /* A contract handle
              A contract notation as given to an RPC or inside scripts. Can
              be a base58 public key hash, representing the implicit
              contract of this identity, or a base58 originated contract
              hash. */,
         "fee":
           /* Amount in mutez */
           integer ∈ ]-2^31-2, 2^31+2[ || string,
         "counter": integer ∈ ]-2^31-2, 2^31+2[,
         "operations":
           [ { /* Reveal operation */
               "kind": "reveal",
               "public_key":
                 string
                 /* A Secp256k1 or Ed25519 public key (Base58Check-encoded) */ }
             || { /* Transaction operation */
                  "kind": "transaction",
                  "amount":
                    /* Amount in mutez */
                    integer ∈ ]-2^31-2, 2^31+2[ || string,
                  "destination":
                    string
                    /* A contract handle
                       A contract notation as given to an RPC or inside
                       scripts. Can be a base58 public key hash,
                       representing the implicit contract of this identity,
                       or a base58 originated contract hash. */,
                  "parameters"?: $micheline.michelson_v1.expression }
             || { /* Origination operation */
                  "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 } }
             || { /* Delegation operation */
                  "kind": "delegation",
                  "delegate"?:
                    string
                    /* A Secp256k1 or Ed25519 public key hash
                       (Base58Check-encoded) */ } ... ],
         "signature"?:
           string
           /* A Secp256k1 or Ed25519 signature (Base58Check-encoded) */ }
    || { "branch": string /* A Tezos block ID (Base58Check-encoded) */,
         "chain": "activate",
         "hash": string /* A Tezos protocol ID (Base58Check-encoded) */,
         "signature"?:
           string
           /* A Secp256k1 or Ed25519 signature (Base58Check-encoded) */ }
       || { "branch": string /* A Tezos block ID (Base58Check-encoded) */,
            "chain": "activate_testchain",
            "hash": string /* A Tezos protocol ID (Base58Check-encoded) */,
            "signature"?:
              string
              /* A Secp256k1 or Ed25519 signature (Base58Check-encoded) */ }
    || { "branch": string /* A Tezos block ID (Base58Check-encoded) */,
         "operations":
           [ { "kind": "seed_nonce_revelation",
               "level": integer ∈ ]-2^31-2, 2^31+2[,
               "nonce": /^[a-zA-Z0-9]+$/ }
             || { "kind": "double_endorsement_evidence",
                  "op1": $operation,
                  "op2": $operation }
             || { "kind": "double_baking_evidence",
                  "op1":
                    { "level": integer ∈ ]-2^31-2, 2^31+2[,
                      "proto": integer ∈ ]0, 255[,
                      "predecessor":
                        string
                        /* A Tezos block ID (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) */ },
                  "op2":
                    { "level": integer ∈ ]-2^31-2, 2^31+2[,
                      "proto": integer ∈ ]0, 255[,
                      "predecessor":
                        string
                        /* A Tezos block ID (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) */ } }
             || { "kind": "activation",
                  "pkh":
                    string
                    /* An Ed25519 public key hash (Base58Check-encoded) */,
                  "secret": /^[a-zA-Z0-9]+$/ } ... ],
         "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
  { "operation": /^[a-zA-Z0-9]+$/ /* hex encoded operation */ }

POST /blocks/<block_id>/proto/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 /blocks/<block_id>/proto/helpers/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 }
  $micheline.michelson_v1.expression:
    /* Micheline expression (michelson_v1 variant) */
    { "int": string }
    || { "string": string }
    || [ $micheline.michelson_v1.expression ... ]
    || { "prim":
           "BALANCE"
           | "LSL"
           | "LOOP_LEFT"
           | "CREATE_ACCOUNT"
           | "LOOP"
           | "LT"
           | "False"
           | "DUP"
           | "NOW"
           | "ABS"
           | "ADD"
           | "contract"
           | "big_map"
           | "MUL"
           | "ITER"
           | "EDIV"
           | "Unit"
           | "SOME"
           | "Pair"
           | "string"
           | "INT"
           | "MAP"
           | "XOR"
           | "return"
           | "bool"
           | "CONCAT"
           | "UPDATE"
           | "SOURCE"
           | "code"
           | "AMOUNT"
           | "CONS"
           | "CHECK_SIGNATURE"
           | "set"
           | "FAIL"
           | "UNIT"
           | "NEG"
           | "SIZE"
           | "key_hash"
           | "CREATE_CONTRACT"
           | "timestamp"
           | "True"
           | "Right"
           | "H"
           | "OR"
           | "LSR"
           | "CAR"
           | "EMPTY_MAP"
           | "AND"
           | "nat"
           | "HASH_KEY"
           | "RIGHT"
           | "MEM"
           | "NONE"
           | "NIL"
           | "Left"
           | "DEFAULT_ACCOUNT"
           | "GET"
           | "NOT"
           | "list"
           | "NEQ"
           | "key"
           | "EQ"
           | "SWAP"
           | "TRANSFER_TOKENS"
           | "LEFT"
           | "SELF"
           | "COMPARE"
           | "DIP"
           | "MANAGER"
           | "PUSH"
           | "LE"
           | "SUB"
           | "IF_NONE"
           | "Elt"
           | "option"
           | "tez"
           | "STEPS_TO_QUOTA"
           | "unit"
           | "EMPTY_SET"
           | "GE"
           | "PAIR"
           | "pair"
           | "IF"
           | "signature"
           | "or"
           | "Some"
           | "IF_CONS"
           | "parameter"
           | "LAMBDA"
           | "GT"
           | "REDUCE"
           | "int"
           | "None"
           | "map"
           | "EXEC"
           | "DROP"
           | "IF_LEFT"
           | "lambda"
           | "storage"
           | "CDR",
         "args": [ $micheline.michelson_v1.expression ... ],
         "annot"?: string }
  { "hash": string }

POST /blocks/<block_id>/proto/helpers/level/<block_level>

...

  { "offset"?: integer ∈ ]-2^31-2, 2^31+2[ }
  { "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 }

POST /blocks/<block_id>/proto/helpers/levels/<block_cycle>

Levels of a cycle

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

POST /blocks/<block_id>/proto/helpers/minimal_timestamp

Minimal timestamp for the next block.

  { "priority"?: integer ∈ ]-2^30-2, 2^30+2[ }
  { "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

POST /blocks/<block_id>/proto/helpers/parse/block

Parse a block

  { "level": integer ∈ ]-2^31-2, 2^31+2[,
    "proto": integer ∈ ]0, 255[,
    "predecessor": string /* A Tezos block ID (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
  { "priority": integer ∈ ]0, 2^16-1[,
    "proof_of_work_nonce": /^[a-zA-Z0-9]+$/,
    "seed_nonce_hash"?: string /* A nonce hash (Base58Check-encoded) */ }

POST /blocks/<block_id>/proto/helpers/parse/operations

Parse operations

  { "operations":
      [ { "branch": string /* A Tezos block ID (Base58Check-encoded) */,
          "data": /^[a-zA-Z0-9]+$/ } ... ],
    "check_signature"?: boolean }
  [ $operation ... ]
  $operation:
    { "branch": string /* A Tezos block ID (Base58Check-encoded) */,
      "kind": "endorsement",
      "block": string /* A Tezos block ID (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) */ }
    || { "branch": string /* A Tezos block ID (Base58Check-encoded) */,
         "source":
           string
           /* A Secp256k1 or Ed25519 public key hash (Base58Check-encoded) */,
         "kind": "proposal",
         "period": integer ∈ ]-2^31-2, 2^31+2[,
         "proposals":
           [ string
           /* A Tezos protocol ID (Base58Check-encoded) */ ... ],
         "signature"?:
           string
           /* A Secp256k1 or Ed25519 signature (Base58Check-encoded) */ }
       || { "branch": string /* A Tezos block ID (Base58Check-encoded) */,
            "source":
              string
              /* A Secp256k1 or Ed25519 public key hash
                 (Base58Check-encoded) */,
            "kind": "ballot",
            "period": integer ∈ ]-2^31-2, 2^31+2[,
            "proposal":
              string
              /* A Tezos protocol ID (Base58Check-encoded) */,
            "ballot": "nay" | "yay" | "pass",
            "signature"?:
              string
              /* A Secp256k1 or Ed25519 signature (Base58Check-encoded) */ }
    || { "branch": string /* A Tezos block ID (Base58Check-encoded) */,
         "kind": "manager",
         "source":
           string
           /* A contract handle
              A contract notation as given to an RPC or inside scripts. Can
              be a base58 public key hash, representing the implicit
              contract of this identity, or a base58 originated contract
              hash. */,
         "fee":
           /* Amount in mutez */
           integer ∈ ]-2^31-2, 2^31+2[ || string,
         "counter": integer ∈ ]-2^31-2, 2^31+2[,
         "operations":
           [ { /* Reveal operation */
               "kind": "reveal",
               "public_key":
                 string
                 /* A Secp256k1 or Ed25519 public key (Base58Check-encoded) */ }
             || { /* Transaction operation */
                  "kind": "transaction",
                  "amount":
                    /* Amount in mutez */
                    integer ∈ ]-2^31-2, 2^31+2[ || string,
                  "destination":
                    string
                    /* A contract handle
                       A contract notation as given to an RPC or inside
                       scripts. Can be a base58 public key hash,
                       representing the implicit contract of this identity,
                       or a base58 originated contract hash. */,
                  "parameters"?: $micheline.michelson_v1.expression }
             || { /* Origination operation */
                  "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 } }
             || { /* Delegation operation */
                  "kind": "delegation",
                  "delegate"?:
                    string
                    /* A Secp256k1 or Ed25519 public key hash
                       (Base58Check-encoded) */ } ... ],
         "signature"?:
           string
           /* A Secp256k1 or Ed25519 signature (Base58Check-encoded) */ }
    || { "branch": string /* A Tezos block ID (Base58Check-encoded) */,
         "chain": "activate",
         "hash": string /* A Tezos protocol ID (Base58Check-encoded) */,
         "signature"?:
           string
           /* A Secp256k1 or Ed25519 signature (Base58Check-encoded) */ }
       || { "branch": string /* A Tezos block ID (Base58Check-encoded) */,
            "chain": "activate_testchain",
            "hash": string /* A Tezos protocol ID (Base58Check-encoded) */,
            "signature"?:
              string
              /* A Secp256k1 or Ed25519 signature (Base58Check-encoded) */ }
    || { "branch": string /* A Tezos block ID (Base58Check-encoded) */,
         "operations":
           [ { "kind": "seed_nonce_revelation",
               "level": integer ∈ ]-2^31-2, 2^31+2[,
               "nonce": /^[a-zA-Z0-9]+$/ }
             || { "kind": "double_endorsement_evidence",
                  "op1": $operation,
                  "op2": $operation }
             || { "kind": "double_baking_evidence",
                  "op1":
                    { "level": integer ∈ ]-2^31-2, 2^31+2[,
                      "proto": integer ∈ ]0, 255[,
                      "predecessor":
                        string
                        /* A Tezos block ID (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) */ },
                  "op2":
                    { "level": integer ∈ ]-2^31-2, 2^31+2[,
                      "proto": integer ∈ ]0, 255[,
                      "predecessor":
                        string
                        /* A Tezos block ID (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) */ } }
             || { "kind": "activation",
                  "pkh":
                    string
                    /* An Ed25519 public key hash (Base58Check-encoded) */,
                  "secret": /^[a-zA-Z0-9]+$/ } ... ],
         "signature"?:
           string
           /* A Secp256k1 or Ed25519 signature (Base58Check-encoded) */ }
  $micheline.michelson_v1.expression:
    /* Micheline expression (michelson_v1 variant) */
    { "int": string }
    || { "string": string }
    || [ $micheline.michelson_v1.expression ... ]
    || { "prim":
           "BALANCE"
           | "LSL"
           | "LOOP_LEFT"
           | "CREATE_ACCOUNT"
           | "LOOP"
           | "LT"
           | "False"
           | "DUP"
           | "NOW"
           | "ABS"
           | "ADD"
           | "contract"
           | "big_map"
           | "MUL"
           | "ITER"
           | "EDIV"
           | "Unit"
           | "SOME"
           | "Pair"
           | "string"
           | "INT"
           | "MAP"
           | "XOR"
           | "return"
           | "bool"
           | "CONCAT"
           | "UPDATE"
           | "SOURCE"
           | "code"
           | "AMOUNT"
           | "CONS"
           | "CHECK_SIGNATURE"
           | "set"
           | "FAIL"
           | "UNIT"
           | "NEG"
           | "SIZE"
           | "key_hash"
           | "CREATE_CONTRACT"
           | "timestamp"
           | "True"
           | "Right"
           | "H"
           | "OR"
           | "LSR"
           | "CAR"
           | "EMPTY_MAP"
           | "AND"
           | "nat"
           | "HASH_KEY"
           | "RIGHT"
           | "MEM"
           | "NONE"
           | "NIL"
           | "Left"
           | "DEFAULT_ACCOUNT"
           | "GET"
           | "NOT"
           | "list"
           | "NEQ"
           | "key"
           | "EQ"
           | "SWAP"
           | "TRANSFER_TOKENS"
           | "LEFT"
           | "SELF"
           | "COMPARE"
           | "DIP"
           | "MANAGER"
           | "PUSH"
           | "LE"
           | "SUB"
           | "IF_NONE"
           | "Elt"
           | "option"
           | "tez"
           | "STEPS_TO_QUOTA"
           | "unit"
           | "EMPTY_SET"
           | "GE"
           | "PAIR"
           | "pair"
           | "IF"
           | "signature"
           | "or"
           | "Some"
           | "IF_CONS"
           | "parameter"
           | "LAMBDA"
           | "GT"
           | "REDUCE"
           | "int"
           | "None"
           | "map"
           | "EXEC"
           | "DROP"
           | "IF_LEFT"
           | "lambda"
           | "storage"
           | "CDR",
         "args": [ $micheline.michelson_v1.expression ... ],
         "annot"?: string }
  $timestamp:
    /* RFC 3339 formatted timestamp
       A date in human readble form as specified in RFC 3339. */
    string

POST /blocks/<block_id>/proto/helpers/rights/baking

List delegates allowed to bake for the next level, ordered by priority.

  { "max_priority"?: integer ∈ ]-2^30-2, 2^30+2[ }
  { "level": integer ∈ ]-2^31-2, 2^31+2[,
    "baking_rights":
      [ { "delegate":
            string
            /* A Secp256k1 or Ed25519 public key hash (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

POST /blocks/<block_id>/proto/helpers/rights/baking/delegate/<Signature.Public_key_hash>

Future baking rights for a given delegate.

  { "max_priority"?: integer ∈ ]-2^30-2, 2^30+2[,
    "first_level"?: integer ∈ ]-2^31-2, 2^31+2[,
    "last_level"?: integer ∈ ]-2^31-2, 2^31+2[ }
  [ { "level": integer ∈ ]-2^31-2, 2^31+2[,
      "priority": integer ∈ ]-2^30-2, 2^30+2[,
      "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

POST /blocks/<block_id>/proto/helpers/rights/baking/level/<block_level>

List delegates allowed to bake for a given level, ordered by priority.

  { "max_priority"?: integer ∈ ]-2^30-2, 2^30+2[ }
  { "level": integer ∈ ]-2^31-2, 2^31+2[,
    "delegates":
      [ string
      /* A Secp256k1 or Ed25519 public key hash (Base58Check-encoded) */ ... ] }

POST /blocks/<block_id>/proto/helpers/rights/endorsement

List delegates allowed to endorse for the current block.

  { "max_priority"?: integer ∈ ]-2^30-2, 2^30+2[ }
  { "level": integer ∈ ]-2^31-2, 2^31+2[,
    "delegates":
      [ string
      /* A Secp256k1 or Ed25519 public key hash (Base58Check-encoded) */ ... ] }

POST /blocks/<block_id>/proto/helpers/rights/endorsement/delegate/<Signature.Public_key_hash>

Compute endorsement rights for a given delegate.

  { "max_priority"?: integer ∈ ]-2^30-2, 2^30+2[,
    "first_level"?: integer ∈ ]-2^31-2, 2^31+2[,
    "last_level"?: integer ∈ ]-2^31-2, 2^31+2[ }
  [ { "level": integer ∈ ]-2^31-2, 2^31+2[,
      "priority": integer ∈ ]-2^30-2, 2^30+2[ } ... ]

POST /blocks/<block_id>/proto/helpers/rights/endorsement/level/<block_level>

List delegates allowed to endorse blocks for a given level.

  { "max_priority"?: integer ∈ ]-2^30-2, 2^30+2[ }
  { "level": integer ∈ ]-2^31-2, 2^31+2[,
    "delegates":
      [ string
      /* A Secp256k1 or Ed25519 public key hash (Base58Check-encoded) */ ... ] }

POST /blocks/<block_id>/proto/helpers/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":
      string
      /* A contract handle
         A contract notation as given to an RPC or inside scripts. Can be a
         base58 public key hash, representing the implicit contract of this
         identity, or a base58 originated contract hash. */,
    "origination_nonce"?:
      { "operation":
          string
          /* A Tezos operation ID (Base58Check-encoded) */,
        "index"?: integer ∈ ]-2^31-2, 2^31+2[ } }
  $micheline.michelson_v1.expression:
    /* Micheline expression (michelson_v1 variant) */
    { "int": string }
    || { "string": string }
    || [ $micheline.michelson_v1.expression ... ]
    || { "prim":
           "BALANCE"
           | "LSL"
           | "LOOP_LEFT"
           | "CREATE_ACCOUNT"
           | "LOOP"
           | "LT"
           | "False"
           | "DUP"
           | "NOW"
           | "ABS"
           | "ADD"
           | "contract"
           | "big_map"
           | "MUL"
           | "ITER"
           | "EDIV"
           | "Unit"
           | "SOME"
           | "Pair"
           | "string"
           | "INT"
           | "MAP"
           | "XOR"
           | "return"
           | "bool"
           | "CONCAT"
           | "UPDATE"
           | "SOURCE"
           | "code"
           | "AMOUNT"
           | "CONS"
           | "CHECK_SIGNATURE"
           | "set"
           | "FAIL"
           | "UNIT"
           | "NEG"
           | "SIZE"
           | "key_hash"
           | "CREATE_CONTRACT"
           | "timestamp"
           | "True"
           | "Right"
           | "H"
           | "OR"
           | "LSR"
           | "CAR"
           | "EMPTY_MAP"
           | "AND"
           | "nat"
           | "HASH_KEY"
           | "RIGHT"
           | "MEM"
           | "NONE"
           | "NIL"
           | "Left"
           | "DEFAULT_ACCOUNT"
           | "GET"
           | "NOT"
           | "list"
           | "NEQ"
           | "key"
           | "EQ"
           | "SWAP"
           | "TRANSFER_TOKENS"
           | "LEFT"
           | "SELF"
           | "COMPARE"
           | "DIP"
           | "MANAGER"
           | "PUSH"
           | "LE"
           | "SUB"
           | "IF_NONE"
           | "Elt"
           | "option"
           | "tez"
           | "STEPS_TO_QUOTA"
           | "unit"
           | "EMPTY_SET"
           | "GE"
           | "PAIR"
           | "pair"
           | "IF"
           | "signature"
           | "or"
           | "Some"
           | "IF_CONS"
           | "parameter"
           | "LAMBDA"
           | "GT"
           | "REDUCE"
           | "int"
           | "None"
           | "map"
           | "EXEC"
           | "DROP"
           | "IF_LEFT"
           | "lambda"
           | "storage"
           | "CDR",
         "args": [ $micheline.michelson_v1.expression ... ],
         "annot"?: string }
  { "storage": $micheline.michelson_v1.expression,
    "output": $micheline.michelson_v1.expression,
    "big_map_diff"?:
      [ [ $micheline.michelson_v1.expression,
          $micheline.michelson_v1.expression || null ] ... ] }
  $micheline.michelson_v1.expression:
    /* Micheline expression (michelson_v1 variant) */
    { "int": string }
    || { "string": string }
    || [ $micheline.michelson_v1.expression ... ]
    || { "prim":
           "BALANCE"
           | "LSL"
           | "LOOP_LEFT"
           | "CREATE_ACCOUNT"
           | "LOOP"
           | "LT"
           | "False"
           | "DUP"
           | "NOW"
           | "ABS"
           | "ADD"
           | "contract"
           | "big_map"
           | "MUL"
           | "ITER"
           | "EDIV"
           | "Unit"
           | "SOME"
           | "Pair"
           | "string"
           | "INT"
           | "MAP"
           | "XOR"
           | "return"
           | "bool"
           | "CONCAT"
           | "UPDATE"
           | "SOURCE"
           | "code"
           | "AMOUNT"
           | "CONS"
           | "CHECK_SIGNATURE"
           | "set"
           | "FAIL"
           | "UNIT"
           | "NEG"
           | "SIZE"
           | "key_hash"
           | "CREATE_CONTRACT"
           | "timestamp"
           | "True"
           | "Right"
           | "H"
           | "OR"
           | "LSR"
           | "CAR"
           | "EMPTY_MAP"
           | "AND"
           | "nat"
           | "HASH_KEY"
           | "RIGHT"
           | "MEM"
           | "NONE"
           | "NIL"
           | "Left"
           | "DEFAULT_ACCOUNT"
           | "GET"
           | "NOT"
           | "list"
           | "NEQ"
           | "key"
           | "EQ"
           | "SWAP"
           | "TRANSFER_TOKENS"
           | "LEFT"
           | "SELF"
           | "COMPARE"
           | "DIP"
           | "MANAGER"
           | "PUSH"
           | "LE"
           | "SUB"
           | "IF_NONE"
           | "Elt"
           | "option"
           | "tez"
           | "STEPS_TO_QUOTA"
           | "unit"
           | "EMPTY_SET"
           | "GE"
           | "PAIR"
           | "pair"
           | "IF"
           | "signature"
           | "or"
           | "Some"
           | "IF_CONS"
           | "parameter"
           | "LAMBDA"
           | "GT"
           | "REDUCE"
           | "int"
           | "None"
           | "map"
           | "EXEC"
           | "DROP"
           | "IF_LEFT"
           | "lambda"
           | "storage"
           | "CDR",
         "args": [ $micheline.michelson_v1.expression ... ],
         "annot"?: string }

POST /blocks/<block_id>/proto/helpers/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":
      string
      /* A contract handle
         A contract notation as given to an RPC or inside scripts. Can be a
         base58 public key hash, representing the implicit contract of this
         identity, or a base58 originated contract hash. */,
    "origination_nonce"?:
      { "operation":
          string
          /* A Tezos operation ID (Base58Check-encoded) */,
        "index"?: integer ∈ ]-2^31-2, 2^31+2[ } }
  $micheline.michelson_v1.expression:
    /* Micheline expression (michelson_v1 variant) */
    { "int": string }
    || { "string": string }
    || [ $micheline.michelson_v1.expression ... ]
    || { "prim":
           "BALANCE"
           | "LSL"
           | "LOOP_LEFT"
           | "CREATE_ACCOUNT"
           | "LOOP"
           | "LT"
           | "False"
           | "DUP"
           | "NOW"
           | "ABS"
           | "ADD"
           | "contract"
           | "big_map"
           | "MUL"
           | "ITER"
           | "EDIV"
           | "Unit"
           | "SOME"
           | "Pair"
           | "string"
           | "INT"
           | "MAP"
           | "XOR"
           | "return"
           | "bool"
           | "CONCAT"
           | "UPDATE"
           | "SOURCE"
           | "code"
           | "AMOUNT"
           | "CONS"
           | "CHECK_SIGNATURE"
           | "set"
           | "FAIL"
           | "UNIT"
           | "NEG"
           | "SIZE"
           | "key_hash"
           | "CREATE_CONTRACT"
           | "timestamp"
           | "True"
           | "Right"
           | "H"
           | "OR"
           | "LSR"
           | "CAR"
           | "EMPTY_MAP"
           | "AND"
           | "nat"
           | "HASH_KEY"
           | "RIGHT"
           | "MEM"
           | "NONE"
           | "NIL"
           | "Left"
           | "DEFAULT_ACCOUNT"
           | "GET"
           | "NOT"
           | "list"
           | "NEQ"
           | "key"
           | "EQ"
           | "SWAP"
           | "TRANSFER_TOKENS"
           | "LEFT"
           | "SELF"
           | "COMPARE"
           | "DIP"
           | "MANAGER"
           | "PUSH"
           | "LE"
           | "SUB"
           | "IF_NONE"
           | "Elt"
           | "option"
           | "tez"
           | "STEPS_TO_QUOTA"
           | "unit"
           | "EMPTY_SET"
           | "GE"
           | "PAIR"
           | "pair"
           | "IF"
           | "signature"
           | "or"
           | "Some"
           | "IF_CONS"
           | "parameter"
           | "LAMBDA"
           | "GT"
           | "REDUCE"
           | "int"
           | "None"
           | "map"
           | "EXEC"
           | "DROP"
           | "IF_LEFT"
           | "lambda"
           | "storage"
           | "CDR",
         "args": [ $micheline.michelson_v1.expression ... ],
         "annot"?: string }
  { "storage": $micheline.michelson_v1.expression,
    "output": $micheline.michelson_v1.expression,
    "trace":
      [ { "location": $micheline.location,
          "gas": integer ∈ ]-2^30-2, 2^30+2[,
          "stack": [ $micheline.michelson_v1.expression ... ] } ... ],
    "big_map_diff"?:
      [ [ $micheline.michelson_v1.expression,
          $micheline.michelson_v1.expression || null ] ... ] }
  $micheline.michelson_v1.expression:
    /* Micheline expression (michelson_v1 variant) */
    { "int": string }
    || { "string": string }
    || [ $micheline.michelson_v1.expression ... ]
    || { "prim":
           "BALANCE"
           | "LSL"
           | "LOOP_LEFT"
           | "CREATE_ACCOUNT"
           | "LOOP"
           | "LT"
           | "False"
           | "DUP"
           | "NOW"
           | "ABS"
           | "ADD"
           | "contract"
           | "big_map"
           | "MUL"
           | "ITER"
           | "EDIV"
           | "Unit"
           | "SOME"
           | "Pair"
           | "string"
           | "INT"
           | "MAP"
           | "XOR"
           | "return"
           | "bool"
           | "CONCAT"
           | "UPDATE"
           | "SOURCE"
           | "code"
           | "AMOUNT"
           | "CONS"
           | "CHECK_SIGNATURE"
           | "set"
           | "FAIL"
           | "UNIT"
           | "NEG"
           | "SIZE"
           | "key_hash"
           | "CREATE_CONTRACT"
           | "timestamp"
           | "True"
           | "Right"
           | "H"
           | "OR"
           | "LSR"
           | "CAR"
           | "EMPTY_MAP"
           | "AND"
           | "nat"
           | "HASH_KEY"
           | "RIGHT"
           | "MEM"
           | "NONE"
           | "NIL"
           | "Left"
           | "DEFAULT_ACCOUNT"
           | "GET"
           | "NOT"
           | "list"
           | "NEQ"
           | "key"
           | "EQ"
           | "SWAP"
           | "TRANSFER_TOKENS"
           | "LEFT"
           | "SELF"
           | "COMPARE"
           | "DIP"
           | "MANAGER"
           | "PUSH"
           | "LE"
           | "SUB"
           | "IF_NONE"
           | "Elt"
           | "option"
           | "tez"
           | "STEPS_TO_QUOTA"
           | "unit"
           | "EMPTY_SET"
           | "GE"
           | "PAIR"
           | "pair"
           | "IF"
           | "signature"
           | "or"
           | "Some"
           | "IF_CONS"
           | "parameter"
           | "LAMBDA"
           | "GT"
           | "REDUCE"
           | "int"
           | "None"
           | "map"
           | "EXEC"
           | "DROP"
           | "IF_LEFT"
           | "lambda"
           | "storage"
           | "CDR",
         "args": [ $micheline.michelson_v1.expression ... ],
         "annot"?: 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[

POST /blocks/<block_id>/proto/helpers/typecheck_code

Typecheck a piece of code in the current context

  $micheline.michelson_v1.expression
  $micheline.michelson_v1.expression:
    /* Micheline expression (michelson_v1 variant) */
    { "int": string }
    || { "string": string }
    || [ $micheline.michelson_v1.expression ... ]
    || { "prim":
           "BALANCE"
           | "LSL"
           | "LOOP_LEFT"
           | "CREATE_ACCOUNT"
           | "LOOP"
           | "LT"
           | "False"
           | "DUP"
           | "NOW"
           | "ABS"
           | "ADD"
           | "contract"
           | "big_map"
           | "MUL"
           | "ITER"
           | "EDIV"
           | "Unit"
           | "SOME"
           | "Pair"
           | "string"
           | "INT"
           | "MAP"
           | "XOR"
           | "return"
           | "bool"
           | "CONCAT"
           | "UPDATE"
           | "SOURCE"
           | "code"
           | "AMOUNT"
           | "CONS"
           | "CHECK_SIGNATURE"
           | "set"
           | "FAIL"
           | "UNIT"
           | "NEG"
           | "SIZE"
           | "key_hash"
           | "CREATE_CONTRACT"
           | "timestamp"
           | "True"
           | "Right"
           | "H"
           | "OR"
           | "LSR"
           | "CAR"
           | "EMPTY_MAP"
           | "AND"
           | "nat"
           | "HASH_KEY"
           | "RIGHT"
           | "MEM"
           | "NONE"
           | "NIL"
           | "Left"
           | "DEFAULT_ACCOUNT"
           | "GET"
           | "NOT"
           | "list"
           | "NEQ"
           | "key"
           | "EQ"
           | "SWAP"
           | "TRANSFER_TOKENS"
           | "LEFT"
           | "SELF"
           | "COMPARE"
           | "DIP"
           | "MANAGER"
           | "PUSH"
           | "LE"
           | "SUB"
           | "IF_NONE"
           | "Elt"
           | "option"
           | "tez"
           | "STEPS_TO_QUOTA"
           | "unit"
           | "EMPTY_SET"
           | "GE"
           | "PAIR"
           | "pair"
           | "IF"
           | "signature"
           | "or"
           | "Some"
           | "IF_CONS"
           | "parameter"
           | "LAMBDA"
           | "GT"
           | "REDUCE"
           | "int"
           | "None"
           | "map"
           | "EXEC"
           | "DROP"
           | "IF_LEFT"
           | "lambda"
           | "storage"
           | "CDR",
         "args": [ $micheline.michelson_v1.expression ... ],
         "annot"?: string }
  [ { "location": $micheline.location,
      "stackBefore": [ $micheline.michelson_v1.expression ... ],
      "stackAfter": [ $micheline.michelson_v1.expression ... ] } ... ]
  $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": string }
    || { "string": string }
    || [ $micheline.michelson_v1.expression ... ]
    || { "prim":
           "BALANCE"
           | "LSL"
           | "LOOP_LEFT"
           | "CREATE_ACCOUNT"
           | "LOOP"
           | "LT"
           | "False"
           | "DUP"
           | "NOW"
           | "ABS"
           | "ADD"
           | "contract"
           | "big_map"
           | "MUL"
           | "ITER"
           | "EDIV"
           | "Unit"
           | "SOME"
           | "Pair"
           | "string"
           | "INT"
           | "MAP"
           | "XOR"
           | "return"
           | "bool"
           | "CONCAT"
           | "UPDATE"
           | "SOURCE"
           | "code"
           | "AMOUNT"
           | "CONS"
           | "CHECK_SIGNATURE"
           | "set"
           | "FAIL"
           | "UNIT"
           | "NEG"
           | "SIZE"
           | "key_hash"
           | "CREATE_CONTRACT"
           | "timestamp"
           | "True"
           | "Right"
           | "H"
           | "OR"
           | "LSR"
           | "CAR"
           | "EMPTY_MAP"
           | "AND"
           | "nat"
           | "HASH_KEY"
           | "RIGHT"
           | "MEM"
           | "NONE"
           | "NIL"
           | "Left"
           | "DEFAULT_ACCOUNT"
           | "GET"
           | "NOT"
           | "list"
           | "NEQ"
           | "key"
           | "EQ"
           | "SWAP"
           | "TRANSFER_TOKENS"
           | "LEFT"
           | "SELF"
           | "COMPARE"
           | "DIP"
           | "MANAGER"
           | "PUSH"
           | "LE"
           | "SUB"
           | "IF_NONE"
           | "Elt"
           | "option"
           | "tez"
           | "STEPS_TO_QUOTA"
           | "unit"
           | "EMPTY_SET"
           | "GE"
           | "PAIR"
           | "pair"
           | "IF"
           | "signature"
           | "or"
           | "Some"
           | "IF_CONS"
           | "parameter"
           | "LAMBDA"
           | "GT"
           | "REDUCE"
           | "int"
           | "None"
           | "map"
           | "EXEC"
           | "DROP"
           | "IF_LEFT"
           | "lambda"
           | "storage"
           | "CDR",
         "args": [ $micheline.michelson_v1.expression ... ],
         "annot"?: string }

POST /blocks/<block_id>/proto/helpers/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 }
  $micheline.michelson_v1.expression:
    /* Micheline expression (michelson_v1 variant) */
    { "int": string }
    || { "string": string }
    || [ $micheline.michelson_v1.expression ... ]
    || { "prim":
           "BALANCE"
           | "LSL"
           | "LOOP_LEFT"
           | "CREATE_ACCOUNT"
           | "LOOP"
           | "LT"
           | "False"
           | "DUP"
           | "NOW"
           | "ABS"
           | "ADD"
           | "contract"
           | "big_map"
           | "MUL"
           | "ITER"
           | "EDIV"
           | "Unit"
           | "SOME"
           | "Pair"
           | "string"
           | "INT"
           | "MAP"
           | "XOR"
           | "return"
           | "bool"
           | "CONCAT"
           | "UPDATE"
           | "SOURCE"
           | "code"
           | "AMOUNT"
           | "CONS"
           | "CHECK_SIGNATURE"
           | "set"
           | "FAIL"
           | "UNIT"
           | "NEG"
           | "SIZE"
           | "key_hash"
           | "CREATE_CONTRACT"
           | "timestamp"
           | "True"
           | "Right"
           | "H"
           | "OR"
           | "LSR"
           | "CAR"
           | "EMPTY_MAP"
           | "AND"
           | "nat"
           | "HASH_KEY"
           | "RIGHT"
           | "MEM"
           | "NONE"
           | "NIL"
           | "Left"
           | "DEFAULT_ACCOUNT"
           | "GET"
           | "NOT"
           | "list"
           | "NEQ"
           | "key"
           | "EQ"
           | "SWAP"
           | "TRANSFER_TOKENS"
           | "LEFT"
           | "SELF"
           | "COMPARE"
           | "DIP"
           | "MANAGER"
           | "PUSH"
           | "LE"
           | "SUB"
           | "IF_NONE"
           | "Elt"
           | "option"
           | "tez"
           | "STEPS_TO_QUOTA"
           | "unit"
           | "EMPTY_SET"
           | "GE"
           | "PAIR"
           | "pair"
           | "IF"
           | "signature"
           | "or"
           | "Some"
           | "IF_CONS"
           | "parameter"
           | "LAMBDA"
           | "GT"
           | "REDUCE"
           | "int"
           | "None"
           | "map"
           | "EXEC"
           | "DROP"
           | "IF_LEFT"
           | "lambda"
           | "storage"
           | "CDR",
         "args": [ $micheline.michelson_v1.expression ... ],
         "annot"?: string }

POST /blocks/<block_id>/proto/operations

All the operations of the block (fully decoded).

  [ [ { "hash": string /* A Tezos operation ID (Base58Check-encoded) */,
        "branch": string /* A Tezos block ID (Base58Check-encoded) */,
        "kind": "endorsement",
        "block": string /* A Tezos block ID (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) */ }
      || { "hash": string /* A Tezos operation ID (Base58Check-encoded) */,
           "branch": string /* A Tezos block ID (Base58Check-encoded) */,
           "source":
             string
             /* A Secp256k1 or Ed25519 public key hash
                (Base58Check-encoded) */,
           "kind": "proposal",
           "period": integer ∈ ]-2^31-2, 2^31+2[,
           "proposals":
             [ string
             /* A Tezos protocol ID (Base58Check-encoded) */ ... ],
           "signature"?:
             string
             /* A Secp256k1 or Ed25519 signature (Base58Check-encoded) */ }
      || { "hash": string /* A Tezos operation ID (Base58Check-encoded) */,
           "branch": string /* A Tezos block ID (Base58Check-encoded) */,
           "source":
             string
             /* A Secp256k1 or Ed25519 public key hash
                (Base58Check-encoded) */,
           "kind": "ballot",
           "period": integer ∈ ]-2^31-2, 2^31+2[,
           "proposal":
             string
             /* A Tezos protocol ID (Base58Check-encoded) */,
           "ballot": "nay" | "yay" | "pass",
           "signature"?:
             string
             /* A Secp256k1 or Ed25519 signature (Base58Check-encoded) */ }
      || { "hash": string /* A Tezos operation ID (Base58Check-encoded) */,
           "branch": string /* A Tezos block ID (Base58Check-encoded) */,
           "kind": "manager",
           "source":
             string
             /* A contract handle
                A contract notation as given to an RPC or inside scripts.
                Can be a base58 public key hash, representing the implicit
                contract of this identity, or a base58 originated contract
                hash. */,
           "fee":
             /* Amount in mutez */
             integer ∈ ]-2^31-2, 2^31+2[ || string,
           "counter": integer ∈ ]-2^31-2, 2^31+2[,
           "operations":
             [ { /* Reveal operation */
                 "kind": "reveal",
                 "public_key":
                   string
                   /* A Secp256k1 or Ed25519 public key
                      (Base58Check-encoded) */ }
               || { /* Transaction operation */
                    "kind": "transaction",
                    "amount":
                      /* Amount in mutez */
                      integer ∈ ]-2^31-2, 2^31+2[ || string,
                    "destination":
                      string
                      /* A contract handle
                         A contract notation as given to an RPC or inside
                         scripts. Can be a base58 public key hash,
                         representing the implicit contract of this
                         identity, or a base58 originated contract hash. */,
                    "parameters"?: $micheline.michelson_v1.expression }
               || { /* Origination operation */
                    "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 } }
               || { /* Delegation operation */
                    "kind": "delegation",
                    "delegate"?:
                      string
                      /* A Secp256k1 or Ed25519 public key hash
                         (Base58Check-encoded) */ } ... ],
           "signature"?:
             string
             /* A Secp256k1 or Ed25519 signature (Base58Check-encoded) */ }
      || { "hash": string /* A Tezos operation ID (Base58Check-encoded) */,
           "branch": string /* A Tezos block ID (Base58Check-encoded) */,
           "chain": "activate",
           "hash": string /* A Tezos protocol ID (Base58Check-encoded) */,
           "signature"?:
             string
             /* A Secp256k1 or Ed25519 signature (Base58Check-encoded) */ }
      || { "hash": string /* A Tezos operation ID (Base58Check-encoded) */,
           "branch": string /* A Tezos block ID (Base58Check-encoded) */,
           "chain": "activate_testchain",
           "hash": string /* A Tezos protocol ID (Base58Check-encoded) */,
           "signature"?:
             string
             /* A Secp256k1 or Ed25519 signature (Base58Check-encoded) */ }
      || { "hash": string /* A Tezos operation ID (Base58Check-encoded) */,
           "branch": string /* A Tezos block ID (Base58Check-encoded) */,
           "operations":
             [ { "kind": "seed_nonce_revelation",
                 "level": integer ∈ ]-2^31-2, 2^31+2[,
                 "nonce": /^[a-zA-Z0-9]+$/ }
               || { "kind": "double_endorsement_evidence",
                    "op1": $operation,
                    "op2": $operation }
               || { "kind": "double_baking_evidence",
                    "op1":
                      { "level": integer ∈ ]-2^31-2, 2^31+2[,
                        "proto": integer ∈ ]0, 255[,
                        "predecessor":
                          string
                          /* A Tezos block ID (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) */ },
                    "op2":
                      { "level": integer ∈ ]-2^31-2, 2^31+2[,
                        "proto": integer ∈ ]0, 255[,
                        "predecessor":
                          string
                          /* A Tezos block ID (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) */ } }
               || { "kind": "activation",
                    "pkh":
                      string
                      /* An Ed25519 public key hash (Base58Check-encoded) */,
                    "secret": /^[a-zA-Z0-9]+$/ } ... ],
           "signature"?:
             string
             /* A Secp256k1 or Ed25519 signature (Base58Check-encoded) */ } ... ] ... ]
  $micheline.michelson_v1.expression:
    /* Micheline expression (michelson_v1 variant) */
    { "int": string }
    || { "string": string }
    || [ $micheline.michelson_v1.expression ... ]
    || { "prim":
           "BALANCE"
           | "LSL"
           | "LOOP_LEFT"
           | "CREATE_ACCOUNT"
           | "LOOP"
           | "LT"
           | "False"
           | "DUP"
           | "NOW"
           | "ABS"
           | "ADD"
           | "contract"
           | "big_map"
           | "MUL"
           | "ITER"
           | "EDIV"
           | "Unit"
           | "SOME"
           | "Pair"
           | "string"
           | "INT"
           | "MAP"
           | "XOR"
           | "return"
           | "bool"
           | "CONCAT"
           | "UPDATE"
           | "SOURCE"
           | "code"
           | "AMOUNT"
           | "CONS"
           | "CHECK_SIGNATURE"
           | "set"
           | "FAIL"
           | "UNIT"
           | "NEG"
           | "SIZE"
           | "key_hash"
           | "CREATE_CONTRACT"
           | "timestamp"
           | "True"
           | "Right"
           | "H"
           | "OR"
           | "LSR"
           | "CAR"
           | "EMPTY_MAP"
           | "AND"
           | "nat"
           | "HASH_KEY"
           | "RIGHT"
           | "MEM"
           | "NONE"
           | "NIL"
           | "Left"
           | "DEFAULT_ACCOUNT"
           | "GET"
           | "NOT"
           | "list"
           | "NEQ"
           | "key"
           | "EQ"
           | "SWAP"
           | "TRANSFER_TOKENS"
           | "LEFT"
           | "SELF"
           | "COMPARE"
           | "DIP"
           | "MANAGER"
           | "PUSH"
           | "LE"
           | "SUB"
           | "IF_NONE"
           | "Elt"
           | "option"
           | "tez"
           | "STEPS_TO_QUOTA"
           | "unit"
           | "EMPTY_SET"
           | "GE"
           | "PAIR"
           | "pair"
           | "IF"
           | "signature"
           | "or"
           | "Some"
           | "IF_CONS"
           | "parameter"
           | "LAMBDA"
           | "GT"
           | "REDUCE"
           | "int"
           | "None"
           | "map"
           | "EXEC"
           | "DROP"
           | "IF_LEFT"
           | "lambda"
           | "storage"
           | "CDR",
         "args": [ $micheline.michelson_v1.expression ... ],
         "annot"?: string }
  $operation:
    { "branch": string /* A Tezos block ID (Base58Check-encoded) */,
      "kind": "endorsement",
      "block": string /* A Tezos block ID (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) */ }
    || { "branch": string /* A Tezos block ID (Base58Check-encoded) */,
         "source":
           string
           /* A Secp256k1 or Ed25519 public key hash (Base58Check-encoded) */,
         "kind": "proposal",
         "period": integer ∈ ]-2^31-2, 2^31+2[,
         "proposals":
           [ string
           /* A Tezos protocol ID (Base58Check-encoded) */ ... ],
         "signature"?:
           string
           /* A Secp256k1 or Ed25519 signature (Base58Check-encoded) */ }
       || { "branch": string /* A Tezos block ID (Base58Check-encoded) */,
            "source":
              string
              /* A Secp256k1 or Ed25519 public key hash
                 (Base58Check-encoded) */,
            "kind": "ballot",
            "period": integer ∈ ]-2^31-2, 2^31+2[,
            "proposal":
              string
              /* A Tezos protocol ID (Base58Check-encoded) */,
            "ballot": "nay" | "yay" | "pass",
            "signature"?:
              string
              /* A Secp256k1 or Ed25519 signature (Base58Check-encoded) */ }
    || { "branch": string /* A Tezos block ID (Base58Check-encoded) */,
         "kind": "manager",
         "source":
           string
           /* A contract handle
              A contract notation as given to an RPC or inside scripts. Can
              be a base58 public key hash, representing the implicit
              contract of this identity, or a base58 originated contract
              hash. */,
         "fee":
           /* Amount in mutez */
           integer ∈ ]-2^31-2, 2^31+2[ || string,
         "counter": integer ∈ ]-2^31-2, 2^31+2[,
         "operations":
           [ { /* Reveal operation */
               "kind": "reveal",
               "public_key":
                 string
                 /* A Secp256k1 or Ed25519 public key (Base58Check-encoded) */ }
             || { /* Transaction operation */
                  "kind": "transaction",
                  "amount":
                    /* Amount in mutez */
                    integer ∈ ]-2^31-2, 2^31+2[ || string,
                  "destination":
                    string
                    /* A contract handle
                       A contract notation as given to an RPC or inside
                       scripts. Can be a base58 public key hash,
                       representing the implicit contract of this identity,
                       or a base58 originated contract hash. */,
                  "parameters"?: $micheline.michelson_v1.expression }
             || { /* Origination operation */
                  "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 } }
             || { /* Delegation operation */
                  "kind": "delegation",
                  "delegate"?:
                    string
                    /* A Secp256k1 or Ed25519 public key hash
                       (Base58Check-encoded) */ } ... ],
         "signature"?:
           string
           /* A Secp256k1 or Ed25519 signature (Base58Check-encoded) */ }
    || { "branch": string /* A Tezos block ID (Base58Check-encoded) */,
         "chain": "activate",
         "hash": string /* A Tezos protocol ID (Base58Check-encoded) */,
         "signature"?:
           string
           /* A Secp256k1 or Ed25519 signature (Base58Check-encoded) */ }
       || { "branch": string /* A Tezos block ID (Base58Check-encoded) */,
            "chain": "activate_testchain",
            "hash": string /* A Tezos protocol ID (Base58Check-encoded) */,
            "signature"?:
              string
              /* A Secp256k1 or Ed25519 signature (Base58Check-encoded) */ }
    || { "branch": string /* A Tezos block ID (Base58Check-encoded) */,
         "operations":
           [ { "kind": "seed_nonce_revelation",
               "level": integer ∈ ]-2^31-2, 2^31+2[,
               "nonce": /^[a-zA-Z0-9]+$/ }
             || { "kind": "double_endorsement_evidence",
                  "op1": $operation,
                  "op2": $operation }
             || { "kind": "double_baking_evidence",
                  "op1":
                    { "level": integer ∈ ]-2^31-2, 2^31+2[,
                      "proto": integer ∈ ]0, 255[,
                      "predecessor":
                        string
                        /* A Tezos block ID (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) */ },
                  "op2":
                    { "level": integer ∈ ]-2^31-2, 2^31+2[,
                      "proto": integer ∈ ]0, 255[,
                      "predecessor":
                        string
                        /* A Tezos block ID (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) */ } }
             || { "kind": "activation",
                  "pkh":
                    string
                    /* An Ed25519 public key hash (Base58Check-encoded) */,
                  "secret": /^[a-zA-Z0-9]+$/ } ... ],
         "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