RPC API

提供: tezos-wiki
2018年4月30日 (月) 21:00時点におけるAdmin (トーク | 投稿記録)による版 (ページの作成:「.. raw:: html <style>.tab {overflow: hidden;border: 1px solid #ccc;background-color: #f1f1f1;}.tab button {background-color: inherit;float: left;border: none;outline: no...」)
(差分) ← 古い版 | 最新版 (差分) | 新しい版 → (差分)
移動先: 案内検索

.. raw:: html

<style>.tab {overflow: hidden;border: 1px solid #ccc;background-color: #f1f1f1;}.tab button {background-color: inherit;float: left;border: none;outline: none;cursor: pointer;padding: 5px 10px;}.tab button:hover {background-color: #ddd;}.tab button.active {background-color: #ccc;}.tabcontent {display: none;padding: 6px 12px;border: 1px solid #ccc;border-top: none;margin-bottom: 20px;}pre {font-size: 12px}</style> .. raw:: html

<script>function showTab(elt, tab, ref) {var i, tabcontent, tablinks;tabcontent = document.getElementsByClassName(ref);for (i = 0; i < tabcontent.length; i++) {tabcontent[i].style.display = 'none';}tablinks = elt.parentNode.children;for (i = 0; i < tablinks.length; i++) {tablinks[i].className = tablinks[i].className.replace(' active', );}document.getElementById(tab).style.display = 'block';elt.className += ' active';}document.addEventListener('DOMContentLoaded', function(){var a = document.getElementsByClassName('defaultOpen');for (i = 0; i < a.length; i++) { a[i].click() }})</script> 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 *******************

.. raw:: html

<style>#client-rpcs-index * { margin-bottom:0px }#client-rpcs-index > *:last-child { margin-bottom:15px }#client-rpcs-index > h2 { margin-bottom:15px}</style> /blocks <ref2_>_

`/blocks/<block_id> <ref3_>`_
    
    `/blocks/<block_id>/chain_id <ref4_>`_
        
    \/blocks/<block_id>/complete
      
      `/blocks/<block_id>/complete/<prefix> <ref5_>`_
          
    `/blocks/<block_id>/fitness <ref6_>`_
        
    `/blocks/<block_id>/hash <ref7_>`_
        
    `/blocks/<block_id>/level <ref8_>`_
        
    `/blocks/<block_id>/operations <ref9_>`_
        
    `/blocks/<block_id>/preapply <ref10_>`_
        
    `/blocks/<block_id>/predecessor <ref11_>`_
        
    `/blocks/<block_id>/predecessors <ref12_>`_
        
    `/blocks/<block_id>/proto <ref13_>`_
        
    `/blocks/<block_id>/protocol <ref14_>`_
        
    `/blocks/<block_id>/raw_context <ref15_>`_
        
    `/blocks/<block_id>/test_chain <ref16_>`_
        
    `/blocks/<block_id>/timestamp <ref17_>`_
        

/bootstrapped <ref18_>_

/complete

/complete/<prefix> <ref19_>_

/errors <ref20_>_

/forge_block_header <ref21_>_

/inject_block <ref22_>_

/inject_operation <ref23_>_

/inject_protocol <ref24_>_

/invalid_blocks <ref25_>_

\/invalid_blocks/<Block_hash>
  
  `/invalid_blocks/<Block_hash>/unmark <ref26_>`_
      

/mempool

/mempool/pending_operations <ref27_>_

/networks

/networks/point <ref28_>_

/p2p

/p2p/connect

`/p2p/connect/<point> <ref29_>`_
    

/p2p/connections <ref30_>_

  `/p2p/connections/<Crypto_box.Public_key_hash> <ref31_>`_
      
      `/p2p/connections/<Crypto_box.Public_key_hash>/kick <ref32_>`_
          

/p2p/log <ref33_>_

/p2p/peers <ref34_>_

  `/p2p/peers/<Crypto_box.Public_key_hash> <ref35_>`_
      
      `/p2p/peers/<Crypto_box.Public_key_hash>/log <ref36_>`_
          

/p2p/points

`/p2p/points/<point> <ref37_>`_
    
    `/p2p/points/<point>/log <ref38_>`_
        

/p2p/stat <ref39_>_

/p2p/versions <ref40_>_

/protocols <ref41_>_

`/protocols/<Protocol_hash> <ref42_>`_
    

/workers

/workers/block_validator <ref43_>_

/workers/chain_validators <ref44_>_

  `/workers/chain_validators/<chain_id> <ref45_>`_
      

/workers/peer_validators

`/workers/peer_validators/<chain_id> <ref46_>`_
    
    `/workers/peer_validators/<chain_id>/<peer_id> <ref47_>`_
        

/workers/prevalidators <ref48_>_

  `/workers/prevalidators/<Chain_id> <ref49_>`_
      

Client RPCs - Full description ******************************

.. _ref2 :

POST /blocks

.. raw:: html

<button class="tablinks defaultOpen" onclick="showTab(this, 'ref2descr', 'ref2')">Description</button>
<button class="tablinks" onclick="showTab(this, 'ref2input', 'ref2')">Input format</button>
<button class="tablinks" onclick="showTab(this, 'ref2output', 'ref2')">Output format</button>
</div>
<p>
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.</p>
</div>
<pre>
{ "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"?:
    /* 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</pre>
</div>
<pre>
{ "blocks":
    [ [ { "hash": string /* A Tezos block ID (Base58Check-encoded) */,
          "chain_id":
            string
            /* Network identifier (Base58Check-encoded) */,
          "operations"?:
            [ [ { "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"?:
            { "status": "not_running" }
            || { "status": "forking",
                 "protocol":
                   string
                   /* A Tezos protocol ID (Base58Check-encoded) */,
                 "expiration":
                   $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 || 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 || 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</pre>
</div>

.. _ref3 :

POST /blocks/<block_id>

.. raw:: html

<button class="tablinks defaultOpen" onclick="showTab(this, 'ref3descr', 'ref3')">Description</button>
<button class="tablinks" onclick="showTab(this, 'ref3input', 'ref3')">Input format</button>
<button class="tablinks" onclick="showTab(this, 'ref3output', 'ref3')">Output format</button>
</div>
<p>
All the information about a block.</p>
</div>
<pre>
{ "operations"?: boolean }</pre>
</div>
<pre>
{ "hash": string /* A Tezos block ID (Base58Check-encoded) */,
  "chain_id": string /* Network identifier (Base58Check-encoded) */,
  "operations"?:
    [ [ { "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"?:
    { "status": "not_running" }
    || { "status": "forking",
         "protocol":
           string
           /* A Tezos protocol ID (Base58Check-encoded) */,
         "expiration":
           $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 || 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 || 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</pre>
</div>

.. _ref4 :

POST /blocks/<block_id>/chain_id

.. raw:: html

<button class="tablinks defaultOpen" onclick="showTab(this, 'ref4descr', 'ref4')">Description</button>
<button class="tablinks" onclick="showTab(this, 'ref4output', 'ref4')">Output format</button>
</div>
<p>
Returns the chain in which the block belongs.</p>
</div>
<pre>
{ "chain_id": string /* Network identifier (Base58Check-encoded) */ }</pre>
</div>

.. _ref5 :

POST /blocks/<block_id>/complete/<prefix>

.. raw:: html

<button class="tablinks defaultOpen" onclick="showTab(this, 'ref5descr', 'ref5')">Description</button>
<button class="tablinks" onclick="showTab(this, 'ref5output', 'ref5')">Output format</button>
</div>
<p>
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.</p>
</div>
<pre>
[ string ... ]</pre>
</div>

.. _ref6 :

POST /blocks/<block_id>/fitness

.. raw:: html

<button class="tablinks defaultOpen" onclick="showTab(this, 'ref6descr', 'ref6')">Description</button>
<button class="tablinks" onclick="showTab(this, 'ref6output', 'ref6')">Output format</button>
</div>
<p>
Returns the block's fitness.</p>
</div>
<pre>
{ "fitness": [ /^[a-zA-Z0-9]+$/ ... ] /* Tezos block fitness */ }</pre>
</div>

.. _ref7 :

POST /blocks/<block_id>/hash

.. raw:: html

<button class="tablinks defaultOpen" onclick="showTab(this, 'ref7descr', 'ref7')">Description</button>
<button class="tablinks" onclick="showTab(this, 'ref7output', 'ref7')">Output format</button>
</div>
<p>
Returns the block's id.</p>
</div>
<pre>
{ "hash": string /* A Tezos block ID (Base58Check-encoded) */ }</pre>
</div>

.. _ref8 :

POST /blocks/<block_id>/level

.. raw:: html

<button class="tablinks defaultOpen" onclick="showTab(this, 'ref8descr', 'ref8')">Description</button>
<button class="tablinks" onclick="showTab(this, 'ref8output', 'ref8')">Output format</button>
</div>
<p>
Returns the block's level.</p>
</div>
<pre>
{ "level": integer ∈ ]-2^31-2, 2^31+2[ }</pre>
</div>

.. _ref9 :

POST /blocks/<block_id>/operations

.. raw:: html

<button class="tablinks defaultOpen" onclick="showTab(this, 'ref9descr', 'ref9')">Description</button>
<button class="tablinks" onclick="showTab(this, 'ref9input', 'ref9')">Input format</button>
<button class="tablinks" onclick="showTab(this, 'ref9output', 'ref9')">Output format</button>
</div>
<p>
List the block operations.</p>
</div>
<pre>
{ "contents"?: boolean }</pre>
</div>
<pre>
{ "operations":
    [ [ { "hash": string /* A Tezos operation ID (Base58Check-encoded) */,
          "contents"?:
            { "branch":
                string
                /* A Tezos block ID (Base58Check-encoded) */,
              "data": /^[a-zA-Z0-9]+$/ } } ... ] ... ] }</pre>
</div>

.. _ref10 :

POST /blocks/<block_id>/preapply

.. raw:: html

<button class="tablinks defaultOpen" onclick="showTab(this, 'ref10descr', 'ref10')">Description</button>
<button class="tablinks" onclick="showTab(this, 'ref10input', 'ref10')">Input format</button>
<button class="tablinks" onclick="showTab(this, 'ref10output', 'ref10')">Output format</button>
</div>
<p>
Simulate the validation of a block that would contain the given operations and return the resulting fitness.</p>
</div>
<pre>
{ "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</pre>
</div>
<pre>
{ "shell_header":
    { "level": integer ∈ ]-2^31-2, 2^31+2[,
      "proto": integer ∈ ]0, 255[,
      "predecessor": string /* A Tezos block ID (Base58Check-encoded) */,
      "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</pre>
</div>

.. _ref11 :

POST /blocks/<block_id>/predecessor

.. raw:: html

<button class="tablinks defaultOpen" onclick="showTab(this, 'ref11descr', 'ref11')">Description</button>
<button class="tablinks" onclick="showTab(this, 'ref11output', 'ref11')">Output format</button>
</div>
<p>
Returns the previous block's id.</p>
</div>
<pre>
{ "predecessor": string /* A Tezos block ID (Base58Check-encoded) */ }</pre>
</div>

.. _ref12 :

POST /blocks/<block_id>/predecessors

.. raw:: html

<button class="tablinks defaultOpen" onclick="showTab(this, 'ref12descr', 'ref12')">Description</button>
<button class="tablinks" onclick="showTab(this, 'ref12input', 'ref12')">Input format</button>
<button class="tablinks" onclick="showTab(this, 'ref12output', 'ref12')">Output format</button>
</div>
<p>
....</p>
</div>
<pre>
{ "length": integer ∈ ]0, 2^16-1[ }</pre>
</div>
<pre>
{ "blocks": [ string /* A Tezos block ID (Base58Check-encoded) */ ... ] }</pre>
</div>

.. _ref13 :

POST /blocks/<block_id>/proto

.. raw:: html

<button class="tablinks defaultOpen" onclick="showTab(this, 'ref13descr', 'ref13')">Description</button>
</div>
<p>
All the RPCs which are specific to the protocol version.</p>
</div>

.. _ref14 :

POST /blocks/<block_id>/protocol

.. raw:: html

<button class="tablinks defaultOpen" onclick="showTab(this, 'ref14descr', 'ref14')">Description</button>
<button class="tablinks" onclick="showTab(this, 'ref14output', 'ref14')">Output format</button>
</div>
<p>
List the block protocol.</p>
</div>
<pre>
{ "protocol": string /* A Tezos protocol ID (Base58Check-encoded) */ }</pre>
</div>

.. _ref15 :

POST /blocks/<block_id>/raw_context

.. raw:: html

<button class="tablinks defaultOpen" onclick="showTab(this, 'ref15descr', 'ref15')">Description</button>
<button class="tablinks" onclick="showTab(this, 'ref15output', 'ref15')">Output format</button>
</div>
<p>
Returns the raw context.</p>
</div>
<pre>
{ "content": $context_tree }
$context_tree: /^[a-zA-Z0-9]+$/ || { *: $context_tree } || null</pre>
</div>

.. _ref16 :

POST /blocks/<block_id>/test_chain

.. raw:: html

<button class="tablinks defaultOpen" onclick="showTab(this, 'ref16descr', 'ref16')">Description</button>
<button class="tablinks" onclick="showTab(this, 'ref16output', 'ref16')">Output format</button>
</div>
<p>
Returns the status of the associated test chain.</p>
</div>
<pre>
{ "status": "not_running" }
|| { "status": "forking",
     "protocol": string /* A Tezos protocol ID (Base58Check-encoded) */,
     "expiration": $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 || 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</pre>
</div>

.. _ref17 :

POST /blocks/<block_id>/timestamp

.. raw:: html

<button class="tablinks defaultOpen" onclick="showTab(this, 'ref17descr', 'ref17')">Description</button>
<button class="tablinks" onclick="showTab(this, 'ref17output', 'ref17')">Output format</button>
</div>
<p>
Returns the block's timestamp.</p>
</div>
<pre>
{ "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</pre>
</div>

.. _ref18 :

POST /bootstrapped

.. raw:: html

<button class="tablinks defaultOpen" onclick="showTab(this, 'ref18descr', 'ref18')">Description</button>
<button class="tablinks" onclick="showTab(this, 'ref18output', 'ref18')">Output format</button>
</div>
<p>
No description</p>
</div>
<pre>
{ "block": string /* A Tezos block ID (Base58Check-encoded) */,
  "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</pre>
</div>

.. _ref19 :

POST /complete/<prefix>

.. raw:: html

<button class="tablinks defaultOpen" onclick="showTab(this, 'ref19descr', 'ref19')">Description</button>
<button class="tablinks" onclick="showTab(this, 'ref19output', 'ref19')">Output format</button>
</div>
<p>
Try to complete a prefix of a Base58Check-encoded data. This RPC is actually able to complete hashes of block and hashes of operations.</p>
</div>
<pre>
[ string ... ]</pre>
</div>

.. _ref20 :

POST /errors

.. raw:: html

<button class="tablinks defaultOpen" onclick="showTab(this, 'ref20descr', 'ref20')">Description</button>
<button class="tablinks" onclick="showTab(this, 'ref20output', 'ref20')">Output format</button>
</div>
<p>
Schema for all the RPC errors from the shell</p>
</div>
<pre>
any</pre>
</div>

.. _ref21 :

POST /forge_block_header

.. raw:: html

<button class="tablinks defaultOpen" onclick="showTab(this, 'ref21descr', 'ref21')">Description</button>
<button class="tablinks" onclick="showTab(this, 'ref21input', 'ref21')">Input format</button>
<button class="tablinks" onclick="showTab(this, 'ref21output', 'ref21')">Output format</button>
</div>
<p>
Forge a block header</p>
</div>
<pre>
{ "level": integer ∈ ]-2^31-2, 2^31+2[,
  "proto": integer ∈ ]0, 255[,
  "predecessor": string /* A Tezos block ID (Base58Check-encoded) */,
  "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</pre>
</div>
<pre>
{ "block": /^[a-zA-Z0-9]+$/ }</pre>
</div>

.. _ref22 :

POST /inject_block

.. raw:: html

<button class="tablinks defaultOpen" onclick="showTab(this, 'ref22descr', 'ref22')">Description</button>
<button class="tablinks" onclick="showTab(this, 'ref22input', 'ref22')">Input format</button>
<button class="tablinks" onclick="showTab(this, 'ref22output', 'ref22')">Output format</button>
</div>
<p>
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/<block_id>/context/preapply'). Returns the ID of the block. By default, the RPC will wait for the block to be validated before answering.</p>
</div>
<pre>
{ "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]+$/ } ... ] ... ]
    /* ... */ }</pre>
</div>
<pre>
{ "block_hash": string /* A Tezos block ID (Base58Check-encoded) */ }</pre>
</div>

.. _ref23 :

POST /inject_operation

.. raw:: html

<button class="tablinks defaultOpen" onclick="showTab(this, 'ref23descr', 'ref23')">Description</button>
<button class="tablinks" onclick="showTab(this, 'ref23input', 'ref23')">Input format</button>
<button class="tablinks" onclick="showTab(this, 'ref23output', 'ref23')">Output format</button>
</div>
<p>
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.</p>
</div>
<pre>
{ "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) */ }</pre>
</div>
<pre>
{ /* Hash of the injected operation */
  "injectedOperation":
    string
    /* A Tezos operation ID (Base58Check-encoded) */ }</pre>
</div>

.. _ref24 :

POST /inject_protocol

.. raw:: html

<button class="tablinks defaultOpen" onclick="showTab(this, 'ref24descr', 'ref24')">Description</button>
<button class="tablinks" onclick="showTab(this, 'ref24input', 'ref24')">Input format</button>
<button class="tablinks" onclick="showTab(this, 'ref24output', 'ref24')">Output format</button>
</div>
<p>
Inject a protocol in node. Returns the ID of the protocol.</p>
</div>
<pre>
{ "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) */ }</pre>
</div>
<pre>
{ /* Hash of the injected protocol */
  "injectedProtocol":
    string
    /* A Tezos protocol ID (Base58Check-encoded) */ }</pre>
</div>

.. _ref25 :

POST /invalid_blocks

.. raw:: html

<button class="tablinks defaultOpen" onclick="showTab(this, 'ref25descr', 'ref25')">Description</button>
<button class="tablinks" onclick="showTab(this, 'ref25output', 'ref25')">Output format</button>
</div>
<p>
Lists blocks that have been declared invalid along with the errorsthat led to them being declared invalid</p>
</div>
<pre>
[ { "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` */ } ... ]</pre>
</div>

.. _ref26 :

POST /invalid_blocks/<Block_hash>/unmark

.. raw:: html

<button class="tablinks defaultOpen" onclick="showTab(this, 'ref26descr', 'ref26')">Description</button>
</div>
<p>
Unmark an invalid block</p>
</div>

.. _ref27 :

POST /mempool/pending_operations

.. raw:: html

<button class="tablinks defaultOpen" onclick="showTab(this, 'ref27descr', 'ref27')">Description</button>
<button class="tablinks" onclick="showTab(this, 'ref27output', 'ref27')">Output format</button>
</div>
<p>
List the not-yet-prevalidated operations.</p>
</div>
<pre>
{ "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]+$/ } ... ] }</pre>
</div>

.. _ref28 :

POST /networks/point

.. raw:: html

<button class="tablinks defaultOpen" onclick="showTab(this, 'ref28descr', 'ref28')">Description</button>
<button class="tablinks" onclick="showTab(this, 'ref28input', 'ref28')">Input format</button>
<button class="tablinks" onclick="showTab(this, 'ref28output', 'ref28')">Output format</button>
</div>
<p>
List the pool of known `IP:port` used for establishing P2P connections .</p>
</div>
<pre>
{ "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" } ... ] }</pre>
</div>
<pre>
[ [ string,
    { "trusted": boolean,
      "greylisted_until"?:
        $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 || integer ∈ ]-2^31-2, 2^31+2[ || string,
      "last_rejected_connection"?:
        [ string
          /* A Cryptobox public key ID (Base58Check-encoded) */,
          $timestamp || integer ∈ ]-2^31-2, 2^31+2[ || string ],
      "last_established_connection"?:
        [ string
          /* A Cryptobox public key ID (Base58Check-encoded) */,
          $timestamp || integer ∈ ]-2^31-2, 2^31+2[ || string ],
      "last_disconnection"?:
        [ string
          /* A Cryptobox public key ID (Base58Check-encoded) */,
          $timestamp || integer ∈ ]-2^31-2, 2^31+2[ || string ],
      "last_seen"?:
        [ string
          /* A Cryptobox public key ID (Base58Check-encoded) */,
          $timestamp || integer ∈ ]-2^31-2, 2^31+2[ || string ],
      "last_miss"?: $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</pre>
</div>

.. _ref29 :

POST /p2p/connect/<point>

.. raw:: html

<button class="tablinks defaultOpen" onclick="showTab(this, 'ref29descr', 'ref29')">Description</button>
<button class="tablinks" onclick="showTab(this, 'ref29input', 'ref29')">Input format</button>
</div>
<p>
Connect to a peer</p>
</div>
<pre>
{ "timeout"?: number }</pre>
</div>

.. _ref30 :

POST /p2p/connections

.. raw:: html

<button class="tablinks defaultOpen" onclick="showTab(this, 'ref30descr', 'ref30')">Description</button>
<button class="tablinks" onclick="showTab(this, 'ref30output', 'ref30')">Output format</button>
</div>
<p>
List the running P2P connection.</p>
</div>
<pre>
[ { "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[ } ... ] } ... ]</pre>
</div>

.. _ref31 :

POST /p2p/connections/<Crypto_box.Public_key_hash>

.. raw:: html

<button class="tablinks defaultOpen" onclick="showTab(this, 'ref31descr', 'ref31')">Description</button>
<button class="tablinks" onclick="showTab(this, 'ref31output', 'ref31')">Output format</button>
</div>
<p>
Details about the current P2P connection to the given peer.</p>
</div>
<pre>
{ "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[ } ... ] }</pre>
</div>

.. _ref32 :

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

.. raw:: html

<button class="tablinks defaultOpen" onclick="showTab(this, 'ref32descr', 'ref32')">Description</button>
<button class="tablinks" onclick="showTab(this, 'ref32input', 'ref32')">Input format</button>
</div>
<p>
Forced close of the current P2P connection to the given peer.</p>
</div>
<pre>
{ "wait": boolean }</pre>
</div>

.. _ref33 :

POST /p2p/log

.. raw:: html

<button class="tablinks defaultOpen" onclick="showTab(this, 'ref33descr', 'ref33')">Description</button>
<button class="tablinks" onclick="showTab(this, 'ref33output', 'ref33')">Output format</button>
</div>
<p>
Stream of all network events</p>
</div>
<pre>
{ "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) */ }</pre>
</div>

.. _ref34 :

POST /p2p/peers

.. raw:: html

<button class="tablinks defaultOpen" onclick="showTab(this, 'ref34descr', 'ref34')">Description</button>
<button class="tablinks" onclick="showTab(this, 'ref34input', 'ref34')">Input format</button>
<button class="tablinks" onclick="showTab(this, 'ref34output', 'ref34')">Output format</button>
</div>
<p>
List the peers the node ever met.</p>
</div>
<pre>
{ "filter"?: [ "running" | "accepted" | "disconnected" ... ] }</pre>
</div>
<pre>
[ [ 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 || integer ∈ ]-2^31-2, 2^31+2[ || string ],
      "last_rejected_connection"?:
        [ { "addr": string,
            "port"?: integer ∈ ]0, 2^16-1[ },
          $timestamp || integer ∈ ]-2^31-2, 2^31+2[ || string ],
      "last_established_connection"?:
        [ { "addr": string,
            "port"?: integer ∈ ]0, 2^16-1[ },
          $timestamp || integer ∈ ]-2^31-2, 2^31+2[ || string ],
      "last_disconnection"?:
        [ { "addr": string,
            "port"?: integer ∈ ]0, 2^16-1[ },
          $timestamp || integer ∈ ]-2^31-2, 2^31+2[ || string ],
      "last_seen"?:
        [ { "addr": string,
            "port"?: integer ∈ ]0, 2^16-1[ },
          $timestamp || integer ∈ ]-2^31-2, 2^31+2[ || string ],
      "last_miss"?:
        [ { "addr": string,
            "port"?: integer ∈ ]0, 2^16-1[ },
          $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</pre>
</div>

.. _ref35 :

POST /p2p/peers/<Crypto_box.Public_key_hash>

.. raw:: html

<button class="tablinks defaultOpen" onclick="showTab(this, 'ref35descr', 'ref35')">Description</button>
<button class="tablinks" onclick="showTab(this, 'ref35output', 'ref35')">Output format</button>
</div>
<p>
Details about a given peer.</p>
</div>
<pre>
{ "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 || integer ∈ ]-2^31-2, 2^31+2[ || string ],
  "last_rejected_connection"?:
    [ { "addr": string,
        "port"?: integer ∈ ]0, 2^16-1[ },
      $timestamp || integer ∈ ]-2^31-2, 2^31+2[ || string ],
  "last_established_connection"?:
    [ { "addr": string,
        "port"?: integer ∈ ]0, 2^16-1[ },
      $timestamp || integer ∈ ]-2^31-2, 2^31+2[ || string ],
  "last_disconnection"?:
    [ { "addr": string,
        "port"?: integer ∈ ]0, 2^16-1[ },
      $timestamp || integer ∈ ]-2^31-2, 2^31+2[ || string ],
  "last_seen"?:
    [ { "addr": string,
        "port"?: integer ∈ ]0, 2^16-1[ },
      $timestamp || integer ∈ ]-2^31-2, 2^31+2[ || string ],
  "last_miss"?:
    [ { "addr": string,
        "port"?: integer ∈ ]0, 2^16-1[ },
      $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</pre>
</div>

.. _ref36 :

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

.. raw:: html

<button class="tablinks defaultOpen" onclick="showTab(this, 'ref36descr', 'ref36')">Description</button>
<button class="tablinks" onclick="showTab(this, 'ref36input', 'ref36')">Input format</button>
<button class="tablinks" onclick="showTab(this, 'ref36output', 'ref36')">Output format</button>
</div>
<p>
Monitor network events related to a given peer.</p>
</div>
<pre>
{ "monitor"?: boolean }</pre>
</div>
<pre>
[ { "kind":
      "rejecting_request"
      | "incoming_request"
      | "disconnection"
      | "external_disconnection"
      | "connection_established"
      | "request_rejected",
    "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</pre>
</div>

.. _ref37 :

POST /p2p/points/<point>

.. raw:: html

<button class="tablinks defaultOpen" onclick="showTab(this, 'ref37descr', 'ref37')">Description</button>
<button class="tablinks" onclick="showTab(this, 'ref37output', 'ref37')">Output format</button>
</div>
<p>
Details about a given `IP:addr`.</p>
</div>
<pre>
{ "trusted": boolean,
  "greylisted_until"?:
    $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 || integer ∈ ]-2^31-2, 2^31+2[ || string,
  "last_rejected_connection"?:
    [ string
      /* A Cryptobox public key ID (Base58Check-encoded) */,
      $timestamp || integer ∈ ]-2^31-2, 2^31+2[ || string ],
  "last_established_connection"?:
    [ string
      /* A Cryptobox public key ID (Base58Check-encoded) */,
      $timestamp || integer ∈ ]-2^31-2, 2^31+2[ || string ],
  "last_disconnection"?:
    [ string
      /* A Cryptobox public key ID (Base58Check-encoded) */,
      $timestamp || integer ∈ ]-2^31-2, 2^31+2[ || string ],
  "last_seen"?:
    [ string
      /* A Cryptobox public key ID (Base58Check-encoded) */,
      $timestamp || integer ∈ ]-2^31-2, 2^31+2[ || string ],
  "last_miss"?: $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</pre>
</div>

.. _ref38 :

POST /p2p/points/<point>/log

.. raw:: html

<button class="tablinks defaultOpen" onclick="showTab(this, 'ref38descr', 'ref38')">Description</button>
<button class="tablinks" onclick="showTab(this, 'ref38input', 'ref38')">Input format</button>
<button class="tablinks" onclick="showTab(this, 'ref38output', 'ref38')">Output format</button>
</div>
<p>
Monitor network events related to an `IP:addr`.</p>
</div>
<pre>
{ "monitor"?: boolean }</pre>
</div>
<pre>
[ { "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 || 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</pre>
</div>

.. _ref39 :

POST /p2p/stat

.. raw:: html

<button class="tablinks defaultOpen" onclick="showTab(this, 'ref39descr', 'ref39')">Description</button>
<button class="tablinks" onclick="showTab(this, 'ref39output', 'ref39')">Output format</button>
</div>
<p>
Global network bandwidth statistics in B/s.</p>
</div>
<pre>
{ "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[ }</pre>
</div>

.. _ref40 :

POST /p2p/versions

.. raw:: html

<button class="tablinks defaultOpen" onclick="showTab(this, 'ref40descr', 'ref40')">Description</button>
<button class="tablinks" onclick="showTab(this, 'ref40output', 'ref40')">Output format</button>
</div>
<p>
Supported network layer versions.</p>
</div>
<pre>
[ { "name": string,
    "major": integer ∈ ]0, 2^16-1[,
    "minor": integer ∈ ]0, 2^16-1[ } ... ]</pre>
</div>

.. _ref41 :

POST /protocols

.. raw:: html

<button class="tablinks defaultOpen" onclick="showTab(this, 'ref41descr', 'ref41')">Description</button>
<button class="tablinks" onclick="showTab(this, 'ref41input', 'ref41')">Input format</button>
<button class="tablinks" onclick="showTab(this, 'ref41output', 'ref41')">Output format</button>
</div>
<p>
No description</p>
</div>
<pre>
{ "contents"?: boolean,
  "monitor"?: boolean }</pre>
</div>
<pre>
{ "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]+$/ } ... ] } } ... ] }</pre>
</div>

.. _ref42 :

POST /protocols/<Protocol_hash>

.. raw:: html

<button class="tablinks defaultOpen" onclick="showTab(this, 'ref42descr', 'ref42')">Description</button>
<button class="tablinks" onclick="showTab(this, 'ref42output', 'ref42')">Output format</button>
</div>
<p>
No description</p>
</div>
<pre>
{ "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]+$/ } ... ] } }</pre>
</div>

.. _ref43 :

POST /workers/block_validator

.. raw:: html

<button class="tablinks defaultOpen" onclick="showTab(this, 'ref43descr', 'ref43')">Description</button>
<button class="tablinks" onclick="showTab(this, 'ref43output', 'ref43')">Output format</button>
</div>
<p>
Introspect the state of the block_validator worker.</p>
</div>
<pre>
{ "status":
    { "phase": "launching",
      "since": $timestamp || integer ∈ ]-2^31-2, 2^31+2[ || string }
    || { "phase": "running",
         "since": $timestamp || integer ∈ ]-2^31-2, 2^31+2[ || string }
    || { "phase": "closing",
         "birth": $timestamp || integer ∈ ]-2^31-2, 2^31+2[ || string,
         "since": $timestamp || integer ∈ ]-2^31-2, 2^31+2[ || string }
    || { "phase": "closed",
         "birth": $timestamp || integer ∈ ]-2^31-2, 2^31+2[ || string,
         "since": $timestamp || integer ∈ ]-2^31-2, 2^31+2[ || string }
    || { "phase": "crashed",
         "birth": $timestamp || integer ∈ ]-2^31-2, 2^31+2[ || string,
         "since": $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 || 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":
          [ { "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
                       || integer ∈ ]-2^31-2, 2^31+2[ || string,
                     "treated":
                       $timestamp
                       || integer ∈ ]-2^31-2, 2^31+2[ || string,
                     "completed":
                       $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
                       || integer ∈ ]-2^31-2, 2^31+2[ || string,
                     "treated":
                       $timestamp
                       || integer ∈ ]-2^31-2, 2^31+2[ || string,
                     "completed":
                       $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 || integer ∈ ]-2^31-2, 2^31+2[ || string,
      "treated": $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</pre>
</div>

.. _ref44 :

POST /workers/chain_validators

.. raw:: html

<button class="tablinks defaultOpen" onclick="showTab(this, 'ref44descr', 'ref44')">Description</button>
<button class="tablinks" onclick="showTab(this, 'ref44output', 'ref44')">Output format</button>
</div>
<p>
Lists the chain validator workers and their status.</p>
</div>
<pre>
[ { "chain_id": string /* Network identifier (Base58Check-encoded) */,
    "status":
      { "phase": "launching",
        "since": $timestamp || integer ∈ ]-2^31-2, 2^31+2[ || string }
      || { "phase": "running",
           "since": $timestamp || integer ∈ ]-2^31-2, 2^31+2[ || string }
      || { "phase": "closing",
           "birth": $timestamp || integer ∈ ]-2^31-2, 2^31+2[ || string,
           "since": $timestamp || integer ∈ ]-2^31-2, 2^31+2[ || string }
      || { "phase": "closed",
           "birth": $timestamp || integer ∈ ]-2^31-2, 2^31+2[ || string,
           "since": $timestamp || integer ∈ ]-2^31-2, 2^31+2[ || string }
      || { "phase": "crashed",
           "birth": $timestamp || integer ∈ ]-2^31-2, 2^31+2[ || string,
           "since": $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</pre>
</div>

.. _ref45 :

POST /workers/chain_validators/<chain_id>

.. raw:: html

<button class="tablinks defaultOpen" onclick="showTab(this, 'ref45descr', 'ref45')">Description</button>
<button class="tablinks" onclick="showTab(this, 'ref45output', 'ref45')">Output format</button>
</div>
<p>
Introspect the state of a chain validator worker.</p>
</div>
<pre>
{ "status":
    { "phase": "launching",
      "since": $timestamp || integer ∈ ]-2^31-2, 2^31+2[ || string }
    || { "phase": "running",
         "since": $timestamp || integer ∈ ]-2^31-2, 2^31+2[ || string }
    || { "phase": "closing",
         "birth": $timestamp || integer ∈ ]-2^31-2, 2^31+2[ || string,
         "since": $timestamp || integer ∈ ]-2^31-2, 2^31+2[ || string }
    || { "phase": "closed",
         "birth": $timestamp || integer ∈ ]-2^31-2, 2^31+2[ || string,
         "since": $timestamp || integer ∈ ]-2^31-2, 2^31+2[ || string }
    || { "phase": "crashed",
         "birth": $timestamp || integer ∈ ]-2^31-2, 2^31+2[ || string,
         "since": $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 || 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 || integer ∈ ]-2^31-2, 2^31+2[ || string,
                  "treated":
                    $timestamp || integer ∈ ]-2^31-2, 2^31+2[ || string,
                  "completed":
                    $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 || integer ∈ ]-2^31-2, 2^31+2[ || string,
      "treated": $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</pre>
</div>

.. _ref46 :

POST /workers/peer_validators/<chain_id>

.. raw:: html

<button class="tablinks defaultOpen" onclick="showTab(this, 'ref46descr', 'ref46')">Description</button>
<button class="tablinks" onclick="showTab(this, 'ref46output', 'ref46')">Output format</button>
</div>
<p>
Lists the peer validator workers and their status.</p>
</div>
<pre>
[ { "peer_id":
      string
      /* A Cryptobox public key ID (Base58Check-encoded) */,
    "status":
      { "phase": "launching",
        "since": $timestamp || integer ∈ ]-2^31-2, 2^31+2[ || string }
      || { "phase": "running",
           "since": $timestamp || integer ∈ ]-2^31-2, 2^31+2[ || string }
      || { "phase": "closing",
           "birth": $timestamp || integer ∈ ]-2^31-2, 2^31+2[ || string,
           "since": $timestamp || integer ∈ ]-2^31-2, 2^31+2[ || string }
      || { "phase": "closed",
           "birth": $timestamp || integer ∈ ]-2^31-2, 2^31+2[ || string,
           "since": $timestamp || integer ∈ ]-2^31-2, 2^31+2[ || string }
      || { "phase": "crashed",
           "birth": $timestamp || integer ∈ ]-2^31-2, 2^31+2[ || string,
           "since": $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</pre>
</div>

.. _ref47 :

POST /workers/peer_validators/<chain_id>/<peer_id>

.. raw:: html

<button class="tablinks defaultOpen" onclick="showTab(this, 'ref47descr', 'ref47')">Description</button>
<button class="tablinks" onclick="showTab(this, 'ref47output', 'ref47')">Output format</button>
</div>
<p>
Introspect the state of a peer validator worker.</p>
</div>
<pre>
{ "status":
    { "phase": "launching",
      "since": $timestamp || integer ∈ ]-2^31-2, 2^31+2[ || string }
    || { "phase": "running",
         "since": $timestamp || integer ∈ ]-2^31-2, 2^31+2[ || string }
    || { "phase": "closing",
         "birth": $timestamp || integer ∈ ]-2^31-2, 2^31+2[ || string,
         "since": $timestamp || integer ∈ ]-2^31-2, 2^31+2[ || string }
    || { "phase": "closed",
         "birth": $timestamp || integer ∈ ]-2^31-2, 2^31+2[ || string,
         "since": $timestamp || integer ∈ ]-2^31-2, 2^31+2[ || string }
    || { "phase": "crashed",
         "birth": $timestamp || integer ∈ ]-2^31-2, 2^31+2[ || string,
         "since": $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 || 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
                       || integer ∈ ]-2^31-2, 2^31+2[ || string,
                     "treated":
                       $timestamp
                       || integer ∈ ]-2^31-2, 2^31+2[ || string,
                     "completed":
                       $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
                       || integer ∈ ]-2^31-2, 2^31+2[ || string,
                     "treated":
                       $timestamp
                       || integer ∈ ]-2^31-2, 2^31+2[ || string,
                     "completed":
                       $timestamp
                       || integer ∈ ]-2^31-2, 2^31+2[ || string } } ... ] } ... ],
  "current_request"?:
    { "pushed": $timestamp || integer ∈ ]-2^31-2, 2^31+2[ || string,
      "treated": $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</pre>
</div>

.. _ref48 :

POST /workers/prevalidators

.. raw:: html

<button class="tablinks defaultOpen" onclick="showTab(this, 'ref48descr', 'ref48')">Description</button>
<button class="tablinks" onclick="showTab(this, 'ref48output', 'ref48')">Output format</button>
</div>
<p>
Lists the Prevalidator workers and their status.</p>
</div>
<pre>
[ { "chain_id": string /* Network identifier (Base58Check-encoded) */,
    "status":
      { "phase": "launching",
        "since": $timestamp || integer ∈ ]-2^31-2, 2^31+2[ || string }
      || { "phase": "running",
           "since": $timestamp || integer ∈ ]-2^31-2, 2^31+2[ || string }
      || { "phase": "closing",
           "birth": $timestamp || integer ∈ ]-2^31-2, 2^31+2[ || string,
           "since": $timestamp || integer ∈ ]-2^31-2, 2^31+2[ || string }
      || { "phase": "closed",
           "birth": $timestamp || integer ∈ ]-2^31-2, 2^31+2[ || string,
           "since": $timestamp || integer ∈ ]-2^31-2, 2^31+2[ || string }
      || { "phase": "crashed",
           "birth": $timestamp || integer ∈ ]-2^31-2, 2^31+2[ || string,
           "since": $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</pre>
</div>

.. _ref49 :

POST /workers/prevalidators/<Chain_id>

.. raw:: html

<button class="tablinks defaultOpen" onclick="showTab(this, 'ref49descr', 'ref49')">Description</button>
<button class="tablinks" onclick="showTab(this, 'ref49output', 'ref49')">Output format</button>
</div>
<p>
Introspect the state of a prevalidator worker.</p>
</div>
<pre>
{ "status":
    { "phase": "launching",
      "since": $timestamp || integer ∈ ]-2^31-2, 2^31+2[ || string }
    || { "phase": "running",
         "since": $timestamp || integer ∈ ]-2^31-2, 2^31+2[ || string }
    || { "phase": "closing",
         "birth": $timestamp || integer ∈ ]-2^31-2, 2^31+2[ || string,
         "since": $timestamp || integer ∈ ]-2^31-2, 2^31+2[ || string }
    || { "phase": "closed",
         "birth": $timestamp || integer ∈ ]-2^31-2, 2^31+2[ || string,
         "since": $timestamp || integer ∈ ]-2^31-2, 2^31+2[ || string }
    || { "phase": "crashed",
         "birth": $timestamp || integer ∈ ]-2^31-2, 2^31+2[ || string,
         "since": $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 || 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
                       || integer ∈ ]-2^31-2, 2^31+2[ || string,
                     "treated":
                       $timestamp
                       || integer ∈ ]-2^31-2, 2^31+2[ || string,
                     "completed":
                       $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
                       || integer ∈ ]-2^31-2, 2^31+2[ || string,
                     "treated":
                       $timestamp
                       || integer ∈ ]-2^31-2, 2^31+2[ || string,
                     "completed":
                       $timestamp
                       || integer ∈ ]-2^31-2, 2^31+2[ || string } } ... ] } ... ],
  "current_request"?:
    { "pushed": $timestamp || integer ∈ ]-2^31-2, 2^31+2[ || string,
      "treated": $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</pre>
</div>

Protocol Alpha RPCs - Index ***************************

.. raw:: html

<style>#protocol-alpha-rpcs-index * { margin-bottom:0px }#protocol-alpha-rpcs-index > *:last-child { margin-bottom:15px }#protocol-alpha-rpcs-index > h2 { margin-bottom:15px}</style> /blocks/<block_id>/proto

/blocks/<block_id>/proto/constants <ref50_>_

  `/blocks/<block_id>/proto/constants/    block_reward <ref51_>`_
      
  `/blocks/<block_id>/proto/constants/ endorsement_reward <ref52_>`_
      
  `/blocks/<block_id>/proto/constants/block_security_deposit <ref53_>`_
      
  `/blocks/<block_id>/proto/constants/blocks_per_commitment <ref54_>`_
      
  `/blocks/<block_id>/proto/constants/blocks_per_cycle <ref55_>`_
      
  `/blocks/<block_id>/proto/constants/blocks_per_roll_snapshot <ref56_>`_
      
  `/blocks/<block_id>/proto/constants/blocks_per_voting_period <ref57_>`_
      
  `/blocks/<block_id>/proto/constants/endorsement_security_deposit <ref58_>`_
      
  `/blocks/<block_id>/proto/constants/endorsers_per_block <ref59_>`_
      
  `/blocks/<block_id>/proto/constants/errors <ref60_>`_
      
  `/blocks/<block_id>/proto/constants/first_free_baking_slot <ref61_>`_
      
  `/blocks/<block_id>/proto/constants/max_gas <ref62_>`_
      
  `/blocks/<block_id>/proto/constants/origination_burn <ref63_>`_
      
  `/blocks/<block_id>/proto/constants/preserved_cycles <ref64_>`_
      
  `/blocks/<block_id>/proto/constants/proof_of_work_threshold <ref65_>`_
      
  `/blocks/<block_id>/proto/constants/seed_nonce_revelation_tip <ref66_>`_
      
  `/blocks/<block_id>/proto/constants/time_between_slots <ref67_>`_
      

/blocks/<block_id>/proto/context

`/blocks/<block_id>/proto/context/contracts <ref68_>`_
    
    `/blocks/<block_id>/proto/context/contracts/<contract_id> <ref69_>`_
        
        `/blocks/<block_id>/proto/context/contracts/<contract_id>/balance <ref70_>`_
            
        `/blocks/<block_id>/proto/context/contracts/<contract_id>/counter <ref71_>`_
            
        `/blocks/<block_id>/proto/context/contracts/<contract_id>/delegatable <ref72_>`_
            
        `/blocks/<block_id>/proto/context/contracts/<contract_id>/delegate <ref73_>`_
            
        `/blocks/<block_id>/proto/context/contracts/<contract_id>/manager <ref74_>`_
            
        `/blocks/<block_id>/proto/context/contracts/<contract_id>/script <ref75_>`_
            
        `/blocks/<block_id>/proto/context/contracts/<contract_id>/spendable <ref76_>`_
            
        `/blocks/<block_id>/proto/context/contracts/<contract_id>/storage <ref77_>`_
            
`/blocks/<block_id>/proto/context/level <ref78_>`_
    
`/blocks/<block_id>/proto/context/next_level <ref79_>`_
    
`/blocks/<block_id>/proto/context/nonce <ref80_>`_
    
    `/blocks/<block_id>/proto/context/nonce/<block_level> <ref81_>`_
        
`/blocks/<block_id>/proto/context/voting_period_kind <ref82_>`_
    

/blocks/<block_id>/proto/delegate

\/blocks/<block_id>/proto/delegate/<Signature.Public_key_hash>
  
  `/blocks/<block_id>/proto/delegate/<Signature.Public_key_hash>/frozen_balances <ref83_>`_
      

/blocks/<block_id>/proto/header <ref84_>_

  `/blocks/<block_id>/proto/header/priority <ref85_>`_
      
  `/blocks/<block_id>/proto/header/seed_nonce_hash <ref86_>`_
      

/blocks/<block_id>/proto/helpers

`/blocks/<block_id>/proto/helpers/apply_operation <ref87_>`_
    
\/blocks/<block_id>/proto/helpers/forge
  
  `/blocks/<block_id>/proto/helpers/forge/operations <ref88_>`_
      
  `/blocks/<block_id>/proto/helpers/forge/protocol_data <ref89_>`_
      
`/blocks/<block_id>/proto/helpers/hash_data <ref90_>`_
    
\/blocks/<block_id>/proto/helpers/level
  
  `/blocks/<block_id>/proto/helpers/level/<block_level> <ref91_>`_
      
\/blocks/<block_id>/proto/helpers/levels
  
  `/blocks/<block_id>/proto/helpers/levels/<block_cycle> <ref92_>`_
      
`/blocks/<block_id>/proto/helpers/minimal_timestamp <ref93_>`_
    
\/blocks/<block_id>/proto/helpers/parse
  
  `/blocks/<block_id>/proto/helpers/parse/block <ref94_>`_
      
  `/blocks/<block_id>/proto/helpers/parse/operations <ref95_>`_
      
\/blocks/<block_id>/proto/helpers/rights
  
  `/blocks/<block_id>/proto/helpers/rights/baking <ref96_>`_
      
      \/blocks/<block_id>/proto/helpers/rights/baking/delegate
        
        `/blocks/<block_id>/proto/helpers/rights/baking/delegate/<Signature.Public_key_hash> <ref97_>`_
            
      \/blocks/<block_id>/proto/helpers/rights/baking/level
        
        `/blocks/<block_id>/proto/helpers/rights/baking/level/<block_level> <ref98_>`_
            
  `/blocks/<block_id>/proto/helpers/rights/endorsement <ref99_>`_
      
      \/blocks/<block_id>/proto/helpers/rights/endorsement/delegate
        
        `/blocks/<block_id>/proto/helpers/rights/endorsement/delegate/<Signature.Public_key_hash> <ref100_>`_
            
      \/blocks/<block_id>/proto/helpers/rights/endorsement/level
        
        `/blocks/<block_id>/proto/helpers/rights/endorsement/level/<block_level> <ref101_>`_
            
`/blocks/<block_id>/proto/helpers/run_code <ref102_>`_
    
`/blocks/<block_id>/proto/helpers/trace_code <ref103_>`_
    
`/blocks/<block_id>/proto/helpers/typecheck_code <ref104_>`_
    
`/blocks/<block_id>/proto/helpers/typecheck_data <ref105_>`_
    

/blocks/<block_id>/proto/operations <ref106_>_

Protocol Alpha RPCs - Full description **************************************

.. _ref50 :

POST /blocks/<block_id>/proto/constants

.. raw:: html

<button class="tablinks defaultOpen" onclick="showTab(this, 'ref50descr', 'ref50')">Description</button>
<button class="tablinks" onclick="showTab(this, 'ref50output', 'ref50')">Output format</button>
</div>
<p>
All constants</p>
</div>
<pre>
{ "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 }</pre>
</div>

.. _ref51 :

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

.. raw:: html

<button class="tablinks defaultOpen" onclick="showTab(this, 'ref51descr', 'ref51')">Description</button>
<button class="tablinks" onclick="showTab(this, 'ref51output', 'ref51')">Output format</button>
</div>
<p>
    block_reward</p>
</div>
<pre>
{ "    block_reward":
    /* Amount in mutez */
    integer ∈ ]-2^31-2, 2^31+2[ || string }</pre>
</div>

.. _ref52 :

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

.. raw:: html

<button class="tablinks defaultOpen" onclick="showTab(this, 'ref52descr', 'ref52')">Description</button>
<button class="tablinks" onclick="showTab(this, 'ref52output', 'ref52')">Output format</button>
</div>
<p>
 endorsement_reward</p>
</div>
<pre>
{ " endorsement_reward":
    /* Amount in mutez */
    integer ∈ ]-2^31-2, 2^31+2[ || string }</pre>
</div>

.. _ref53 :

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

.. raw:: html

<button class="tablinks defaultOpen" onclick="showTab(this, 'ref53descr', 'ref53')">Description</button>
<button class="tablinks" onclick="showTab(this, 'ref53output', 'ref53')">Output format</button>
</div>
<p>
block_security_deposit</p>
</div>
<pre>
{ "block_security_deposit":
    /* Amount in mutez */
    integer ∈ ]-2^31-2, 2^31+2[ || string }</pre>
</div>

.. _ref54 :

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

.. raw:: html

<button class="tablinks defaultOpen" onclick="showTab(this, 'ref54descr', 'ref54')">Description</button>
<button class="tablinks" onclick="showTab(this, 'ref54output', 'ref54')">Output format</button>
</div>
<p>
How many blocks between random seed's nonce commitment</p>
</div>
<pre>
{ "blocks_per_commitment": integer ∈ ]-2^31-2, 2^31+2[ }</pre>
</div>

.. _ref55 :

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

.. raw:: html

<button class="tablinks defaultOpen" onclick="showTab(this, 'ref55descr', 'ref55')">Description</button>
<button class="tablinks" onclick="showTab(this, 'ref55output', 'ref55')">Output format</button>
</div>
<p>
Cycle length</p>
</div>
<pre>
{ "blocks_per_cycle": integer ∈ ]-2^31-2, 2^31+2[ }</pre>
</div>

.. _ref56 :

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

.. raw:: html

<button class="tablinks defaultOpen" onclick="showTab(this, 'ref56descr', 'ref56')">Description</button>
<button class="tablinks" onclick="showTab(this, 'ref56output', 'ref56')">Output format</button>
</div>
<p>
How many blocks between roll snapshots</p>
</div>
<pre>
{ "blocks_per_roll_snapshot": integer ∈ ]-2^31-2, 2^31+2[ }</pre>
</div>

.. _ref57 :

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

.. raw:: html

<button class="tablinks defaultOpen" onclick="showTab(this, 'ref57descr', 'ref57')">Description</button>
<button class="tablinks" onclick="showTab(this, 'ref57output', 'ref57')">Output format</button>
</div>
<p>
Length of the voting period</p>
</div>
<pre>
{ "blocks_per_voting_period": integer ∈ ]-2^31-2, 2^31+2[ }</pre>
</div>

.. _ref58 :

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

.. raw:: html

<button class="tablinks defaultOpen" onclick="showTab(this, 'ref58descr', 'ref58')">Description</button>
<button class="tablinks" onclick="showTab(this, 'ref58output', 'ref58')">Output format</button>
</div>
<p>
endorsement_security_deposit</p>
</div>
<pre>
{ "endorsement_security_deposit":
    /* Amount in mutez */
    integer ∈ ]-2^31-2, 2^31+2[ || string }</pre>
</div>

.. _ref59 :

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

.. raw:: html

<button class="tablinks defaultOpen" onclick="showTab(this, 'ref59descr', 'ref59')">Description</button>
<button class="tablinks" onclick="showTab(this, 'ref59output', 'ref59')">Output format</button>
</div>
<p>
Max signing slot</p>
</div>
<pre>
{ "endorsers_per_block": integer ∈ ]0, 2^16-1[ }</pre>
</div>

.. _ref60 :

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

.. raw:: html

<button class="tablinks defaultOpen" onclick="showTab(this, 'ref60descr', 'ref60')">Description</button>
<button class="tablinks" onclick="showTab(this, 'ref60output', 'ref60')">Output format</button>
</div>
<p>
Schema for all the RPC errors from this protocol version</p>
</div>
<pre>
any</pre>
</div>

.. _ref61 :

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

.. raw:: html

<button class="tablinks defaultOpen" onclick="showTab(this, 'ref61descr', 'ref61')">Description</button>
<button class="tablinks" onclick="showTab(this, 'ref61output', 'ref61')">Output format</button>
</div>
<p>
First free baking slot</p>
</div>
<pre>
{ "first_free_baking_slot": integer ∈ ]0, 2^16-1[ }</pre>
</div>

.. _ref62 :

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

.. raw:: html

<button class="tablinks defaultOpen" onclick="showTab(this, 'ref62descr', 'ref62')">Description</button>
<button class="tablinks" onclick="showTab(this, 'ref62output', 'ref62')">Output format</button>
</div>
<p>
Instructions per transaction</p>
</div>
<pre>
{ "instructions_per_transaction": integer ∈ ]-2^30-2, 2^30+2[ }</pre>
</div>

.. _ref63 :

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

.. raw:: html

<button class="tablinks defaultOpen" onclick="showTab(this, 'ref63descr', 'ref63')">Description</button>
<button class="tablinks" onclick="showTab(this, 'ref63output', 'ref63')">Output format</button>
</div>
<p>
origination_burn</p>
</div>
<pre>
{ "origination_burn":
    /* Amount in mutez */
    integer ∈ ]-2^31-2, 2^31+2[ || string }</pre>
</div>

.. _ref64 :

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

.. raw:: html

<button class="tablinks defaultOpen" onclick="showTab(this, 'ref64descr', 'ref64')">Description</button>
<button class="tablinks" onclick="showTab(this, 'ref64output', 'ref64')">Output format</button>
</div>
<p>
How many cycle before the 'no-automatic-fork point'</p>
</div>
<pre>
{ "preserved_cycles": integer ∈ ]-2^30-2, 2^30+2[ }</pre>
</div>

.. _ref65 :

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

.. raw:: html

<button class="tablinks defaultOpen" onclick="showTab(this, 'ref65descr', 'ref65')">Description</button>
<button class="tablinks" onclick="showTab(this, 'ref65output', 'ref65')">Output format</button>
</div>
<p>
Stamp threshold</p>
</div>
<pre>
{ "proof_of_work_threshold": integer ∈ ]-2^31-2, 2^31+2[ || string }</pre>
</div>

.. _ref66 :

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

.. raw:: html

<button class="tablinks defaultOpen" onclick="showTab(this, 'ref66descr', 'ref66')">Description</button>
<button class="tablinks" onclick="showTab(this, 'ref66output', 'ref66')">Output format</button>
</div>
<p>
seed_nonce_revelation_tip</p>
</div>
<pre>
{ "seed_nonce_revelation_tip":
    /* Amount in mutez */
    integer ∈ ]-2^31-2, 2^31+2[ || string }</pre>
</div>

.. _ref67 :

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

.. raw:: html

<button class="tablinks defaultOpen" onclick="showTab(this, 'ref67descr', 'ref67')">Description</button>
<button class="tablinks" onclick="showTab(this, 'ref67output', 'ref67')">Output format</button>
</div>
<p>
Slot durations</p>
</div>
<pre>
{ "time_between_slots": [ integer ∈ ]-2^31-2, 2^31+2[ || string ... ] }</pre>
</div>

.. _ref68 :

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

.. raw:: html

<button class="tablinks defaultOpen" onclick="showTab(this, 'ref68descr', 'ref68')">Description</button>
<button class="tablinks" onclick="showTab(this, 'ref68output', 'ref68')">Output format</button>
</div>
<p>
All existing contracts (including non-empty default contracts).</p>
</div>
<pre>
[ 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. */ ... ]</pre>
</div>

.. _ref69 :

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

.. raw:: html

<button class="tablinks defaultOpen" onclick="showTab(this, 'ref69descr', 'ref69')">Description</button>
<button class="tablinks" onclick="showTab(this, 'ref69output', 'ref69')">Output format</button>
</div>
<p>
Access the complete status of a contract.</p>
</div>
<pre>
{ "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 }</pre>
</div>

.. _ref70 :

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

.. raw:: html

<button class="tablinks defaultOpen" onclick="showTab(this, 'ref70descr', 'ref70')">Description</button>
<button class="tablinks" onclick="showTab(this, 'ref70output', 'ref70')">Output format</button>
</div>
<p>
Access the balance of a contract.</p>
</div>
<pre>
{ "balance": /* Amount in mutez */integer ∈ ]-2^31-2, 2^31+2[ || string }</pre>
</div>

.. _ref71 :

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

.. raw:: html

<button class="tablinks defaultOpen" onclick="showTab(this, 'ref71descr', 'ref71')">Description</button>
<button class="tablinks" onclick="showTab(this, 'ref71output', 'ref71')">Output format</button>
</div>
<p>
Access the counter of a contract, if any.</p>
</div>
<pre>
{ "counter": integer ∈ ]-2^31-2, 2^31+2[ }</pre>
</div>

.. _ref72 :

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

.. raw:: html

<button class="tablinks defaultOpen" onclick="showTab(this, 'ref72descr', 'ref72')">Description</button>
<button class="tablinks" onclick="showTab(this, 'ref72output', 'ref72')">Output format</button>
</div>
<p>
Tells if the contract delegate can be changed.</p>
</div>
<pre>
{ "delegatable": boolean }</pre>
</div>

.. _ref73 :

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

.. raw:: html

<button class="tablinks defaultOpen" onclick="showTab(this, 'ref73descr', 'ref73')">Description</button>
<button class="tablinks" onclick="showTab(this, 'ref73output', 'ref73')">Output format</button>
</div>
<p>
Access the delegate of a contract, if any.</p>
</div>
<pre>
{ "delegate":
    string
    /* A Secp256k1 or Ed25519 public key hash (Base58Check-encoded) */ }</pre>
</div>

.. _ref74 :

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

.. raw:: html

<button class="tablinks defaultOpen" onclick="showTab(this, 'ref74descr', 'ref74')">Description</button>
<button class="tablinks" onclick="showTab(this, 'ref74output', 'ref74')">Output format</button>
</div>
<p>
Access the manager of a contract.</p>
</div>
<pre>
{ "manager":
    string
    /* A Secp256k1 or Ed25519 public key hash (Base58Check-encoded) */ }</pre>
</div>

.. _ref75 :

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

.. raw:: html

<button class="tablinks defaultOpen" onclick="showTab(this, 'ref75descr', 'ref75')">Description</button>
<button class="tablinks" onclick="showTab(this, 'ref75output', 'ref75')">Output format</button>
</div>
<p>
Access the code and data of the contract.</p>
</div>
<pre>
{ "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 }</pre>
</div>

.. _ref76 :

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

.. raw:: html

<button class="tablinks defaultOpen" onclick="showTab(this, 'ref76descr', 'ref76')">Description</button>
<button class="tablinks" onclick="showTab(this, 'ref76output', 'ref76')">Output format</button>
</div>
<p>
Tells if the contract tokens can be spent by the manager.</p>
</div>
<pre>
{ "spendable": boolean }</pre>
</div>

.. _ref77 :

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

.. raw:: html

<button class="tablinks defaultOpen" onclick="showTab(this, 'ref77descr', 'ref77')">Description</button>
<button class="tablinks" onclick="showTab(this, 'ref77output', 'ref77')">Output format</button>
</div>
<p>
Access the data of the contract.</p>
</div>
<pre>
$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 }</pre>
</div>

.. _ref78 :

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

.. raw:: html

<button class="tablinks defaultOpen" onclick="showTab(this, 'ref78descr', 'ref78')">Description</button>
<button class="tablinks" onclick="showTab(this, 'ref78output', 'ref78')">Output format</button>
</div>
<p>
Detailled level information for the current block</p>
</div>
<pre>
{ "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 }</pre>
</div>

.. _ref79 :

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

.. raw:: html

<button class="tablinks defaultOpen" onclick="showTab(this, 'ref79descr', 'ref79')">Description</button>
<button class="tablinks" onclick="showTab(this, 'ref79output', 'ref79')">Output format</button>
</div>
<p>
Detailled level information for the next block</p>
</div>
<pre>
{ "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 }</pre>
</div>

.. _ref80 :

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

.. raw:: html

<button class="tablinks defaultOpen" onclick="showTab(this, 'ref80descr', 'ref80')">Description</button>
<button class="tablinks" onclick="showTab(this, 'ref80output', 'ref80')">Output format</button>
</div>
<p>
Hash of the current block's nonce.</p>
</div>
<pre>
string
/* A nonce hash (Base58Check-encoded) */</pre>
</div>

.. _ref81 :

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

.. raw:: html

<button class="tablinks defaultOpen" onclick="showTab(this, 'ref81descr', 'ref81')">Description</button>
<button class="tablinks" onclick="showTab(this, 'ref81output', 'ref81')">Output format</button>
</div>
<p>
Info about the nonce of a previous block.</p>
</div>
<pre>
{ "nonce": /^[a-zA-Z0-9]+$/ }
|| { "hash": string /* A nonce hash (Base58Check-encoded) */ }
|| {  }</pre>
</div>

.. _ref82 :

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

.. raw:: html

<button class="tablinks defaultOpen" onclick="showTab(this, 'ref82descr', 'ref82')">Description</button>
<button class="tablinks" onclick="showTab(this, 'ref82output', 'ref82')">Output format</button>
</div>
<p>
Voting period kind for the current block</p>
</div>
<pre>
{ "voting_period_kind":
    "proposal" || "testing_vote" || "testing" || "promotion_vote" }</pre>
</div>

.. _ref83 :

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

.. raw:: html

<button class="tablinks defaultOpen" onclick="showTab(this, 'ref83descr', 'ref83')">Description</button>
<button class="tablinks" onclick="showTab(this, 'ref83output', 'ref83')">Output format</button>
</div>
<p>
Returns the amount of frozen tokens associated to a given key.</p>
</div>
<pre>
{ "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 }</pre>
</div>

.. _ref84 :

POST /blocks/<block_id>/proto/header

.. raw:: html

<button class="tablinks defaultOpen" onclick="showTab(this, 'ref84descr', 'ref84')">Description</button>
<button class="tablinks" onclick="showTab(this, 'ref84output', 'ref84')">Output format</button>
</div>
<p>
The header of the block (fully decoded).</p>
</div>
<pre>
{ "level": integer ∈ ]-2^31-2, 2^31+2[,
  "proto": integer ∈ ]0, 255[,
  "predecessor": string /* A Tezos block ID (Base58Check-encoded) */,
  "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</pre>
</div>

.. _ref85 :

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

.. raw:: html

<button class="tablinks defaultOpen" onclick="showTab(this, 'ref85descr', 'ref85')">Description</button>
<button class="tablinks" onclick="showTab(this, 'ref85output', 'ref85')">Output format</button>
</div>
<p>
Baking priority of the block.</p>
</div>
<pre>
{ "priority": integer ∈ ]0, 2^16-1[ }</pre>
</div>

.. _ref86 :

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

.. raw:: html

<button class="tablinks defaultOpen" onclick="showTab(this, 'ref86descr', 'ref86')">Description</button>
<button class="tablinks" onclick="showTab(this, 'ref86output', 'ref86')">Output format</button>
</div>
<p>
Hash of the seed nonce of the block.</p>
</div>
<pre>
string
/* A nonce hash (Base58Check-encoded) */</pre>
</div>

.. _ref87 :

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

.. raw:: html

<button class="tablinks defaultOpen" onclick="showTab(this, 'ref87descr', 'ref87')">Description</button>
<button class="tablinks" onclick="showTab(this, 'ref87input', 'ref87')">Input format</button>
<button class="tablinks" onclick="showTab(this, 'ref87output', 'ref87')">Output format</button>
</div>
<p>
Applies an operation in the current context</p>
</div>
<pre>
{ "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) */ }</pre>
</div>
<pre>
{ "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. */ ... ] }</pre>
</div>

.. _ref88 :

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

.. raw:: html

<button class="tablinks defaultOpen" onclick="showTab(this, 'ref88descr', 'ref88')">Description</button>
<button class="tablinks" onclick="showTab(this, 'ref88input', 'ref88')">Input format</button>
<button class="tablinks" onclick="showTab(this, 'ref88output', 'ref88')">Output format</button>
</div>
<p>
Forge an operation</p>
</div>
<pre>
{ "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":
       [ { "kind": "reveal",
           "public_key":
             string
             /* A Secp256k1 or Ed25519 public key (Base58Check-encoded) */ }
         || { "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 }
         || { "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 } }
         || { "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 || 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 || 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":
         [ { "kind": "reveal",
             "public_key":
               string
               /* A Secp256k1 or Ed25519 public key (Base58Check-encoded) */ }
           || { "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 }
           || { "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 } }
           || { "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
                      || 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
                      || 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</pre>
</div>
<pre>
{ "operation": /^[a-zA-Z0-9]+$/ /* hex encoded operation */ }</pre>
</div>

.. _ref89 :

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

.. raw:: html

<button class="tablinks defaultOpen" onclick="showTab(this, 'ref89descr', 'ref89')">Description</button>
<button class="tablinks" onclick="showTab(this, 'ref89input', 'ref89')">Input format</button>
<button class="tablinks" onclick="showTab(this, 'ref89output', 'ref89')">Output format</button>
</div>
<p>
Forge the protocol-specific part of a block header</p>
</div>
<pre>
{ "priority": integer ∈ ]0, 2^16-1[,
  "nonce_hash"?: string /* A nonce hash (Base58Check-encoded) */,
  "proof_of_work_nonce"?: /^[a-zA-Z0-9]+$/ }</pre>
</div>
<pre>
{ "protocol_data": /^[a-zA-Z0-9]+$/ }</pre>
</div>

.. _ref90 :

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

.. raw:: html

<button class="tablinks defaultOpen" onclick="showTab(this, 'ref90descr', 'ref90')">Description</button>
<button class="tablinks" onclick="showTab(this, 'ref90input', 'ref90')">Input format</button>
<button class="tablinks" onclick="showTab(this, 'ref90output', 'ref90')">Output format</button>
</div>
<p>
Computes the hash of some data expression using the same algorithm as script instruction H</p>
</div>
<pre>
{ "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 }</pre>
</div>
<pre>
{ "hash": string }</pre>
</div>

.. _ref91 :

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

.. raw:: html

<button class="tablinks defaultOpen" onclick="showTab(this, 'ref91descr', 'ref91')">Description</button>
<button class="tablinks" onclick="showTab(this, 'ref91input', 'ref91')">Input format</button>
<button class="tablinks" onclick="showTab(this, 'ref91output', 'ref91')">Output format</button>
</div>
<p>
...</p>
</div>
<pre>
{ "offset"?: integer ∈ ]-2^31-2, 2^31+2[ }</pre>
</div>
<pre>
{ "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 }</pre>
</div>

.. _ref92 :

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

.. raw:: html

<button class="tablinks defaultOpen" onclick="showTab(this, 'ref92descr', 'ref92')">Description</button>
<button class="tablinks" onclick="showTab(this, 'ref92output', 'ref92')">Output format</button>
</div>
<p>
Levels of a cycle</p>
</div>
<pre>
{ /* levels of a cycle */
  "first": integer ∈ ]-2^31-2, 2^31+2[,
  "last": integer ∈ ]-2^31-2, 2^31+2[ }</pre>
</div>

.. _ref93 :

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

.. raw:: html

<button class="tablinks defaultOpen" onclick="showTab(this, 'ref93descr', 'ref93')">Description</button>
<button class="tablinks" onclick="showTab(this, 'ref93input', 'ref93')">Input format</button>
<button class="tablinks" onclick="showTab(this, 'ref93output', 'ref93')">Output format</button>
</div>
<p>
Minimal timestamp for the next block.</p>
</div>
<pre>
{ "priority"?: integer ∈ ]-2^30-2, 2^30+2[ }</pre>
</div>
<pre>
{ "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</pre>
</div>

.. _ref94 :

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

.. raw:: html

<button class="tablinks defaultOpen" onclick="showTab(this, 'ref94descr', 'ref94')">Description</button>
<button class="tablinks" onclick="showTab(this, 'ref94input', 'ref94')">Input format</button>
<button class="tablinks" onclick="showTab(this, 'ref94output', 'ref94')">Output format</button>
</div>
<p>
Parse a block</p>
</div>
<pre>
{ "level": integer ∈ ]-2^31-2, 2^31+2[,
  "proto": integer ∈ ]0, 255[,
  "predecessor": string /* A Tezos block ID (Base58Check-encoded) */,
  "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</pre>
</div>
<pre>
{ "priority": integer ∈ ]0, 2^16-1[,
  "proof_of_work_nonce": /^[a-zA-Z0-9]+$/,
  "seed_nonce_hash"?: string /* A nonce hash (Base58Check-encoded) */ }</pre>
</div>

.. _ref95 :

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

.. raw:: html

<button class="tablinks defaultOpen" onclick="showTab(this, 'ref95descr', 'ref95')">Description</button>
<button class="tablinks" onclick="showTab(this, 'ref95input', 'ref95')">Input format</button>
<button class="tablinks" onclick="showTab(this, 'ref95output', 'ref95')">Output format</button>
</div>
<p>
Parse operations</p>
</div>
<pre>
{ "operations":
    [ { "branch": string /* A Tezos block ID (Base58Check-encoded) */,
        "data": /^[a-zA-Z0-9]+$/ } ... ],
  "check_signature"?: boolean }</pre>
</div>
<pre>
[ $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":
         [ { "kind": "reveal",
             "public_key":
               string
               /* A Secp256k1 or Ed25519 public key (Base58Check-encoded) */ }
           || { "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 }
           || { "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 } }
           || { "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
                      || 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
                      || 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</pre>
</div>

.. _ref96 :

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

.. raw:: html

<button class="tablinks defaultOpen" onclick="showTab(this, 'ref96descr', 'ref96')">Description</button>
<button class="tablinks" onclick="showTab(this, 'ref96input', 'ref96')">Input format</button>
<button class="tablinks" onclick="showTab(this, 'ref96output', 'ref96')">Output format</button>
</div>
<p>
List delegates allowed to bake for the next level, ordered by priority.</p>
</div>
<pre>
{ "max_priority"?: integer ∈ ]-2^30-2, 2^30+2[ }</pre>
</div>
<pre>
{ "level": integer ∈ ]-2^31-2, 2^31+2[,
  "baking_rights":
    [ { "delegate":
          string
          /* A Secp256k1 or Ed25519 public key hash (Base58Check-encoded) */,
        "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</pre>
</div>

.. _ref97 :

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

.. raw:: html

<button class="tablinks defaultOpen" onclick="showTab(this, 'ref97descr', 'ref97')">Description</button>
<button class="tablinks" onclick="showTab(this, 'ref97input', 'ref97')">Input format</button>
<button class="tablinks" onclick="showTab(this, 'ref97output', 'ref97')">Output format</button>
</div>
<p>
Future baking rights for a given delegate.</p>
</div>
<pre>
{ "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[ }</pre>
</div>
<pre>
[ { "level": integer ∈ ]-2^31-2, 2^31+2[,
    "priority": integer ∈ ]-2^30-2, 2^30+2[,
    "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</pre>
</div>

.. _ref98 :

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

.. raw:: html

<button class="tablinks defaultOpen" onclick="showTab(this, 'ref98descr', 'ref98')">Description</button>
<button class="tablinks" onclick="showTab(this, 'ref98input', 'ref98')">Input format</button>
<button class="tablinks" onclick="showTab(this, 'ref98output', 'ref98')">Output format</button>
</div>
<p>
List delegate allowed to bake for a given level, ordered by priority.</p>
</div>
<pre>
{ "max_priority"?: integer ∈ ]-2^30-2, 2^30+2[ }</pre>
</div>
<pre>
{ "level": integer ∈ ]-2^31-2, 2^31+2[,
  "delegates":
    [ string
    /* A Secp256k1 or Ed25519 public key hash (Base58Check-encoded) */ ... ] }</pre>
</div>

.. _ref99 :

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

.. raw:: html

<button class="tablinks defaultOpen" onclick="showTab(this, 'ref99descr', 'ref99')">Description</button>
<button class="tablinks" onclick="showTab(this, 'ref99input', 'ref99')">Input format</button>
<button class="tablinks" onclick="showTab(this, 'ref99output', 'ref99')">Output format</button>
</div>
<p>
List delegates allowed to endorse for the current block.</p>
</div>
<pre>
{ "max_priority"?: integer ∈ ]-2^30-2, 2^30+2[ }</pre>
</div>
<pre>
{ "level": integer ∈ ]-2^31-2, 2^31+2[,
  "delegates":
    [ string
    /* A Secp256k1 or Ed25519 public key hash (Base58Check-encoded) */ ... ] }</pre>
</div>

.. _ref100 :

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

.. raw:: html

<button class="tablinks defaultOpen" onclick="showTab(this, 'ref100descr', 'ref100')">Description</button>
<button class="tablinks" onclick="showTab(this, 'ref100input', 'ref100')">Input format</button>
<button class="tablinks" onclick="showTab(this, 'ref100output', 'ref100')">Output format</button>
</div>
<p>
Compute endorsement rights for a given delegate.</p>
</div>
<pre>
{ "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[ }</pre>
</div>
<pre>
[ { "level": integer ∈ ]-2^31-2, 2^31+2[,
    "priority": integer ∈ ]-2^30-2, 2^30+2[ } ... ]</pre>
</div>

.. _ref101 :

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

.. raw:: html

<button class="tablinks defaultOpen" onclick="showTab(this, 'ref101descr', 'ref101')">Description</button>
<button class="tablinks" onclick="showTab(this, 'ref101input', 'ref101')">Input format</button>
<button class="tablinks" onclick="showTab(this, 'ref101output', 'ref101')">Output format</button>
</div>
<p>
List delegates allowed to endorse blocks for a given level.</p>
</div>
<pre>
{ "max_priority"?: integer ∈ ]-2^30-2, 2^30+2[ }</pre>
</div>
<pre>
{ "level": integer ∈ ]-2^31-2, 2^31+2[,
  "delegates":
    [ string
    /* A Secp256k1 or Ed25519 public key hash (Base58Check-encoded) */ ... ] }</pre>
</div>

.. _ref102 :

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

.. raw:: html

<button class="tablinks defaultOpen" onclick="showTab(this, 'ref102descr', 'ref102')">Description</button>
<button class="tablinks" onclick="showTab(this, 'ref102input', 'ref102')">Input format</button>
<button class="tablinks" onclick="showTab(this, 'ref102output', 'ref102')">Output format</button>
</div>
<p>
Run a piece of code in the current context</p>
</div>
<pre>
{ "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 }</pre>
</div>
<pre>
{ "storage": $micheline.michelson_v1.expression,
  "output": $micheline.michelson_v1.expression,
  "big_map_diff"?:
    [ [ $micheline.michelson_v1.expression,
        $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 }</pre>
</div>

.. _ref103 :

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

.. raw:: html

<button class="tablinks defaultOpen" onclick="showTab(this, 'ref103descr', 'ref103')">Description</button>
<button class="tablinks" onclick="showTab(this, 'ref103input', 'ref103')">Input format</button>
<button class="tablinks" onclick="showTab(this, 'ref103output', 'ref103')">Output format</button>
</div>
<p>
Run a piece of code in the current context, keeping a trace</p>
</div>
<pre>
{ "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 }</pre>
</div>
<pre>
{ "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 || {  } ] ... ] }
$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[</pre>
</div>

.. _ref104 :

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

.. raw:: html

<button class="tablinks defaultOpen" onclick="showTab(this, 'ref104descr', 'ref104')">Description</button>
<button class="tablinks" onclick="showTab(this, 'ref104input', 'ref104')">Input format</button>
<button class="tablinks" onclick="showTab(this, 'ref104output', 'ref104')">Output format</button>
</div>
<p>
Typecheck a piece of code in the current context</p>
</div>
<pre>
$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 }</pre>
</div>
<pre>
[ { "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 }</pre>
</div>

.. _ref105 :

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

.. raw:: html

<button class="tablinks defaultOpen" onclick="showTab(this, 'ref105descr', 'ref105')">Description</button>
<button class="tablinks" onclick="showTab(this, 'ref105input', 'ref105')">Input format</button>
</div>
<p>
Check that some data expression is well formed and of a given type in the current context</p>
</div>
<pre>
{ "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 }</pre>
</div>

.. _ref106 :

POST /blocks/<block_id>/proto/operations

.. raw:: html

<button class="tablinks defaultOpen" onclick="showTab(this, 'ref106descr', 'ref106')">Description</button>
<button class="tablinks" onclick="showTab(this, 'ref106output', 'ref106')">Output format</button>
</div>
<p>
All the operations of the block (fully decoded).</p>
</div>
<pre>
[ [ { "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":
           [ { "kind": "reveal",
               "public_key":
                 string
                 /* A Secp256k1 or Ed25519 public key
                    (Base58Check-encoded) */ }
             || { "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 }
             || { "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 } }
             || { "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
                        || 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
                        || 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":
         [ { "kind": "reveal",
             "public_key":
               string
               /* A Secp256k1 or Ed25519 public key (Base58Check-encoded) */ }
           || { "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 }
           || { "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 } }
           || { "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
                      || 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
                      || 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</pre>
</div>