diff --git a/.gitlab/ci/jobs/packaging/opam_package.yml b/.gitlab/ci/jobs/packaging/opam_package.yml index 9567f44e70710155508e664d8d675909946e3896..99e6ba41bf2d8894f97d6ed380733326dc7304c4 100644 --- a/.gitlab/ci/jobs/packaging/opam_package.yml +++ b/.gitlab/ci/jobs/packaging/opam_package.yml @@ -913,7 +913,12 @@ opam:tezos-dal-node-services: # Ignoring unreleased package tezos-micheline-rewriting. -# Ignoring unreleased package tezos-openapi. +opam:tezos-openapi: + extends: + - .opam_template + - .rules_template__trigger_all_opam_batch_7 + variables: + package: tezos-openapi opam:tezos-protocol-000-Ps9mPmXa: extends: diff --git a/CHANGES.rst b/CHANGES.rst index b94979e1aedcaf238d8840562c3775be50ee3df9..0ebcff61e43f7b9f023e0bb2f08837c2e85947a7 100644 --- a/CHANGES.rst +++ b/CHANGES.rst @@ -70,6 +70,15 @@ Docker Images Smart Rollup node ----------------- +- Added RPC ``/describe?recurse=true`` to retrieve schema of RPCs for the rollup + node. (MR :gl:`!10118`) + +- Added RPC ``/openapi?protocol={ProtoHash}`` to retrieve the OpenAPI + specification for RPCs of the rollup node. (MR :gl:`!10118`) + +- Introduced a new command ``generate openapi``, to generate the OpenAPI JSON + specification and output it to stdout. (MR :gl:`!10118`) + Smart Rollup WASM Debugger -------------------------- diff --git a/docs/api/nairobi-smart-rollup-node-openapi.json b/docs/api/nairobi-smart-rollup-node-openapi.json new file mode 100644 index 0000000000000000000000000000000000000000..49a9eab0af08d189b9b34eb09a83dc179b3c5367 --- /dev/null +++ b/docs/api/nairobi-smart-rollup-node-openapi.json @@ -0,0 +1,5705 @@ +{ "openapi": "3.0.0", + "info": + { "title": "Smart Rollup Node RPCs", + "description": + "Smart Rollup Node RPC API for protocol PtNairobiyssHuh87hEhfVBGCVrK3WnS8Z2FT4ymB5tAa4r1nQf", + "version": "325c2ab2 (2023-12-06 09:45:50 +0100) (18.0~rc1+dev)" }, + "paths": + { "/describe": + { "get": + { "description": "RPCs documentation and input/output schema", + "parameters": + [ { "name": "recurse", "in": "query", "required": true, + "schema": { "type": "string" } } ], + "responses": + { "200": + { "description": "", + "content": + { "application/json": + { "schema": + { "$ref": "#/components/schemas/service_tree" } } } }, + "default": + { "description": "", + "content": + { "application/json": + { "schema": + { "description": + "The full list of errors is available with the global RPC `GET errors`" } } } } } } }, + "/global/block/{block_id}": + { "get": + { "description": + "Layer-2 block of the layer-2 chain with respect to a Layer 1 block identifier", + "parameters": + [ { "name": "block_id", "in": "path", + "description": "An L1 block identifier.", + "required": true, "schema": { "type": "string" } } ], + "responses": + { "200": + { "description": "", + "content": + { "application/json": + { "schema": + { "type": "object", + "properties": + { "block_hash": + { "description": "Tezos block hash.", + "oneOf": + [ { "$ref": + "#/components/schemas/block_hash" } ] }, + "level": + { "description": + "Level of the block, corresponds to the level of the tezos block.", + "type": "integer", + "minimum": -2147483648, + "maximum": 2147483647 }, + "predecessor": + { "description": + "Predecessor hash of the Tezos block.", + "oneOf": + [ { "$ref": + "#/components/schemas/block_hash" } ] }, + "commitment_hash": + { "description": + "Hash of this block's commitment if any was computed for it.", + "nullable": true, + "oneOf": + [ { "title": "Some", + "oneOf": + [ { "$ref": + "#/components/schemas/smart_rollup_commitment_hash" } ] } ] }, + "previous_commitment_hash": + { "description": + "Previous commitment hash in the chain. If there is a commitment for this block, this field contains the commitment that was previously computed.", + "oneOf": + [ { "$ref": + "#/components/schemas/smart_rollup_commitment_hash" } ] }, + "context": + { "description": + "Hash of the layer 2 context for this block.", + "oneOf": + [ { "$ref": + "#/components/schemas/Smart_rollup_context_hash" } ] }, + "inbox_witness": + { "description": + "Witness for the inbox for this block, i.e. the Merkle hash of payloads of messages.", + "oneOf": + [ { "$ref": + "#/components/schemas/smart_rollup_merkelized_payload_hashes_hash" } ] }, + "inbox_hash": + { "description": + "Hash of the inbox for this block.", + "oneOf": + [ { "$ref": + "#/components/schemas/smart_rollup_inbox_hash" } ] }, + "inbox": + { "description": + "Inbox for this block.", + "type": "object", + "properties": + { "level": + { "type": "integer", + "minimum": -2147483648, + "maximum": 2147483647 }, + "old_levels_messages": + { "type": "object", + "properties": + { "index": + { "$ref": + "#/components/schemas/positive_bignum" }, + "content": + { "type": "object", + "properties": + { "hash": + { "$ref": + "#/components/schemas/smart_rollup_merkelized_payload_hashes_hash" }, + "level": + { "type": + "integer", + "minimum": + -2147483648, + "maximum": + 2147483647 } }, + "required": + [ "hash", + "level" ] }, + "back_pointers": + { "type": "array", + "items": + { "$ref": + "#/components/schemas/smart_rollup_inbox_hash" } } }, + "required": + [ "index", "content", + "back_pointers" ] } }, + "required": + [ "level", + "old_levels_messages" ] }, + "messages": + { "description": + "Messages added to the inbox in this block.", + "type": "array", + "items": + { "type": "string", + "pattern": + "^([a-zA-Z0-9][a-zA-Z0-9])*$" } }, + "commitment": + { "description": + "Commitment, if any is computed for this block.", + "type": "object", + "properties": + { "compressed_state": + { "$ref": + "#/components/schemas/smart_rollup_state_hash" }, + "inbox_level": + { "type": "integer", + "minimum": -2147483648, + "maximum": 2147483647 }, + "predecessor": + { "$ref": + "#/components/schemas/smart_rollup_commitment_hash" }, + "number_of_ticks": + { "$ref": + "#/components/schemas/int64" } }, + "required": + [ "compressed_state", + "inbox_level", "predecessor", + "number_of_ticks" ] }, + "initial_tick": + { "description": + "Initial tick of the PVM at this block, i.e. before evaluation of the messages.", + "oneOf": + [ { "$ref": + "#/components/schemas/positive_bignum" } ] }, + "num_ticks": + { "description": + "Number of ticks produced by the evaluation of the messages in this block.", + "oneOf": + [ { "$ref": + "#/components/schemas/int64" } ] } }, + "required": + [ "block_hash", "level", "predecessor", + "commitment_hash", + "previous_commitment_hash", "context", + "inbox_witness", "inbox_hash", "inbox", + "messages", "initial_tick", + "num_ticks" ] } } } }, + "default": + { "description": "", + "content": + { "application/json": + { "schema": + { "description": + "The full list of errors is available with the global RPC `GET errors`" } } } } } } }, + "/global/block/{block_id}/dal/processed_slots": + { "get": + { "description": + "Data availability processed slots and their statuses", + "parameters": + [ { "name": "block_id", "in": "path", + "description": "An L1 block identifier.", + "required": true, "schema": { "type": "string" } } ], + "responses": + { "200": + { "description": "", + "content": + { "application/json": + { "schema": + { "type": "array", + "items": + { "type": "object", + "properties": + { "index": + { "type": "integer", + "minimum": -1073741824, + "maximum": 1073741823 }, + "status": + { "type": "string", + "enum": + [ "unconfirmed", + "confirmed" ] } }, + "required": [ "index", "status" ] } } } } }, + "default": + { "description": "", + "content": + { "application/json": + { "schema": + { "description": + "The full list of errors is available with the global RPC `GET errors`" } } } } } } }, + "/global/block/{block_id}/dal/slot_headers": + { "get": + { "description": "Availability slots for a given block", + "parameters": + [ { "name": "block_id", "in": "path", + "description": "An L1 block identifier.", + "required": true, "schema": { "type": "string" } } ], + "responses": + { "200": + { "description": "", + "content": + { "application/json": + { "schema": + { "type": "array", + "items": + { "type": "object", + "properties": + { "level": + { "type": "integer", + "minimum": -2147483648, + "maximum": 2147483647 }, + "index": + { "type": "integer", + "minimum": 0, "maximum": 255 }, + "commitment": + { "$ref": + "#/components/schemas/DAL_commitment" } }, + "required": + [ "level", "index", "commitment" ] } } } } }, + "default": + { "description": "", + "content": + { "application/json": + { "schema": + { "description": + "The full list of errors is available with the global RPC `GET errors`" } } } } } } }, + "/global/block/{block_id}/durable/wasm_2_0_0/length": + { "get": + { "description": + "Retrieve number of bytes in raw representation of value by key from PVM durable storage. PVM state is taken with respect to the specified block level.", + "parameters": + [ { "name": "block_id", "in": "path", + "description": "An L1 block identifier.", + "required": true, "schema": { "type": "string" } }, + { "name": "key", "in": "query", "required": true, + "schema": { "type": "string" } } ], + "responses": + { "200": + { "description": "", + "content": + { "application/json": + { "schema": + { "nullable": true, + "oneOf": + [ { "title": "Some", + "oneOf": + [ { "$ref": + "#/components/schemas/int64" } ] } ] } } } }, + "default": + { "description": "", + "content": + { "application/json": + { "schema": + { "description": + "The full list of errors is available with the global RPC `GET errors`" } } } } } } }, + "/global/block/{block_id}/durable/wasm_2_0_0/subkeys": + { "get": + { "description": + "Retrieve subkeys of the specified key from PVM durable storage. PVM state is taken with respect to the specified block level.", + "parameters": + [ { "name": "block_id", "in": "path", + "description": "An L1 block identifier.", + "required": true, "schema": { "type": "string" } }, + { "name": "key", "in": "query", "required": true, + "schema": { "type": "string" } } ], + "responses": + { "200": + { "description": "", + "content": + { "application/json": + { "schema": + { "type": "array", + "items": + { "$ref": + "#/components/schemas/unistring" } } } } }, + "default": + { "description": "", + "content": + { "application/json": + { "schema": + { "description": + "The full list of errors is available with the global RPC `GET errors`" } } } } } } }, + "/global/block/{block_id}/durable/wasm_2_0_0/value": + { "get": + { "description": + "Retrieve value by key from PVM durable storage. PVM state is taken with respect to the specified block level. Value returned in hex format.", + "parameters": + [ { "name": "block_id", "in": "path", + "description": "An L1 block identifier.", + "required": true, "schema": { "type": "string" } }, + { "name": "key", "in": "query", "required": true, + "schema": { "type": "string" } } ], + "responses": + { "200": + { "description": "", + "content": + { "application/json": + { "schema": + { "nullable": true, + "oneOf": + [ { "title": "Some", "type": "string", + "pattern": + "^([a-zA-Z0-9][a-zA-Z0-9])*$" } ] } } } }, + "default": + { "description": "", + "content": + { "application/json": + { "schema": + { "description": + "The full list of errors is available with the global RPC `GET errors`" } } } } } } }, + "/global/block/{block_id}/hash": + { "get": + { "description": + "Tezos block hash of block known to the smart rollup node", + "parameters": + [ { "name": "block_id", "in": "path", + "description": "An L1 block identifier.", + "required": true, "schema": { "type": "string" } } ], + "responses": + { "200": + { "description": "", + "content": + { "application/json": + { "schema": + { "title": + "A block identifier (Base58Check-encoded)", + "oneOf": + [ { "$ref": + "#/components/schemas/unistring" } ] } } } }, + "default": + { "description": "", + "content": + { "application/json": + { "schema": + { "description": + "The full list of errors is available with the global RPC `GET errors`" } } } } } } }, + "/global/block/{block_id}/helpers/proofs/outbox": + { "get": + { "description": + "Generate serialized output proof for some outbox message", + "parameters": + [ { "name": "block_id", "in": "path", + "description": "An L1 block identifier.", + "required": true, "schema": { "type": "string" } }, + { "name": "outbox_level", "in": "query", "required": false, + "schema": { "type": "string" } }, + { "name": "message_index", "in": "query", + "required": false, "schema": { "type": "string" } }, + { "name": "serialized_outbox_message", "in": "query", + "required": false, "schema": { "type": "string" } } ], + "responses": + { "200": + { "description": "", + "content": + { "application/json": + { "schema": + { "type": "object", + "properties": + { "commitment": + { "$ref": + "#/components/schemas/Smart_rollup_commitment_hash" }, + "proof": + { "type": "string", + "pattern": + "^([a-zA-Z0-9][a-zA-Z0-9])*$" } }, + "required": [ "commitment", "proof" ] } } } }, + "default": + { "description": "", + "content": + { "application/json": + { "schema": + { "description": + "The full list of errors is available with the global RPC `GET errors`" } } } } } } }, + "/global/block/{block_id}/helpers/proofs/outbox/{level}/messages": + { "get": + { "description": + "Generate serialized output proof for some outbox message at level and index", + "parameters": + [ { "name": "block_id", "in": "path", + "description": "An L1 block identifier.", + "required": true, "schema": { "type": "string" } }, + { "name": "level", "in": "path", "required": true, + "schema": { "type": "string" } }, + { "name": "index", "in": "query", "required": false, + "schema": { "type": "string" } } ], + "responses": + { "200": + { "description": "", + "content": + { "application/json": + { "schema": + { "type": "object", + "properties": + { "commitment": + { "$ref": + "#/components/schemas/Smart_rollup_commitment_hash" }, + "proof": + { "type": "string", + "pattern": + "^([a-zA-Z0-9][a-zA-Z0-9])*$" } }, + "required": [ "commitment", "proof" ] } } } }, + "default": + { "description": "", + "content": + { "application/json": + { "schema": + { "description": + "The full list of errors is available with the global RPC `GET errors`" } } } } } } }, + "/global/block/{block_id}/inbox": + { "get": + { "description": "Rollup inbox for block", + "parameters": + [ { "name": "block_id", "in": "path", + "description": "An L1 block identifier.", + "required": true, "schema": { "type": "string" } } ], + "responses": + { "200": + { "description": "", + "content": + { "application/json": + { "schema": + { "type": "object", + "properties": + { "level": + { "type": "integer", + "minimum": -2147483648, + "maximum": 2147483647 }, + "old_levels_messages": + { "type": "object", + "properties": + { "index": + { "$ref": + "#/components/schemas/positive_bignum" }, + "content": + { "type": "object", + "properties": + { "hash": + { "$ref": + "#/components/schemas/smart_rollup_merkelized_payload_hashes_hash" }, + "level": + { "type": "integer", + "minimum": + -2147483648, + "maximum": + 2147483647 } }, + "required": + [ "hash", "level" ] }, + "back_pointers": + { "type": "array", + "items": + { "$ref": + "#/components/schemas/smart_rollup_inbox_hash" } } }, + "required": + [ "index", "content", + "back_pointers" ] } }, + "required": + [ "level", "old_levels_messages" ] } } } }, + "default": + { "description": "", + "content": + { "application/json": + { "schema": + { "description": + "The full list of errors is available with the global RPC `GET errors`" } } } } } } }, + "/global/block/{block_id}/level": + { "get": + { "description": + "Level of Tezos block known to the smart rollup node", + "parameters": + [ { "name": "block_id", "in": "path", + "description": "An L1 block identifier.", + "required": true, "schema": { "type": "string" } } ], + "responses": + { "200": + { "description": "", + "content": + { "application/json": + { "schema": + { "type": "integer", "minimum": -2147483648, + "maximum": 2147483647 } } } }, + "default": + { "description": "", + "content": + { "application/json": + { "schema": + { "description": + "The full list of errors is available with the global RPC `GET errors`" } } } } } } }, + "/global/block/{block_id}/num_messages": + { "get": + { "description": "Number of messages for specified block", + "parameters": + [ { "name": "block_id", "in": "path", + "description": "An L1 block identifier.", + "required": true, "schema": { "type": "string" } } ], + "responses": + { "200": + { "description": "", + "content": + { "application/json": + { "schema": + { "title": "Big number", + "description": + "Decimal representation of a big number", + "type": "string" } } } }, + "default": + { "description": "", + "content": + { "application/json": + { "schema": + { "description": + "The full list of errors is available with the global RPC `GET errors`" } } } } } } }, + "/global/block/{block_id}/outbox": + { "get": + { "description": "Outbox at block for a given outbox level", + "parameters": + [ { "name": "block_id", "in": "path", + "description": "An L1 block identifier.", + "required": true, "schema": { "type": "string" } }, + { "name": "outbox_level", "in": "query", "required": false, + "schema": { "type": "string" } } ], + "responses": + { "200": + { "description": "", + "content": + { "application/json": + { "schema": + { "type": "array", + "items": + { "type": "object", + "properties": + { "outbox_level": + { "type": "integer", + "minimum": -2147483648, + "maximum": 2147483647 }, + "message_index": + { "$ref": + "#/components/schemas/positive_bignum" }, + "message": + { "oneOf": + [ { "title": + "Atomic_transaction_batch", + "type": "object", + "properties": + { "transactions": + { "type": "array", + "items": + { "type": + "object", + "properties": + { "parameters": + { "$ref": + "#/components/schemas/micheline.017-PtNairob.michelson_v1.expression" }, + "destination": + { "$ref": + "#/components/schemas/017-PtNairob.contract_id.originated" }, + "entrypoint": + { "$ref": + "#/components/schemas/unistring" } }, + "required": + [ "parameters", + "destination" ] } }, + "kind": + { "type": "string", + "enum": + [ "untyped" ] } }, + "required": + [ "transactions", + "kind" ] }, + { "title": + "Atomic_transaction_batch_typed", + "type": "object", + "properties": + { "transactions": + { "type": "array", + "items": + { "type": + "object", + "properties": + { "parameters": + { "$ref": + "#/components/schemas/micheline.017-PtNairob.michelson_v1.expression" }, + "parameters_ty": + { "$ref": + "#/components/schemas/micheline.017-PtNairob.michelson_v1.expression" }, + "destination": + { "$ref": + "#/components/schemas/017-PtNairob.contract_id.originated" }, + "entrypoint": + { "$ref": + "#/components/schemas/unistring" } }, + "required": + [ "parameters", + "parameters_ty", + "destination" ] } }, + "kind": + { "type": "string", + "enum": + [ "typed" ] } }, + "required": + [ "transactions", + "kind" ] } ] } }, + "required": + [ "outbox_level", "message_index", + "message" ] } } } } }, + "default": + { "description": "", + "content": + { "application/json": + { "schema": + { "description": + "The full list of errors is available with the global RPC `GET errors`" } } } } } } }, + "/global/block/{block_id}/outbox/{level}/messages": + { "get": + { "description": "Outbox at block for a given outbox level", + "parameters": + [ { "name": "block_id", "in": "path", + "description": "An L1 block identifier.", + "required": true, "schema": { "type": "string" } }, + { "name": "level", "in": "path", "required": true, + "schema": { "type": "string" } } ], + "responses": + { "200": + { "description": "", + "content": + { "application/json": + { "schema": + { "type": "array", + "items": + { "type": "object", + "properties": + { "outbox_level": + { "type": "integer", + "minimum": -2147483648, + "maximum": 2147483647 }, + "message_index": + { "$ref": + "#/components/schemas/positive_bignum" }, + "message": + { "oneOf": + [ { "title": + "Atomic_transaction_batch", + "type": "object", + "properties": + { "transactions": + { "type": "array", + "items": + { "type": + "object", + "properties": + { "parameters": + { "$ref": + "#/components/schemas/micheline.017-PtNairob.michelson_v1.expression" }, + "destination": + { "$ref": + "#/components/schemas/017-PtNairob.contract_id.originated" }, + "entrypoint": + { "$ref": + "#/components/schemas/unistring" } }, + "required": + [ "parameters", + "destination" ] } }, + "kind": + { "type": "string", + "enum": + [ "untyped" ] } }, + "required": + [ "transactions", + "kind" ] }, + { "title": + "Atomic_transaction_batch_typed", + "type": "object", + "properties": + { "transactions": + { "type": "array", + "items": + { "type": + "object", + "properties": + { "parameters": + { "$ref": + "#/components/schemas/micheline.017-PtNairob.michelson_v1.expression" }, + "parameters_ty": + { "$ref": + "#/components/schemas/micheline.017-PtNairob.michelson_v1.expression" }, + "destination": + { "$ref": + "#/components/schemas/017-PtNairob.contract_id.originated" }, + "entrypoint": + { "$ref": + "#/components/schemas/unistring" } }, + "required": + [ "parameters", + "parameters_ty", + "destination" ] } }, + "kind": + { "type": "string", + "enum": + [ "typed" ] } }, + "required": + [ "transactions", + "kind" ] } ] } }, + "required": + [ "outbox_level", "message_index", + "message" ] } } } } }, + "default": + { "description": "", + "content": + { "application/json": + { "schema": + { "description": + "The full list of errors is available with the global RPC `GET errors`" } } } } } } }, + "/global/block/{block_id}/simulate": + { "post": + { "description": "Simulate messages evaluation by the PVM", + "parameters": + [ { "name": "block_id", "in": "path", + "description": "An L1 block identifier.", + "required": true, "schema": { "type": "string" } } ], + "requestBody": + { "content": + { "application/json": + { "schema": + { "type": "object", + "properties": + { "messages": + { "description": + "Serialized messages for simulation.", + "type": "array", + "items": + { "type": "string", + "pattern": + "^([a-zA-Z0-9][a-zA-Z0-9])*$" } }, + "reveal_pages": + { "description": + "Pages (at most 4kB) to be used for revelation ticks", + "type": "array", + "items": + { "type": "string", + "pattern": + "^([a-zA-Z0-9][a-zA-Z0-9])*$" } }, + "insight_requests": + { "description": + "Paths in the PVM to inspect after the simulation", + "type": "array", + "items": + { "oneOf": + [ { "title": "pvm_state", + "description": + "Path in the PVM state", + "type": "object", + "properties": + { "kind": + { "type": "string", + "enum": + [ "pvm_state" ] }, + "key": + { "type": "array", + "items": + { "$ref": + "#/components/schemas/unistring" } } }, + "required": [ "kind", "key" ] }, + { "title": "durable_storage", + "description": + "Path in the PVM durable storage", + "type": "object", + "properties": + { "kind": + { "type": "string", + "enum": + [ "durable_storage" ] }, + "key": + { "type": "array", + "items": + { "$ref": + "#/components/schemas/unistring" } } }, + "required": [ "kind", "key" ] } ] } }, + "log_kernel_debug_file": + { "description": + "File in which to emit kernel logs. This file will be created in /simulation_kernel_logs/, where is the data directory of the rollup node.", + "oneOf": + [ { "$ref": + "#/components/schemas/unistring" } ] } }, + "required": [ "messages" ] } } } }, + "responses": + { "200": + { "description": "", + "content": + { "application/json": + { "schema": + { "type": "object", + "properties": + { "state_hash": + { "description": + "Hash of the state after execution of the PVM on the input messages", + "oneOf": + [ { "$ref": + "#/components/schemas/Smart_rollup_state_hash" } ] }, + "status": + { "description": + "Status of the PVM after evaluation", + "oneOf": + [ { "$ref": + "#/components/schemas/unistring" } ] }, + "output": + { "description": + "Output produced by evaluation of the messages", + "type": "array", + "items": + { "type": "object", + "properties": + { "outbox_level": + { "type": "integer", + "minimum": -2147483648, + "maximum": 2147483647 }, + "message_index": + { "$ref": + "#/components/schemas/positive_bignum" }, + "message": + { "oneOf": + [ { "title": + "Atomic_transaction_batch", + "type": "object", + "properties": + { "transactions": + { "type": + "array", + "items": + { "type": + "object", + "properties": + { "parameters": + { "$ref": + "#/components/schemas/micheline.017-PtNairob.michelson_v1.expression" }, + "destination": + { "$ref": + "#/components/schemas/017-PtNairob.contract_id.originated" }, + "entrypoint": + { "$ref": + "#/components/schemas/unistring" } }, + "required": + [ "parameters", + "destination" ] } }, + "kind": + { "type": + "string", + "enum": + [ "untyped" ] } }, + "required": + [ "transactions", + "kind" ] }, + { "title": + "Atomic_transaction_batch_typed", + "type": "object", + "properties": + { "transactions": + { "type": + "array", + "items": + { "type": + "object", + "properties": + { "parameters": + { "$ref": + "#/components/schemas/micheline.017-PtNairob.michelson_v1.expression" }, + "parameters_ty": + { "$ref": + "#/components/schemas/micheline.017-PtNairob.michelson_v1.expression" }, + "destination": + { "$ref": + "#/components/schemas/017-PtNairob.contract_id.originated" }, + "entrypoint": + { "$ref": + "#/components/schemas/unistring" } }, + "required": + [ "parameters", + "parameters_ty", + "destination" ] } }, + "kind": + { "type": + "string", + "enum": + [ "typed" ] } }, + "required": + [ "transactions", + "kind" ] } ] } }, + "required": + [ "outbox_level", + "message_index", + "message" ] } }, + "inbox_level": + { "description": + "Level of the inbox that would contain these messages", + "type": "integer", + "minimum": -2147483648, + "maximum": 2147483647 }, + "num_ticks": + { "description": + "Ticks taken by the PVM for evaluating the messages", + "oneOf": + [ { "$ref": + "#/components/schemas/bignum" } ] }, + "insights": + { "description": + "PVM state values requested after the simulation", + "type": "array", + "items": + { "nullable": true, + "oneOf": + [ { "title": "Some", + "type": "string", + "pattern": + "^([a-zA-Z0-9][a-zA-Z0-9])*$" } ] } } }, + "required": + [ "state_hash", "status", "output", + "inbox_level", "num_ticks" ] } } } }, + "default": + { "description": "", + "content": + { "application/json": + { "schema": + { "description": + "The full list of errors is available with the global RPC `GET errors`" } } } } } } }, + "/global/block/{block_id}/state": + { "get": + { "description": + "Retrieve value from key is PVM state of specified block", + "parameters": + [ { "name": "block_id", "in": "path", + "description": "An L1 block identifier.", + "required": true, "schema": { "type": "string" } }, + { "name": "key", "in": "query", "required": true, + "schema": { "type": "string" } } ], + "responses": + { "200": + { "description": "", + "content": + { "application/json": + { "schema": + { "type": "string", + "pattern": "^([a-zA-Z0-9][a-zA-Z0-9])*$" } } } }, + "default": + { "description": "", + "content": + { "application/json": + { "schema": + { "description": + "The full list of errors is available with the global RPC `GET errors`" } } } } } } }, + "/global/block/{block_id}/state_current_level": + { "get": + { "description": "Retrieve the current level of a PVM", + "parameters": + [ { "name": "block_id", "in": "path", + "description": "An L1 block identifier.", + "required": true, "schema": { "type": "string" } } ], + "responses": + { "200": + { "description": "", + "content": + { "application/json": + { "schema": + { "nullable": true, + "oneOf": + [ { "title": "Some", "type": "integer", + "minimum": -2147483648, + "maximum": 2147483647 } ] } } } }, + "default": + { "description": "", + "content": + { "application/json": + { "schema": + { "description": + "The full list of errors is available with the global RPC `GET errors`" } } } } } } }, + "/global/block/{block_id}/state_hash": + { "get": + { "description": "State hash for this block", + "parameters": + [ { "name": "block_id", "in": "path", + "description": "An L1 block identifier.", + "required": true, "schema": { "type": "string" } } ], + "responses": + { "200": + { "description": "", + "content": + { "application/json": + { "schema": + { "title": + "The hash of the VM state of a smart rollup (Base58Check-encoded)", + "oneOf": + [ { "$ref": + "#/components/schemas/unistring" } ] } } } }, + "default": + { "description": "", + "content": + { "application/json": + { "schema": + { "description": + "The full list of errors is available with the global RPC `GET errors`" } } } } } } }, + "/global/block/{block_id}/status": + { "get": + { "description": "PVM status at block", + "parameters": + [ { "name": "block_id", "in": "path", + "description": "An L1 block identifier.", + "required": true, "schema": { "type": "string" } } ], + "responses": + { "200": + { "description": "", + "content": + { "application/json": + { "schema": + { "title": "Universal string representation", + "description": + "Either a plain UTF8 string, or a sequence of bytes for strings that contain invalid byte sequences.", + "oneOf": + [ { "type": "string" }, + { "type": "object", + "properties": + { "invalid_utf8_string": + { "type": "array", + "items": + { "type": "integer", + "minimum": 0, + "maximum": 255 } } }, + "required": [ "invalid_utf8_string" ] } ] } } } }, + "default": + { "description": "", + "content": + { "application/json": + { "schema": + { "description": + "The full list of errors is available with the global RPC `GET errors`" } } } } } } }, + "/global/block/{block_id}/ticks": + { "get": + { "description": "Number of ticks for specified level", + "parameters": + [ { "name": "block_id", "in": "path", + "description": "An L1 block identifier.", + "required": true, "schema": { "type": "string" } } ], + "responses": + { "200": + { "description": "", + "content": + { "application/json": + { "schema": + { "title": "Big number", + "description": + "Decimal representation of a big number", + "type": "string" } } } }, + "default": + { "description": "", + "content": + { "application/json": + { "schema": + { "description": + "The full list of errors is available with the global RPC `GET errors`" } } } } } } }, + "/global/block/{block_id}/total_ticks": + { "get": + { "description": "Total number of ticks at specified block", + "parameters": + [ { "name": "block_id", "in": "path", + "description": "An L1 block identifier.", + "required": true, "schema": { "type": "string" } } ], + "responses": + { "200": + { "description": "", + "content": + { "application/json": + { "schema": + { "title": "Positive big number", + "description": + "Decimal representation of a positive big number", + "type": "string" } } } }, + "default": + { "description": "", + "content": + { "application/json": + { "schema": + { "description": + "The full list of errors is available with the global RPC `GET errors`" } } } } } } }, + "/global/last_stored_commitment": + { "get": + { "description": "Last commitment computed by the node", + "responses": + { "200": + { "description": "", + "content": + { "application/json": + { "schema": + { "nullable": true, + "oneOf": + [ { "title": "Some", "type": "object", + "properties": + { "commitment": + { "type": "object", + "properties": + { "compressed_state": + { "$ref": + "#/components/schemas/smart_rollup_state_hash" }, + "inbox_level": + { "type": "integer", + "minimum": + -2147483648, + "maximum": 2147483647 }, + "predecessor": + { "$ref": + "#/components/schemas/smart_rollup_commitment_hash" }, + "number_of_ticks": + { "$ref": + "#/components/schemas/int64" } }, + "required": + [ "compressed_state", + "inbox_level", + "predecessor", + "number_of_ticks" ] }, + "hash": + { "$ref": + "#/components/schemas/smart_rollup_commitment_hash" } }, + "required": [ "commitment", "hash" ] } ] } } } }, + "default": + { "description": "", + "content": + { "application/json": + { "schema": + { "description": + "The full list of errors is available with the global RPC `GET errors`" } } } } } } }, + "/global/monitor_blocks": + { "get": + { "description": "Monitor and streaming the L2 blocks", + "responses": + { "200": + { "description": "", + "content": + { "application/json": + { "schema": + { "type": "object", + "properties": + { "block_hash": + { "description": "Tezos block hash.", + "oneOf": + [ { "$ref": + "#/components/schemas/block_hash" } ] }, + "level": + { "description": + "Level of the block, corresponds to the level of the tezos block.", + "type": "integer", + "minimum": -2147483648, + "maximum": 2147483647 }, + "predecessor": + { "description": + "Predecessor hash of the Tezos block.", + "oneOf": + [ { "$ref": + "#/components/schemas/block_hash" } ] }, + "commitment_hash": + { "description": + "Hash of this block's commitment if any was computed for it.", + "nullable": true, + "oneOf": + [ { "title": "Some", + "oneOf": + [ { "$ref": + "#/components/schemas/smart_rollup_commitment_hash" } ] } ] }, + "previous_commitment_hash": + { "description": + "Previous commitment hash in the chain. If there is a commitment for this block, this field contains the commitment that was previously computed.", + "oneOf": + [ { "$ref": + "#/components/schemas/smart_rollup_commitment_hash" } ] }, + "context": + { "description": + "Hash of the layer 2 context for this block.", + "oneOf": + [ { "$ref": + "#/components/schemas/Smart_rollup_context_hash" } ] }, + "inbox_witness": + { "description": + "Witness for the inbox for this block, i.e. the Merkle hash of payloads of messages.", + "oneOf": + [ { "$ref": + "#/components/schemas/smart_rollup_merkelized_payload_hashes_hash" } ] }, + "inbox_hash": + { "description": + "Hash of the inbox for this block.", + "oneOf": + [ { "$ref": + "#/components/schemas/smart_rollup_inbox_hash" } ] }, + "initial_tick": + { "description": + "Initial tick of the PVM at this block, i.e. before evaluation of the messages.", + "oneOf": + [ { "$ref": + "#/components/schemas/positive_bignum" } ] }, + "num_ticks": + { "description": + "Number of ticks produced by the evaluation of the messages in this block.", + "oneOf": + [ { "$ref": + "#/components/schemas/int64" } ] } }, + "required": + [ "block_hash", "level", "predecessor", + "commitment_hash", + "previous_commitment_hash", "context", + "inbox_witness", "inbox_hash", + "initial_tick", "num_ticks" ], + "additionalProperties": {} } } } }, + "default": + { "description": "", + "content": + { "application/json": + { "schema": + { "description": + "The full list of errors is available with the global RPC `GET errors`" } } } } } } }, + "/global/smart_rollup_address": + { "get": + { "description": "Smart rollup address", + "responses": + { "200": + { "description": "", + "content": + { "application/json": + { "schema": + { "title": + "A smart rollup address (Base58Check-encoded)", + "oneOf": + [ { "$ref": + "#/components/schemas/unistring" } ] } } } }, + "default": + { "description": "", + "content": + { "application/json": + { "schema": + { "description": + "The full list of errors is available with the global RPC `GET errors`" } } } } } } }, + "/global/tezos_head": + { "get": + { "description": "Tezos head known to the smart rollup node", + "responses": + { "200": + { "description": "", + "content": + { "application/json": + { "schema": + { "nullable": true, + "oneOf": + [ { "title": "Some", + "oneOf": + [ { "$ref": + "#/components/schemas/block_hash" } ] } ] } } } }, + "default": + { "description": "", + "content": + { "application/json": + { "schema": + { "description": + "The full list of errors is available with the global RPC `GET errors`" } } } } } } }, + "/global/tezos_level": + { "get": + { "description": "Tezos level known to the smart rollup node", + "responses": + { "200": + { "description": "", + "content": + { "application/json": + { "schema": + { "nullable": true, + "oneOf": + [ { "title": "Some", "type": "integer", + "minimum": -2147483648, + "maximum": 2147483647 } ] } } } }, + "default": + { "description": "", + "content": + { "application/json": + { "schema": + { "description": + "The full list of errors is available with the global RPC `GET errors`" } } } } } } }, + "/local/batcher/injection": + { "post": + { "description": "Inject messages in the batcher's queue", + "requestBody": + { "content": + { "application/json": + { "schema": + { "description": "Messages to inject", + "type": "array", + "items": + { "$ref": + "#/components/schemas/sc_l2_message" } } } } }, + "responses": + { "200": + { "description": "", + "content": + { "application/json": + { "schema": + { "description": + "Hashes of injected L2 messages", + "type": "array", + "items": + { "$ref": + "#/components/schemas/sc_rollup_l2_message" } } } } }, + "default": + { "description": "", + "content": + { "application/json": + { "schema": + { "description": + "The full list of errors is available with the global RPC `GET errors`" } } } } } } }, + "/local/batcher/queue": + { "get": + { "description": "List messages present in the batcher's queue", + "responses": + { "200": + { "description": "", + "content": + { "application/json": + { "schema": + { "type": "array", + "items": + { "type": "object", + "properties": + { "hash": + { "$ref": + "#/components/schemas/sc_rollup_l2_message" }, + "message": + { "type": "object", + "properties": + { "counter": + { "$ref": + "#/components/schemas/bignum" }, + "content": + { "$ref": + "#/components/schemas/sc_l2_message" } }, + "required": + [ "counter", "content" ] } }, + "required": [ "hash", "message" ] } } } } }, + "default": + { "description": "", + "content": + { "application/json": + { "schema": + { "description": + "The full list of errors is available with the global RPC `GET errors`" } } } } } } }, + "/local/batcher/queue/{l2_message_hash}": + { "get": + { "description": "Retrieve an L2 message and its status", + "parameters": + [ { "name": "l2_message_hash", "in": "path", + "description": "A L2 message hash.", "required": true, + "schema": { "type": "string" } } ], + "responses": + { "200": + { "description": "", + "content": + { "application/json": + { "schema": + { "oneOf": + [ { "title": "unknown", + "description": + "The message is not known by the batcher.", + "type": "object", + "properties": + { "content": + { "type": "string", + "pattern": + "^([a-zA-Z0-9][a-zA-Z0-9])*$" }, + "status": + { "type": "string", + "enum": [ "unknown" ] } }, + "required": [ "status" ] }, + { "title": "pending_batch", + "description": + "The message is in the batcher queue.", + "type": "object", + "properties": + { "content": + { "type": "string", + "pattern": + "^([a-zA-Z0-9][a-zA-Z0-9])*$" }, + "status": + { "type": "string", + "enum": [ "pending_batch" ] } }, + "required": [ "status" ] }, + { "title": "pending_injection", + "description": + "The message is batched but not injected yet.", + "type": "object", + "properties": + { "content": + { "type": "string", + "pattern": + "^([a-zA-Z0-9][a-zA-Z0-9])*$" }, + "status": + { "type": "string", + "enum": + [ "pending_injection" ] }, + "operation": + { "$ref": + "#/components/schemas/sc_rollup_node_l1_operation" } }, + "required": [ "status", "operation" ] }, + { "title": "injected", + "description": + "The message is injected as part of an L1 operation but it is not included in a block.", + "type": "object", + "properties": + { "content": + { "type": "string", + "pattern": + "^([a-zA-Z0-9][a-zA-Z0-9])*$" }, + "status": + { "type": "string", + "enum": [ "injected" ] }, + "operation": + { "$ref": + "#/components/schemas/sc_rollup_node_l1_operation" }, + "layer1": + { "type": "object", + "properties": + { "operation_hash": + { "$ref": + "#/components/schemas/Operation_hash" }, + "operation_index": + { "type": "integer", + "minimum": + -1073741824, + "maximum": 1073741823 } }, + "required": + [ "operation_hash", + "operation_index" ] } }, + "required": + [ "status", "operation", "layer1" ] }, + { "title": "included", + "description": + "The message is included in an inbox in an L1 block.", + "type": "object", + "properties": + { "content": + { "type": "string", + "pattern": + "^([a-zA-Z0-9][a-zA-Z0-9])*$" }, + "status": + { "type": "string", + "enum": [ "included" ] }, + "operation": + { "$ref": + "#/components/schemas/sc_rollup_node_l1_operation" }, + "layer1": + { "type": "object", + "properties": + { "operation_hash": + { "$ref": + "#/components/schemas/Operation_hash" }, + "operation_index": + { "type": "integer", + "minimum": + -1073741824, + "maximum": 1073741823 }, + "block_hash": + { "$ref": + "#/components/schemas/block_hash" }, + "level": + { "type": "integer", + "minimum": + -2147483648, + "maximum": 2147483647 } }, + "required": + [ "operation_hash", + "operation_index", + "block_hash", "level" ] }, + "finalized": + { "type": "boolean" }, + "cemented": { "type": "boolean" } }, + "required": + [ "status", "operation", "layer1", + "finalized", "cemented" ] }, + { "title": "committed", + "description": + "The message is included in a committed inbox on L1.", + "type": "object", + "properties": + { "content": + { "type": "string", + "pattern": + "^([a-zA-Z0-9][a-zA-Z0-9])*$" }, + "status": + { "type": "string", + "enum": [ "committed" ] }, + "operation": + { "$ref": + "#/components/schemas/sc_rollup_node_l1_operation" }, + "layer1": + { "type": "object", + "properties": + { "operation_hash": + { "$ref": + "#/components/schemas/Operation_hash" }, + "operation_index": + { "type": "integer", + "minimum": + -1073741824, + "maximum": 1073741823 }, + "block_hash": + { "$ref": + "#/components/schemas/block_hash" }, + "level": + { "type": "integer", + "minimum": + -2147483648, + "maximum": 2147483647 } }, + "required": + [ "operation_hash", + "operation_index", + "block_hash", "level" ] }, + "finalized": + { "type": "boolean" }, + "cemented": { "type": "boolean" }, + "commitment": + { "type": "object", + "properties": + { "compressed_state": + { "$ref": + "#/components/schemas/smart_rollup_state_hash" }, + "inbox_level": + { "type": "integer", + "minimum": + -2147483648, + "maximum": 2147483647 }, + "predecessor": + { "$ref": + "#/components/schemas/smart_rollup_commitment_hash" }, + "number_of_ticks": + { "$ref": + "#/components/schemas/int64" } }, + "required": + [ "compressed_state", + "inbox_level", + "predecessor", + "number_of_ticks" ] }, + "hash": + { "$ref": + "#/components/schemas/smart_rollup_commitment_hash" }, + "first_published_at_level": + { "type": "integer", + "minimum": -2147483648, + "maximum": 2147483647 }, + "published_at_level": + { "type": "integer", + "minimum": -2147483648, + "maximum": 2147483647 } }, + "required": + [ "status", "operation", "layer1", + "finalized", "cemented", + "commitment", "hash", + "first_published_at_level", + "published_at_level" ] } ] } } } }, + "default": + { "description": "", + "content": + { "application/json": + { "schema": + { "description": + "The full list of errors is available with the global RPC `GET errors`" } } } } } } }, + "/local/commitments/{commitment_hash}": + { "get": + { "description": "Commitment computed and published by the node", + "parameters": + [ { "name": "commitment_hash", "in": "path", + "description": "A commitment hash.", "required": true, + "schema": { "type": "string" } } ], + "responses": + { "200": + { "description": "", + "content": + { "application/json": + { "schema": + { "nullable": true, + "oneOf": + [ { "title": "Some", "type": "object", + "properties": + { "commitment": + { "type": "object", + "properties": + { "compressed_state": + { "$ref": + "#/components/schemas/smart_rollup_state_hash" }, + "inbox_level": + { "type": "integer", + "minimum": + -2147483648, + "maximum": 2147483647 }, + "predecessor": + { "$ref": + "#/components/schemas/smart_rollup_commitment_hash" }, + "number_of_ticks": + { "$ref": + "#/components/schemas/int64" } }, + "required": + [ "compressed_state", + "inbox_level", + "predecessor", + "number_of_ticks" ] }, + "hash": + { "$ref": + "#/components/schemas/smart_rollup_commitment_hash" }, + "first_published_at_level": + { "type": "integer", + "minimum": -2147483648, + "maximum": 2147483647 }, + "published_at_level": + { "type": "integer", + "minimum": -2147483648, + "maximum": 2147483647 } }, + "required": [ "commitment", "hash" ] } ] } } } }, + "default": + { "description": "", + "content": + { "application/json": + { "schema": + { "description": + "The full list of errors is available with the global RPC `GET errors`" } } } } } } }, + "/local/gc_info": + { "get": + { "description": "Information about garbage collection", + "responses": + { "200": + { "description": "", + "content": + { "application/json": + { "schema": + { "type": "object", + "properties": + { "last_gc_level": + { "type": "integer", + "minimum": -2147483648, + "maximum": 2147483647 }, + "first_available_level": + { "type": "integer", + "minimum": -2147483648, + "maximum": 2147483647 } }, + "required": + [ "last_gc_level", + "first_available_level" ] } } } }, + "default": + { "description": "", + "content": + { "application/json": + { "schema": + { "description": + "The full list of errors is available with the global RPC `GET errors`" } } } } } } }, + "/local/last_published_commitment": + { "get": + { "description": "Last commitment published by the node", + "responses": + { "200": + { "description": "", + "content": + { "application/json": + { "schema": + { "nullable": true, + "oneOf": + [ { "title": "Some", "type": "object", + "properties": + { "commitment": + { "type": "object", + "properties": + { "compressed_state": + { "$ref": + "#/components/schemas/smart_rollup_state_hash" }, + "inbox_level": + { "type": "integer", + "minimum": + -2147483648, + "maximum": 2147483647 }, + "predecessor": + { "$ref": + "#/components/schemas/smart_rollup_commitment_hash" }, + "number_of_ticks": + { "$ref": + "#/components/schemas/int64" } }, + "required": + [ "compressed_state", + "inbox_level", + "predecessor", + "number_of_ticks" ] }, + "hash": + { "$ref": + "#/components/schemas/smart_rollup_commitment_hash" }, + "first_published_at_level": + { "type": "integer", + "minimum": -2147483648, + "maximum": 2147483647 }, + "published_at_level": + { "type": "integer", + "minimum": -2147483648, + "maximum": 2147483647 } }, + "required": [ "commitment", "hash" ] } ] } } } }, + "default": + { "description": "", + "content": + { "application/json": + { "schema": + { "description": + "The full list of errors is available with the global RPC `GET errors`" } } } } } } }, + "/openapi": + { "get": + { "description": "OpenAPI specification of RPCs for rollup node", + "parameters": + [ { "name": "protocol", "in": "query", + "description": "Protocol_hash (Base58Check-encoded)", + "required": false, "schema": { "type": "string" } } ], + "responses": + { "200": + { "description": "", + "content": { "application/json": { "schema": {} } } }, + "default": + { "description": "", + "content": + { "application/json": + { "schema": + { "description": + "The full list of errors is available with the global RPC `GET errors`" } } } } } } } }, + "components": + { "schemas": + { "017-PtNairob.contract_id.originated": + { "title": "A contract handle -- originated account", + "description": + "A contract notation as given to an RPC or inside scripts. Can be a base58 originated contract hash.", + "oneOf": [ { "$ref": "#/components/schemas/unistring" } ] }, + "017-PtNairob.michelson.v1.primitives": + { "type": "string", + "enum": + [ "SHA512", "HASH_KEY", "SIZE", "SAPLING_VERIFY_UPDATE", + "False", "SAPLING_EMPTY_STATE", "RENAME", + "sapling_transaction", "UNPACK", "NAT", "unit", + "bls12_381_fr", "Pair", "IF_NONE", "int", "timestamp", + "storage", "UNPAIR", "view", "BLAKE2B", "AMOUNT", "DUP", + "nat", "NEG", "bool", "SELF_ADDRESS", "ISNAT", "DIG", + "CHAIN_ID", "set", "LSR", "key", "address", "ABS", + "CREATE_CONTRACT", "SHA256", "JOIN_TICKETS", "LEVEL", + "bls12_381_g1", "operation", "tx_rollup_l2_address", + "string", "CHECK_SIGNATURE", "STEPS_TO_QUOTA", "SELF", + "DIP", "lambda", "AND", "COMPARE", "chain_id", "MAP", + "APPLY", "Elt", "BYTES", "NOT", "IMPLICIT_ACCOUNT", "LT", + "UNIT", "EMIT", "SET_DELEGATE", "Some", "parameter", + "signature", "ticket", "EMPTY_BIG_MAP", "None", "SUB", + "key_hash", "ADD", "map", "VOTING_POWER", "big_map", "CDR", + "GT", "IF_CONS", "CONS", "LSL", "DUG", "PACK", "SHA3", + "SOURCE", "or", "SUB_MUTEZ", "LAMBDA", "RIGHT", + "CREATE_ACCOUNT", "Unit", "CAST", "NEQ", "ITER", + "FAILWITH", "PUSH", "OPEN_CHEST", "SOME", "list", + "BALANCE", "NIL", "pair", "CAR", "UPDATE", + "TOTAL_VOTING_POWER", "PAIR", "constant", "LAMBDA_REC", + "ADDRESS", "True", "Right", "Lambda_rec", "IF", "NEVER", + "sapling_transaction_deprecated", "SWAP", "EMPTY_MAP", + "MUL", "INT", "option", "KECCAK", "LEFT", "Left", "chest", + "SPLIT_TICKET", "chest_key", "bls12_381_g2", "EDIV", + "LOOP", "bytes", "TICKET", "LE", "PAIRING_CHECK", + "MIN_BLOCK_TIME", "OR", "contract", "GET_AND_UPDATE", + "mutez", "sapling_state", "NONE", "IF_LEFT", "GET", "NOW", + "TRANSFER_TOKENS", "LOOP_LEFT", "CONTRACT", + "TICKET_DEPRECATED", "VIEW", "EMPTY_SET", "XOR", "never", + "READ_TICKET", "EQ", "GE", "MEM", "SENDER", "DROP", + "CONCAT", "EXEC", "SLICE", "code" ] }, + "DAL_commitment": + { "title": + "Commitment representation for the DAL (Base58Check-encoded)", + "oneOf": [ { "$ref": "#/components/schemas/unistring" } ] }, + "Operation_hash": + { "title": "A Tezos operation ID (Base58Check-encoded)", + "oneOf": [ { "$ref": "#/components/schemas/unistring" } ] }, + "Signature.Public_key_hash": + { "title": + "A Ed25519, Secp256k1, P256, or BLS public key hash (Base58Check-encoded)", + "oneOf": [ { "$ref": "#/components/schemas/unistring" } ] }, + "Smart_rollup_commitment_hash": + { "title": + "The hash of a commitment of a smart rollup (Base58Check-encoded)", + "oneOf": [ { "$ref": "#/components/schemas/unistring" } ] }, + "Smart_rollup_context_hash": + { "title": + "A base58-check encoded hash of a Smart rollup node context (Base58Check-encoded)", + "oneOf": [ { "$ref": "#/components/schemas/unistring" } ] }, + "Smart_rollup_state_hash": + { "title": + "The hash of the VM state of a smart rollup (Base58Check-encoded)", + "oneOf": [ { "$ref": "#/components/schemas/unistring" } ] }, + "bignum": + { "title": "Big number", + "description": "Decimal representation of a big number", + "type": "string" }, + "block_hash": + { "title": "A block identifier (Base58Check-encoded)", + "oneOf": [ { "$ref": "#/components/schemas/unistring" } ] }, + "int64": + { "title": "64 bit integers", + "description": "Decimal representation of 64 bit integers", + "type": "string" }, + "layout": + { "oneOf": + [ { "title": "Zero_width", "type": "object", + "properties": + { "kind": + { "type": "string", "enum": [ "Zero_width" ] } }, + "required": [ "kind" ] }, + { "title": "Int", "type": "object", + "properties": + { "size": + { "type": "string", + "enum": + [ "Int32", "Int16", "Uint16", "Int64", "Int8", + "Uint8" ] }, + "kind": { "type": "string", "enum": [ "Int" ] } }, + "required": [ "size", "kind" ] }, + { "title": "Bool", "type": "object", + "properties": + { "kind": { "type": "string", "enum": [ "Bool" ] } }, + "required": [ "kind" ] }, + { "title": "RangedInt", "type": "object", + "properties": + { "min": + { "type": "integer", "minimum": -1073741824, + "maximum": 1073741823 }, + "max": + { "type": "integer", "minimum": -1073741824, + "maximum": 1073741823 }, + "kind": { "type": "string", "enum": [ "RangedInt" ] } }, + "required": [ "min", "max", "kind" ] }, + { "title": "RangedFloat", "type": "object", + "properties": + { "min": { "type": "number" }, + "max": { "type": "number" }, + "kind": + { "type": "string", "enum": [ "RangedFloat" ] } }, + "required": [ "min", "max", "kind" ] }, + { "title": "Float", "type": "object", + "properties": + { "kind": { "type": "string", "enum": [ "Float" ] } }, + "required": [ "kind" ] }, + { "title": "Bytes", "type": "object", + "properties": + { "kind": { "type": "string", "enum": [ "Bytes" ] } }, + "required": [ "kind" ] }, + { "title": "String", "type": "object", + "properties": + { "kind": { "type": "string", "enum": [ "String" ] } }, + "required": [ "kind" ] }, + { "title": "Enum", "type": "object", + "properties": + { "size": + { "type": "string", + "enum": [ "Int16", "Uint16", "Int8", "Uint8" ] }, + "reference": + { "$ref": "#/components/schemas/unistring" }, + "kind": { "type": "string", "enum": [ "Enum" ] } }, + "required": [ "size", "reference", "kind" ] }, + { "title": "Seq", "type": "object", + "properties": + { "layout": { "$ref": "#/components/schemas/layout" }, + "kind": { "type": "string", "enum": [ "Seq" ] }, + "length_limit": + { "oneOf": + [ { "title": "No_limit", "type": "object", + "properties": + { "kind": + { "type": "string", + "enum": [ "no-limit" ] } }, + "required": [ "kind" ] }, + { "title": "At_most", "type": "object", + "properties": + { "kind": + { "type": "string", + "enum": [ "at-most" ] }, + "at_most": + { "type": "integer", + "minimum": -1073741824, + "maximum": 1073741823 } }, + "required": [ "kind", "at_most" ] }, + { "title": "Exactly", "type": "object", + "properties": + { "kind": + { "type": "string", + "enum": [ "exactly" ] }, + "exactly": + { "type": "integer", + "minimum": -1073741824, + "maximum": 1073741823 } }, + "required": [ "kind", "exactly" ] } ] } }, + "required": [ "layout", "kind" ] }, + { "title": "Ref", "type": "object", + "properties": + { "name": { "$ref": "#/components/schemas/unistring" }, + "kind": { "type": "string", "enum": [ "Ref" ] } }, + "required": [ "name", "kind" ] }, + { "title": "Padding", "type": "object", + "properties": + { "kind": { "type": "string", "enum": [ "Padding" ] } }, + "required": [ "kind" ] } ] }, + "micheline.017-PtNairob.michelson_v1.expression": + { "oneOf": + [ { "title": "Int", "type": "object", + "properties": + { "int": { "$ref": "#/components/schemas/bignum" } }, + "required": [ "int" ] }, + { "title": "String", "type": "object", + "properties": + { "string": + { "$ref": "#/components/schemas/unistring" } }, + "required": [ "string" ] }, + { "title": "Bytes", "type": "object", + "properties": + { "bytes": + { "type": "string", + "pattern": "^([a-zA-Z0-9][a-zA-Z0-9])*$" } }, + "required": [ "bytes" ] }, + { "title": "Sequence", "type": "array", + "items": + { "$ref": + "#/components/schemas/micheline.017-PtNairob.michelson_v1.expression" } }, + { "title": "Prim__generic", + "description": + "Generic primitive (any number of args with or without annotations)", + "type": "object", + "properties": + { "prim": + { "$ref": + "#/components/schemas/017-PtNairob.michelson.v1.primitives" }, + "args": + { "type": "array", + "items": + { "$ref": + "#/components/schemas/micheline.017-PtNairob.michelson_v1.expression" } }, + "annots": + { "type": "array", + "items": + { "$ref": "#/components/schemas/unistring" } } }, + "required": [ "prim" ] } ] }, + "positive_bignum": + { "title": "Positive big number", + "description": + "Decimal representation of a positive big number", + "type": "string" }, + "sc_l2_message": + { "description": "A hex encoded smart rollup message", + "type": "string", "pattern": "^([a-zA-Z0-9][a-zA-Z0-9])*$" }, + "sc_rollup_l2_message": + { "title": "A smart rollup layer 2 message (Base58Check-encoded)", + "oneOf": [ { "$ref": "#/components/schemas/unistring" } ] }, + "sc_rollup_node_l1_operation": + { "oneOf": + [ { "title": "add_messages", "type": "object", + "properties": + { "kind": + { "type": "string", "enum": [ "add_messages" ] }, + "message": + { "type": "array", + "items": + { "type": "string", + "pattern": "^([a-zA-Z0-9][a-zA-Z0-9])*$" } } }, + "required": [ "kind", "message" ] }, + { "title": "cement", "type": "object", + "properties": + { "kind": { "type": "string", "enum": [ "cement" ] }, + "rollup": + { "$ref": + "#/components/schemas/smart_rollup_address" }, + "commitment": + { "$ref": + "#/components/schemas/smart_rollup_commitment_hash" } }, + "required": [ "kind", "rollup", "commitment" ] }, + { "title": "publish", "type": "object", + "properties": + { "kind": { "type": "string", "enum": [ "publish" ] }, + "rollup": + { "$ref": + "#/components/schemas/smart_rollup_address" }, + "commitment": + { "type": "object", + "properties": + { "compressed_state": + { "$ref": + "#/components/schemas/smart_rollup_state_hash" }, + "inbox_level": + { "type": "integer", + "minimum": -2147483648, + "maximum": 2147483647 }, + "predecessor": + { "$ref": + "#/components/schemas/smart_rollup_commitment_hash" }, + "number_of_ticks": + { "$ref": "#/components/schemas/int64" } }, + "required": + [ "compressed_state", "inbox_level", + "predecessor", "number_of_ticks" ] } }, + "required": [ "kind", "rollup", "commitment" ] }, + { "title": "refute", "type": "object", + "properties": + { "kind": { "type": "string", "enum": [ "refute" ] }, + "rollup": + { "$ref": + "#/components/schemas/smart_rollup_address" }, + "opponent": + { "$ref": + "#/components/schemas/Signature.Public_key_hash" }, + "refutation": + { "oneOf": + [ { "title": "Start", "type": "object", + "properties": + { "refutation_kind": + { "type": "string", + "enum": [ "start" ] }, + "player_commitment_hash": + { "$ref": + "#/components/schemas/smart_rollup_commitment_hash" }, + "opponent_commitment_hash": + { "$ref": + "#/components/schemas/smart_rollup_commitment_hash" } }, + "required": + [ "refutation_kind", + "player_commitment_hash", + "opponent_commitment_hash" ] }, + { "title": "Move", "type": "object", + "properties": + { "refutation_kind": + { "type": "string", + "enum": [ "move" ] }, + "choice": + { "$ref": + "#/components/schemas/positive_bignum" }, + "step": + { "oneOf": + [ { "title": "Dissection", + "type": "array", + "items": + { "type": "object", + "properties": + { "state": + { "$ref": + "#/components/schemas/smart_rollup_state_hash" }, + "tick": + { "$ref": + "#/components/schemas/positive_bignum" } }, + "required": [ "tick" ] } }, + { "title": "Proof", + "type": "string", + "pattern": + "^([a-zA-Z0-9][a-zA-Z0-9])*$" } ] } }, + "required": + [ "refutation_kind", "choice", "step" ] } ] } }, + "required": + [ "kind", "rollup", "opponent", "refutation" ] }, + { "title": "timeout", "type": "object", + "properties": + { "kind": { "type": "string", "enum": [ "timeout" ] }, + "rollup": + { "$ref": + "#/components/schemas/smart_rollup_address" }, + "stakers": + { "type": "object", + "properties": + { "alice": + { "$ref": + "#/components/schemas/Signature.Public_key_hash" }, + "bob": + { "$ref": + "#/components/schemas/Signature.Public_key_hash" } }, + "required": [ "alice", "bob" ] } }, + "required": [ "kind", "rollup", "stakers" ] }, + { "title": "recover", "type": "object", + "properties": + { "kind": { "type": "string", "enum": [ "recover" ] }, + "rollup": + { "$ref": + "#/components/schemas/smart_rollup_address" }, + "staker": + { "$ref": + "#/components/schemas/Signature.Public_key_hash" } }, + "required": [ "kind", "rollup", "staker" ] }, + { "title": "execute_outbox_message", "type": "object", + "properties": + { "kind": + { "type": "string", + "enum": [ "execute_outbox_message" ] }, + "rollup": + { "$ref": + "#/components/schemas/smart_rollup_address" }, + "cemented_commitment": + { "$ref": + "#/components/schemas/smart_rollup_commitment_hash" }, + "proof": + { "type": "string", + "pattern": "^([a-zA-Z0-9][a-zA-Z0-9])*$" } }, + "required": + [ "kind", "rollup", "cemented_commitment", "proof" ] } ] }, + "schema.field": + { "oneOf": + [ { "title": "Named_field", "type": "object", + "properties": + { "name": { "$ref": "#/components/schemas/unistring" }, + "layout": { "$ref": "#/components/schemas/layout" }, + "data_kind": + { "$ref": "#/components/schemas/schema.kind" }, + "kind": { "type": "string", "enum": [ "named" ] } }, + "required": [ "name", "layout", "data_kind", "kind" ] }, + { "title": "Anonymous_field", "type": "object", + "properties": + { "layout": { "$ref": "#/components/schemas/layout" }, + "kind": { "type": "string", "enum": [ "anon" ] }, + "data_kind": + { "$ref": "#/components/schemas/schema.kind" } }, + "required": [ "layout", "kind", "data_kind" ] }, + { "title": "Dynamic_field", "type": "object", + "properties": + { "kind": { "type": "string", "enum": [ "dyn" ] }, + "name": { "$ref": "#/components/schemas/unistring" }, + "num_fields": + { "type": "integer", "minimum": -1073741824, + "maximum": 1073741823 }, + "size": + { "type": "string", + "enum": [ "N", "Uint30", "Uint16", "Uint8" ] } }, + "required": [ "kind", "num_fields", "size" ] }, + { "title": "Optional_field", "type": "object", + "properties": + { "kind": + { "type": "string", + "enum": [ "option_indicator" ] }, + "name": { "$ref": "#/components/schemas/unistring" } }, + "required": [ "kind", "name" ] } ] }, + "schema.kind": + { "oneOf": + [ { "title": "Fixed", "type": "object", + "properties": + { "size": + { "type": "integer", "minimum": -1073741824, + "maximum": 1073741823 }, + "kind": { "type": "string", "enum": [ "Fixed" ] } }, + "required": [ "size", "kind" ] }, + { "title": "Dynamic", "type": "object", + "properties": + { "kind": { "type": "string", "enum": [ "Dynamic" ] } }, + "required": [ "kind" ] }, + { "title": "Variable", "type": "object", + "properties": + { "kind": { "type": "string", "enum": [ "Variable" ] } }, + "required": [ "kind" ] } ] }, + "service_tree": + { "oneOf": + [ { "title": "Static", "type": "object", + "properties": + { "static": + { "type": "object", + "properties": + { "get_service": + { "type": "object", + "properties": + { "meth": + { "type": "string", + "enum": + [ "PATCH", "GET", "POST", + "PUT", "DELETE" ] }, + "path": + { "type": "array", + "items": + { "oneOf": + [ { "title": "PStatic", + "oneOf": + [ { "$ref": + "#/components/schemas/unistring" } ] }, + { "title": "PDynamic", + "type": "object", + "properties": + { "id": + { "type": + "string", + "enum": + [ "single" ] }, + "name": + { "$ref": + "#/components/schemas/unistring" }, + "descr": + { "$ref": + "#/components/schemas/unistring" } }, + "required": + [ "id", "name" ] }, + { "title": "PDynamicTail", + "type": "object", + "properties": + { "id": + { "type": + "string", + "enum": + [ "multiple" ] }, + "name": + { "$ref": + "#/components/schemas/unistring" }, + "descr": + { "$ref": + "#/components/schemas/unistring" } }, + "required": + [ "id", "name" ] } ] } }, + "description": + { "$ref": + "#/components/schemas/unistring" }, + "query": + { "type": "array", + "items": + { "type": "object", + "properties": + { "name": + { "$ref": + "#/components/schemas/unistring" }, + "description": + { "$ref": + "#/components/schemas/unistring" }, + "kind": + { "oneOf": + [ { "title": + "Single", + "type": + "object", + "properties": + { "single": + { "type": + "object", + "properties": + { "id": + { "type": + "string", + "enum": + [ "single" ] }, + "name": + { "$ref": + "#/components/schemas/unistring" }, + "descr": + { "$ref": + "#/components/schemas/unistring" } }, + "required": + [ "id", + "name" ] } }, + "required": + [ "single" ] }, + { "title": + "Optional", + "type": + "object", + "properties": + { "optional": + { "type": + "object", + "properties": + { "id": + { "type": + "string", + "enum": + [ "single" ] }, + "name": + { "$ref": + "#/components/schemas/unistring" }, + "descr": + { "$ref": + "#/components/schemas/unistring" } }, + "required": + [ "id", + "name" ] } }, + "required": + [ "optional" ] }, + { "title": "Flag", + "type": + "object", + "properties": + { "flag": + { "type": + "object", + "properties": + {} } }, + "required": + [ "flag" ] }, + { "title": + "Multi", + "type": + "object", + "properties": + { "multi": + { "type": + "object", + "properties": + { "id": + { "type": + "string", + "enum": + [ "single" ] }, + "name": + { "$ref": + "#/components/schemas/unistring" }, + "descr": + { "$ref": + "#/components/schemas/unistring" } }, + "required": + [ "id", + "name" ] } }, + "required": + [ "multi" ] } ] } }, + "required": + [ "name", "kind" ] } }, + "input": + { "type": "object", + "properties": + { "json_schema": {}, + "binary_schema": + { "type": "object", + "properties": + { "toplevel": + { "oneOf": + [ { "title": + "Obj", + "type": + "object", + "properties": + { "fields": + { "type": + "array", + "items": + { "$ref": + "#/components/schemas/schema.field" } } }, + "required": + [ "fields" ] }, + { "title": + "Cases", + "type": + "object", + "properties": + { "tag_size": + { "type": + "string", + "enum": + [ "Uint16", + "Uint8" ] }, + "kind": + { "$ref": + "#/components/schemas/schema.kind" }, + "cases": + { "type": + "array", + "items": + { "$ref": + "#/components/schemas/union case" } } }, + "required": + [ "tag_size", + "kind", + "cases" ] }, + { "title": + "Int_enum", + "type": + "object", + "properties": + { "size": + { "type": + "string", + "enum": + [ "Int16", + "Uint16", + "Int8", + "Uint8" ] }, + "cases": + { "type": + "array", + "items": + { "type": + "array", + "items": + { "oneOf": + [ { "type": + "integer", + "minimum": + -1073741824, + "maximum": + 1073741823 }, + { "$ref": + "#/components/schemas/unistring" } ] } } } }, + "required": + [ "size", + "cases" ] } ] }, + "fields": + { "type": "array", + "items": + { "type": + "object", + "properties": + { "description": + { "type": + "object", + "properties": + { "title": + { "$ref": + "#/components/schemas/unistring" }, + "description": + { "$ref": + "#/components/schemas/unistring" } }, + "required": + [ "title" ] }, + "encoding": + { "oneOf": + [ { "title": + "Obj", + "type": + "object", + "properties": + { "fields": + { "type": + "array", + "items": + { "$ref": + "#/components/schemas/schema.field" } } }, + "required": + [ "fields" ] }, + { "title": + "Cases", + "type": + "object", + "properties": + { "tag_size": + { "type": + "string", + "enum": + [ "Uint16", + "Uint8" ] }, + "kind": + { "$ref": + "#/components/schemas/schema.kind" }, + "cases": + { "type": + "array", + "items": + { "$ref": + "#/components/schemas/union case" } } }, + "required": + [ "tag_size", + "kind", + "cases" ] }, + { "title": + "Int_enum", + "type": + "object", + "properties": + { "size": + { "type": + "string", + "enum": + [ "Int16", + "Uint16", + "Int8", + "Uint8" ] }, + "cases": + { "type": + "array", + "items": + { "type": + "array", + "items": + { "oneOf": + [ { "type": + "integer", + "minimum": + -1073741824, + "maximum": + 1073741823 }, + { "$ref": + "#/components/schemas/unistring" } ] } } } }, + "required": + [ "size", + "cases" ] } ] } }, + "required": + [ "description", + "encoding" ] } } }, + "required": + [ "toplevel", + "fields" ] } }, + "required": + [ "json_schema", + "binary_schema" ] }, + "output": + { "type": "object", + "properties": + { "json_schema": {}, + "binary_schema": + { "type": "object", + "properties": + { "toplevel": + { "oneOf": + [ { "title": + "Obj", + "type": + "object", + "properties": + { "fields": + { "type": + "array", + "items": + { "$ref": + "#/components/schemas/schema.field" } } }, + "required": + [ "fields" ] }, + { "title": + "Cases", + "type": + "object", + "properties": + { "tag_size": + { "type": + "string", + "enum": + [ "Uint16", + "Uint8" ] }, + "kind": + { "$ref": + "#/components/schemas/schema.kind" }, + "cases": + { "type": + "array", + "items": + { "$ref": + "#/components/schemas/union case" } } }, + "required": + [ "tag_size", + "kind", + "cases" ] }, + { "title": + "Int_enum", + "type": + "object", + "properties": + { "size": + { "type": + "string", + "enum": + [ "Int16", + "Uint16", + "Int8", + "Uint8" ] }, + "cases": + { "type": + "array", + "items": + { "type": + "array", + "items": + { "oneOf": + [ { "type": + "integer", + "minimum": + -1073741824, + "maximum": + 1073741823 }, + { "$ref": + "#/components/schemas/unistring" } ] } } } }, + "required": + [ "size", + "cases" ] } ] }, + "fields": + { "type": "array", + "items": + { "type": + "object", + "properties": + { "description": + { "type": + "object", + "properties": + { "title": + { "$ref": + "#/components/schemas/unistring" }, + "description": + { "$ref": + "#/components/schemas/unistring" } }, + "required": + [ "title" ] }, + "encoding": + { "oneOf": + [ { "title": + "Obj", + "type": + "object", + "properties": + { "fields": + { "type": + "array", + "items": + { "$ref": + "#/components/schemas/schema.field" } } }, + "required": + [ "fields" ] }, + { "title": + "Cases", + "type": + "object", + "properties": + { "tag_size": + { "type": + "string", + "enum": + [ "Uint16", + "Uint8" ] }, + "kind": + { "$ref": + "#/components/schemas/schema.kind" }, + "cases": + { "type": + "array", + "items": + { "$ref": + "#/components/schemas/union case" } } }, + "required": + [ "tag_size", + "kind", + "cases" ] }, + { "title": + "Int_enum", + "type": + "object", + "properties": + { "size": + { "type": + "string", + "enum": + [ "Int16", + "Uint16", + "Int8", + "Uint8" ] }, + "cases": + { "type": + "array", + "items": + { "type": + "array", + "items": + { "oneOf": + [ { "type": + "integer", + "minimum": + -1073741824, + "maximum": + 1073741823 }, + { "$ref": + "#/components/schemas/unistring" } ] } } } }, + "required": + [ "size", + "cases" ] } ] } }, + "required": + [ "description", + "encoding" ] } } }, + "required": + [ "toplevel", + "fields" ] } }, + "required": + [ "json_schema", + "binary_schema" ] }, + "error": + { "type": "object", + "properties": + { "json_schema": {}, + "binary_schema": + { "type": "object", + "properties": + { "toplevel": + { "oneOf": + [ { "title": + "Obj", + "type": + "object", + "properties": + { "fields": + { "type": + "array", + "items": + { "$ref": + "#/components/schemas/schema.field" } } }, + "required": + [ "fields" ] }, + { "title": + "Cases", + "type": + "object", + "properties": + { "tag_size": + { "type": + "string", + "enum": + [ "Uint16", + "Uint8" ] }, + "kind": + { "$ref": + "#/components/schemas/schema.kind" }, + "cases": + { "type": + "array", + "items": + { "$ref": + "#/components/schemas/union case" } } }, + "required": + [ "tag_size", + "kind", + "cases" ] }, + { "title": + "Int_enum", + "type": + "object", + "properties": + { "size": + { "type": + "string", + "enum": + [ "Int16", + "Uint16", + "Int8", + "Uint8" ] }, + "cases": + { "type": + "array", + "items": + { "type": + "array", + "items": + { "oneOf": + [ { "type": + "integer", + "minimum": + -1073741824, + "maximum": + 1073741823 }, + { "$ref": + "#/components/schemas/unistring" } ] } } } }, + "required": + [ "size", + "cases" ] } ] }, + "fields": + { "type": "array", + "items": + { "type": + "object", + "properties": + { "description": + { "type": + "object", + "properties": + { "title": + { "$ref": + "#/components/schemas/unistring" }, + "description": + { "$ref": + "#/components/schemas/unistring" } }, + "required": + [ "title" ] }, + "encoding": + { "oneOf": + [ { "title": + "Obj", + "type": + "object", + "properties": + { "fields": + { "type": + "array", + "items": + { "$ref": + "#/components/schemas/schema.field" } } }, + "required": + [ "fields" ] }, + { "title": + "Cases", + "type": + "object", + "properties": + { "tag_size": + { "type": + "string", + "enum": + [ "Uint16", + "Uint8" ] }, + "kind": + { "$ref": + "#/components/schemas/schema.kind" }, + "cases": + { "type": + "array", + "items": + { "$ref": + "#/components/schemas/union case" } } }, + "required": + [ "tag_size", + "kind", + "cases" ] }, + { "title": + "Int_enum", + "type": + "object", + "properties": + { "size": + { "type": + "string", + "enum": + [ "Int16", + "Uint16", + "Int8", + "Uint8" ] }, + "cases": + { "type": + "array", + "items": + { "type": + "array", + "items": + { "oneOf": + [ { "type": + "integer", + "minimum": + -1073741824, + "maximum": + 1073741823 }, + { "$ref": + "#/components/schemas/unistring" } ] } } } }, + "required": + [ "size", + "cases" ] } ] } }, + "required": + [ "description", + "encoding" ] } } }, + "required": + [ "toplevel", + "fields" ] } }, + "required": + [ "json_schema", + "binary_schema" ] } }, + "required": + [ "meth", "path", "query", "output", + "error" ] }, + "post_service": + { "type": "object", + "properties": + { "meth": + { "type": "string", + "enum": + [ "PATCH", "GET", "POST", + "PUT", "DELETE" ] }, + "path": + { "type": "array", + "items": + { "oneOf": + [ { "title": "PStatic", + "oneOf": + [ { "$ref": + "#/components/schemas/unistring" } ] }, + { "title": "PDynamic", + "type": "object", + "properties": + { "id": + { "type": + "string", + "enum": + [ "single" ] }, + "name": + { "$ref": + "#/components/schemas/unistring" }, + "descr": + { "$ref": + "#/components/schemas/unistring" } }, + "required": + [ "id", "name" ] }, + { "title": "PDynamicTail", + "type": "object", + "properties": + { "id": + { "type": + "string", + "enum": + [ "multiple" ] }, + "name": + { "$ref": + "#/components/schemas/unistring" }, + "descr": + { "$ref": + "#/components/schemas/unistring" } }, + "required": + [ "id", "name" ] } ] } }, + "description": + { "$ref": + "#/components/schemas/unistring" }, + "query": + { "type": "array", + "items": + { "type": "object", + "properties": + { "name": + { "$ref": + "#/components/schemas/unistring" }, + "description": + { "$ref": + "#/components/schemas/unistring" }, + "kind": + { "oneOf": + [ { "title": + "Single", + "type": + "object", + "properties": + { "single": + { "type": + "object", + "properties": + { "id": + { "type": + "string", + "enum": + [ "single" ] }, + "name": + { "$ref": + "#/components/schemas/unistring" }, + "descr": + { "$ref": + "#/components/schemas/unistring" } }, + "required": + [ "id", + "name" ] } }, + "required": + [ "single" ] }, + { "title": + "Optional", + "type": + "object", + "properties": + { "optional": + { "type": + "object", + "properties": + { "id": + { "type": + "string", + "enum": + [ "single" ] }, + "name": + { "$ref": + "#/components/schemas/unistring" }, + "descr": + { "$ref": + "#/components/schemas/unistring" } }, + "required": + [ "id", + "name" ] } }, + "required": + [ "optional" ] }, + { "title": "Flag", + "type": + "object", + "properties": + { "flag": + { "type": + "object", + "properties": + {} } }, + "required": + [ "flag" ] }, + { "title": + "Multi", + "type": + "object", + "properties": + { "multi": + { "type": + "object", + "properties": + { "id": + { "type": + "string", + "enum": + [ "single" ] }, + "name": + { "$ref": + "#/components/schemas/unistring" }, + "descr": + { "$ref": + "#/components/schemas/unistring" } }, + "required": + [ "id", + "name" ] } }, + "required": + [ "multi" ] } ] } }, + "required": + [ "name", "kind" ] } }, + "input": + { "type": "object", + "properties": + { "json_schema": {}, + "binary_schema": + { "type": "object", + "properties": + { "toplevel": + { "oneOf": + [ { "title": + "Obj", + "type": + "object", + "properties": + { "fields": + { "type": + "array", + "items": + { "$ref": + "#/components/schemas/schema.field" } } }, + "required": + [ "fields" ] }, + { "title": + "Cases", + "type": + "object", + "properties": + { "tag_size": + { "type": + "string", + "enum": + [ "Uint16", + "Uint8" ] }, + "kind": + { "$ref": + "#/components/schemas/schema.kind" }, + "cases": + { "type": + "array", + "items": + { "$ref": + "#/components/schemas/union case" } } }, + "required": + [ "tag_size", + "kind", + "cases" ] }, + { "title": + "Int_enum", + "type": + "object", + "properties": + { "size": + { "type": + "string", + "enum": + [ "Int16", + "Uint16", + "Int8", + "Uint8" ] }, + "cases": + { "type": + "array", + "items": + { "type": + "array", + "items": + { "oneOf": + [ { "type": + "integer", + "minimum": + -1073741824, + "maximum": + 1073741823 }, + { "$ref": + "#/components/schemas/unistring" } ] } } } }, + "required": + [ "size", + "cases" ] } ] }, + "fields": + { "type": "array", + "items": + { "type": + "object", + "properties": + { "description": + { "type": + "object", + "properties": + { "title": + { "$ref": + "#/components/schemas/unistring" }, + "description": + { "$ref": + "#/components/schemas/unistring" } }, + "required": + [ "title" ] }, + "encoding": + { "oneOf": + [ { "title": + "Obj", + "type": + "object", + "properties": + { "fields": + { "type": + "array", + "items": + { "$ref": + "#/components/schemas/schema.field" } } }, + "required": + [ "fields" ] }, + { "title": + "Cases", + "type": + "object", + "properties": + { "tag_size": + { "type": + "string", + "enum": + [ "Uint16", + "Uint8" ] }, + "kind": + { "$ref": + "#/components/schemas/schema.kind" }, + "cases": + { "type": + "array", + "items": + { "$ref": + "#/components/schemas/union case" } } }, + "required": + [ "tag_size", + "kind", + "cases" ] }, + { "title": + "Int_enum", + "type": + "object", + "properties": + { "size": + { "type": + "string", + "enum": + [ "Int16", + "Uint16", + "Int8", + "Uint8" ] }, + "cases": + { "type": + "array", + "items": + { "type": + "array", + "items": + { "oneOf": + [ { "type": + "integer", + "minimum": + -1073741824, + "maximum": + 1073741823 }, + { "$ref": + "#/components/schemas/unistring" } ] } } } }, + "required": + [ "size", + "cases" ] } ] } }, + "required": + [ "description", + "encoding" ] } } }, + "required": + [ "toplevel", + "fields" ] } }, + "required": + [ "json_schema", + "binary_schema" ] }, + "output": + { "type": "object", + "properties": + { "json_schema": {}, + "binary_schema": + { "type": "object", + "properties": + { "toplevel": + { "oneOf": + [ { "title": + "Obj", + "type": + "object", + "properties": + { "fields": + { "type": + "array", + "items": + { "$ref": + "#/components/schemas/schema.field" } } }, + "required": + [ "fields" ] }, + { "title": + "Cases", + "type": + "object", + "properties": + { "tag_size": + { "type": + "string", + "enum": + [ "Uint16", + "Uint8" ] }, + "kind": + { "$ref": + "#/components/schemas/schema.kind" }, + "cases": + { "type": + "array", + "items": + { "$ref": + "#/components/schemas/union case" } } }, + "required": + [ "tag_size", + "kind", + "cases" ] }, + { "title": + "Int_enum", + "type": + "object", + "properties": + { "size": + { "type": + "string", + "enum": + [ "Int16", + "Uint16", + "Int8", + "Uint8" ] }, + "cases": + { "type": + "array", + "items": + { "type": + "array", + "items": + { "oneOf": + [ { "type": + "integer", + "minimum": + -1073741824, + "maximum": + 1073741823 }, + { "$ref": + "#/components/schemas/unistring" } ] } } } }, + "required": + [ "size", + "cases" ] } ] }, + "fields": + { "type": "array", + "items": + { "type": + "object", + "properties": + { "description": + { "type": + "object", + "properties": + { "title": + { "$ref": + "#/components/schemas/unistring" }, + "description": + { "$ref": + "#/components/schemas/unistring" } }, + "required": + [ "title" ] }, + "encoding": + { "oneOf": + [ { "title": + "Obj", + "type": + "object", + "properties": + { "fields": + { "type": + "array", + "items": + { "$ref": + "#/components/schemas/schema.field" } } }, + "required": + [ "fields" ] }, + { "title": + "Cases", + "type": + "object", + "properties": + { "tag_size": + { "type": + "string", + "enum": + [ "Uint16", + "Uint8" ] }, + "kind": + { "$ref": + "#/components/schemas/schema.kind" }, + "cases": + { "type": + "array", + "items": + { "$ref": + "#/components/schemas/union case" } } }, + "required": + [ "tag_size", + "kind", + "cases" ] }, + { "title": + "Int_enum", + "type": + "object", + "properties": + { "size": + { "type": + "string", + "enum": + [ "Int16", + "Uint16", + "Int8", + "Uint8" ] }, + "cases": + { "type": + "array", + "items": + { "type": + "array", + "items": + { "oneOf": + [ { "type": + "integer", + "minimum": + -1073741824, + "maximum": + 1073741823 }, + { "$ref": + "#/components/schemas/unistring" } ] } } } }, + "required": + [ "size", + "cases" ] } ] } }, + "required": + [ "description", + "encoding" ] } } }, + "required": + [ "toplevel", + "fields" ] } }, + "required": + [ "json_schema", + "binary_schema" ] }, + "error": + { "type": "object", + "properties": + { "json_schema": {}, + "binary_schema": + { "type": "object", + "properties": + { "toplevel": + { "oneOf": + [ { "title": + "Obj", + "type": + "object", + "properties": + { "fields": + { "type": + "array", + "items": + { "$ref": + "#/components/schemas/schema.field" } } }, + "required": + [ "fields" ] }, + { "title": + "Cases", + "type": + "object", + "properties": + { "tag_size": + { "type": + "string", + "enum": + [ "Uint16", + "Uint8" ] }, + "kind": + { "$ref": + "#/components/schemas/schema.kind" }, + "cases": + { "type": + "array", + "items": + { "$ref": + "#/components/schemas/union case" } } }, + "required": + [ "tag_size", + "kind", + "cases" ] }, + { "title": + "Int_enum", + "type": + "object", + "properties": + { "size": + { "type": + "string", + "enum": + [ "Int16", + "Uint16", + "Int8", + "Uint8" ] }, + "cases": + { "type": + "array", + "items": + { "type": + "array", + "items": + { "oneOf": + [ { "type": + "integer", + "minimum": + -1073741824, + "maximum": + 1073741823 }, + { "$ref": + "#/components/schemas/unistring" } ] } } } }, + "required": + [ "size", + "cases" ] } ] }, + "fields": + { "type": "array", + "items": + { "type": + "object", + "properties": + { "description": + { "type": + "object", + "properties": + { "title": + { "$ref": + "#/components/schemas/unistring" }, + "description": + { "$ref": + "#/components/schemas/unistring" } }, + "required": + [ "title" ] }, + "encoding": + { "oneOf": + [ { "title": + "Obj", + "type": + "object", + "properties": + { "fields": + { "type": + "array", + "items": + { "$ref": + "#/components/schemas/schema.field" } } }, + "required": + [ "fields" ] }, + { "title": + "Cases", + "type": + "object", + "properties": + { "tag_size": + { "type": + "string", + "enum": + [ "Uint16", + "Uint8" ] }, + "kind": + { "$ref": + "#/components/schemas/schema.kind" }, + "cases": + { "type": + "array", + "items": + { "$ref": + "#/components/schemas/union case" } } }, + "required": + [ "tag_size", + "kind", + "cases" ] }, + { "title": + "Int_enum", + "type": + "object", + "properties": + { "size": + { "type": + "string", + "enum": + [ "Int16", + "Uint16", + "Int8", + "Uint8" ] }, + "cases": + { "type": + "array", + "items": + { "type": + "array", + "items": + { "oneOf": + [ { "type": + "integer", + "minimum": + -1073741824, + "maximum": + 1073741823 }, + { "$ref": + "#/components/schemas/unistring" } ] } } } }, + "required": + [ "size", + "cases" ] } ] } }, + "required": + [ "description", + "encoding" ] } } }, + "required": + [ "toplevel", + "fields" ] } }, + "required": + [ "json_schema", + "binary_schema" ] } }, + "required": + [ "meth", "path", "query", "output", + "error" ] }, + "delete_service": + { "type": "object", + "properties": + { "meth": + { "type": "string", + "enum": + [ "PATCH", "GET", "POST", + "PUT", "DELETE" ] }, + "path": + { "type": "array", + "items": + { "oneOf": + [ { "title": "PStatic", + "oneOf": + [ { "$ref": + "#/components/schemas/unistring" } ] }, + { "title": "PDynamic", + "type": "object", + "properties": + { "id": + { "type": + "string", + "enum": + [ "single" ] }, + "name": + { "$ref": + "#/components/schemas/unistring" }, + "descr": + { "$ref": + "#/components/schemas/unistring" } }, + "required": + [ "id", "name" ] }, + { "title": "PDynamicTail", + "type": "object", + "properties": + { "id": + { "type": + "string", + "enum": + [ "multiple" ] }, + "name": + { "$ref": + "#/components/schemas/unistring" }, + "descr": + { "$ref": + "#/components/schemas/unistring" } }, + "required": + [ "id", "name" ] } ] } }, + "description": + { "$ref": + "#/components/schemas/unistring" }, + "query": + { "type": "array", + "items": + { "type": "object", + "properties": + { "name": + { "$ref": + "#/components/schemas/unistring" }, + "description": + { "$ref": + "#/components/schemas/unistring" }, + "kind": + { "oneOf": + [ { "title": + "Single", + "type": + "object", + "properties": + { "single": + { "type": + "object", + "properties": + { "id": + { "type": + "string", + "enum": + [ "single" ] }, + "name": + { "$ref": + "#/components/schemas/unistring" }, + "descr": + { "$ref": + "#/components/schemas/unistring" } }, + "required": + [ "id", + "name" ] } }, + "required": + [ "single" ] }, + { "title": + "Optional", + "type": + "object", + "properties": + { "optional": + { "type": + "object", + "properties": + { "id": + { "type": + "string", + "enum": + [ "single" ] }, + "name": + { "$ref": + "#/components/schemas/unistring" }, + "descr": + { "$ref": + "#/components/schemas/unistring" } }, + "required": + [ "id", + "name" ] } }, + "required": + [ "optional" ] }, + { "title": "Flag", + "type": + "object", + "properties": + { "flag": + { "type": + "object", + "properties": + {} } }, + "required": + [ "flag" ] }, + { "title": + "Multi", + "type": + "object", + "properties": + { "multi": + { "type": + "object", + "properties": + { "id": + { "type": + "string", + "enum": + [ "single" ] }, + "name": + { "$ref": + "#/components/schemas/unistring" }, + "descr": + { "$ref": + "#/components/schemas/unistring" } }, + "required": + [ "id", + "name" ] } }, + "required": + [ "multi" ] } ] } }, + "required": + [ "name", "kind" ] } }, + "input": + { "type": "object", + "properties": + { "json_schema": {}, + "binary_schema": + { "type": "object", + "properties": + { "toplevel": + { "oneOf": + [ { "title": + "Obj", + "type": + "object", + "properties": + { "fields": + { "type": + "array", + "items": + { "$ref": + "#/components/schemas/schema.field" } } }, + "required": + [ "fields" ] }, + { "title": + "Cases", + "type": + "object", + "properties": + { "tag_size": + { "type": + "string", + "enum": + [ "Uint16", + "Uint8" ] }, + "kind": + { "$ref": + "#/components/schemas/schema.kind" }, + "cases": + { "type": + "array", + "items": + { "$ref": + "#/components/schemas/union case" } } }, + "required": + [ "tag_size", + "kind", + "cases" ] }, + { "title": + "Int_enum", + "type": + "object", + "properties": + { "size": + { "type": + "string", + "enum": + [ "Int16", + "Uint16", + "Int8", + "Uint8" ] }, + "cases": + { "type": + "array", + "items": + { "type": + "array", + "items": + { "oneOf": + [ { "type": + "integer", + "minimum": + -1073741824, + "maximum": + 1073741823 }, + { "$ref": + "#/components/schemas/unistring" } ] } } } }, + "required": + [ "size", + "cases" ] } ] }, + "fields": + { "type": "array", + "items": + { "type": + "object", + "properties": + { "description": + { "type": + "object", + "properties": + { "title": + { "$ref": + "#/components/schemas/unistring" }, + "description": + { "$ref": + "#/components/schemas/unistring" } }, + "required": + [ "title" ] }, + "encoding": + { "oneOf": + [ { "title": + "Obj", + "type": + "object", + "properties": + { "fields": + { "type": + "array", + "items": + { "$ref": + "#/components/schemas/schema.field" } } }, + "required": + [ "fields" ] }, + { "title": + "Cases", + "type": + "object", + "properties": + { "tag_size": + { "type": + "string", + "enum": + [ "Uint16", + "Uint8" ] }, + "kind": + { "$ref": + "#/components/schemas/schema.kind" }, + "cases": + { "type": + "array", + "items": + { "$ref": + "#/components/schemas/union case" } } }, + "required": + [ "tag_size", + "kind", + "cases" ] }, + { "title": + "Int_enum", + "type": + "object", + "properties": + { "size": + { "type": + "string", + "enum": + [ "Int16", + "Uint16", + "Int8", + "Uint8" ] }, + "cases": + { "type": + "array", + "items": + { "type": + "array", + "items": + { "oneOf": + [ { "type": + "integer", + "minimum": + -1073741824, + "maximum": + 1073741823 }, + { "$ref": + "#/components/schemas/unistring" } ] } } } }, + "required": + [ "size", + "cases" ] } ] } }, + "required": + [ "description", + "encoding" ] } } }, + "required": + [ "toplevel", + "fields" ] } }, + "required": + [ "json_schema", + "binary_schema" ] }, + "output": + { "type": "object", + "properties": + { "json_schema": {}, + "binary_schema": + { "type": "object", + "properties": + { "toplevel": + { "oneOf": + [ { "title": + "Obj", + "type": + "object", + "properties": + { "fields": + { "type": + "array", + "items": + { "$ref": + "#/components/schemas/schema.field" } } }, + "required": + [ "fields" ] }, + { "title": + "Cases", + "type": + "object", + "properties": + { "tag_size": + { "type": + "string", + "enum": + [ "Uint16", + "Uint8" ] }, + "kind": + { "$ref": + "#/components/schemas/schema.kind" }, + "cases": + { "type": + "array", + "items": + { "$ref": + "#/components/schemas/union case" } } }, + "required": + [ "tag_size", + "kind", + "cases" ] }, + { "title": + "Int_enum", + "type": + "object", + "properties": + { "size": + { "type": + "string", + "enum": + [ "Int16", + "Uint16", + "Int8", + "Uint8" ] }, + "cases": + { "type": + "array", + "items": + { "type": + "array", + "items": + { "oneOf": + [ { "type": + "integer", + "minimum": + -1073741824, + "maximum": + 1073741823 }, + { "$ref": + "#/components/schemas/unistring" } ] } } } }, + "required": + [ "size", + "cases" ] } ] }, + "fields": + { "type": "array", + "items": + { "type": + "object", + "properties": + { "description": + { "type": + "object", + "properties": + { "title": + { "$ref": + "#/components/schemas/unistring" }, + "description": + { "$ref": + "#/components/schemas/unistring" } }, + "required": + [ "title" ] }, + "encoding": + { "oneOf": + [ { "title": + "Obj", + "type": + "object", + "properties": + { "fields": + { "type": + "array", + "items": + { "$ref": + "#/components/schemas/schema.field" } } }, + "required": + [ "fields" ] }, + { "title": + "Cases", + "type": + "object", + "properties": + { "tag_size": + { "type": + "string", + "enum": + [ "Uint16", + "Uint8" ] }, + "kind": + { "$ref": + "#/components/schemas/schema.kind" }, + "cases": + { "type": + "array", + "items": + { "$ref": + "#/components/schemas/union case" } } }, + "required": + [ "tag_size", + "kind", + "cases" ] }, + { "title": + "Int_enum", + "type": + "object", + "properties": + { "size": + { "type": + "string", + "enum": + [ "Int16", + "Uint16", + "Int8", + "Uint8" ] }, + "cases": + { "type": + "array", + "items": + { "type": + "array", + "items": + { "oneOf": + [ { "type": + "integer", + "minimum": + -1073741824, + "maximum": + 1073741823 }, + { "$ref": + "#/components/schemas/unistring" } ] } } } }, + "required": + [ "size", + "cases" ] } ] } }, + "required": + [ "description", + "encoding" ] } } }, + "required": + [ "toplevel", + "fields" ] } }, + "required": + [ "json_schema", + "binary_schema" ] }, + "error": + { "type": "object", + "properties": + { "json_schema": {}, + "binary_schema": + { "type": "object", + "properties": + { "toplevel": + { "oneOf": + [ { "title": + "Obj", + "type": + "object", + "properties": + { "fields": + { "type": + "array", + "items": + { "$ref": + "#/components/schemas/schema.field" } } }, + "required": + [ "fields" ] }, + { "title": + "Cases", + "type": + "object", + "properties": + { "tag_size": + { "type": + "string", + "enum": + [ "Uint16", + "Uint8" ] }, + "kind": + { "$ref": + "#/components/schemas/schema.kind" }, + "cases": + { "type": + "array", + "items": + { "$ref": + "#/components/schemas/union case" } } }, + "required": + [ "tag_size", + "kind", + "cases" ] }, + { "title": + "Int_enum", + "type": + "object", + "properties": + { "size": + { "type": + "string", + "enum": + [ "Int16", + "Uint16", + "Int8", + "Uint8" ] }, + "cases": + { "type": + "array", + "items": + { "type": + "array", + "items": + { "oneOf": + [ { "type": + "integer", + "minimum": + -1073741824, + "maximum": + 1073741823 }, + { "$ref": + "#/components/schemas/unistring" } ] } } } }, + "required": + [ "size", + "cases" ] } ] }, + "fields": + { "type": "array", + "items": + { "type": + "object", + "properties": + { "description": + { "type": + "object", + "properties": + { "title": + { "$ref": + "#/components/schemas/unistring" }, + "description": + { "$ref": + "#/components/schemas/unistring" } }, + "required": + [ "title" ] }, + "encoding": + { "oneOf": + [ { "title": + "Obj", + "type": + "object", + "properties": + { "fields": + { "type": + "array", + "items": + { "$ref": + "#/components/schemas/schema.field" } } }, + "required": + [ "fields" ] }, + { "title": + "Cases", + "type": + "object", + "properties": + { "tag_size": + { "type": + "string", + "enum": + [ "Uint16", + "Uint8" ] }, + "kind": + { "$ref": + "#/components/schemas/schema.kind" }, + "cases": + { "type": + "array", + "items": + { "$ref": + "#/components/schemas/union case" } } }, + "required": + [ "tag_size", + "kind", + "cases" ] }, + { "title": + "Int_enum", + "type": + "object", + "properties": + { "size": + { "type": + "string", + "enum": + [ "Int16", + "Uint16", + "Int8", + "Uint8" ] }, + "cases": + { "type": + "array", + "items": + { "type": + "array", + "items": + { "oneOf": + [ { "type": + "integer", + "minimum": + -1073741824, + "maximum": + 1073741823 }, + { "$ref": + "#/components/schemas/unistring" } ] } } } }, + "required": + [ "size", + "cases" ] } ] } }, + "required": + [ "description", + "encoding" ] } } }, + "required": + [ "toplevel", + "fields" ] } }, + "required": + [ "json_schema", + "binary_schema" ] } }, + "required": + [ "meth", "path", "query", "output", + "error" ] }, + "put_service": + { "type": "object", + "properties": + { "meth": + { "type": "string", + "enum": + [ "PATCH", "GET", "POST", + "PUT", "DELETE" ] }, + "path": + { "type": "array", + "items": + { "oneOf": + [ { "title": "PStatic", + "oneOf": + [ { "$ref": + "#/components/schemas/unistring" } ] }, + { "title": "PDynamic", + "type": "object", + "properties": + { "id": + { "type": + "string", + "enum": + [ "single" ] }, + "name": + { "$ref": + "#/components/schemas/unistring" }, + "descr": + { "$ref": + "#/components/schemas/unistring" } }, + "required": + [ "id", "name" ] }, + { "title": "PDynamicTail", + "type": "object", + "properties": + { "id": + { "type": + "string", + "enum": + [ "multiple" ] }, + "name": + { "$ref": + "#/components/schemas/unistring" }, + "descr": + { "$ref": + "#/components/schemas/unistring" } }, + "required": + [ "id", "name" ] } ] } }, + "description": + { "$ref": + "#/components/schemas/unistring" }, + "query": + { "type": "array", + "items": + { "type": "object", + "properties": + { "name": + { "$ref": + "#/components/schemas/unistring" }, + "description": + { "$ref": + "#/components/schemas/unistring" }, + "kind": + { "oneOf": + [ { "title": + "Single", + "type": + "object", + "properties": + { "single": + { "type": + "object", + "properties": + { "id": + { "type": + "string", + "enum": + [ "single" ] }, + "name": + { "$ref": + "#/components/schemas/unistring" }, + "descr": + { "$ref": + "#/components/schemas/unistring" } }, + "required": + [ "id", + "name" ] } }, + "required": + [ "single" ] }, + { "title": + "Optional", + "type": + "object", + "properties": + { "optional": + { "type": + "object", + "properties": + { "id": + { "type": + "string", + "enum": + [ "single" ] }, + "name": + { "$ref": + "#/components/schemas/unistring" }, + "descr": + { "$ref": + "#/components/schemas/unistring" } }, + "required": + [ "id", + "name" ] } }, + "required": + [ "optional" ] }, + { "title": "Flag", + "type": + "object", + "properties": + { "flag": + { "type": + "object", + "properties": + {} } }, + "required": + [ "flag" ] }, + { "title": + "Multi", + "type": + "object", + "properties": + { "multi": + { "type": + "object", + "properties": + { "id": + { "type": + "string", + "enum": + [ "single" ] }, + "name": + { "$ref": + "#/components/schemas/unistring" }, + "descr": + { "$ref": + "#/components/schemas/unistring" } }, + "required": + [ "id", + "name" ] } }, + "required": + [ "multi" ] } ] } }, + "required": + [ "name", "kind" ] } }, + "input": + { "type": "object", + "properties": + { "json_schema": {}, + "binary_schema": + { "type": "object", + "properties": + { "toplevel": + { "oneOf": + [ { "title": + "Obj", + "type": + "object", + "properties": + { "fields": + { "type": + "array", + "items": + { "$ref": + "#/components/schemas/schema.field" } } }, + "required": + [ "fields" ] }, + { "title": + "Cases", + "type": + "object", + "properties": + { "tag_size": + { "type": + "string", + "enum": + [ "Uint16", + "Uint8" ] }, + "kind": + { "$ref": + "#/components/schemas/schema.kind" }, + "cases": + { "type": + "array", + "items": + { "$ref": + "#/components/schemas/union case" } } }, + "required": + [ "tag_size", + "kind", + "cases" ] }, + { "title": + "Int_enum", + "type": + "object", + "properties": + { "size": + { "type": + "string", + "enum": + [ "Int16", + "Uint16", + "Int8", + "Uint8" ] }, + "cases": + { "type": + "array", + "items": + { "type": + "array", + "items": + { "oneOf": + [ { "type": + "integer", + "minimum": + -1073741824, + "maximum": + 1073741823 }, + { "$ref": + "#/components/schemas/unistring" } ] } } } }, + "required": + [ "size", + "cases" ] } ] }, + "fields": + { "type": "array", + "items": + { "type": + "object", + "properties": + { "description": + { "type": + "object", + "properties": + { "title": + { "$ref": + "#/components/schemas/unistring" }, + "description": + { "$ref": + "#/components/schemas/unistring" } }, + "required": + [ "title" ] }, + "encoding": + { "oneOf": + [ { "title": + "Obj", + "type": + "object", + "properties": + { "fields": + { "type": + "array", + "items": + { "$ref": + "#/components/schemas/schema.field" } } }, + "required": + [ "fields" ] }, + { "title": + "Cases", + "type": + "object", + "properties": + { "tag_size": + { "type": + "string", + "enum": + [ "Uint16", + "Uint8" ] }, + "kind": + { "$ref": + "#/components/schemas/schema.kind" }, + "cases": + { "type": + "array", + "items": + { "$ref": + "#/components/schemas/union case" } } }, + "required": + [ "tag_size", + "kind", + "cases" ] }, + { "title": + "Int_enum", + "type": + "object", + "properties": + { "size": + { "type": + "string", + "enum": + [ "Int16", + "Uint16", + "Int8", + "Uint8" ] }, + "cases": + { "type": + "array", + "items": + { "type": + "array", + "items": + { "oneOf": + [ { "type": + "integer", + "minimum": + -1073741824, + "maximum": + 1073741823 }, + { "$ref": + "#/components/schemas/unistring" } ] } } } }, + "required": + [ "size", + "cases" ] } ] } }, + "required": + [ "description", + "encoding" ] } } }, + "required": + [ "toplevel", + "fields" ] } }, + "required": + [ "json_schema", + "binary_schema" ] }, + "output": + { "type": "object", + "properties": + { "json_schema": {}, + "binary_schema": + { "type": "object", + "properties": + { "toplevel": + { "oneOf": + [ { "title": + "Obj", + "type": + "object", + "properties": + { "fields": + { "type": + "array", + "items": + { "$ref": + "#/components/schemas/schema.field" } } }, + "required": + [ "fields" ] }, + { "title": + "Cases", + "type": + "object", + "properties": + { "tag_size": + { "type": + "string", + "enum": + [ "Uint16", + "Uint8" ] }, + "kind": + { "$ref": + "#/components/schemas/schema.kind" }, + "cases": + { "type": + "array", + "items": + { "$ref": + "#/components/schemas/union case" } } }, + "required": + [ "tag_size", + "kind", + "cases" ] }, + { "title": + "Int_enum", + "type": + "object", + "properties": + { "size": + { "type": + "string", + "enum": + [ "Int16", + "Uint16", + "Int8", + "Uint8" ] }, + "cases": + { "type": + "array", + "items": + { "type": + "array", + "items": + { "oneOf": + [ { "type": + "integer", + "minimum": + -1073741824, + "maximum": + 1073741823 }, + { "$ref": + "#/components/schemas/unistring" } ] } } } }, + "required": + [ "size", + "cases" ] } ] }, + "fields": + { "type": "array", + "items": + { "type": + "object", + "properties": + { "description": + { "type": + "object", + "properties": + { "title": + { "$ref": + "#/components/schemas/unistring" }, + "description": + { "$ref": + "#/components/schemas/unistring" } }, + "required": + [ "title" ] }, + "encoding": + { "oneOf": + [ { "title": + "Obj", + "type": + "object", + "properties": + { "fields": + { "type": + "array", + "items": + { "$ref": + "#/components/schemas/schema.field" } } }, + "required": + [ "fields" ] }, + { "title": + "Cases", + "type": + "object", + "properties": + { "tag_size": + { "type": + "string", + "enum": + [ "Uint16", + "Uint8" ] }, + "kind": + { "$ref": + "#/components/schemas/schema.kind" }, + "cases": + { "type": + "array", + "items": + { "$ref": + "#/components/schemas/union case" } } }, + "required": + [ "tag_size", + "kind", + "cases" ] }, + { "title": + "Int_enum", + "type": + "object", + "properties": + { "size": + { "type": + "string", + "enum": + [ "Int16", + "Uint16", + "Int8", + "Uint8" ] }, + "cases": + { "type": + "array", + "items": + { "type": + "array", + "items": + { "oneOf": + [ { "type": + "integer", + "minimum": + -1073741824, + "maximum": + 1073741823 }, + { "$ref": + "#/components/schemas/unistring" } ] } } } }, + "required": + [ "size", + "cases" ] } ] } }, + "required": + [ "description", + "encoding" ] } } }, + "required": + [ "toplevel", + "fields" ] } }, + "required": + [ "json_schema", + "binary_schema" ] }, + "error": + { "type": "object", + "properties": + { "json_schema": {}, + "binary_schema": + { "type": "object", + "properties": + { "toplevel": + { "oneOf": + [ { "title": + "Obj", + "type": + "object", + "properties": + { "fields": + { "type": + "array", + "items": + { "$ref": + "#/components/schemas/schema.field" } } }, + "required": + [ "fields" ] }, + { "title": + "Cases", + "type": + "object", + "properties": + { "tag_size": + { "type": + "string", + "enum": + [ "Uint16", + "Uint8" ] }, + "kind": + { "$ref": + "#/components/schemas/schema.kind" }, + "cases": + { "type": + "array", + "items": + { "$ref": + "#/components/schemas/union case" } } }, + "required": + [ "tag_size", + "kind", + "cases" ] }, + { "title": + "Int_enum", + "type": + "object", + "properties": + { "size": + { "type": + "string", + "enum": + [ "Int16", + "Uint16", + "Int8", + "Uint8" ] }, + "cases": + { "type": + "array", + "items": + { "type": + "array", + "items": + { "oneOf": + [ { "type": + "integer", + "minimum": + -1073741824, + "maximum": + 1073741823 }, + { "$ref": + "#/components/schemas/unistring" } ] } } } }, + "required": + [ "size", + "cases" ] } ] }, + "fields": + { "type": "array", + "items": + { "type": + "object", + "properties": + { "description": + { "type": + "object", + "properties": + { "title": + { "$ref": + "#/components/schemas/unistring" }, + "description": + { "$ref": + "#/components/schemas/unistring" } }, + "required": + [ "title" ] }, + "encoding": + { "oneOf": + [ { "title": + "Obj", + "type": + "object", + "properties": + { "fields": + { "type": + "array", + "items": + { "$ref": + "#/components/schemas/schema.field" } } }, + "required": + [ "fields" ] }, + { "title": + "Cases", + "type": + "object", + "properties": + { "tag_size": + { "type": + "string", + "enum": + [ "Uint16", + "Uint8" ] }, + "kind": + { "$ref": + "#/components/schemas/schema.kind" }, + "cases": + { "type": + "array", + "items": + { "$ref": + "#/components/schemas/union case" } } }, + "required": + [ "tag_size", + "kind", + "cases" ] }, + { "title": + "Int_enum", + "type": + "object", + "properties": + { "size": + { "type": + "string", + "enum": + [ "Int16", + "Uint16", + "Int8", + "Uint8" ] }, + "cases": + { "type": + "array", + "items": + { "type": + "array", + "items": + { "oneOf": + [ { "type": + "integer", + "minimum": + -1073741824, + "maximum": + 1073741823 }, + { "$ref": + "#/components/schemas/unistring" } ] } } } }, + "required": + [ "size", + "cases" ] } ] } }, + "required": + [ "description", + "encoding" ] } } }, + "required": + [ "toplevel", + "fields" ] } }, + "required": + [ "json_schema", + "binary_schema" ] } }, + "required": + [ "meth", "path", "query", "output", + "error" ] }, + "patch_service": + { "type": "object", + "properties": + { "meth": + { "type": "string", + "enum": + [ "PATCH", "GET", "POST", + "PUT", "DELETE" ] }, + "path": + { "type": "array", + "items": + { "oneOf": + [ { "title": "PStatic", + "oneOf": + [ { "$ref": + "#/components/schemas/unistring" } ] }, + { "title": "PDynamic", + "type": "object", + "properties": + { "id": + { "type": + "string", + "enum": + [ "single" ] }, + "name": + { "$ref": + "#/components/schemas/unistring" }, + "descr": + { "$ref": + "#/components/schemas/unistring" } }, + "required": + [ "id", "name" ] }, + { "title": "PDynamicTail", + "type": "object", + "properties": + { "id": + { "type": + "string", + "enum": + [ "multiple" ] }, + "name": + { "$ref": + "#/components/schemas/unistring" }, + "descr": + { "$ref": + "#/components/schemas/unistring" } }, + "required": + [ "id", "name" ] } ] } }, + "description": + { "$ref": + "#/components/schemas/unistring" }, + "query": + { "type": "array", + "items": + { "type": "object", + "properties": + { "name": + { "$ref": + "#/components/schemas/unistring" }, + "description": + { "$ref": + "#/components/schemas/unistring" }, + "kind": + { "oneOf": + [ { "title": + "Single", + "type": + "object", + "properties": + { "single": + { "type": + "object", + "properties": + { "id": + { "type": + "string", + "enum": + [ "single" ] }, + "name": + { "$ref": + "#/components/schemas/unistring" }, + "descr": + { "$ref": + "#/components/schemas/unistring" } }, + "required": + [ "id", + "name" ] } }, + "required": + [ "single" ] }, + { "title": + "Optional", + "type": + "object", + "properties": + { "optional": + { "type": + "object", + "properties": + { "id": + { "type": + "string", + "enum": + [ "single" ] }, + "name": + { "$ref": + "#/components/schemas/unistring" }, + "descr": + { "$ref": + "#/components/schemas/unistring" } }, + "required": + [ "id", + "name" ] } }, + "required": + [ "optional" ] }, + { "title": "Flag", + "type": + "object", + "properties": + { "flag": + { "type": + "object", + "properties": + {} } }, + "required": + [ "flag" ] }, + { "title": + "Multi", + "type": + "object", + "properties": + { "multi": + { "type": + "object", + "properties": + { "id": + { "type": + "string", + "enum": + [ "single" ] }, + "name": + { "$ref": + "#/components/schemas/unistring" }, + "descr": + { "$ref": + "#/components/schemas/unistring" } }, + "required": + [ "id", + "name" ] } }, + "required": + [ "multi" ] } ] } }, + "required": + [ "name", "kind" ] } }, + "input": + { "type": "object", + "properties": + { "json_schema": {}, + "binary_schema": + { "type": "object", + "properties": + { "toplevel": + { "oneOf": + [ { "title": + "Obj", + "type": + "object", + "properties": + { "fields": + { "type": + "array", + "items": + { "$ref": + "#/components/schemas/schema.field" } } }, + "required": + [ "fields" ] }, + { "title": + "Cases", + "type": + "object", + "properties": + { "tag_size": + { "type": + "string", + "enum": + [ "Uint16", + "Uint8" ] }, + "kind": + { "$ref": + "#/components/schemas/schema.kind" }, + "cases": + { "type": + "array", + "items": + { "$ref": + "#/components/schemas/union case" } } }, + "required": + [ "tag_size", + "kind", + "cases" ] }, + { "title": + "Int_enum", + "type": + "object", + "properties": + { "size": + { "type": + "string", + "enum": + [ "Int16", + "Uint16", + "Int8", + "Uint8" ] }, + "cases": + { "type": + "array", + "items": + { "type": + "array", + "items": + { "oneOf": + [ { "type": + "integer", + "minimum": + -1073741824, + "maximum": + 1073741823 }, + { "$ref": + "#/components/schemas/unistring" } ] } } } }, + "required": + [ "size", + "cases" ] } ] }, + "fields": + { "type": "array", + "items": + { "type": + "object", + "properties": + { "description": + { "type": + "object", + "properties": + { "title": + { "$ref": + "#/components/schemas/unistring" }, + "description": + { "$ref": + "#/components/schemas/unistring" } }, + "required": + [ "title" ] }, + "encoding": + { "oneOf": + [ { "title": + "Obj", + "type": + "object", + "properties": + { "fields": + { "type": + "array", + "items": + { "$ref": + "#/components/schemas/schema.field" } } }, + "required": + [ "fields" ] }, + { "title": + "Cases", + "type": + "object", + "properties": + { "tag_size": + { "type": + "string", + "enum": + [ "Uint16", + "Uint8" ] }, + "kind": + { "$ref": + "#/components/schemas/schema.kind" }, + "cases": + { "type": + "array", + "items": + { "$ref": + "#/components/schemas/union case" } } }, + "required": + [ "tag_size", + "kind", + "cases" ] }, + { "title": + "Int_enum", + "type": + "object", + "properties": + { "size": + { "type": + "string", + "enum": + [ "Int16", + "Uint16", + "Int8", + "Uint8" ] }, + "cases": + { "type": + "array", + "items": + { "type": + "array", + "items": + { "oneOf": + [ { "type": + "integer", + "minimum": + -1073741824, + "maximum": + 1073741823 }, + { "$ref": + "#/components/schemas/unistring" } ] } } } }, + "required": + [ "size", + "cases" ] } ] } }, + "required": + [ "description", + "encoding" ] } } }, + "required": + [ "toplevel", + "fields" ] } }, + "required": + [ "json_schema", + "binary_schema" ] }, + "output": + { "type": "object", + "properties": + { "json_schema": {}, + "binary_schema": + { "type": "object", + "properties": + { "toplevel": + { "oneOf": + [ { "title": + "Obj", + "type": + "object", + "properties": + { "fields": + { "type": + "array", + "items": + { "$ref": + "#/components/schemas/schema.field" } } }, + "required": + [ "fields" ] }, + { "title": + "Cases", + "type": + "object", + "properties": + { "tag_size": + { "type": + "string", + "enum": + [ "Uint16", + "Uint8" ] }, + "kind": + { "$ref": + "#/components/schemas/schema.kind" }, + "cases": + { "type": + "array", + "items": + { "$ref": + "#/components/schemas/union case" } } }, + "required": + [ "tag_size", + "kind", + "cases" ] }, + { "title": + "Int_enum", + "type": + "object", + "properties": + { "size": + { "type": + "string", + "enum": + [ "Int16", + "Uint16", + "Int8", + "Uint8" ] }, + "cases": + { "type": + "array", + "items": + { "type": + "array", + "items": + { "oneOf": + [ { "type": + "integer", + "minimum": + -1073741824, + "maximum": + 1073741823 }, + { "$ref": + "#/components/schemas/unistring" } ] } } } }, + "required": + [ "size", + "cases" ] } ] }, + "fields": + { "type": "array", + "items": + { "type": + "object", + "properties": + { "description": + { "type": + "object", + "properties": + { "title": + { "$ref": + "#/components/schemas/unistring" }, + "description": + { "$ref": + "#/components/schemas/unistring" } }, + "required": + [ "title" ] }, + "encoding": + { "oneOf": + [ { "title": + "Obj", + "type": + "object", + "properties": + { "fields": + { "type": + "array", + "items": + { "$ref": + "#/components/schemas/schema.field" } } }, + "required": + [ "fields" ] }, + { "title": + "Cases", + "type": + "object", + "properties": + { "tag_size": + { "type": + "string", + "enum": + [ "Uint16", + "Uint8" ] }, + "kind": + { "$ref": + "#/components/schemas/schema.kind" }, + "cases": + { "type": + "array", + "items": + { "$ref": + "#/components/schemas/union case" } } }, + "required": + [ "tag_size", + "kind", + "cases" ] }, + { "title": + "Int_enum", + "type": + "object", + "properties": + { "size": + { "type": + "string", + "enum": + [ "Int16", + "Uint16", + "Int8", + "Uint8" ] }, + "cases": + { "type": + "array", + "items": + { "type": + "array", + "items": + { "oneOf": + [ { "type": + "integer", + "minimum": + -1073741824, + "maximum": + 1073741823 }, + { "$ref": + "#/components/schemas/unistring" } ] } } } }, + "required": + [ "size", + "cases" ] } ] } }, + "required": + [ "description", + "encoding" ] } } }, + "required": + [ "toplevel", + "fields" ] } }, + "required": + [ "json_schema", + "binary_schema" ] }, + "error": + { "type": "object", + "properties": + { "json_schema": {}, + "binary_schema": + { "type": "object", + "properties": + { "toplevel": + { "oneOf": + [ { "title": + "Obj", + "type": + "object", + "properties": + { "fields": + { "type": + "array", + "items": + { "$ref": + "#/components/schemas/schema.field" } } }, + "required": + [ "fields" ] }, + { "title": + "Cases", + "type": + "object", + "properties": + { "tag_size": + { "type": + "string", + "enum": + [ "Uint16", + "Uint8" ] }, + "kind": + { "$ref": + "#/components/schemas/schema.kind" }, + "cases": + { "type": + "array", + "items": + { "$ref": + "#/components/schemas/union case" } } }, + "required": + [ "tag_size", + "kind", + "cases" ] }, + { "title": + "Int_enum", + "type": + "object", + "properties": + { "size": + { "type": + "string", + "enum": + [ "Int16", + "Uint16", + "Int8", + "Uint8" ] }, + "cases": + { "type": + "array", + "items": + { "type": + "array", + "items": + { "oneOf": + [ { "type": + "integer", + "minimum": + -1073741824, + "maximum": + 1073741823 }, + { "$ref": + "#/components/schemas/unistring" } ] } } } }, + "required": + [ "size", + "cases" ] } ] }, + "fields": + { "type": "array", + "items": + { "type": + "object", + "properties": + { "description": + { "type": + "object", + "properties": + { "title": + { "$ref": + "#/components/schemas/unistring" }, + "description": + { "$ref": + "#/components/schemas/unistring" } }, + "required": + [ "title" ] }, + "encoding": + { "oneOf": + [ { "title": + "Obj", + "type": + "object", + "properties": + { "fields": + { "type": + "array", + "items": + { "$ref": + "#/components/schemas/schema.field" } } }, + "required": + [ "fields" ] }, + { "title": + "Cases", + "type": + "object", + "properties": + { "tag_size": + { "type": + "string", + "enum": + [ "Uint16", + "Uint8" ] }, + "kind": + { "$ref": + "#/components/schemas/schema.kind" }, + "cases": + { "type": + "array", + "items": + { "$ref": + "#/components/schemas/union case" } } }, + "required": + [ "tag_size", + "kind", + "cases" ] }, + { "title": + "Int_enum", + "type": + "object", + "properties": + { "size": + { "type": + "string", + "enum": + [ "Int16", + "Uint16", + "Int8", + "Uint8" ] }, + "cases": + { "type": + "array", + "items": + { "type": + "array", + "items": + { "oneOf": + [ { "type": + "integer", + "minimum": + -1073741824, + "maximum": + 1073741823 }, + { "$ref": + "#/components/schemas/unistring" } ] } } } }, + "required": + [ "size", + "cases" ] } ] } }, + "required": + [ "description", + "encoding" ] } } }, + "required": + [ "toplevel", + "fields" ] } }, + "required": + [ "json_schema", + "binary_schema" ] } }, + "required": + [ "meth", "path", "query", "output", + "error" ] }, + "subdirs": + { "oneOf": + [ { "title": "Suffixes", + "type": "object", + "properties": + { "suffixes": + { "type": "array", + "items": + { "type": "object", + "properties": + { "name": + { "$ref": + "#/components/schemas/unistring" }, + "tree": + { "$ref": + "#/components/schemas/service_tree" } }, + "required": + [ "name", "tree" ] } } }, + "required": [ "suffixes" ] }, + { "title": "Arg", "type": "object", + "properties": + { "dynamic_dispatch": + { "type": "object", + "properties": + { "arg": + { "type": "object", + "properties": + { "id": + { "type": + "string", + "enum": + [ "single" ] }, + "name": + { "$ref": + "#/components/schemas/unistring" }, + "descr": + { "$ref": + "#/components/schemas/unistring" } }, + "required": + [ "id", "name" ] }, + "tree": + { "$ref": + "#/components/schemas/service_tree" } }, + "required": + [ "arg", "tree" ] } }, + "required": [ "dynamic_dispatch" ] } ] } } } }, + "required": [ "static" ] }, + { "title": "Dynamic", "type": "object", + "properties": + { "dynamic": + { "nullable": true, + "oneOf": + [ { "title": "Some", + "oneOf": + [ { "$ref": + "#/components/schemas/unistring" } ] } ] } }, + "required": [ "dynamic" ] }, + { "title": "Empty", "type": "string", "enum": [ "empty" ] } ] }, + "smart_rollup_address": + { "title": "A smart rollup address (Base58Check-encoded)", + "oneOf": [ { "$ref": "#/components/schemas/unistring" } ] }, + "smart_rollup_commitment_hash": + { "title": + "The hash of a commitment of a smart rollup (Base58Check-encoded)", + "oneOf": [ { "$ref": "#/components/schemas/unistring" } ] }, + "smart_rollup_inbox_hash": + { "title": + "The hash of an inbox of a smart rollup (Base58Check-encoded)", + "oneOf": [ { "$ref": "#/components/schemas/unistring" } ] }, + "smart_rollup_merkelized_payload_hashes_hash": + { "title": + "The hash of the Merkelized payload hashes of a smart rollup inbox (Base58Check-encoded)", + "oneOf": [ { "$ref": "#/components/schemas/unistring" } ] }, + "smart_rollup_state_hash": + { "title": + "The hash of the VM state of a smart rollup (Base58Check-encoded)", + "oneOf": [ { "$ref": "#/components/schemas/unistring" } ] }, + "union case": + { "type": "object", + "properties": + { "tag": + { "type": "integer", "minimum": -1073741824, + "maximum": 1073741823 }, + "fields": + { "type": "array", + "items": + { "$ref": "#/components/schemas/schema.field" } }, + "name": { "$ref": "#/components/schemas/unistring" } }, + "required": [ "tag", "fields" ] }, + "unistring": + { "title": "Universal string representation", + "description": + "Either a plain UTF8 string, or a sequence of bytes for strings that contain invalid byte sequences.", + "oneOf": + [ { "type": "string" }, + { "type": "object", + "properties": + { "invalid_utf8_string": + { "type": "array", + "items": + { "type": "integer", "minimum": 0, + "maximum": 255 } } }, + "required": [ "invalid_utf8_string" ] } ] } } } } diff --git a/docs/api/openapi.rst b/docs/api/openapi.rst index 005d4e249a7da3ff109e567d809a9f5b67cc1778..52cd8fc5ef171891e9f715a2673802e518fc7be8 100644 --- a/docs/api/openapi.rst +++ b/docs/api/openapi.rst @@ -8,6 +8,9 @@ a specification and perform API calls from your browser. Several code generators also exist to generate API libraries for various programming languages. +Octez Node +~~~~~~~~~~ + The REST API served by the Octez node on the RPC port is described by the union of several OpenAPI specifications: - ``rpc-openapi(-rc).json``, containing the protocol-independent (or "shell") RPCs @@ -84,10 +87,38 @@ and specific to the Oxford protocol can be found at: - `oxford-mempool-openapi-rc.json (version 19.0~rc1) `_ +Smart Rollup Node +~~~~~~~~~~~~~~~~~ + +The smart rollup node exposes different RPCs depending on the underlying L1 +protocol in use. Their specification is given in the sections below. + +Nairobi RPCs +------------ + +The OpenAPI specifications for the RPCs of the smart rollup node for the Nairobi +(``PtNairob``) protocol can be found at: + +- `nairobi-smart-rollup-node-openapi.json (version from master branch) + `_ + (The exact version of the rollup node for which this file is produced can be + seen in the field ``.info.version`` of the file.) + +Oxford RPCs +----------- + +The OpenAPI specifications for the RPCs of the smart rollup node for the Nairobi +(``Proxford``) protocol can be found at: + +- `oxford-smart-rollup-node-openapi.json (version from master branch) + `_ + (The exact version of the rollup node for which this file is produced can be + seen in the field ``.info.version`` of the file.) + .. _openapi_generate: How to Generate ---------------- +~~~~~~~~~~~~~~~ To generate the above files, run the ``src/bin_openapi/generate.sh`` script from the root of the Octez repository. @@ -107,7 +138,7 @@ For ``protocol_hash``, use the value defined in ``TEZOS_PROTOCOL``. How to Test ------------ +~~~~~~~~~~~ You can test OpenAPI specifications using `Swagger Editor `_ to check for syntax issues (just copy-paste ``rpc-openapi.json`` into it or open diff --git a/docs/api/oxford-smart-rollup-node-openapi.json b/docs/api/oxford-smart-rollup-node-openapi.json new file mode 100644 index 0000000000000000000000000000000000000000..91330651a245d0b7219dfb1960b19eee6f7aae0b --- /dev/null +++ b/docs/api/oxford-smart-rollup-node-openapi.json @@ -0,0 +1,5741 @@ +{ "openapi": "3.0.0", + "info": + { "title": "Smart Rollup Node RPCs", + "description": + "Smart Rollup Node RPC API for protocol ProxfordYmVfjWnRcgjWH36fW6PArwqykTFzotUxRs6gmTcZDuH", + "version": "325c2ab2 (2023-12-06 09:45:50 +0100) (18.0~rc1+dev)" }, + "paths": + { "/describe": + { "get": + { "description": "RPCs documentation and input/output schema", + "parameters": + [ { "name": "recurse", "in": "query", "required": true, + "schema": { "type": "string" } } ], + "responses": + { "200": + { "description": "", + "content": + { "application/json": + { "schema": + { "$ref": "#/components/schemas/service_tree" } } } }, + "default": + { "description": "", + "content": + { "application/json": + { "schema": + { "description": + "The full list of errors is available with the global RPC `GET errors`" } } } } } } }, + "/global/block/{block_id}": + { "get": + { "description": + "Layer-2 block of the layer-2 chain with respect to a Layer 1 block identifier", + "parameters": + [ { "name": "block_id", "in": "path", + "description": "An L1 block identifier.", + "required": true, "schema": { "type": "string" } } ], + "responses": + { "200": + { "description": "", + "content": + { "application/json": + { "schema": + { "type": "object", + "properties": + { "block_hash": + { "description": "Tezos block hash.", + "oneOf": + [ { "$ref": + "#/components/schemas/block_hash" } ] }, + "level": + { "description": + "Level of the block, corresponds to the level of the tezos block.", + "type": "integer", + "minimum": -2147483648, + "maximum": 2147483647 }, + "predecessor": + { "description": + "Predecessor hash of the Tezos block.", + "oneOf": + [ { "$ref": + "#/components/schemas/block_hash" } ] }, + "commitment_hash": + { "description": + "Hash of this block's commitment if any was computed for it.", + "nullable": true, + "oneOf": + [ { "title": "Some", + "oneOf": + [ { "$ref": + "#/components/schemas/smart_rollup_commitment_hash" } ] } ] }, + "previous_commitment_hash": + { "description": + "Previous commitment hash in the chain. If there is a commitment for this block, this field contains the commitment that was previously computed.", + "oneOf": + [ { "$ref": + "#/components/schemas/smart_rollup_commitment_hash" } ] }, + "context": + { "description": + "Hash of the layer 2 context for this block.", + "oneOf": + [ { "$ref": + "#/components/schemas/Smart_rollup_context_hash" } ] }, + "inbox_witness": + { "description": + "Witness for the inbox for this block, i.e. the Merkle hash of payloads of messages.", + "oneOf": + [ { "$ref": + "#/components/schemas/smart_rollup_merkelized_payload_hashes_hash" } ] }, + "inbox_hash": + { "description": + "Hash of the inbox for this block.", + "oneOf": + [ { "$ref": + "#/components/schemas/smart_rollup_inbox_hash" } ] }, + "inbox": + { "description": + "Inbox for this block.", + "type": "object", + "properties": + { "level": + { "type": "integer", + "minimum": -2147483648, + "maximum": 2147483647 }, + "old_levels_messages": + { "type": "object", + "properties": + { "index": + { "$ref": + "#/components/schemas/positive_bignum" }, + "content": + { "type": "object", + "properties": + { "hash": + { "$ref": + "#/components/schemas/smart_rollup_merkelized_payload_hashes_hash" }, + "level": + { "type": + "integer", + "minimum": + -2147483648, + "maximum": + 2147483647 } }, + "required": + [ "hash", + "level" ] }, + "back_pointers": + { "type": "array", + "items": + { "$ref": + "#/components/schemas/smart_rollup_inbox_hash" } } }, + "required": + [ "index", "content", + "back_pointers" ] } }, + "required": + [ "level", + "old_levels_messages" ] }, + "messages": + { "description": + "Messages added to the inbox in this block.", + "type": "array", + "items": + { "type": "string", + "pattern": + "^([a-zA-Z0-9][a-zA-Z0-9])*$" } }, + "commitment": + { "description": + "Commitment, if any is computed for this block.", + "type": "object", + "properties": + { "compressed_state": + { "$ref": + "#/components/schemas/smart_rollup_state_hash" }, + "inbox_level": + { "type": "integer", + "minimum": -2147483648, + "maximum": 2147483647 }, + "predecessor": + { "$ref": + "#/components/schemas/smart_rollup_commitment_hash" }, + "number_of_ticks": + { "$ref": + "#/components/schemas/int64" } }, + "required": + [ "compressed_state", + "inbox_level", "predecessor", + "number_of_ticks" ] }, + "initial_tick": + { "description": + "Initial tick of the PVM at this block, i.e. before evaluation of the messages.", + "oneOf": + [ { "$ref": + "#/components/schemas/positive_bignum" } ] }, + "num_ticks": + { "description": + "Number of ticks produced by the evaluation of the messages in this block.", + "oneOf": + [ { "$ref": + "#/components/schemas/int64" } ] } }, + "required": + [ "block_hash", "level", "predecessor", + "commitment_hash", + "previous_commitment_hash", "context", + "inbox_witness", "inbox_hash", "inbox", + "messages", "initial_tick", + "num_ticks" ] } } } }, + "default": + { "description": "", + "content": + { "application/json": + { "schema": + { "description": + "The full list of errors is available with the global RPC `GET errors`" } } } } } } }, + "/global/block/{block_id}/dal/processed_slots": + { "get": + { "description": + "Data availability processed slots and their statuses", + "parameters": + [ { "name": "block_id", "in": "path", + "description": "An L1 block identifier.", + "required": true, "schema": { "type": "string" } } ], + "responses": + { "200": + { "description": "", + "content": + { "application/json": + { "schema": + { "type": "array", + "items": + { "type": "object", + "properties": + { "index": + { "type": "integer", + "minimum": -1073741824, + "maximum": 1073741823 }, + "status": + { "type": "string", + "enum": + [ "unconfirmed", + "confirmed" ] } }, + "required": [ "index", "status" ] } } } } }, + "default": + { "description": "", + "content": + { "application/json": + { "schema": + { "description": + "The full list of errors is available with the global RPC `GET errors`" } } } } } } }, + "/global/block/{block_id}/dal/slot_headers": + { "get": + { "description": "Availability slots for a given block", + "parameters": + [ { "name": "block_id", "in": "path", + "description": "An L1 block identifier.", + "required": true, "schema": { "type": "string" } } ], + "responses": + { "200": + { "description": "", + "content": + { "application/json": + { "schema": + { "type": "array", + "items": + { "type": "object", + "properties": + { "level": + { "type": "integer", + "minimum": 0, + "maximum": 2147483647 }, + "index": + { "type": "integer", + "minimum": 0, "maximum": 255 }, + "commitment": + { "$ref": + "#/components/schemas/DAL_commitment" } }, + "required": + [ "level", "index", "commitment" ] } } } } }, + "default": + { "description": "", + "content": + { "application/json": + { "schema": + { "description": + "The full list of errors is available with the global RPC `GET errors`" } } } } } } }, + "/global/block/{block_id}/durable/wasm_2_0_0/length": + { "get": + { "description": + "Retrieve number of bytes in raw representation of value by key from PVM durable storage. PVM state is taken with respect to the specified block level.", + "parameters": + [ { "name": "block_id", "in": "path", + "description": "An L1 block identifier.", + "required": true, "schema": { "type": "string" } }, + { "name": "key", "in": "query", "required": true, + "schema": { "type": "string" } } ], + "responses": + { "200": + { "description": "", + "content": + { "application/json": + { "schema": + { "nullable": true, + "oneOf": + [ { "title": "Some", + "oneOf": + [ { "$ref": + "#/components/schemas/int64" } ] } ] } } } }, + "default": + { "description": "", + "content": + { "application/json": + { "schema": + { "description": + "The full list of errors is available with the global RPC `GET errors`" } } } } } } }, + "/global/block/{block_id}/durable/wasm_2_0_0/subkeys": + { "get": + { "description": + "Retrieve subkeys of the specified key from PVM durable storage. PVM state is taken with respect to the specified block level.", + "parameters": + [ { "name": "block_id", "in": "path", + "description": "An L1 block identifier.", + "required": true, "schema": { "type": "string" } }, + { "name": "key", "in": "query", "required": true, + "schema": { "type": "string" } } ], + "responses": + { "200": + { "description": "", + "content": + { "application/json": + { "schema": + { "type": "array", + "items": + { "$ref": + "#/components/schemas/unistring" } } } } }, + "default": + { "description": "", + "content": + { "application/json": + { "schema": + { "description": + "The full list of errors is available with the global RPC `GET errors`" } } } } } } }, + "/global/block/{block_id}/durable/wasm_2_0_0/value": + { "get": + { "description": + "Retrieve value by key from PVM durable storage. PVM state is taken with respect to the specified block level. Value returned in hex format.", + "parameters": + [ { "name": "block_id", "in": "path", + "description": "An L1 block identifier.", + "required": true, "schema": { "type": "string" } }, + { "name": "key", "in": "query", "required": true, + "schema": { "type": "string" } } ], + "responses": + { "200": + { "description": "", + "content": + { "application/json": + { "schema": + { "nullable": true, + "oneOf": + [ { "title": "Some", "type": "string", + "pattern": + "^([a-zA-Z0-9][a-zA-Z0-9])*$" } ] } } } }, + "default": + { "description": "", + "content": + { "application/json": + { "schema": + { "description": + "The full list of errors is available with the global RPC `GET errors`" } } } } } } }, + "/global/block/{block_id}/hash": + { "get": + { "description": + "Tezos block hash of block known to the smart rollup node", + "parameters": + [ { "name": "block_id", "in": "path", + "description": "An L1 block identifier.", + "required": true, "schema": { "type": "string" } } ], + "responses": + { "200": + { "description": "", + "content": + { "application/json": + { "schema": + { "title": + "A block identifier (Base58Check-encoded)", + "oneOf": + [ { "$ref": + "#/components/schemas/unistring" } ] } } } }, + "default": + { "description": "", + "content": + { "application/json": + { "schema": + { "description": + "The full list of errors is available with the global RPC `GET errors`" } } } } } } }, + "/global/block/{block_id}/helpers/proofs/outbox": + { "get": + { "description": + "Generate serialized output proof for some outbox message", + "parameters": + [ { "name": "block_id", "in": "path", + "description": "An L1 block identifier.", + "required": true, "schema": { "type": "string" } }, + { "name": "outbox_level", "in": "query", "required": false, + "schema": { "type": "string" } }, + { "name": "message_index", "in": "query", + "required": false, "schema": { "type": "string" } }, + { "name": "serialized_outbox_message", "in": "query", + "required": false, "schema": { "type": "string" } } ], + "responses": + { "200": + { "description": "", + "content": + { "application/json": + { "schema": + { "type": "object", + "properties": + { "commitment": + { "$ref": + "#/components/schemas/smart_rollup_commitment_hash" }, + "proof": + { "type": "string", + "pattern": + "^([a-zA-Z0-9][a-zA-Z0-9])*$" } }, + "required": [ "commitment", "proof" ] } } } }, + "default": + { "description": "", + "content": + { "application/json": + { "schema": + { "description": + "The full list of errors is available with the global RPC `GET errors`" } } } } } } }, + "/global/block/{block_id}/helpers/proofs/outbox/{level}/messages": + { "get": + { "description": + "Generate serialized output proof for some outbox message at level and index", + "parameters": + [ { "name": "block_id", "in": "path", + "description": "An L1 block identifier.", + "required": true, "schema": { "type": "string" } }, + { "name": "level", "in": "path", "required": true, + "schema": { "type": "string" } }, + { "name": "index", "in": "query", "required": false, + "schema": { "type": "string" } } ], + "responses": + { "200": + { "description": "", + "content": + { "application/json": + { "schema": + { "type": "object", + "properties": + { "commitment": + { "$ref": + "#/components/schemas/smart_rollup_commitment_hash" }, + "proof": + { "type": "string", + "pattern": + "^([a-zA-Z0-9][a-zA-Z0-9])*$" } }, + "required": [ "commitment", "proof" ] } } } }, + "default": + { "description": "", + "content": + { "application/json": + { "schema": + { "description": + "The full list of errors is available with the global RPC `GET errors`" } } } } } } }, + "/global/block/{block_id}/inbox": + { "get": + { "description": "Rollup inbox for block", + "parameters": + [ { "name": "block_id", "in": "path", + "description": "An L1 block identifier.", + "required": true, "schema": { "type": "string" } } ], + "responses": + { "200": + { "description": "", + "content": + { "application/json": + { "schema": + { "type": "object", + "properties": + { "level": + { "type": "integer", + "minimum": -2147483648, + "maximum": 2147483647 }, + "old_levels_messages": + { "type": "object", + "properties": + { "index": + { "$ref": + "#/components/schemas/positive_bignum" }, + "content": + { "type": "object", + "properties": + { "hash": + { "$ref": + "#/components/schemas/smart_rollup_merkelized_payload_hashes_hash" }, + "level": + { "type": "integer", + "minimum": + -2147483648, + "maximum": + 2147483647 } }, + "required": + [ "hash", "level" ] }, + "back_pointers": + { "type": "array", + "items": + { "$ref": + "#/components/schemas/smart_rollup_inbox_hash" } } }, + "required": + [ "index", "content", + "back_pointers" ] } }, + "required": + [ "level", "old_levels_messages" ] } } } }, + "default": + { "description": "", + "content": + { "application/json": + { "schema": + { "description": + "The full list of errors is available with the global RPC `GET errors`" } } } } } } }, + "/global/block/{block_id}/level": + { "get": + { "description": + "Level of Tezos block known to the smart rollup node", + "parameters": + [ { "name": "block_id", "in": "path", + "description": "An L1 block identifier.", + "required": true, "schema": { "type": "string" } } ], + "responses": + { "200": + { "description": "", + "content": + { "application/json": + { "schema": + { "type": "integer", "minimum": -2147483648, + "maximum": 2147483647 } } } }, + "default": + { "description": "", + "content": + { "application/json": + { "schema": + { "description": + "The full list of errors is available with the global RPC `GET errors`" } } } } } } }, + "/global/block/{block_id}/num_messages": + { "get": + { "description": "Number of messages for specified block", + "parameters": + [ { "name": "block_id", "in": "path", + "description": "An L1 block identifier.", + "required": true, "schema": { "type": "string" } } ], + "responses": + { "200": + { "description": "", + "content": + { "application/json": + { "schema": + { "title": "Big number", + "description": + "Decimal representation of a big number", + "type": "string" } } } }, + "default": + { "description": "", + "content": + { "application/json": + { "schema": + { "description": + "The full list of errors is available with the global RPC `GET errors`" } } } } } } }, + "/global/block/{block_id}/outbox": + { "get": + { "description": "Outbox at block for a given outbox level", + "parameters": + [ { "name": "block_id", "in": "path", + "description": "An L1 block identifier.", + "required": true, "schema": { "type": "string" } }, + { "name": "outbox_level", "in": "query", "required": false, + "schema": { "type": "string" } } ], + "responses": + { "200": + { "description": "", + "content": + { "application/json": + { "schema": + { "type": "array", + "items": + { "type": "object", + "properties": + { "outbox_level": + { "type": "integer", + "minimum": 0, + "maximum": 2147483647 }, + "message_index": + { "$ref": + "#/components/schemas/positive_bignum" }, + "message": + { "oneOf": + [ { "title": + "Atomic_transaction_batch", + "type": "object", + "properties": + { "transactions": + { "type": "array", + "items": + { "type": + "object", + "properties": + { "parameters": + { "$ref": + "#/components/schemas/micheline.018-Proxford.michelson_v1.expression" }, + "destination": + { "$ref": + "#/components/schemas/018-Proxford.contract_id.originated" }, + "entrypoint": + { "$ref": + "#/components/schemas/unistring" } }, + "required": + [ "parameters", + "destination" ] } }, + "kind": + { "type": "string", + "enum": + [ "untyped" ] } }, + "required": + [ "transactions", + "kind" ] }, + { "title": + "Atomic_transaction_batch_typed", + "type": "object", + "properties": + { "transactions": + { "type": "array", + "items": + { "type": + "object", + "properties": + { "parameters": + { "$ref": + "#/components/schemas/micheline.018-Proxford.michelson_v1.expression" }, + "parameters_ty": + { "$ref": + "#/components/schemas/micheline.018-Proxford.michelson_v1.expression" }, + "destination": + { "$ref": + "#/components/schemas/018-Proxford.contract_id.originated" }, + "entrypoint": + { "$ref": + "#/components/schemas/unistring" } }, + "required": + [ "parameters", + "parameters_ty", + "destination" ] } }, + "kind": + { "type": "string", + "enum": + [ "typed" ] } }, + "required": + [ "transactions", + "kind" ] }, + { "title": + "Whitelist_update", + "type": "object", + "properties": + { "whitelist": + { "type": "array", + "items": + { "$ref": + "#/components/schemas/Signature.Public_key_hash" } }, + "kind": + { "type": "string", + "enum": + [ "whitelist_update" ] } }, + "required": [ "kind" ] } ] } }, + "required": + [ "outbox_level", "message_index", + "message" ] } } } } }, + "default": + { "description": "", + "content": + { "application/json": + { "schema": + { "description": + "The full list of errors is available with the global RPC `GET errors`" } } } } } } }, + "/global/block/{block_id}/outbox/{level}/messages": + { "get": + { "description": "Outbox at block for a given outbox level", + "parameters": + [ { "name": "block_id", "in": "path", + "description": "An L1 block identifier.", + "required": true, "schema": { "type": "string" } }, + { "name": "level", "in": "path", "required": true, + "schema": { "type": "string" } } ], + "responses": + { "200": + { "description": "", + "content": + { "application/json": + { "schema": + { "type": "array", + "items": + { "type": "object", + "properties": + { "outbox_level": + { "type": "integer", + "minimum": 0, + "maximum": 2147483647 }, + "message_index": + { "$ref": + "#/components/schemas/positive_bignum" }, + "message": + { "oneOf": + [ { "title": + "Atomic_transaction_batch", + "type": "object", + "properties": + { "transactions": + { "type": "array", + "items": + { "type": + "object", + "properties": + { "parameters": + { "$ref": + "#/components/schemas/micheline.018-Proxford.michelson_v1.expression" }, + "destination": + { "$ref": + "#/components/schemas/018-Proxford.contract_id.originated" }, + "entrypoint": + { "$ref": + "#/components/schemas/unistring" } }, + "required": + [ "parameters", + "destination" ] } }, + "kind": + { "type": "string", + "enum": + [ "untyped" ] } }, + "required": + [ "transactions", + "kind" ] }, + { "title": + "Atomic_transaction_batch_typed", + "type": "object", + "properties": + { "transactions": + { "type": "array", + "items": + { "type": + "object", + "properties": + { "parameters": + { "$ref": + "#/components/schemas/micheline.018-Proxford.michelson_v1.expression" }, + "parameters_ty": + { "$ref": + "#/components/schemas/micheline.018-Proxford.michelson_v1.expression" }, + "destination": + { "$ref": + "#/components/schemas/018-Proxford.contract_id.originated" }, + "entrypoint": + { "$ref": + "#/components/schemas/unistring" } }, + "required": + [ "parameters", + "parameters_ty", + "destination" ] } }, + "kind": + { "type": "string", + "enum": + [ "typed" ] } }, + "required": + [ "transactions", + "kind" ] }, + { "title": + "Whitelist_update", + "type": "object", + "properties": + { "whitelist": + { "type": "array", + "items": + { "$ref": + "#/components/schemas/Signature.Public_key_hash" } }, + "kind": + { "type": "string", + "enum": + [ "whitelist_update" ] } }, + "required": [ "kind" ] } ] } }, + "required": + [ "outbox_level", "message_index", + "message" ] } } } } }, + "default": + { "description": "", + "content": + { "application/json": + { "schema": + { "description": + "The full list of errors is available with the global RPC `GET errors`" } } } } } } }, + "/global/block/{block_id}/simulate": + { "post": + { "description": "Simulate messages evaluation by the PVM", + "parameters": + [ { "name": "block_id", "in": "path", + "description": "An L1 block identifier.", + "required": true, "schema": { "type": "string" } } ], + "requestBody": + { "content": + { "application/json": + { "schema": + { "type": "object", + "properties": + { "messages": + { "description": + "Serialized messages for simulation.", + "type": "array", + "items": + { "type": "string", + "pattern": + "^([a-zA-Z0-9][a-zA-Z0-9])*$" } }, + "reveal_pages": + { "description": + "Pages (at most 4kB) to be used for revelation ticks", + "type": "array", + "items": + { "type": "string", + "pattern": + "^([a-zA-Z0-9][a-zA-Z0-9])*$" } }, + "insight_requests": + { "description": + "Paths in the PVM to inspect after the simulation", + "type": "array", + "items": + { "oneOf": + [ { "title": "pvm_state", + "description": + "Path in the PVM state", + "type": "object", + "properties": + { "kind": + { "type": "string", + "enum": + [ "pvm_state" ] }, + "key": + { "type": "array", + "items": + { "$ref": + "#/components/schemas/unistring" } } }, + "required": [ "kind", "key" ] }, + { "title": "durable_storage", + "description": + "Path in the PVM durable storage", + "type": "object", + "properties": + { "kind": + { "type": "string", + "enum": + [ "durable_storage" ] }, + "key": + { "type": "array", + "items": + { "$ref": + "#/components/schemas/unistring" } } }, + "required": [ "kind", "key" ] } ] } }, + "log_kernel_debug_file": + { "description": + "File in which to emit kernel logs. This file will be created in /simulation_kernel_logs/, where is the data directory of the rollup node.", + "oneOf": + [ { "$ref": + "#/components/schemas/unistring" } ] } }, + "required": [ "messages" ] } } } }, + "responses": + { "200": + { "description": "", + "content": + { "application/json": + { "schema": + { "type": "object", + "properties": + { "state_hash": + { "description": + "Hash of the state after execution of the PVM on the input messages", + "oneOf": + [ { "$ref": + "#/components/schemas/smart_rollup_state_hash" } ] }, + "status": + { "description": + "Status of the PVM after evaluation", + "oneOf": + [ { "$ref": + "#/components/schemas/unistring" } ] }, + "output": + { "description": + "Output produced by evaluation of the messages", + "type": "array", + "items": + { "type": "object", + "properties": + { "outbox_level": + { "type": "integer", + "minimum": 0, + "maximum": 2147483647 }, + "message_index": + { "$ref": + "#/components/schemas/positive_bignum" }, + "message": + { "oneOf": + [ { "title": + "Atomic_transaction_batch", + "type": "object", + "properties": + { "transactions": + { "type": + "array", + "items": + { "type": + "object", + "properties": + { "parameters": + { "$ref": + "#/components/schemas/micheline.018-Proxford.michelson_v1.expression" }, + "destination": + { "$ref": + "#/components/schemas/018-Proxford.contract_id.originated" }, + "entrypoint": + { "$ref": + "#/components/schemas/unistring" } }, + "required": + [ "parameters", + "destination" ] } }, + "kind": + { "type": + "string", + "enum": + [ "untyped" ] } }, + "required": + [ "transactions", + "kind" ] }, + { "title": + "Atomic_transaction_batch_typed", + "type": "object", + "properties": + { "transactions": + { "type": + "array", + "items": + { "type": + "object", + "properties": + { "parameters": + { "$ref": + "#/components/schemas/micheline.018-Proxford.michelson_v1.expression" }, + "parameters_ty": + { "$ref": + "#/components/schemas/micheline.018-Proxford.michelson_v1.expression" }, + "destination": + { "$ref": + "#/components/schemas/018-Proxford.contract_id.originated" }, + "entrypoint": + { "$ref": + "#/components/schemas/unistring" } }, + "required": + [ "parameters", + "parameters_ty", + "destination" ] } }, + "kind": + { "type": + "string", + "enum": + [ "typed" ] } }, + "required": + [ "transactions", + "kind" ] }, + { "title": + "Whitelist_update", + "type": "object", + "properties": + { "whitelist": + { "type": + "array", + "items": + { "$ref": + "#/components/schemas/Signature.Public_key_hash" } }, + "kind": + { "type": + "string", + "enum": + [ "whitelist_update" ] } }, + "required": + [ "kind" ] } ] } }, + "required": + [ "outbox_level", + "message_index", + "message" ] } }, + "inbox_level": + { "description": + "Level of the inbox that would contain these messages", + "type": "integer", + "minimum": -2147483648, + "maximum": 2147483647 }, + "num_ticks": + { "description": + "Ticks taken by the PVM for evaluating the messages", + "oneOf": + [ { "$ref": + "#/components/schemas/bignum" } ] }, + "insights": + { "description": + "PVM state values requested after the simulation", + "type": "array", + "items": + { "nullable": true, + "oneOf": + [ { "title": "Some", + "type": "string", + "pattern": + "^([a-zA-Z0-9][a-zA-Z0-9])*$" } ] } } }, + "required": + [ "state_hash", "status", "output", + "inbox_level", "num_ticks" ] } } } }, + "default": + { "description": "", + "content": + { "application/json": + { "schema": + { "description": + "The full list of errors is available with the global RPC `GET errors`" } } } } } } }, + "/global/block/{block_id}/state": + { "get": + { "description": + "Retrieve value from key is PVM state of specified block", + "parameters": + [ { "name": "block_id", "in": "path", + "description": "An L1 block identifier.", + "required": true, "schema": { "type": "string" } }, + { "name": "key", "in": "query", "required": true, + "schema": { "type": "string" } } ], + "responses": + { "200": + { "description": "", + "content": + { "application/json": + { "schema": + { "type": "string", + "pattern": "^([a-zA-Z0-9][a-zA-Z0-9])*$" } } } }, + "default": + { "description": "", + "content": + { "application/json": + { "schema": + { "description": + "The full list of errors is available with the global RPC `GET errors`" } } } } } } }, + "/global/block/{block_id}/state_current_level": + { "get": + { "description": "Retrieve the current level of a PVM", + "parameters": + [ { "name": "block_id", "in": "path", + "description": "An L1 block identifier.", + "required": true, "schema": { "type": "string" } } ], + "responses": + { "200": + { "description": "", + "content": + { "application/json": + { "schema": + { "nullable": true, + "oneOf": + [ { "title": "Some", "type": "integer", + "minimum": 0, "maximum": 2147483647 } ] } } } }, + "default": + { "description": "", + "content": + { "application/json": + { "schema": + { "description": + "The full list of errors is available with the global RPC `GET errors`" } } } } } } }, + "/global/block/{block_id}/state_hash": + { "get": + { "description": "State hash for this block", + "parameters": + [ { "name": "block_id", "in": "path", + "description": "An L1 block identifier.", + "required": true, "schema": { "type": "string" } } ], + "responses": + { "200": + { "description": "", + "content": + { "application/json": + { "schema": + { "title": + "The hash of the VM state of a smart rollup (Base58Check-encoded)", + "oneOf": + [ { "$ref": + "#/components/schemas/unistring" } ] } } } }, + "default": + { "description": "", + "content": + { "application/json": + { "schema": + { "description": + "The full list of errors is available with the global RPC `GET errors`" } } } } } } }, + "/global/block/{block_id}/status": + { "get": + { "description": "PVM status at block", + "parameters": + [ { "name": "block_id", "in": "path", + "description": "An L1 block identifier.", + "required": true, "schema": { "type": "string" } } ], + "responses": + { "200": + { "description": "", + "content": + { "application/json": + { "schema": + { "title": "Universal string representation", + "description": + "Either a plain UTF8 string, or a sequence of bytes for strings that contain invalid byte sequences.", + "oneOf": + [ { "type": "string" }, + { "type": "object", + "properties": + { "invalid_utf8_string": + { "type": "array", + "items": + { "type": "integer", + "minimum": 0, + "maximum": 255 } } }, + "required": [ "invalid_utf8_string" ] } ] } } } }, + "default": + { "description": "", + "content": + { "application/json": + { "schema": + { "description": + "The full list of errors is available with the global RPC `GET errors`" } } } } } } }, + "/global/block/{block_id}/ticks": + { "get": + { "description": "Number of ticks for specified level", + "parameters": + [ { "name": "block_id", "in": "path", + "description": "An L1 block identifier.", + "required": true, "schema": { "type": "string" } } ], + "responses": + { "200": + { "description": "", + "content": + { "application/json": + { "schema": + { "title": "Big number", + "description": + "Decimal representation of a big number", + "type": "string" } } } }, + "default": + { "description": "", + "content": + { "application/json": + { "schema": + { "description": + "The full list of errors is available with the global RPC `GET errors`" } } } } } } }, + "/global/block/{block_id}/total_ticks": + { "get": + { "description": "Total number of ticks at specified block", + "parameters": + [ { "name": "block_id", "in": "path", + "description": "An L1 block identifier.", + "required": true, "schema": { "type": "string" } } ], + "responses": + { "200": + { "description": "", + "content": + { "application/json": + { "schema": + { "title": "Positive big number", + "description": + "Decimal representation of a positive big number", + "type": "string" } } } }, + "default": + { "description": "", + "content": + { "application/json": + { "schema": + { "description": + "The full list of errors is available with the global RPC `GET errors`" } } } } } } }, + "/global/last_stored_commitment": + { "get": + { "description": "Last commitment computed by the node", + "responses": + { "200": + { "description": "", + "content": + { "application/json": + { "schema": + { "nullable": true, + "oneOf": + [ { "title": "Some", "type": "object", + "properties": + { "commitment": + { "type": "object", + "properties": + { "compressed_state": + { "$ref": + "#/components/schemas/smart_rollup_state_hash" }, + "inbox_level": + { "type": "integer", + "minimum": + -2147483648, + "maximum": 2147483647 }, + "predecessor": + { "$ref": + "#/components/schemas/smart_rollup_commitment_hash" }, + "number_of_ticks": + { "$ref": + "#/components/schemas/int64" } }, + "required": + [ "compressed_state", + "inbox_level", + "predecessor", + "number_of_ticks" ] }, + "hash": + { "$ref": + "#/components/schemas/smart_rollup_commitment_hash" } }, + "required": [ "commitment", "hash" ] } ] } } } }, + "default": + { "description": "", + "content": + { "application/json": + { "schema": + { "description": + "The full list of errors is available with the global RPC `GET errors`" } } } } } } }, + "/global/monitor_blocks": + { "get": + { "description": "Monitor and streaming the L2 blocks", + "responses": + { "200": + { "description": "", + "content": + { "application/json": + { "schema": + { "type": "object", + "properties": + { "block_hash": + { "description": "Tezos block hash.", + "oneOf": + [ { "$ref": + "#/components/schemas/block_hash" } ] }, + "level": + { "description": + "Level of the block, corresponds to the level of the tezos block.", + "type": "integer", + "minimum": -2147483648, + "maximum": 2147483647 }, + "predecessor": + { "description": + "Predecessor hash of the Tezos block.", + "oneOf": + [ { "$ref": + "#/components/schemas/block_hash" } ] }, + "commitment_hash": + { "description": + "Hash of this block's commitment if any was computed for it.", + "nullable": true, + "oneOf": + [ { "title": "Some", + "oneOf": + [ { "$ref": + "#/components/schemas/smart_rollup_commitment_hash" } ] } ] }, + "previous_commitment_hash": + { "description": + "Previous commitment hash in the chain. If there is a commitment for this block, this field contains the commitment that was previously computed.", + "oneOf": + [ { "$ref": + "#/components/schemas/smart_rollup_commitment_hash" } ] }, + "context": + { "description": + "Hash of the layer 2 context for this block.", + "oneOf": + [ { "$ref": + "#/components/schemas/Smart_rollup_context_hash" } ] }, + "inbox_witness": + { "description": + "Witness for the inbox for this block, i.e. the Merkle hash of payloads of messages.", + "oneOf": + [ { "$ref": + "#/components/schemas/smart_rollup_merkelized_payload_hashes_hash" } ] }, + "inbox_hash": + { "description": + "Hash of the inbox for this block.", + "oneOf": + [ { "$ref": + "#/components/schemas/smart_rollup_inbox_hash" } ] }, + "initial_tick": + { "description": + "Initial tick of the PVM at this block, i.e. before evaluation of the messages.", + "oneOf": + [ { "$ref": + "#/components/schemas/positive_bignum" } ] }, + "num_ticks": + { "description": + "Number of ticks produced by the evaluation of the messages in this block.", + "oneOf": + [ { "$ref": + "#/components/schemas/int64" } ] } }, + "required": + [ "block_hash", "level", "predecessor", + "commitment_hash", + "previous_commitment_hash", "context", + "inbox_witness", "inbox_hash", + "initial_tick", "num_ticks" ], + "additionalProperties": {} } } } }, + "default": + { "description": "", + "content": + { "application/json": + { "schema": + { "description": + "The full list of errors is available with the global RPC `GET errors`" } } } } } } }, + "/global/smart_rollup_address": + { "get": + { "description": "Smart rollup address", + "responses": + { "200": + { "description": "", + "content": + { "application/json": + { "schema": + { "title": + "A smart rollup address (Base58Check-encoded)", + "oneOf": + [ { "$ref": + "#/components/schemas/unistring" } ] } } } }, + "default": + { "description": "", + "content": + { "application/json": + { "schema": + { "description": + "The full list of errors is available with the global RPC `GET errors`" } } } } } } }, + "/global/tezos_head": + { "get": + { "description": "Tezos head known to the smart rollup node", + "responses": + { "200": + { "description": "", + "content": + { "application/json": + { "schema": + { "nullable": true, + "oneOf": + [ { "title": "Some", + "oneOf": + [ { "$ref": + "#/components/schemas/block_hash" } ] } ] } } } }, + "default": + { "description": "", + "content": + { "application/json": + { "schema": + { "description": + "The full list of errors is available with the global RPC `GET errors`" } } } } } } }, + "/global/tezos_level": + { "get": + { "description": "Tezos level known to the smart rollup node", + "responses": + { "200": + { "description": "", + "content": + { "application/json": + { "schema": + { "nullable": true, + "oneOf": + [ { "title": "Some", "type": "integer", + "minimum": -2147483648, + "maximum": 2147483647 } ] } } } }, + "default": + { "description": "", + "content": + { "application/json": + { "schema": + { "description": + "The full list of errors is available with the global RPC `GET errors`" } } } } } } }, + "/local/batcher/injection": + { "post": + { "description": "Inject messages in the batcher's queue", + "requestBody": + { "content": + { "application/json": + { "schema": + { "description": "Messages to inject", + "type": "array", + "items": + { "$ref": + "#/components/schemas/sc_l2_message" } } } } }, + "responses": + { "200": + { "description": "", + "content": + { "application/json": + { "schema": + { "description": + "Hashes of injected L2 messages", + "type": "array", + "items": + { "$ref": + "#/components/schemas/sc_rollup_l2_message" } } } } }, + "default": + { "description": "", + "content": + { "application/json": + { "schema": + { "description": + "The full list of errors is available with the global RPC `GET errors`" } } } } } } }, + "/local/batcher/queue": + { "get": + { "description": "List messages present in the batcher's queue", + "responses": + { "200": + { "description": "", + "content": + { "application/json": + { "schema": + { "type": "array", + "items": + { "type": "object", + "properties": + { "hash": + { "$ref": + "#/components/schemas/sc_rollup_l2_message" }, + "message": + { "type": "object", + "properties": + { "counter": + { "$ref": + "#/components/schemas/bignum" }, + "content": + { "$ref": + "#/components/schemas/sc_l2_message" } }, + "required": + [ "counter", "content" ] } }, + "required": [ "hash", "message" ] } } } } }, + "default": + { "description": "", + "content": + { "application/json": + { "schema": + { "description": + "The full list of errors is available with the global RPC `GET errors`" } } } } } } }, + "/local/batcher/queue/{l2_message_hash}": + { "get": + { "description": "Retrieve an L2 message and its status", + "parameters": + [ { "name": "l2_message_hash", "in": "path", + "description": "A L2 message hash.", "required": true, + "schema": { "type": "string" } } ], + "responses": + { "200": + { "description": "", + "content": + { "application/json": + { "schema": + { "oneOf": + [ { "title": "unknown", + "description": + "The message is not known by the batcher.", + "type": "object", + "properties": + { "content": + { "type": "string", + "pattern": + "^([a-zA-Z0-9][a-zA-Z0-9])*$" }, + "status": + { "type": "string", + "enum": [ "unknown" ] } }, + "required": [ "status" ] }, + { "title": "pending_batch", + "description": + "The message is in the batcher queue.", + "type": "object", + "properties": + { "content": + { "type": "string", + "pattern": + "^([a-zA-Z0-9][a-zA-Z0-9])*$" }, + "status": + { "type": "string", + "enum": [ "pending_batch" ] } }, + "required": [ "status" ] }, + { "title": "pending_injection", + "description": + "The message is batched but not injected yet.", + "type": "object", + "properties": + { "content": + { "type": "string", + "pattern": + "^([a-zA-Z0-9][a-zA-Z0-9])*$" }, + "status": + { "type": "string", + "enum": + [ "pending_injection" ] }, + "operation": + { "$ref": + "#/components/schemas/sc_rollup_node_l1_operation" } }, + "required": [ "status", "operation" ] }, + { "title": "injected", + "description": + "The message is injected as part of an L1 operation but it is not included in a block.", + "type": "object", + "properties": + { "content": + { "type": "string", + "pattern": + "^([a-zA-Z0-9][a-zA-Z0-9])*$" }, + "status": + { "type": "string", + "enum": [ "injected" ] }, + "operation": + { "$ref": + "#/components/schemas/sc_rollup_node_l1_operation" }, + "layer1": + { "type": "object", + "properties": + { "operation_hash": + { "$ref": + "#/components/schemas/Operation_hash" }, + "operation_index": + { "type": "integer", + "minimum": + -1073741824, + "maximum": 1073741823 } }, + "required": + [ "operation_hash", + "operation_index" ] } }, + "required": + [ "status", "operation", "layer1" ] }, + { "title": "included", + "description": + "The message is included in an inbox in an L1 block.", + "type": "object", + "properties": + { "content": + { "type": "string", + "pattern": + "^([a-zA-Z0-9][a-zA-Z0-9])*$" }, + "status": + { "type": "string", + "enum": [ "included" ] }, + "operation": + { "$ref": + "#/components/schemas/sc_rollup_node_l1_operation" }, + "layer1": + { "type": "object", + "properties": + { "operation_hash": + { "$ref": + "#/components/schemas/Operation_hash" }, + "operation_index": + { "type": "integer", + "minimum": + -1073741824, + "maximum": 1073741823 }, + "block_hash": + { "$ref": + "#/components/schemas/block_hash" }, + "level": + { "type": "integer", + "minimum": + -2147483648, + "maximum": 2147483647 } }, + "required": + [ "operation_hash", + "operation_index", + "block_hash", "level" ] }, + "finalized": + { "type": "boolean" }, + "cemented": { "type": "boolean" } }, + "required": + [ "status", "operation", "layer1", + "finalized", "cemented" ] }, + { "title": "committed", + "description": + "The message is included in a committed inbox on L1.", + "type": "object", + "properties": + { "content": + { "type": "string", + "pattern": + "^([a-zA-Z0-9][a-zA-Z0-9])*$" }, + "status": + { "type": "string", + "enum": [ "committed" ] }, + "operation": + { "$ref": + "#/components/schemas/sc_rollup_node_l1_operation" }, + "layer1": + { "type": "object", + "properties": + { "operation_hash": + { "$ref": + "#/components/schemas/Operation_hash" }, + "operation_index": + { "type": "integer", + "minimum": + -1073741824, + "maximum": 1073741823 }, + "block_hash": + { "$ref": + "#/components/schemas/block_hash" }, + "level": + { "type": "integer", + "minimum": + -2147483648, + "maximum": 2147483647 } }, + "required": + [ "operation_hash", + "operation_index", + "block_hash", "level" ] }, + "finalized": + { "type": "boolean" }, + "cemented": { "type": "boolean" }, + "commitment": + { "type": "object", + "properties": + { "compressed_state": + { "$ref": + "#/components/schemas/smart_rollup_state_hash" }, + "inbox_level": + { "type": "integer", + "minimum": + -2147483648, + "maximum": 2147483647 }, + "predecessor": + { "$ref": + "#/components/schemas/smart_rollup_commitment_hash" }, + "number_of_ticks": + { "$ref": + "#/components/schemas/int64" } }, + "required": + [ "compressed_state", + "inbox_level", + "predecessor", + "number_of_ticks" ] }, + "hash": + { "$ref": + "#/components/schemas/smart_rollup_commitment_hash" }, + "first_published_at_level": + { "type": "integer", + "minimum": -2147483648, + "maximum": 2147483647 }, + "published_at_level": + { "type": "integer", + "minimum": -2147483648, + "maximum": 2147483647 } }, + "required": + [ "status", "operation", "layer1", + "finalized", "cemented", + "commitment", "hash", + "first_published_at_level", + "published_at_level" ] } ] } } } }, + "default": + { "description": "", + "content": + { "application/json": + { "schema": + { "description": + "The full list of errors is available with the global RPC `GET errors`" } } } } } } }, + "/local/commitments/{commitment_hash}": + { "get": + { "description": "Commitment computed and published by the node", + "parameters": + [ { "name": "commitment_hash", "in": "path", + "description": "A commitment hash.", "required": true, + "schema": { "type": "string" } } ], + "responses": + { "200": + { "description": "", + "content": + { "application/json": + { "schema": + { "nullable": true, + "oneOf": + [ { "title": "Some", "type": "object", + "properties": + { "commitment": + { "type": "object", + "properties": + { "compressed_state": + { "$ref": + "#/components/schemas/smart_rollup_state_hash" }, + "inbox_level": + { "type": "integer", + "minimum": + -2147483648, + "maximum": 2147483647 }, + "predecessor": + { "$ref": + "#/components/schemas/smart_rollup_commitment_hash" }, + "number_of_ticks": + { "$ref": + "#/components/schemas/int64" } }, + "required": + [ "compressed_state", + "inbox_level", + "predecessor", + "number_of_ticks" ] }, + "hash": + { "$ref": + "#/components/schemas/smart_rollup_commitment_hash" }, + "first_published_at_level": + { "type": "integer", + "minimum": -2147483648, + "maximum": 2147483647 }, + "published_at_level": + { "type": "integer", + "minimum": -2147483648, + "maximum": 2147483647 } }, + "required": [ "commitment", "hash" ] } ] } } } }, + "default": + { "description": "", + "content": + { "application/json": + { "schema": + { "description": + "The full list of errors is available with the global RPC `GET errors`" } } } } } } }, + "/local/gc_info": + { "get": + { "description": "Information about garbage collection", + "responses": + { "200": + { "description": "", + "content": + { "application/json": + { "schema": + { "type": "object", + "properties": + { "last_gc_level": + { "type": "integer", + "minimum": -2147483648, + "maximum": 2147483647 }, + "first_available_level": + { "type": "integer", + "minimum": -2147483648, + "maximum": 2147483647 } }, + "required": + [ "last_gc_level", + "first_available_level" ] } } } }, + "default": + { "description": "", + "content": + { "application/json": + { "schema": + { "description": + "The full list of errors is available with the global RPC `GET errors`" } } } } } } }, + "/local/last_published_commitment": + { "get": + { "description": "Last commitment published by the node", + "responses": + { "200": + { "description": "", + "content": + { "application/json": + { "schema": + { "nullable": true, + "oneOf": + [ { "title": "Some", "type": "object", + "properties": + { "commitment": + { "type": "object", + "properties": + { "compressed_state": + { "$ref": + "#/components/schemas/smart_rollup_state_hash" }, + "inbox_level": + { "type": "integer", + "minimum": + -2147483648, + "maximum": 2147483647 }, + "predecessor": + { "$ref": + "#/components/schemas/smart_rollup_commitment_hash" }, + "number_of_ticks": + { "$ref": + "#/components/schemas/int64" } }, + "required": + [ "compressed_state", + "inbox_level", + "predecessor", + "number_of_ticks" ] }, + "hash": + { "$ref": + "#/components/schemas/smart_rollup_commitment_hash" }, + "first_published_at_level": + { "type": "integer", + "minimum": -2147483648, + "maximum": 2147483647 }, + "published_at_level": + { "type": "integer", + "minimum": -2147483648, + "maximum": 2147483647 } }, + "required": [ "commitment", "hash" ] } ] } } } }, + "default": + { "description": "", + "content": + { "application/json": + { "schema": + { "description": + "The full list of errors is available with the global RPC `GET errors`" } } } } } } }, + "/openapi": + { "get": + { "description": "OpenAPI specification of RPCs for rollup node", + "parameters": + [ { "name": "protocol", "in": "query", + "description": "Protocol_hash (Base58Check-encoded)", + "required": false, "schema": { "type": "string" } } ], + "responses": + { "200": + { "description": "", + "content": { "application/json": { "schema": {} } } }, + "default": + { "description": "", + "content": + { "application/json": + { "schema": + { "description": + "The full list of errors is available with the global RPC `GET errors`" } } } } } } } }, + "components": + { "schemas": + { "018-Proxford.contract_id.originated": + { "title": "A contract handle -- originated account", + "description": + "A contract notation as given to an RPC or inside scripts. Can be a base58 originated contract hash.", + "oneOf": [ { "$ref": "#/components/schemas/unistring" } ] }, + "018-Proxford.michelson.v1.primitives": + { "type": "string", + "enum": + [ "SHA512", "HASH_KEY", "SIZE", "SAPLING_VERIFY_UPDATE", + "False", "SAPLING_EMPTY_STATE", "RENAME", + "sapling_transaction", "UNPACK", "NAT", "unit", + "bls12_381_fr", "Pair", "IF_NONE", "int", "timestamp", + "storage", "UNPAIR", "view", "BLAKE2B", "AMOUNT", "DUP", + "nat", "NEG", "bool", "SELF_ADDRESS", "ISNAT", "DIG", + "CHAIN_ID", "set", "LSR", "key", "address", "ABS", + "CREATE_CONTRACT", "SHA256", "JOIN_TICKETS", "LEVEL", + "bls12_381_g1", "operation", "tx_rollup_l2_address", + "string", "CHECK_SIGNATURE", "STEPS_TO_QUOTA", "SELF", + "DIP", "lambda", "AND", "COMPARE", "chain_id", "MAP", + "APPLY", "Elt", "BYTES", "NOT", "IMPLICIT_ACCOUNT", "LT", + "UNIT", "EMIT", "SET_DELEGATE", "Some", "parameter", + "signature", "ticket", "EMPTY_BIG_MAP", "None", "SUB", + "key_hash", "ADD", "map", "VOTING_POWER", "big_map", "CDR", + "GT", "IF_CONS", "CONS", "LSL", "DUG", "PACK", "SHA3", + "SOURCE", "or", "SUB_MUTEZ", "LAMBDA", "RIGHT", + "CREATE_ACCOUNT", "Unit", "CAST", "NEQ", "ITER", + "FAILWITH", "PUSH", "OPEN_CHEST", "SOME", "list", + "BALANCE", "NIL", "pair", "CAR", "UPDATE", + "TOTAL_VOTING_POWER", "PAIR", "constant", "LAMBDA_REC", + "ADDRESS", "True", "Right", "Lambda_rec", "IF", "NEVER", + "sapling_transaction_deprecated", "SWAP", "EMPTY_MAP", + "MUL", "INT", "option", "KECCAK", "LEFT", "Left", "chest", + "SPLIT_TICKET", "chest_key", "bls12_381_g2", "EDIV", + "LOOP", "bytes", "TICKET", "LE", "PAIRING_CHECK", + "MIN_BLOCK_TIME", "OR", "contract", "GET_AND_UPDATE", + "mutez", "sapling_state", "NONE", "IF_LEFT", "GET", "NOW", + "TRANSFER_TOKENS", "LOOP_LEFT", "CONTRACT", + "TICKET_DEPRECATED", "VIEW", "EMPTY_SET", "XOR", "never", + "READ_TICKET", "EQ", "GE", "MEM", "SENDER", "DROP", + "CONCAT", "EXEC", "SLICE", "code" ] }, + "DAL_commitment": + { "title": + "Commitment representation for the DAL (Base58Check-encoded)", + "oneOf": [ { "$ref": "#/components/schemas/unistring" } ] }, + "Operation_hash": + { "title": "A Tezos operation ID (Base58Check-encoded)", + "oneOf": [ { "$ref": "#/components/schemas/unistring" } ] }, + "Signature.Public_key_hash": + { "title": + "A Ed25519, Secp256k1, P256, or BLS public key hash (Base58Check-encoded)", + "oneOf": [ { "$ref": "#/components/schemas/unistring" } ] }, + "Smart_rollup_context_hash": + { "title": + "A base58-check encoded hash of a Smart rollup node context (Base58Check-encoded)", + "oneOf": [ { "$ref": "#/components/schemas/unistring" } ] }, + "bignum": + { "title": "Big number", + "description": "Decimal representation of a big number", + "type": "string" }, + "block_hash": + { "title": "A block identifier (Base58Check-encoded)", + "oneOf": [ { "$ref": "#/components/schemas/unistring" } ] }, + "int64": + { "title": "64 bit integers", + "description": "Decimal representation of 64 bit integers", + "type": "string" }, + "layout": + { "oneOf": + [ { "title": "Zero_width", "type": "object", + "properties": + { "kind": + { "type": "string", "enum": [ "Zero_width" ] } }, + "required": [ "kind" ] }, + { "title": "Int", "type": "object", + "properties": + { "size": + { "type": "string", + "enum": + [ "Int32", "Int16", "Uint16", "Int64", "Int8", + "Uint8" ] }, + "kind": { "type": "string", "enum": [ "Int" ] } }, + "required": [ "size", "kind" ] }, + { "title": "Bool", "type": "object", + "properties": + { "kind": { "type": "string", "enum": [ "Bool" ] } }, + "required": [ "kind" ] }, + { "title": "RangedInt", "type": "object", + "properties": + { "min": + { "type": "integer", "minimum": -1073741824, + "maximum": 1073741823 }, + "max": + { "type": "integer", "minimum": -1073741824, + "maximum": 1073741823 }, + "kind": { "type": "string", "enum": [ "RangedInt" ] } }, + "required": [ "min", "max", "kind" ] }, + { "title": "RangedFloat", "type": "object", + "properties": + { "min": { "type": "number" }, + "max": { "type": "number" }, + "kind": + { "type": "string", "enum": [ "RangedFloat" ] } }, + "required": [ "min", "max", "kind" ] }, + { "title": "Float", "type": "object", + "properties": + { "kind": { "type": "string", "enum": [ "Float" ] } }, + "required": [ "kind" ] }, + { "title": "Bytes", "type": "object", + "properties": + { "kind": { "type": "string", "enum": [ "Bytes" ] } }, + "required": [ "kind" ] }, + { "title": "String", "type": "object", + "properties": + { "kind": { "type": "string", "enum": [ "String" ] } }, + "required": [ "kind" ] }, + { "title": "Enum", "type": "object", + "properties": + { "size": + { "type": "string", + "enum": [ "Int16", "Uint16", "Int8", "Uint8" ] }, + "reference": + { "$ref": "#/components/schemas/unistring" }, + "kind": { "type": "string", "enum": [ "Enum" ] } }, + "required": [ "size", "reference", "kind" ] }, + { "title": "Seq", "type": "object", + "properties": + { "layout": { "$ref": "#/components/schemas/layout" }, + "kind": { "type": "string", "enum": [ "Seq" ] }, + "length_limit": + { "oneOf": + [ { "title": "No_limit", "type": "object", + "properties": + { "kind": + { "type": "string", + "enum": [ "no-limit" ] } }, + "required": [ "kind" ] }, + { "title": "At_most", "type": "object", + "properties": + { "kind": + { "type": "string", + "enum": [ "at-most" ] }, + "at_most": + { "type": "integer", + "minimum": -1073741824, + "maximum": 1073741823 } }, + "required": [ "kind", "at_most" ] }, + { "title": "Exactly", "type": "object", + "properties": + { "kind": + { "type": "string", + "enum": [ "exactly" ] }, + "exactly": + { "type": "integer", + "minimum": -1073741824, + "maximum": 1073741823 } }, + "required": [ "kind", "exactly" ] } ] } }, + "required": [ "layout", "kind" ] }, + { "title": "Ref", "type": "object", + "properties": + { "name": { "$ref": "#/components/schemas/unistring" }, + "kind": { "type": "string", "enum": [ "Ref" ] } }, + "required": [ "name", "kind" ] }, + { "title": "Padding", "type": "object", + "properties": + { "kind": { "type": "string", "enum": [ "Padding" ] } }, + "required": [ "kind" ] } ] }, + "micheline.018-Proxford.michelson_v1.expression": + { "oneOf": + [ { "title": "Int", "type": "object", + "properties": + { "int": { "$ref": "#/components/schemas/bignum" } }, + "required": [ "int" ] }, + { "title": "String", "type": "object", + "properties": + { "string": + { "$ref": "#/components/schemas/unistring" } }, + "required": [ "string" ] }, + { "title": "Bytes", "type": "object", + "properties": + { "bytes": + { "type": "string", + "pattern": "^([a-zA-Z0-9][a-zA-Z0-9])*$" } }, + "required": [ "bytes" ] }, + { "title": "Sequence", "type": "array", + "items": + { "$ref": + "#/components/schemas/micheline.018-Proxford.michelson_v1.expression" } }, + { "title": "Prim__generic", + "description": + "Generic primitive (any number of args with or without annotations)", + "type": "object", + "properties": + { "prim": + { "$ref": + "#/components/schemas/018-Proxford.michelson.v1.primitives" }, + "args": + { "type": "array", + "items": + { "$ref": + "#/components/schemas/micheline.018-Proxford.michelson_v1.expression" } }, + "annots": + { "type": "array", + "items": + { "$ref": "#/components/schemas/unistring" } } }, + "required": [ "prim" ] } ] }, + "positive_bignum": + { "title": "Positive big number", + "description": + "Decimal representation of a positive big number", + "type": "string" }, + "sc_l2_message": + { "description": "A hex encoded smart rollup message", + "type": "string", "pattern": "^([a-zA-Z0-9][a-zA-Z0-9])*$" }, + "sc_rollup_l2_message": + { "title": "A smart rollup layer 2 message (Base58Check-encoded)", + "oneOf": [ { "$ref": "#/components/schemas/unistring" } ] }, + "sc_rollup_node_l1_operation": + { "oneOf": + [ { "title": "add_messages", "type": "object", + "properties": + { "kind": + { "type": "string", "enum": [ "add_messages" ] }, + "message": + { "type": "array", + "items": + { "type": "string", + "pattern": "^([a-zA-Z0-9][a-zA-Z0-9])*$" } } }, + "required": [ "kind", "message" ] }, + { "title": "cement", "type": "object", + "properties": + { "kind": { "type": "string", "enum": [ "cement" ] }, + "rollup": + { "$ref": + "#/components/schemas/smart_rollup_address" }, + "commitment": + { "$ref": + "#/components/schemas/smart_rollup_commitment_hash" } }, + "required": [ "kind", "rollup", "commitment" ] }, + { "title": "publish", "type": "object", + "properties": + { "kind": { "type": "string", "enum": [ "publish" ] }, + "rollup": + { "$ref": + "#/components/schemas/smart_rollup_address" }, + "commitment": + { "type": "object", + "properties": + { "compressed_state": + { "$ref": + "#/components/schemas/smart_rollup_state_hash" }, + "inbox_level": + { "type": "integer", + "minimum": -2147483648, + "maximum": 2147483647 }, + "predecessor": + { "$ref": + "#/components/schemas/smart_rollup_commitment_hash" }, + "number_of_ticks": + { "$ref": "#/components/schemas/int64" } }, + "required": + [ "compressed_state", "inbox_level", + "predecessor", "number_of_ticks" ] } }, + "required": [ "kind", "rollup", "commitment" ] }, + { "title": "refute", "type": "object", + "properties": + { "kind": { "type": "string", "enum": [ "refute" ] }, + "rollup": + { "$ref": + "#/components/schemas/smart_rollup_address" }, + "opponent": + { "$ref": + "#/components/schemas/Signature.Public_key_hash" }, + "refutation": + { "oneOf": + [ { "title": "Start", "type": "object", + "properties": + { "refutation_kind": + { "type": "string", + "enum": [ "start" ] }, + "player_commitment_hash": + { "$ref": + "#/components/schemas/smart_rollup_commitment_hash" }, + "opponent_commitment_hash": + { "$ref": + "#/components/schemas/smart_rollup_commitment_hash" } }, + "required": + [ "refutation_kind", + "player_commitment_hash", + "opponent_commitment_hash" ] }, + { "title": "Move", "type": "object", + "properties": + { "refutation_kind": + { "type": "string", + "enum": [ "move" ] }, + "choice": + { "$ref": + "#/components/schemas/positive_bignum" }, + "step": + { "oneOf": + [ { "title": "Dissection", + "type": "array", + "items": + { "type": "object", + "properties": + { "state": + { "$ref": + "#/components/schemas/smart_rollup_state_hash" }, + "tick": + { "$ref": + "#/components/schemas/positive_bignum" } }, + "required": [ "tick" ] } }, + { "title": "Proof", + "type": "string", + "pattern": + "^([a-zA-Z0-9][a-zA-Z0-9])*$" } ] } }, + "required": + [ "refutation_kind", "choice", "step" ] } ] } }, + "required": + [ "kind", "rollup", "opponent", "refutation" ] }, + { "title": "timeout", "type": "object", + "properties": + { "kind": { "type": "string", "enum": [ "timeout" ] }, + "rollup": + { "$ref": + "#/components/schemas/smart_rollup_address" }, + "stakers": + { "type": "object", + "properties": + { "alice": + { "$ref": + "#/components/schemas/Signature.Public_key_hash" }, + "bob": + { "$ref": + "#/components/schemas/Signature.Public_key_hash" } }, + "required": [ "alice", "bob" ] } }, + "required": [ "kind", "rollup", "stakers" ] }, + { "title": "recover", "type": "object", + "properties": + { "kind": { "type": "string", "enum": [ "recover" ] }, + "rollup": + { "$ref": + "#/components/schemas/smart_rollup_address" }, + "staker": + { "$ref": + "#/components/schemas/Signature.Public_key_hash" } }, + "required": [ "kind", "rollup", "staker" ] }, + { "title": "execute_outbox_message", "type": "object", + "properties": + { "kind": + { "type": "string", + "enum": [ "execute_outbox_message" ] }, + "rollup": + { "$ref": + "#/components/schemas/smart_rollup_address" }, + "cemented_commitment": + { "$ref": + "#/components/schemas/smart_rollup_commitment_hash" }, + "proof": + { "type": "string", + "pattern": "^([a-zA-Z0-9][a-zA-Z0-9])*$" } }, + "required": + [ "kind", "rollup", "cemented_commitment", "proof" ] } ] }, + "schema.field": + { "oneOf": + [ { "title": "Named_field", "type": "object", + "properties": + { "name": { "$ref": "#/components/schemas/unistring" }, + "layout": { "$ref": "#/components/schemas/layout" }, + "data_kind": + { "$ref": "#/components/schemas/schema.kind" }, + "kind": { "type": "string", "enum": [ "named" ] } }, + "required": [ "name", "layout", "data_kind", "kind" ] }, + { "title": "Anonymous_field", "type": "object", + "properties": + { "layout": { "$ref": "#/components/schemas/layout" }, + "kind": { "type": "string", "enum": [ "anon" ] }, + "data_kind": + { "$ref": "#/components/schemas/schema.kind" } }, + "required": [ "layout", "kind", "data_kind" ] }, + { "title": "Dynamic_field", "type": "object", + "properties": + { "kind": { "type": "string", "enum": [ "dyn" ] }, + "name": { "$ref": "#/components/schemas/unistring" }, + "num_fields": + { "type": "integer", "minimum": -1073741824, + "maximum": 1073741823 }, + "size": + { "type": "string", + "enum": [ "N", "Uint30", "Uint16", "Uint8" ] } }, + "required": [ "kind", "num_fields", "size" ] }, + { "title": "Optional_field", "type": "object", + "properties": + { "kind": + { "type": "string", + "enum": [ "option_indicator" ] }, + "name": { "$ref": "#/components/schemas/unistring" } }, + "required": [ "kind", "name" ] } ] }, + "schema.kind": + { "oneOf": + [ { "title": "Fixed", "type": "object", + "properties": + { "size": + { "type": "integer", "minimum": -1073741824, + "maximum": 1073741823 }, + "kind": { "type": "string", "enum": [ "Fixed" ] } }, + "required": [ "size", "kind" ] }, + { "title": "Dynamic", "type": "object", + "properties": + { "kind": { "type": "string", "enum": [ "Dynamic" ] } }, + "required": [ "kind" ] }, + { "title": "Variable", "type": "object", + "properties": + { "kind": { "type": "string", "enum": [ "Variable" ] } }, + "required": [ "kind" ] } ] }, + "service_tree": + { "oneOf": + [ { "title": "Static", "type": "object", + "properties": + { "static": + { "type": "object", + "properties": + { "get_service": + { "type": "object", + "properties": + { "meth": + { "type": "string", + "enum": + [ "PATCH", "GET", "POST", + "PUT", "DELETE" ] }, + "path": + { "type": "array", + "items": + { "oneOf": + [ { "title": "PStatic", + "oneOf": + [ { "$ref": + "#/components/schemas/unistring" } ] }, + { "title": "PDynamic", + "type": "object", + "properties": + { "id": + { "type": + "string", + "enum": + [ "single" ] }, + "name": + { "$ref": + "#/components/schemas/unistring" }, + "descr": + { "$ref": + "#/components/schemas/unistring" } }, + "required": + [ "id", "name" ] }, + { "title": "PDynamicTail", + "type": "object", + "properties": + { "id": + { "type": + "string", + "enum": + [ "multiple" ] }, + "name": + { "$ref": + "#/components/schemas/unistring" }, + "descr": + { "$ref": + "#/components/schemas/unistring" } }, + "required": + [ "id", "name" ] } ] } }, + "description": + { "$ref": + "#/components/schemas/unistring" }, + "query": + { "type": "array", + "items": + { "type": "object", + "properties": + { "name": + { "$ref": + "#/components/schemas/unistring" }, + "description": + { "$ref": + "#/components/schemas/unistring" }, + "kind": + { "oneOf": + [ { "title": + "Single", + "type": + "object", + "properties": + { "single": + { "type": + "object", + "properties": + { "id": + { "type": + "string", + "enum": + [ "single" ] }, + "name": + { "$ref": + "#/components/schemas/unistring" }, + "descr": + { "$ref": + "#/components/schemas/unistring" } }, + "required": + [ "id", + "name" ] } }, + "required": + [ "single" ] }, + { "title": + "Optional", + "type": + "object", + "properties": + { "optional": + { "type": + "object", + "properties": + { "id": + { "type": + "string", + "enum": + [ "single" ] }, + "name": + { "$ref": + "#/components/schemas/unistring" }, + "descr": + { "$ref": + "#/components/schemas/unistring" } }, + "required": + [ "id", + "name" ] } }, + "required": + [ "optional" ] }, + { "title": "Flag", + "type": + "object", + "properties": + { "flag": + { "type": + "object", + "properties": + {} } }, + "required": + [ "flag" ] }, + { "title": + "Multi", + "type": + "object", + "properties": + { "multi": + { "type": + "object", + "properties": + { "id": + { "type": + "string", + "enum": + [ "single" ] }, + "name": + { "$ref": + "#/components/schemas/unistring" }, + "descr": + { "$ref": + "#/components/schemas/unistring" } }, + "required": + [ "id", + "name" ] } }, + "required": + [ "multi" ] } ] } }, + "required": + [ "name", "kind" ] } }, + "input": + { "type": "object", + "properties": + { "json_schema": {}, + "binary_schema": + { "type": "object", + "properties": + { "toplevel": + { "oneOf": + [ { "title": + "Obj", + "type": + "object", + "properties": + { "fields": + { "type": + "array", + "items": + { "$ref": + "#/components/schemas/schema.field" } } }, + "required": + [ "fields" ] }, + { "title": + "Cases", + "type": + "object", + "properties": + { "tag_size": + { "type": + "string", + "enum": + [ "Uint16", + "Uint8" ] }, + "kind": + { "$ref": + "#/components/schemas/schema.kind" }, + "cases": + { "type": + "array", + "items": + { "$ref": + "#/components/schemas/union case" } } }, + "required": + [ "tag_size", + "kind", + "cases" ] }, + { "title": + "Int_enum", + "type": + "object", + "properties": + { "size": + { "type": + "string", + "enum": + [ "Int16", + "Uint16", + "Int8", + "Uint8" ] }, + "cases": + { "type": + "array", + "items": + { "type": + "array", + "items": + { "oneOf": + [ { "type": + "integer", + "minimum": + -1073741824, + "maximum": + 1073741823 }, + { "$ref": + "#/components/schemas/unistring" } ] } } } }, + "required": + [ "size", + "cases" ] } ] }, + "fields": + { "type": "array", + "items": + { "type": + "object", + "properties": + { "description": + { "type": + "object", + "properties": + { "title": + { "$ref": + "#/components/schemas/unistring" }, + "description": + { "$ref": + "#/components/schemas/unistring" } }, + "required": + [ "title" ] }, + "encoding": + { "oneOf": + [ { "title": + "Obj", + "type": + "object", + "properties": + { "fields": + { "type": + "array", + "items": + { "$ref": + "#/components/schemas/schema.field" } } }, + "required": + [ "fields" ] }, + { "title": + "Cases", + "type": + "object", + "properties": + { "tag_size": + { "type": + "string", + "enum": + [ "Uint16", + "Uint8" ] }, + "kind": + { "$ref": + "#/components/schemas/schema.kind" }, + "cases": + { "type": + "array", + "items": + { "$ref": + "#/components/schemas/union case" } } }, + "required": + [ "tag_size", + "kind", + "cases" ] }, + { "title": + "Int_enum", + "type": + "object", + "properties": + { "size": + { "type": + "string", + "enum": + [ "Int16", + "Uint16", + "Int8", + "Uint8" ] }, + "cases": + { "type": + "array", + "items": + { "type": + "array", + "items": + { "oneOf": + [ { "type": + "integer", + "minimum": + -1073741824, + "maximum": + 1073741823 }, + { "$ref": + "#/components/schemas/unistring" } ] } } } }, + "required": + [ "size", + "cases" ] } ] } }, + "required": + [ "description", + "encoding" ] } } }, + "required": + [ "toplevel", + "fields" ] } }, + "required": + [ "json_schema", + "binary_schema" ] }, + "output": + { "type": "object", + "properties": + { "json_schema": {}, + "binary_schema": + { "type": "object", + "properties": + { "toplevel": + { "oneOf": + [ { "title": + "Obj", + "type": + "object", + "properties": + { "fields": + { "type": + "array", + "items": + { "$ref": + "#/components/schemas/schema.field" } } }, + "required": + [ "fields" ] }, + { "title": + "Cases", + "type": + "object", + "properties": + { "tag_size": + { "type": + "string", + "enum": + [ "Uint16", + "Uint8" ] }, + "kind": + { "$ref": + "#/components/schemas/schema.kind" }, + "cases": + { "type": + "array", + "items": + { "$ref": + "#/components/schemas/union case" } } }, + "required": + [ "tag_size", + "kind", + "cases" ] }, + { "title": + "Int_enum", + "type": + "object", + "properties": + { "size": + { "type": + "string", + "enum": + [ "Int16", + "Uint16", + "Int8", + "Uint8" ] }, + "cases": + { "type": + "array", + "items": + { "type": + "array", + "items": + { "oneOf": + [ { "type": + "integer", + "minimum": + -1073741824, + "maximum": + 1073741823 }, + { "$ref": + "#/components/schemas/unistring" } ] } } } }, + "required": + [ "size", + "cases" ] } ] }, + "fields": + { "type": "array", + "items": + { "type": + "object", + "properties": + { "description": + { "type": + "object", + "properties": + { "title": + { "$ref": + "#/components/schemas/unistring" }, + "description": + { "$ref": + "#/components/schemas/unistring" } }, + "required": + [ "title" ] }, + "encoding": + { "oneOf": + [ { "title": + "Obj", + "type": + "object", + "properties": + { "fields": + { "type": + "array", + "items": + { "$ref": + "#/components/schemas/schema.field" } } }, + "required": + [ "fields" ] }, + { "title": + "Cases", + "type": + "object", + "properties": + { "tag_size": + { "type": + "string", + "enum": + [ "Uint16", + "Uint8" ] }, + "kind": + { "$ref": + "#/components/schemas/schema.kind" }, + "cases": + { "type": + "array", + "items": + { "$ref": + "#/components/schemas/union case" } } }, + "required": + [ "tag_size", + "kind", + "cases" ] }, + { "title": + "Int_enum", + "type": + "object", + "properties": + { "size": + { "type": + "string", + "enum": + [ "Int16", + "Uint16", + "Int8", + "Uint8" ] }, + "cases": + { "type": + "array", + "items": + { "type": + "array", + "items": + { "oneOf": + [ { "type": + "integer", + "minimum": + -1073741824, + "maximum": + 1073741823 }, + { "$ref": + "#/components/schemas/unistring" } ] } } } }, + "required": + [ "size", + "cases" ] } ] } }, + "required": + [ "description", + "encoding" ] } } }, + "required": + [ "toplevel", + "fields" ] } }, + "required": + [ "json_schema", + "binary_schema" ] }, + "error": + { "type": "object", + "properties": + { "json_schema": {}, + "binary_schema": + { "type": "object", + "properties": + { "toplevel": + { "oneOf": + [ { "title": + "Obj", + "type": + "object", + "properties": + { "fields": + { "type": + "array", + "items": + { "$ref": + "#/components/schemas/schema.field" } } }, + "required": + [ "fields" ] }, + { "title": + "Cases", + "type": + "object", + "properties": + { "tag_size": + { "type": + "string", + "enum": + [ "Uint16", + "Uint8" ] }, + "kind": + { "$ref": + "#/components/schemas/schema.kind" }, + "cases": + { "type": + "array", + "items": + { "$ref": + "#/components/schemas/union case" } } }, + "required": + [ "tag_size", + "kind", + "cases" ] }, + { "title": + "Int_enum", + "type": + "object", + "properties": + { "size": + { "type": + "string", + "enum": + [ "Int16", + "Uint16", + "Int8", + "Uint8" ] }, + "cases": + { "type": + "array", + "items": + { "type": + "array", + "items": + { "oneOf": + [ { "type": + "integer", + "minimum": + -1073741824, + "maximum": + 1073741823 }, + { "$ref": + "#/components/schemas/unistring" } ] } } } }, + "required": + [ "size", + "cases" ] } ] }, + "fields": + { "type": "array", + "items": + { "type": + "object", + "properties": + { "description": + { "type": + "object", + "properties": + { "title": + { "$ref": + "#/components/schemas/unistring" }, + "description": + { "$ref": + "#/components/schemas/unistring" } }, + "required": + [ "title" ] }, + "encoding": + { "oneOf": + [ { "title": + "Obj", + "type": + "object", + "properties": + { "fields": + { "type": + "array", + "items": + { "$ref": + "#/components/schemas/schema.field" } } }, + "required": + [ "fields" ] }, + { "title": + "Cases", + "type": + "object", + "properties": + { "tag_size": + { "type": + "string", + "enum": + [ "Uint16", + "Uint8" ] }, + "kind": + { "$ref": + "#/components/schemas/schema.kind" }, + "cases": + { "type": + "array", + "items": + { "$ref": + "#/components/schemas/union case" } } }, + "required": + [ "tag_size", + "kind", + "cases" ] }, + { "title": + "Int_enum", + "type": + "object", + "properties": + { "size": + { "type": + "string", + "enum": + [ "Int16", + "Uint16", + "Int8", + "Uint8" ] }, + "cases": + { "type": + "array", + "items": + { "type": + "array", + "items": + { "oneOf": + [ { "type": + "integer", + "minimum": + -1073741824, + "maximum": + 1073741823 }, + { "$ref": + "#/components/schemas/unistring" } ] } } } }, + "required": + [ "size", + "cases" ] } ] } }, + "required": + [ "description", + "encoding" ] } } }, + "required": + [ "toplevel", + "fields" ] } }, + "required": + [ "json_schema", + "binary_schema" ] } }, + "required": + [ "meth", "path", "query", "output", + "error" ] }, + "post_service": + { "type": "object", + "properties": + { "meth": + { "type": "string", + "enum": + [ "PATCH", "GET", "POST", + "PUT", "DELETE" ] }, + "path": + { "type": "array", + "items": + { "oneOf": + [ { "title": "PStatic", + "oneOf": + [ { "$ref": + "#/components/schemas/unistring" } ] }, + { "title": "PDynamic", + "type": "object", + "properties": + { "id": + { "type": + "string", + "enum": + [ "single" ] }, + "name": + { "$ref": + "#/components/schemas/unistring" }, + "descr": + { "$ref": + "#/components/schemas/unistring" } }, + "required": + [ "id", "name" ] }, + { "title": "PDynamicTail", + "type": "object", + "properties": + { "id": + { "type": + "string", + "enum": + [ "multiple" ] }, + "name": + { "$ref": + "#/components/schemas/unistring" }, + "descr": + { "$ref": + "#/components/schemas/unistring" } }, + "required": + [ "id", "name" ] } ] } }, + "description": + { "$ref": + "#/components/schemas/unistring" }, + "query": + { "type": "array", + "items": + { "type": "object", + "properties": + { "name": + { "$ref": + "#/components/schemas/unistring" }, + "description": + { "$ref": + "#/components/schemas/unistring" }, + "kind": + { "oneOf": + [ { "title": + "Single", + "type": + "object", + "properties": + { "single": + { "type": + "object", + "properties": + { "id": + { "type": + "string", + "enum": + [ "single" ] }, + "name": + { "$ref": + "#/components/schemas/unistring" }, + "descr": + { "$ref": + "#/components/schemas/unistring" } }, + "required": + [ "id", + "name" ] } }, + "required": + [ "single" ] }, + { "title": + "Optional", + "type": + "object", + "properties": + { "optional": + { "type": + "object", + "properties": + { "id": + { "type": + "string", + "enum": + [ "single" ] }, + "name": + { "$ref": + "#/components/schemas/unistring" }, + "descr": + { "$ref": + "#/components/schemas/unistring" } }, + "required": + [ "id", + "name" ] } }, + "required": + [ "optional" ] }, + { "title": "Flag", + "type": + "object", + "properties": + { "flag": + { "type": + "object", + "properties": + {} } }, + "required": + [ "flag" ] }, + { "title": + "Multi", + "type": + "object", + "properties": + { "multi": + { "type": + "object", + "properties": + { "id": + { "type": + "string", + "enum": + [ "single" ] }, + "name": + { "$ref": + "#/components/schemas/unistring" }, + "descr": + { "$ref": + "#/components/schemas/unistring" } }, + "required": + [ "id", + "name" ] } }, + "required": + [ "multi" ] } ] } }, + "required": + [ "name", "kind" ] } }, + "input": + { "type": "object", + "properties": + { "json_schema": {}, + "binary_schema": + { "type": "object", + "properties": + { "toplevel": + { "oneOf": + [ { "title": + "Obj", + "type": + "object", + "properties": + { "fields": + { "type": + "array", + "items": + { "$ref": + "#/components/schemas/schema.field" } } }, + "required": + [ "fields" ] }, + { "title": + "Cases", + "type": + "object", + "properties": + { "tag_size": + { "type": + "string", + "enum": + [ "Uint16", + "Uint8" ] }, + "kind": + { "$ref": + "#/components/schemas/schema.kind" }, + "cases": + { "type": + "array", + "items": + { "$ref": + "#/components/schemas/union case" } } }, + "required": + [ "tag_size", + "kind", + "cases" ] }, + { "title": + "Int_enum", + "type": + "object", + "properties": + { "size": + { "type": + "string", + "enum": + [ "Int16", + "Uint16", + "Int8", + "Uint8" ] }, + "cases": + { "type": + "array", + "items": + { "type": + "array", + "items": + { "oneOf": + [ { "type": + "integer", + "minimum": + -1073741824, + "maximum": + 1073741823 }, + { "$ref": + "#/components/schemas/unistring" } ] } } } }, + "required": + [ "size", + "cases" ] } ] }, + "fields": + { "type": "array", + "items": + { "type": + "object", + "properties": + { "description": + { "type": + "object", + "properties": + { "title": + { "$ref": + "#/components/schemas/unistring" }, + "description": + { "$ref": + "#/components/schemas/unistring" } }, + "required": + [ "title" ] }, + "encoding": + { "oneOf": + [ { "title": + "Obj", + "type": + "object", + "properties": + { "fields": + { "type": + "array", + "items": + { "$ref": + "#/components/schemas/schema.field" } } }, + "required": + [ "fields" ] }, + { "title": + "Cases", + "type": + "object", + "properties": + { "tag_size": + { "type": + "string", + "enum": + [ "Uint16", + "Uint8" ] }, + "kind": + { "$ref": + "#/components/schemas/schema.kind" }, + "cases": + { "type": + "array", + "items": + { "$ref": + "#/components/schemas/union case" } } }, + "required": + [ "tag_size", + "kind", + "cases" ] }, + { "title": + "Int_enum", + "type": + "object", + "properties": + { "size": + { "type": + "string", + "enum": + [ "Int16", + "Uint16", + "Int8", + "Uint8" ] }, + "cases": + { "type": + "array", + "items": + { "type": + "array", + "items": + { "oneOf": + [ { "type": + "integer", + "minimum": + -1073741824, + "maximum": + 1073741823 }, + { "$ref": + "#/components/schemas/unistring" } ] } } } }, + "required": + [ "size", + "cases" ] } ] } }, + "required": + [ "description", + "encoding" ] } } }, + "required": + [ "toplevel", + "fields" ] } }, + "required": + [ "json_schema", + "binary_schema" ] }, + "output": + { "type": "object", + "properties": + { "json_schema": {}, + "binary_schema": + { "type": "object", + "properties": + { "toplevel": + { "oneOf": + [ { "title": + "Obj", + "type": + "object", + "properties": + { "fields": + { "type": + "array", + "items": + { "$ref": + "#/components/schemas/schema.field" } } }, + "required": + [ "fields" ] }, + { "title": + "Cases", + "type": + "object", + "properties": + { "tag_size": + { "type": + "string", + "enum": + [ "Uint16", + "Uint8" ] }, + "kind": + { "$ref": + "#/components/schemas/schema.kind" }, + "cases": + { "type": + "array", + "items": + { "$ref": + "#/components/schemas/union case" } } }, + "required": + [ "tag_size", + "kind", + "cases" ] }, + { "title": + "Int_enum", + "type": + "object", + "properties": + { "size": + { "type": + "string", + "enum": + [ "Int16", + "Uint16", + "Int8", + "Uint8" ] }, + "cases": + { "type": + "array", + "items": + { "type": + "array", + "items": + { "oneOf": + [ { "type": + "integer", + "minimum": + -1073741824, + "maximum": + 1073741823 }, + { "$ref": + "#/components/schemas/unistring" } ] } } } }, + "required": + [ "size", + "cases" ] } ] }, + "fields": + { "type": "array", + "items": + { "type": + "object", + "properties": + { "description": + { "type": + "object", + "properties": + { "title": + { "$ref": + "#/components/schemas/unistring" }, + "description": + { "$ref": + "#/components/schemas/unistring" } }, + "required": + [ "title" ] }, + "encoding": + { "oneOf": + [ { "title": + "Obj", + "type": + "object", + "properties": + { "fields": + { "type": + "array", + "items": + { "$ref": + "#/components/schemas/schema.field" } } }, + "required": + [ "fields" ] }, + { "title": + "Cases", + "type": + "object", + "properties": + { "tag_size": + { "type": + "string", + "enum": + [ "Uint16", + "Uint8" ] }, + "kind": + { "$ref": + "#/components/schemas/schema.kind" }, + "cases": + { "type": + "array", + "items": + { "$ref": + "#/components/schemas/union case" } } }, + "required": + [ "tag_size", + "kind", + "cases" ] }, + { "title": + "Int_enum", + "type": + "object", + "properties": + { "size": + { "type": + "string", + "enum": + [ "Int16", + "Uint16", + "Int8", + "Uint8" ] }, + "cases": + { "type": + "array", + "items": + { "type": + "array", + "items": + { "oneOf": + [ { "type": + "integer", + "minimum": + -1073741824, + "maximum": + 1073741823 }, + { "$ref": + "#/components/schemas/unistring" } ] } } } }, + "required": + [ "size", + "cases" ] } ] } }, + "required": + [ "description", + "encoding" ] } } }, + "required": + [ "toplevel", + "fields" ] } }, + "required": + [ "json_schema", + "binary_schema" ] }, + "error": + { "type": "object", + "properties": + { "json_schema": {}, + "binary_schema": + { "type": "object", + "properties": + { "toplevel": + { "oneOf": + [ { "title": + "Obj", + "type": + "object", + "properties": + { "fields": + { "type": + "array", + "items": + { "$ref": + "#/components/schemas/schema.field" } } }, + "required": + [ "fields" ] }, + { "title": + "Cases", + "type": + "object", + "properties": + { "tag_size": + { "type": + "string", + "enum": + [ "Uint16", + "Uint8" ] }, + "kind": + { "$ref": + "#/components/schemas/schema.kind" }, + "cases": + { "type": + "array", + "items": + { "$ref": + "#/components/schemas/union case" } } }, + "required": + [ "tag_size", + "kind", + "cases" ] }, + { "title": + "Int_enum", + "type": + "object", + "properties": + { "size": + { "type": + "string", + "enum": + [ "Int16", + "Uint16", + "Int8", + "Uint8" ] }, + "cases": + { "type": + "array", + "items": + { "type": + "array", + "items": + { "oneOf": + [ { "type": + "integer", + "minimum": + -1073741824, + "maximum": + 1073741823 }, + { "$ref": + "#/components/schemas/unistring" } ] } } } }, + "required": + [ "size", + "cases" ] } ] }, + "fields": + { "type": "array", + "items": + { "type": + "object", + "properties": + { "description": + { "type": + "object", + "properties": + { "title": + { "$ref": + "#/components/schemas/unistring" }, + "description": + { "$ref": + "#/components/schemas/unistring" } }, + "required": + [ "title" ] }, + "encoding": + { "oneOf": + [ { "title": + "Obj", + "type": + "object", + "properties": + { "fields": + { "type": + "array", + "items": + { "$ref": + "#/components/schemas/schema.field" } } }, + "required": + [ "fields" ] }, + { "title": + "Cases", + "type": + "object", + "properties": + { "tag_size": + { "type": + "string", + "enum": + [ "Uint16", + "Uint8" ] }, + "kind": + { "$ref": + "#/components/schemas/schema.kind" }, + "cases": + { "type": + "array", + "items": + { "$ref": + "#/components/schemas/union case" } } }, + "required": + [ "tag_size", + "kind", + "cases" ] }, + { "title": + "Int_enum", + "type": + "object", + "properties": + { "size": + { "type": + "string", + "enum": + [ "Int16", + "Uint16", + "Int8", + "Uint8" ] }, + "cases": + { "type": + "array", + "items": + { "type": + "array", + "items": + { "oneOf": + [ { "type": + "integer", + "minimum": + -1073741824, + "maximum": + 1073741823 }, + { "$ref": + "#/components/schemas/unistring" } ] } } } }, + "required": + [ "size", + "cases" ] } ] } }, + "required": + [ "description", + "encoding" ] } } }, + "required": + [ "toplevel", + "fields" ] } }, + "required": + [ "json_schema", + "binary_schema" ] } }, + "required": + [ "meth", "path", "query", "output", + "error" ] }, + "delete_service": + { "type": "object", + "properties": + { "meth": + { "type": "string", + "enum": + [ "PATCH", "GET", "POST", + "PUT", "DELETE" ] }, + "path": + { "type": "array", + "items": + { "oneOf": + [ { "title": "PStatic", + "oneOf": + [ { "$ref": + "#/components/schemas/unistring" } ] }, + { "title": "PDynamic", + "type": "object", + "properties": + { "id": + { "type": + "string", + "enum": + [ "single" ] }, + "name": + { "$ref": + "#/components/schemas/unistring" }, + "descr": + { "$ref": + "#/components/schemas/unistring" } }, + "required": + [ "id", "name" ] }, + { "title": "PDynamicTail", + "type": "object", + "properties": + { "id": + { "type": + "string", + "enum": + [ "multiple" ] }, + "name": + { "$ref": + "#/components/schemas/unistring" }, + "descr": + { "$ref": + "#/components/schemas/unistring" } }, + "required": + [ "id", "name" ] } ] } }, + "description": + { "$ref": + "#/components/schemas/unistring" }, + "query": + { "type": "array", + "items": + { "type": "object", + "properties": + { "name": + { "$ref": + "#/components/schemas/unistring" }, + "description": + { "$ref": + "#/components/schemas/unistring" }, + "kind": + { "oneOf": + [ { "title": + "Single", + "type": + "object", + "properties": + { "single": + { "type": + "object", + "properties": + { "id": + { "type": + "string", + "enum": + [ "single" ] }, + "name": + { "$ref": + "#/components/schemas/unistring" }, + "descr": + { "$ref": + "#/components/schemas/unistring" } }, + "required": + [ "id", + "name" ] } }, + "required": + [ "single" ] }, + { "title": + "Optional", + "type": + "object", + "properties": + { "optional": + { "type": + "object", + "properties": + { "id": + { "type": + "string", + "enum": + [ "single" ] }, + "name": + { "$ref": + "#/components/schemas/unistring" }, + "descr": + { "$ref": + "#/components/schemas/unistring" } }, + "required": + [ "id", + "name" ] } }, + "required": + [ "optional" ] }, + { "title": "Flag", + "type": + "object", + "properties": + { "flag": + { "type": + "object", + "properties": + {} } }, + "required": + [ "flag" ] }, + { "title": + "Multi", + "type": + "object", + "properties": + { "multi": + { "type": + "object", + "properties": + { "id": + { "type": + "string", + "enum": + [ "single" ] }, + "name": + { "$ref": + "#/components/schemas/unistring" }, + "descr": + { "$ref": + "#/components/schemas/unistring" } }, + "required": + [ "id", + "name" ] } }, + "required": + [ "multi" ] } ] } }, + "required": + [ "name", "kind" ] } }, + "input": + { "type": "object", + "properties": + { "json_schema": {}, + "binary_schema": + { "type": "object", + "properties": + { "toplevel": + { "oneOf": + [ { "title": + "Obj", + "type": + "object", + "properties": + { "fields": + { "type": + "array", + "items": + { "$ref": + "#/components/schemas/schema.field" } } }, + "required": + [ "fields" ] }, + { "title": + "Cases", + "type": + "object", + "properties": + { "tag_size": + { "type": + "string", + "enum": + [ "Uint16", + "Uint8" ] }, + "kind": + { "$ref": + "#/components/schemas/schema.kind" }, + "cases": + { "type": + "array", + "items": + { "$ref": + "#/components/schemas/union case" } } }, + "required": + [ "tag_size", + "kind", + "cases" ] }, + { "title": + "Int_enum", + "type": + "object", + "properties": + { "size": + { "type": + "string", + "enum": + [ "Int16", + "Uint16", + "Int8", + "Uint8" ] }, + "cases": + { "type": + "array", + "items": + { "type": + "array", + "items": + { "oneOf": + [ { "type": + "integer", + "minimum": + -1073741824, + "maximum": + 1073741823 }, + { "$ref": + "#/components/schemas/unistring" } ] } } } }, + "required": + [ "size", + "cases" ] } ] }, + "fields": + { "type": "array", + "items": + { "type": + "object", + "properties": + { "description": + { "type": + "object", + "properties": + { "title": + { "$ref": + "#/components/schemas/unistring" }, + "description": + { "$ref": + "#/components/schemas/unistring" } }, + "required": + [ "title" ] }, + "encoding": + { "oneOf": + [ { "title": + "Obj", + "type": + "object", + "properties": + { "fields": + { "type": + "array", + "items": + { "$ref": + "#/components/schemas/schema.field" } } }, + "required": + [ "fields" ] }, + { "title": + "Cases", + "type": + "object", + "properties": + { "tag_size": + { "type": + "string", + "enum": + [ "Uint16", + "Uint8" ] }, + "kind": + { "$ref": + "#/components/schemas/schema.kind" }, + "cases": + { "type": + "array", + "items": + { "$ref": + "#/components/schemas/union case" } } }, + "required": + [ "tag_size", + "kind", + "cases" ] }, + { "title": + "Int_enum", + "type": + "object", + "properties": + { "size": + { "type": + "string", + "enum": + [ "Int16", + "Uint16", + "Int8", + "Uint8" ] }, + "cases": + { "type": + "array", + "items": + { "type": + "array", + "items": + { "oneOf": + [ { "type": + "integer", + "minimum": + -1073741824, + "maximum": + 1073741823 }, + { "$ref": + "#/components/schemas/unistring" } ] } } } }, + "required": + [ "size", + "cases" ] } ] } }, + "required": + [ "description", + "encoding" ] } } }, + "required": + [ "toplevel", + "fields" ] } }, + "required": + [ "json_schema", + "binary_schema" ] }, + "output": + { "type": "object", + "properties": + { "json_schema": {}, + "binary_schema": + { "type": "object", + "properties": + { "toplevel": + { "oneOf": + [ { "title": + "Obj", + "type": + "object", + "properties": + { "fields": + { "type": + "array", + "items": + { "$ref": + "#/components/schemas/schema.field" } } }, + "required": + [ "fields" ] }, + { "title": + "Cases", + "type": + "object", + "properties": + { "tag_size": + { "type": + "string", + "enum": + [ "Uint16", + "Uint8" ] }, + "kind": + { "$ref": + "#/components/schemas/schema.kind" }, + "cases": + { "type": + "array", + "items": + { "$ref": + "#/components/schemas/union case" } } }, + "required": + [ "tag_size", + "kind", + "cases" ] }, + { "title": + "Int_enum", + "type": + "object", + "properties": + { "size": + { "type": + "string", + "enum": + [ "Int16", + "Uint16", + "Int8", + "Uint8" ] }, + "cases": + { "type": + "array", + "items": + { "type": + "array", + "items": + { "oneOf": + [ { "type": + "integer", + "minimum": + -1073741824, + "maximum": + 1073741823 }, + { "$ref": + "#/components/schemas/unistring" } ] } } } }, + "required": + [ "size", + "cases" ] } ] }, + "fields": + { "type": "array", + "items": + { "type": + "object", + "properties": + { "description": + { "type": + "object", + "properties": + { "title": + { "$ref": + "#/components/schemas/unistring" }, + "description": + { "$ref": + "#/components/schemas/unistring" } }, + "required": + [ "title" ] }, + "encoding": + { "oneOf": + [ { "title": + "Obj", + "type": + "object", + "properties": + { "fields": + { "type": + "array", + "items": + { "$ref": + "#/components/schemas/schema.field" } } }, + "required": + [ "fields" ] }, + { "title": + "Cases", + "type": + "object", + "properties": + { "tag_size": + { "type": + "string", + "enum": + [ "Uint16", + "Uint8" ] }, + "kind": + { "$ref": + "#/components/schemas/schema.kind" }, + "cases": + { "type": + "array", + "items": + { "$ref": + "#/components/schemas/union case" } } }, + "required": + [ "tag_size", + "kind", + "cases" ] }, + { "title": + "Int_enum", + "type": + "object", + "properties": + { "size": + { "type": + "string", + "enum": + [ "Int16", + "Uint16", + "Int8", + "Uint8" ] }, + "cases": + { "type": + "array", + "items": + { "type": + "array", + "items": + { "oneOf": + [ { "type": + "integer", + "minimum": + -1073741824, + "maximum": + 1073741823 }, + { "$ref": + "#/components/schemas/unistring" } ] } } } }, + "required": + [ "size", + "cases" ] } ] } }, + "required": + [ "description", + "encoding" ] } } }, + "required": + [ "toplevel", + "fields" ] } }, + "required": + [ "json_schema", + "binary_schema" ] }, + "error": + { "type": "object", + "properties": + { "json_schema": {}, + "binary_schema": + { "type": "object", + "properties": + { "toplevel": + { "oneOf": + [ { "title": + "Obj", + "type": + "object", + "properties": + { "fields": + { "type": + "array", + "items": + { "$ref": + "#/components/schemas/schema.field" } } }, + "required": + [ "fields" ] }, + { "title": + "Cases", + "type": + "object", + "properties": + { "tag_size": + { "type": + "string", + "enum": + [ "Uint16", + "Uint8" ] }, + "kind": + { "$ref": + "#/components/schemas/schema.kind" }, + "cases": + { "type": + "array", + "items": + { "$ref": + "#/components/schemas/union case" } } }, + "required": + [ "tag_size", + "kind", + "cases" ] }, + { "title": + "Int_enum", + "type": + "object", + "properties": + { "size": + { "type": + "string", + "enum": + [ "Int16", + "Uint16", + "Int8", + "Uint8" ] }, + "cases": + { "type": + "array", + "items": + { "type": + "array", + "items": + { "oneOf": + [ { "type": + "integer", + "minimum": + -1073741824, + "maximum": + 1073741823 }, + { "$ref": + "#/components/schemas/unistring" } ] } } } }, + "required": + [ "size", + "cases" ] } ] }, + "fields": + { "type": "array", + "items": + { "type": + "object", + "properties": + { "description": + { "type": + "object", + "properties": + { "title": + { "$ref": + "#/components/schemas/unistring" }, + "description": + { "$ref": + "#/components/schemas/unistring" } }, + "required": + [ "title" ] }, + "encoding": + { "oneOf": + [ { "title": + "Obj", + "type": + "object", + "properties": + { "fields": + { "type": + "array", + "items": + { "$ref": + "#/components/schemas/schema.field" } } }, + "required": + [ "fields" ] }, + { "title": + "Cases", + "type": + "object", + "properties": + { "tag_size": + { "type": + "string", + "enum": + [ "Uint16", + "Uint8" ] }, + "kind": + { "$ref": + "#/components/schemas/schema.kind" }, + "cases": + { "type": + "array", + "items": + { "$ref": + "#/components/schemas/union case" } } }, + "required": + [ "tag_size", + "kind", + "cases" ] }, + { "title": + "Int_enum", + "type": + "object", + "properties": + { "size": + { "type": + "string", + "enum": + [ "Int16", + "Uint16", + "Int8", + "Uint8" ] }, + "cases": + { "type": + "array", + "items": + { "type": + "array", + "items": + { "oneOf": + [ { "type": + "integer", + "minimum": + -1073741824, + "maximum": + 1073741823 }, + { "$ref": + "#/components/schemas/unistring" } ] } } } }, + "required": + [ "size", + "cases" ] } ] } }, + "required": + [ "description", + "encoding" ] } } }, + "required": + [ "toplevel", + "fields" ] } }, + "required": + [ "json_schema", + "binary_schema" ] } }, + "required": + [ "meth", "path", "query", "output", + "error" ] }, + "put_service": + { "type": "object", + "properties": + { "meth": + { "type": "string", + "enum": + [ "PATCH", "GET", "POST", + "PUT", "DELETE" ] }, + "path": + { "type": "array", + "items": + { "oneOf": + [ { "title": "PStatic", + "oneOf": + [ { "$ref": + "#/components/schemas/unistring" } ] }, + { "title": "PDynamic", + "type": "object", + "properties": + { "id": + { "type": + "string", + "enum": + [ "single" ] }, + "name": + { "$ref": + "#/components/schemas/unistring" }, + "descr": + { "$ref": + "#/components/schemas/unistring" } }, + "required": + [ "id", "name" ] }, + { "title": "PDynamicTail", + "type": "object", + "properties": + { "id": + { "type": + "string", + "enum": + [ "multiple" ] }, + "name": + { "$ref": + "#/components/schemas/unistring" }, + "descr": + { "$ref": + "#/components/schemas/unistring" } }, + "required": + [ "id", "name" ] } ] } }, + "description": + { "$ref": + "#/components/schemas/unistring" }, + "query": + { "type": "array", + "items": + { "type": "object", + "properties": + { "name": + { "$ref": + "#/components/schemas/unistring" }, + "description": + { "$ref": + "#/components/schemas/unistring" }, + "kind": + { "oneOf": + [ { "title": + "Single", + "type": + "object", + "properties": + { "single": + { "type": + "object", + "properties": + { "id": + { "type": + "string", + "enum": + [ "single" ] }, + "name": + { "$ref": + "#/components/schemas/unistring" }, + "descr": + { "$ref": + "#/components/schemas/unistring" } }, + "required": + [ "id", + "name" ] } }, + "required": + [ "single" ] }, + { "title": + "Optional", + "type": + "object", + "properties": + { "optional": + { "type": + "object", + "properties": + { "id": + { "type": + "string", + "enum": + [ "single" ] }, + "name": + { "$ref": + "#/components/schemas/unistring" }, + "descr": + { "$ref": + "#/components/schemas/unistring" } }, + "required": + [ "id", + "name" ] } }, + "required": + [ "optional" ] }, + { "title": "Flag", + "type": + "object", + "properties": + { "flag": + { "type": + "object", + "properties": + {} } }, + "required": + [ "flag" ] }, + { "title": + "Multi", + "type": + "object", + "properties": + { "multi": + { "type": + "object", + "properties": + { "id": + { "type": + "string", + "enum": + [ "single" ] }, + "name": + { "$ref": + "#/components/schemas/unistring" }, + "descr": + { "$ref": + "#/components/schemas/unistring" } }, + "required": + [ "id", + "name" ] } }, + "required": + [ "multi" ] } ] } }, + "required": + [ "name", "kind" ] } }, + "input": + { "type": "object", + "properties": + { "json_schema": {}, + "binary_schema": + { "type": "object", + "properties": + { "toplevel": + { "oneOf": + [ { "title": + "Obj", + "type": + "object", + "properties": + { "fields": + { "type": + "array", + "items": + { "$ref": + "#/components/schemas/schema.field" } } }, + "required": + [ "fields" ] }, + { "title": + "Cases", + "type": + "object", + "properties": + { "tag_size": + { "type": + "string", + "enum": + [ "Uint16", + "Uint8" ] }, + "kind": + { "$ref": + "#/components/schemas/schema.kind" }, + "cases": + { "type": + "array", + "items": + { "$ref": + "#/components/schemas/union case" } } }, + "required": + [ "tag_size", + "kind", + "cases" ] }, + { "title": + "Int_enum", + "type": + "object", + "properties": + { "size": + { "type": + "string", + "enum": + [ "Int16", + "Uint16", + "Int8", + "Uint8" ] }, + "cases": + { "type": + "array", + "items": + { "type": + "array", + "items": + { "oneOf": + [ { "type": + "integer", + "minimum": + -1073741824, + "maximum": + 1073741823 }, + { "$ref": + "#/components/schemas/unistring" } ] } } } }, + "required": + [ "size", + "cases" ] } ] }, + "fields": + { "type": "array", + "items": + { "type": + "object", + "properties": + { "description": + { "type": + "object", + "properties": + { "title": + { "$ref": + "#/components/schemas/unistring" }, + "description": + { "$ref": + "#/components/schemas/unistring" } }, + "required": + [ "title" ] }, + "encoding": + { "oneOf": + [ { "title": + "Obj", + "type": + "object", + "properties": + { "fields": + { "type": + "array", + "items": + { "$ref": + "#/components/schemas/schema.field" } } }, + "required": + [ "fields" ] }, + { "title": + "Cases", + "type": + "object", + "properties": + { "tag_size": + { "type": + "string", + "enum": + [ "Uint16", + "Uint8" ] }, + "kind": + { "$ref": + "#/components/schemas/schema.kind" }, + "cases": + { "type": + "array", + "items": + { "$ref": + "#/components/schemas/union case" } } }, + "required": + [ "tag_size", + "kind", + "cases" ] }, + { "title": + "Int_enum", + "type": + "object", + "properties": + { "size": + { "type": + "string", + "enum": + [ "Int16", + "Uint16", + "Int8", + "Uint8" ] }, + "cases": + { "type": + "array", + "items": + { "type": + "array", + "items": + { "oneOf": + [ { "type": + "integer", + "minimum": + -1073741824, + "maximum": + 1073741823 }, + { "$ref": + "#/components/schemas/unistring" } ] } } } }, + "required": + [ "size", + "cases" ] } ] } }, + "required": + [ "description", + "encoding" ] } } }, + "required": + [ "toplevel", + "fields" ] } }, + "required": + [ "json_schema", + "binary_schema" ] }, + "output": + { "type": "object", + "properties": + { "json_schema": {}, + "binary_schema": + { "type": "object", + "properties": + { "toplevel": + { "oneOf": + [ { "title": + "Obj", + "type": + "object", + "properties": + { "fields": + { "type": + "array", + "items": + { "$ref": + "#/components/schemas/schema.field" } } }, + "required": + [ "fields" ] }, + { "title": + "Cases", + "type": + "object", + "properties": + { "tag_size": + { "type": + "string", + "enum": + [ "Uint16", + "Uint8" ] }, + "kind": + { "$ref": + "#/components/schemas/schema.kind" }, + "cases": + { "type": + "array", + "items": + { "$ref": + "#/components/schemas/union case" } } }, + "required": + [ "tag_size", + "kind", + "cases" ] }, + { "title": + "Int_enum", + "type": + "object", + "properties": + { "size": + { "type": + "string", + "enum": + [ "Int16", + "Uint16", + "Int8", + "Uint8" ] }, + "cases": + { "type": + "array", + "items": + { "type": + "array", + "items": + { "oneOf": + [ { "type": + "integer", + "minimum": + -1073741824, + "maximum": + 1073741823 }, + { "$ref": + "#/components/schemas/unistring" } ] } } } }, + "required": + [ "size", + "cases" ] } ] }, + "fields": + { "type": "array", + "items": + { "type": + "object", + "properties": + { "description": + { "type": + "object", + "properties": + { "title": + { "$ref": + "#/components/schemas/unistring" }, + "description": + { "$ref": + "#/components/schemas/unistring" } }, + "required": + [ "title" ] }, + "encoding": + { "oneOf": + [ { "title": + "Obj", + "type": + "object", + "properties": + { "fields": + { "type": + "array", + "items": + { "$ref": + "#/components/schemas/schema.field" } } }, + "required": + [ "fields" ] }, + { "title": + "Cases", + "type": + "object", + "properties": + { "tag_size": + { "type": + "string", + "enum": + [ "Uint16", + "Uint8" ] }, + "kind": + { "$ref": + "#/components/schemas/schema.kind" }, + "cases": + { "type": + "array", + "items": + { "$ref": + "#/components/schemas/union case" } } }, + "required": + [ "tag_size", + "kind", + "cases" ] }, + { "title": + "Int_enum", + "type": + "object", + "properties": + { "size": + { "type": + "string", + "enum": + [ "Int16", + "Uint16", + "Int8", + "Uint8" ] }, + "cases": + { "type": + "array", + "items": + { "type": + "array", + "items": + { "oneOf": + [ { "type": + "integer", + "minimum": + -1073741824, + "maximum": + 1073741823 }, + { "$ref": + "#/components/schemas/unistring" } ] } } } }, + "required": + [ "size", + "cases" ] } ] } }, + "required": + [ "description", + "encoding" ] } } }, + "required": + [ "toplevel", + "fields" ] } }, + "required": + [ "json_schema", + "binary_schema" ] }, + "error": + { "type": "object", + "properties": + { "json_schema": {}, + "binary_schema": + { "type": "object", + "properties": + { "toplevel": + { "oneOf": + [ { "title": + "Obj", + "type": + "object", + "properties": + { "fields": + { "type": + "array", + "items": + { "$ref": + "#/components/schemas/schema.field" } } }, + "required": + [ "fields" ] }, + { "title": + "Cases", + "type": + "object", + "properties": + { "tag_size": + { "type": + "string", + "enum": + [ "Uint16", + "Uint8" ] }, + "kind": + { "$ref": + "#/components/schemas/schema.kind" }, + "cases": + { "type": + "array", + "items": + { "$ref": + "#/components/schemas/union case" } } }, + "required": + [ "tag_size", + "kind", + "cases" ] }, + { "title": + "Int_enum", + "type": + "object", + "properties": + { "size": + { "type": + "string", + "enum": + [ "Int16", + "Uint16", + "Int8", + "Uint8" ] }, + "cases": + { "type": + "array", + "items": + { "type": + "array", + "items": + { "oneOf": + [ { "type": + "integer", + "minimum": + -1073741824, + "maximum": + 1073741823 }, + { "$ref": + "#/components/schemas/unistring" } ] } } } }, + "required": + [ "size", + "cases" ] } ] }, + "fields": + { "type": "array", + "items": + { "type": + "object", + "properties": + { "description": + { "type": + "object", + "properties": + { "title": + { "$ref": + "#/components/schemas/unistring" }, + "description": + { "$ref": + "#/components/schemas/unistring" } }, + "required": + [ "title" ] }, + "encoding": + { "oneOf": + [ { "title": + "Obj", + "type": + "object", + "properties": + { "fields": + { "type": + "array", + "items": + { "$ref": + "#/components/schemas/schema.field" } } }, + "required": + [ "fields" ] }, + { "title": + "Cases", + "type": + "object", + "properties": + { "tag_size": + { "type": + "string", + "enum": + [ "Uint16", + "Uint8" ] }, + "kind": + { "$ref": + "#/components/schemas/schema.kind" }, + "cases": + { "type": + "array", + "items": + { "$ref": + "#/components/schemas/union case" } } }, + "required": + [ "tag_size", + "kind", + "cases" ] }, + { "title": + "Int_enum", + "type": + "object", + "properties": + { "size": + { "type": + "string", + "enum": + [ "Int16", + "Uint16", + "Int8", + "Uint8" ] }, + "cases": + { "type": + "array", + "items": + { "type": + "array", + "items": + { "oneOf": + [ { "type": + "integer", + "minimum": + -1073741824, + "maximum": + 1073741823 }, + { "$ref": + "#/components/schemas/unistring" } ] } } } }, + "required": + [ "size", + "cases" ] } ] } }, + "required": + [ "description", + "encoding" ] } } }, + "required": + [ "toplevel", + "fields" ] } }, + "required": + [ "json_schema", + "binary_schema" ] } }, + "required": + [ "meth", "path", "query", "output", + "error" ] }, + "patch_service": + { "type": "object", + "properties": + { "meth": + { "type": "string", + "enum": + [ "PATCH", "GET", "POST", + "PUT", "DELETE" ] }, + "path": + { "type": "array", + "items": + { "oneOf": + [ { "title": "PStatic", + "oneOf": + [ { "$ref": + "#/components/schemas/unistring" } ] }, + { "title": "PDynamic", + "type": "object", + "properties": + { "id": + { "type": + "string", + "enum": + [ "single" ] }, + "name": + { "$ref": + "#/components/schemas/unistring" }, + "descr": + { "$ref": + "#/components/schemas/unistring" } }, + "required": + [ "id", "name" ] }, + { "title": "PDynamicTail", + "type": "object", + "properties": + { "id": + { "type": + "string", + "enum": + [ "multiple" ] }, + "name": + { "$ref": + "#/components/schemas/unistring" }, + "descr": + { "$ref": + "#/components/schemas/unistring" } }, + "required": + [ "id", "name" ] } ] } }, + "description": + { "$ref": + "#/components/schemas/unistring" }, + "query": + { "type": "array", + "items": + { "type": "object", + "properties": + { "name": + { "$ref": + "#/components/schemas/unistring" }, + "description": + { "$ref": + "#/components/schemas/unistring" }, + "kind": + { "oneOf": + [ { "title": + "Single", + "type": + "object", + "properties": + { "single": + { "type": + "object", + "properties": + { "id": + { "type": + "string", + "enum": + [ "single" ] }, + "name": + { "$ref": + "#/components/schemas/unistring" }, + "descr": + { "$ref": + "#/components/schemas/unistring" } }, + "required": + [ "id", + "name" ] } }, + "required": + [ "single" ] }, + { "title": + "Optional", + "type": + "object", + "properties": + { "optional": + { "type": + "object", + "properties": + { "id": + { "type": + "string", + "enum": + [ "single" ] }, + "name": + { "$ref": + "#/components/schemas/unistring" }, + "descr": + { "$ref": + "#/components/schemas/unistring" } }, + "required": + [ "id", + "name" ] } }, + "required": + [ "optional" ] }, + { "title": "Flag", + "type": + "object", + "properties": + { "flag": + { "type": + "object", + "properties": + {} } }, + "required": + [ "flag" ] }, + { "title": + "Multi", + "type": + "object", + "properties": + { "multi": + { "type": + "object", + "properties": + { "id": + { "type": + "string", + "enum": + [ "single" ] }, + "name": + { "$ref": + "#/components/schemas/unistring" }, + "descr": + { "$ref": + "#/components/schemas/unistring" } }, + "required": + [ "id", + "name" ] } }, + "required": + [ "multi" ] } ] } }, + "required": + [ "name", "kind" ] } }, + "input": + { "type": "object", + "properties": + { "json_schema": {}, + "binary_schema": + { "type": "object", + "properties": + { "toplevel": + { "oneOf": + [ { "title": + "Obj", + "type": + "object", + "properties": + { "fields": + { "type": + "array", + "items": + { "$ref": + "#/components/schemas/schema.field" } } }, + "required": + [ "fields" ] }, + { "title": + "Cases", + "type": + "object", + "properties": + { "tag_size": + { "type": + "string", + "enum": + [ "Uint16", + "Uint8" ] }, + "kind": + { "$ref": + "#/components/schemas/schema.kind" }, + "cases": + { "type": + "array", + "items": + { "$ref": + "#/components/schemas/union case" } } }, + "required": + [ "tag_size", + "kind", + "cases" ] }, + { "title": + "Int_enum", + "type": + "object", + "properties": + { "size": + { "type": + "string", + "enum": + [ "Int16", + "Uint16", + "Int8", + "Uint8" ] }, + "cases": + { "type": + "array", + "items": + { "type": + "array", + "items": + { "oneOf": + [ { "type": + "integer", + "minimum": + -1073741824, + "maximum": + 1073741823 }, + { "$ref": + "#/components/schemas/unistring" } ] } } } }, + "required": + [ "size", + "cases" ] } ] }, + "fields": + { "type": "array", + "items": + { "type": + "object", + "properties": + { "description": + { "type": + "object", + "properties": + { "title": + { "$ref": + "#/components/schemas/unistring" }, + "description": + { "$ref": + "#/components/schemas/unistring" } }, + "required": + [ "title" ] }, + "encoding": + { "oneOf": + [ { "title": + "Obj", + "type": + "object", + "properties": + { "fields": + { "type": + "array", + "items": + { "$ref": + "#/components/schemas/schema.field" } } }, + "required": + [ "fields" ] }, + { "title": + "Cases", + "type": + "object", + "properties": + { "tag_size": + { "type": + "string", + "enum": + [ "Uint16", + "Uint8" ] }, + "kind": + { "$ref": + "#/components/schemas/schema.kind" }, + "cases": + { "type": + "array", + "items": + { "$ref": + "#/components/schemas/union case" } } }, + "required": + [ "tag_size", + "kind", + "cases" ] }, + { "title": + "Int_enum", + "type": + "object", + "properties": + { "size": + { "type": + "string", + "enum": + [ "Int16", + "Uint16", + "Int8", + "Uint8" ] }, + "cases": + { "type": + "array", + "items": + { "type": + "array", + "items": + { "oneOf": + [ { "type": + "integer", + "minimum": + -1073741824, + "maximum": + 1073741823 }, + { "$ref": + "#/components/schemas/unistring" } ] } } } }, + "required": + [ "size", + "cases" ] } ] } }, + "required": + [ "description", + "encoding" ] } } }, + "required": + [ "toplevel", + "fields" ] } }, + "required": + [ "json_schema", + "binary_schema" ] }, + "output": + { "type": "object", + "properties": + { "json_schema": {}, + "binary_schema": + { "type": "object", + "properties": + { "toplevel": + { "oneOf": + [ { "title": + "Obj", + "type": + "object", + "properties": + { "fields": + { "type": + "array", + "items": + { "$ref": + "#/components/schemas/schema.field" } } }, + "required": + [ "fields" ] }, + { "title": + "Cases", + "type": + "object", + "properties": + { "tag_size": + { "type": + "string", + "enum": + [ "Uint16", + "Uint8" ] }, + "kind": + { "$ref": + "#/components/schemas/schema.kind" }, + "cases": + { "type": + "array", + "items": + { "$ref": + "#/components/schemas/union case" } } }, + "required": + [ "tag_size", + "kind", + "cases" ] }, + { "title": + "Int_enum", + "type": + "object", + "properties": + { "size": + { "type": + "string", + "enum": + [ "Int16", + "Uint16", + "Int8", + "Uint8" ] }, + "cases": + { "type": + "array", + "items": + { "type": + "array", + "items": + { "oneOf": + [ { "type": + "integer", + "minimum": + -1073741824, + "maximum": + 1073741823 }, + { "$ref": + "#/components/schemas/unistring" } ] } } } }, + "required": + [ "size", + "cases" ] } ] }, + "fields": + { "type": "array", + "items": + { "type": + "object", + "properties": + { "description": + { "type": + "object", + "properties": + { "title": + { "$ref": + "#/components/schemas/unistring" }, + "description": + { "$ref": + "#/components/schemas/unistring" } }, + "required": + [ "title" ] }, + "encoding": + { "oneOf": + [ { "title": + "Obj", + "type": + "object", + "properties": + { "fields": + { "type": + "array", + "items": + { "$ref": + "#/components/schemas/schema.field" } } }, + "required": + [ "fields" ] }, + { "title": + "Cases", + "type": + "object", + "properties": + { "tag_size": + { "type": + "string", + "enum": + [ "Uint16", + "Uint8" ] }, + "kind": + { "$ref": + "#/components/schemas/schema.kind" }, + "cases": + { "type": + "array", + "items": + { "$ref": + "#/components/schemas/union case" } } }, + "required": + [ "tag_size", + "kind", + "cases" ] }, + { "title": + "Int_enum", + "type": + "object", + "properties": + { "size": + { "type": + "string", + "enum": + [ "Int16", + "Uint16", + "Int8", + "Uint8" ] }, + "cases": + { "type": + "array", + "items": + { "type": + "array", + "items": + { "oneOf": + [ { "type": + "integer", + "minimum": + -1073741824, + "maximum": + 1073741823 }, + { "$ref": + "#/components/schemas/unistring" } ] } } } }, + "required": + [ "size", + "cases" ] } ] } }, + "required": + [ "description", + "encoding" ] } } }, + "required": + [ "toplevel", + "fields" ] } }, + "required": + [ "json_schema", + "binary_schema" ] }, + "error": + { "type": "object", + "properties": + { "json_schema": {}, + "binary_schema": + { "type": "object", + "properties": + { "toplevel": + { "oneOf": + [ { "title": + "Obj", + "type": + "object", + "properties": + { "fields": + { "type": + "array", + "items": + { "$ref": + "#/components/schemas/schema.field" } } }, + "required": + [ "fields" ] }, + { "title": + "Cases", + "type": + "object", + "properties": + { "tag_size": + { "type": + "string", + "enum": + [ "Uint16", + "Uint8" ] }, + "kind": + { "$ref": + "#/components/schemas/schema.kind" }, + "cases": + { "type": + "array", + "items": + { "$ref": + "#/components/schemas/union case" } } }, + "required": + [ "tag_size", + "kind", + "cases" ] }, + { "title": + "Int_enum", + "type": + "object", + "properties": + { "size": + { "type": + "string", + "enum": + [ "Int16", + "Uint16", + "Int8", + "Uint8" ] }, + "cases": + { "type": + "array", + "items": + { "type": + "array", + "items": + { "oneOf": + [ { "type": + "integer", + "minimum": + -1073741824, + "maximum": + 1073741823 }, + { "$ref": + "#/components/schemas/unistring" } ] } } } }, + "required": + [ "size", + "cases" ] } ] }, + "fields": + { "type": "array", + "items": + { "type": + "object", + "properties": + { "description": + { "type": + "object", + "properties": + { "title": + { "$ref": + "#/components/schemas/unistring" }, + "description": + { "$ref": + "#/components/schemas/unistring" } }, + "required": + [ "title" ] }, + "encoding": + { "oneOf": + [ { "title": + "Obj", + "type": + "object", + "properties": + { "fields": + { "type": + "array", + "items": + { "$ref": + "#/components/schemas/schema.field" } } }, + "required": + [ "fields" ] }, + { "title": + "Cases", + "type": + "object", + "properties": + { "tag_size": + { "type": + "string", + "enum": + [ "Uint16", + "Uint8" ] }, + "kind": + { "$ref": + "#/components/schemas/schema.kind" }, + "cases": + { "type": + "array", + "items": + { "$ref": + "#/components/schemas/union case" } } }, + "required": + [ "tag_size", + "kind", + "cases" ] }, + { "title": + "Int_enum", + "type": + "object", + "properties": + { "size": + { "type": + "string", + "enum": + [ "Int16", + "Uint16", + "Int8", + "Uint8" ] }, + "cases": + { "type": + "array", + "items": + { "type": + "array", + "items": + { "oneOf": + [ { "type": + "integer", + "minimum": + -1073741824, + "maximum": + 1073741823 }, + { "$ref": + "#/components/schemas/unistring" } ] } } } }, + "required": + [ "size", + "cases" ] } ] } }, + "required": + [ "description", + "encoding" ] } } }, + "required": + [ "toplevel", + "fields" ] } }, + "required": + [ "json_schema", + "binary_schema" ] } }, + "required": + [ "meth", "path", "query", "output", + "error" ] }, + "subdirs": + { "oneOf": + [ { "title": "Suffixes", + "type": "object", + "properties": + { "suffixes": + { "type": "array", + "items": + { "type": "object", + "properties": + { "name": + { "$ref": + "#/components/schemas/unistring" }, + "tree": + { "$ref": + "#/components/schemas/service_tree" } }, + "required": + [ "name", "tree" ] } } }, + "required": [ "suffixes" ] }, + { "title": "Arg", "type": "object", + "properties": + { "dynamic_dispatch": + { "type": "object", + "properties": + { "arg": + { "type": "object", + "properties": + { "id": + { "type": + "string", + "enum": + [ "single" ] }, + "name": + { "$ref": + "#/components/schemas/unistring" }, + "descr": + { "$ref": + "#/components/schemas/unistring" } }, + "required": + [ "id", "name" ] }, + "tree": + { "$ref": + "#/components/schemas/service_tree" } }, + "required": + [ "arg", "tree" ] } }, + "required": [ "dynamic_dispatch" ] } ] } } } }, + "required": [ "static" ] }, + { "title": "Dynamic", "type": "object", + "properties": + { "dynamic": + { "nullable": true, + "oneOf": + [ { "title": "Some", + "oneOf": + [ { "$ref": + "#/components/schemas/unistring" } ] } ] } }, + "required": [ "dynamic" ] }, + { "title": "Empty", "type": "string", "enum": [ "empty" ] } ] }, + "smart_rollup_address": + { "title": "A smart rollup address (Base58Check-encoded)", + "oneOf": [ { "$ref": "#/components/schemas/unistring" } ] }, + "smart_rollup_commitment_hash": + { "title": + "The hash of a commitment of a smart rollup (Base58Check-encoded)", + "oneOf": [ { "$ref": "#/components/schemas/unistring" } ] }, + "smart_rollup_inbox_hash": + { "title": + "The hash of an inbox of a smart rollup (Base58Check-encoded)", + "oneOf": [ { "$ref": "#/components/schemas/unistring" } ] }, + "smart_rollup_merkelized_payload_hashes_hash": + { "title": + "The hash of the Merkelized payload hashes of a smart rollup inbox (Base58Check-encoded)", + "oneOf": [ { "$ref": "#/components/schemas/unistring" } ] }, + "smart_rollup_state_hash": + { "title": + "The hash of the VM state of a smart rollup (Base58Check-encoded)", + "oneOf": [ { "$ref": "#/components/schemas/unistring" } ] }, + "union case": + { "type": "object", + "properties": + { "tag": + { "type": "integer", "minimum": -1073741824, + "maximum": 1073741823 }, + "fields": + { "type": "array", + "items": + { "$ref": "#/components/schemas/schema.field" } }, + "name": { "$ref": "#/components/schemas/unistring" } }, + "required": [ "tag", "fields" ] }, + "unistring": + { "title": "Universal string representation", + "description": + "Either a plain UTF8 string, or a sequence of bytes for strings that contain invalid byte sequences.", + "oneOf": + [ { "type": "string" }, + { "type": "object", + "properties": + { "invalid_utf8_string": + { "type": "array", + "items": + { "type": "integer", "minimum": 0, + "maximum": 255 } } }, + "required": [ "invalid_utf8_string" ] } ] } } } } diff --git a/manifest/main.ml b/manifest/main.ml index a3eae7456d9c7f8a6a22f622a8558a35f616d88b..262bd672c6c1bb5272f8a5fadaae63b0f2a3fdbf 100644 --- a/manifest/main.ml +++ b/manifest/main.ml @@ -413,6 +413,9 @@ let tezt_core_lib = let tezt_js_lib = external_sublib tezt_lib ~js_compatible:true "tezt.js" +let tezt_json_lib = + external_sublib tezt_lib ~js_compatible:true "tezt.json" ~main_module:"JSON" + let tezt ~opam ~path ?js_compatible ?modes ?(deps = []) ?dep_globs ?dep_globs_rec ?dep_files ?opam_with_test ?dune_with_test ?synopsis ?(with_macos_security_framework = false) ?flags ?dune ?preprocess @@ -4275,7 +4278,7 @@ let octez_openapi = ~synopsis: "Tezos: a library for querying RPCs and converting into the OpenAPI \ format" - ~deps:[ezjsonm; json_data_encoding; tezt_lib] + ~deps:[ezjsonm; json_data_encoding; tezt_json_lib] let _octez_protocol_compiler_bin = public_exe @@ -4585,6 +4588,7 @@ let octez_smart_rollup_node_lib = octez_client_base |> open_; octez_client_base_unix |> open_; cohttp_lwt_unix; + octez_openapi; octez_node_config; prometheus_app; camlzip; diff --git a/opam/octez-smart-rollup-node-lib.opam b/opam/octez-smart-rollup-node-lib.opam index b0ed900c38b631a670917e3c747b42d003426863..467e5ed1dd09d62042d436c10c05e7c4e3333620 100644 --- a/opam/octez-smart-rollup-node-lib.opam +++ b/opam/octez-smart-rollup-node-lib.opam @@ -13,6 +13,7 @@ depends: [ "octez-libs" "octez-shell-libs" "cohttp-lwt-unix" { >= "5.2.0" } + "tezos-openapi" "octez-node-config" "prometheus-app" { >= "1.2" } "camlzip" { >= "1.11" & < "1.12" } diff --git a/src/bin_openapi/generate.sh b/src/bin_openapi/generate.sh index 3d5c49c2d5a0245940b587e62984aa4fcb2bffb5..86fb87d2480c86e1de351df2d3cef70a868c77ef 100755 --- a/src/bin_openapi/generate.sh +++ b/src/bin_openapi/generate.sh @@ -14,6 +14,7 @@ cd "$(dirname "$0")"/../.. || exit # Tezos binaries. tezos_node=./octez-node tezos_client=./octez-client +smart_rollup_node=./octez-smart-rollup-node # Protocol configuration. protocol_hash=ProxfordYmVfjWnRcgjWH36fW6PArwqykTFzotUxRs6gmTcZDuH @@ -38,6 +39,7 @@ mempool_api_json=$tmp/mempool-api.json openapi_json=docs/api/rpc-openapi-rc.json proto_openapi_json=docs/api/$protocol_name-openapi-rc.json mempool_openapi_json=docs/api/$protocol_name-mempool-openapi-rc.json +smart_rollup_node_openapi_json=docs/api/$protocol_name-smart-rollup-node-openapi-rc.json # Get version number. version=$(dune exec octez-version) @@ -46,7 +48,7 @@ version=$(dune exec octez-version) $tezos_node config init --data-dir $data_dir \ --network sandbox \ --expected-pow 0 \ - --rpc-addr localhost:$rpc_port \ + --local-rpc-addr localhost:$rpc_port \ --no-bootstrap-peer \ --synchronisation-threshold 0 $tezos_node identity generate --data-dir $data_dir @@ -82,10 +84,29 @@ clean_private_rpc () { } # Convert the RPC descriptions. -dune exec src/bin_openapi/rpc_openapi.exe -- "$version" $api_json | clean_private_rpc "$@" > $openapi_json +dune exec src/bin_openapi/rpc_openapi.exe -- \ + "$version" \ + "Octez RPC" \ + "The RPC API served by the Octez node." \ + $api_json \ + | clean_private_rpc "$@" > $openapi_json echo "Generated OpenAPI specification: $openapi_json" -dune exec src/bin_openapi/rpc_openapi.exe -- "$version" $proto_api_json | clean_private_rpc "$@" > $proto_openapi_json +dune exec src/bin_openapi/rpc_openapi.exe -- \ + "$version" \ + "Octez Protocol $protocol_name RPC" \ + "The RPC API for protocol $protocol_name served by the Octez node." \ + $proto_api_json \ + | clean_private_rpc "$@" > $proto_openapi_json echo "Generated OpenAPI specification: $proto_openapi_json" -dune exec src/bin_openapi/rpc_openapi.exe -- "$version" $mempool_api_json | clean_private_rpc "$@" > $mempool_openapi_json +dune exec src/bin_openapi/rpc_openapi.exe -- \ + "$version" \ + "Octez Mempool RPC" "The RPC API for the mempool served by the Octez node." \ + $mempool_api_json \ + | clean_private_rpc "$@" > $mempool_openapi_json echo "Generated OpenAPI specification: $mempool_openapi_json" + +# Gernerate openapi file for rollup node +$smart_rollup_node generate openapi -P $protocol_hash > $smart_rollup_node_openapi_json +echo "Generated OpenAPI specification: $smart_rollup_node_openapi_json" + echo "You can now clean up with: rm -rf $tmp" diff --git a/src/bin_openapi/rpc_openapi.ml b/src/bin_openapi/rpc_openapi.ml index cc9a2a9d72468d13d05a84d559236025250d8c4b..3cc34f216c6e9585026f218a369075d8846c86f6 100644 --- a/src/bin_openapi/rpc_openapi.ml +++ b/src/bin_openapi/rpc_openapi.ml @@ -27,20 +27,23 @@ open Tezos_openapi let main () = (* Parse command line arguments. *) - let version, filename = - if Array.length Sys.argv <> 3 then ( + let version, title, description, filename = + if Array.length Sys.argv <> 5 then ( prerr_endline - "Usage: rpc_openapi \n\n\ - Version is the version of the API, to be put in the \"version\" field \ + "Usage: rpc_openapi <DESCRIPTION> <API.json>\n\n\ + VERSION is the version of the API, to be put in the \"version\" field \ of the output.\n\n\ + TITLE is the string to be put in the \"title\" field of the output.\n\n\ + DESCRIPTION is the string to be put in the \"description\" field of \ + the output.\n\n\ Multiple input files are not supported." ; exit (if Array.length Sys.argv = 1 then 0 else 1)) - else (Sys.argv.(1), Sys.argv.(2)) + else (Sys.argv.(1), Sys.argv.(2), Sys.argv.(3), Sys.argv.(4)) in (* Parse input file and convert it. *) Json.parse_file filename |> Api.parse_tree |> Api.parse_services |> Api.flatten - |> Convert.convert_api version + |> Convert.convert_api ~title ~description version |> Openapi.to_json |> Json.output let () = diff --git a/src/bin_smart_rollup_node/main_smart_rollup_node.ml b/src/bin_smart_rollup_node/main_smart_rollup_node.ml index 7069a3ceda36527f421f4a2c29484e53a1e2b372..ff2fbe9acefa58f0090885506c0467b9c8240b44 100644 --- a/src/bin_smart_rollup_node/main_smart_rollup_node.ml +++ b/src/bin_smart_rollup_node/main_smart_rollup_node.ml @@ -387,6 +387,19 @@ let export_snapshot = let*! () = cctxt#message "Snapshot exported to %s@." snapshot_file in return_unit) +let openapi_command = + let open Tezos_clic in + let open Lwt_result_syntax in + command + ~group + ~desc:"Generate OpenAPI specification." + (args1 Cli.protocol_hash_arg) + (prefixes ["generate"; "openapi"] @@ stop) + (fun protocol cctxt -> + let* openapi_json = Rpc_directory.generate_openapi ?protocol cctxt in + let*! () = cctxt#message "%a" Data_encoding.Json.pp openapi_json in + return_unit) + let sc_rollup_commands () = [ config_init_command; @@ -396,6 +409,7 @@ let sc_rollup_commands () = dump_metrics; dump_durable_storage; export_snapshot; + openapi_command; ] let select_commands _ctxt _ = Lwt_result_syntax.return (sc_rollup_commands ()) diff --git a/src/lib_openapi/convert.ml b/src/lib_openapi/convert.ml index f33f871a817fdf258d822659b73fffccc4bce215..d46687f5020199ffb2a3737296e3ad60906e715a 100644 --- a/src/lib_openapi/convert.ml +++ b/src/lib_openapi/convert.ml @@ -359,12 +359,12 @@ let convert_endpoint (endpoint : Api.service Api.endpoint) : let env = merge_env_list [env_1; env_2; env_3; env_4; env_5] in (env, endpoint) -let convert_api version (endpoints : Api.service Api.endpoint list) : Openapi.t - = +let convert_api ~title ~description version + (endpoints : Api.service Api.endpoint list) : Openapi.t = let envs, endpoints = List.map convert_endpoint endpoints |> List.split in Openapi.make - ~title:"Octez RPC" - ~description:"The RPC API served by the Octez node." + ~title + ~description ~version ~definitions:(String_map.bindings (merge_env_list envs)) endpoints diff --git a/src/lib_openapi/dune b/src/lib_openapi/dune index a3915470fbdb8ab18986120881bc3b8d2fb33d7b..9d79efd4bcfc73519149055df33a70aa59902f86 100644 --- a/src/lib_openapi/dune +++ b/src/lib_openapi/dune @@ -8,4 +8,4 @@ (libraries ezjsonm json-data-encoding - tezt)) + tezt.json)) diff --git a/src/lib_openapi/json.ml b/src/lib_openapi/json.ml index 3d791875cf726ce03b8344cf488f36f13b114cf8..1ab93ce57c2a86504536aa7a5e31d0cb603c40d9 100644 --- a/src/lib_openapi/json.ml +++ b/src/lib_openapi/json.ml @@ -35,7 +35,7 @@ In our case, if the JSON schemas we read start to get more fields, we want to know; otherwise the resulting OpenAPI specification could be inaccurate. *) -include Tezt.JSON +include JSON let as_variant json = match as_object json with diff --git a/src/lib_smart_rollup/rollup_node_services.ml b/src/lib_smart_rollup/rollup_node_services.ml index bff9b59401f46c635a7b7ab35603c62dfe7c4edf..98c54904f5f471d92afdde1075f6020691988648 100644 --- a/src/lib_smart_rollup/rollup_node_services.ml +++ b/src/lib_smart_rollup/rollup_node_services.ml @@ -319,6 +319,16 @@ module Arg = struct () end +module Query = struct + type proto_query = {protocol : Protocol_hash.t option} + + let proto_query : proto_query Tezos_rpc.Query.t = + let open Tezos_rpc.Query in + query (fun protocol -> {protocol}) + |+ opt_field "protocol" Protocol_hash.rpc_arg (fun p -> p.protocol) + |> seal +end + module type PREFIX = sig type prefix @@ -459,3 +469,20 @@ module Local = struct ~output:Encodings.message_status_output (path / "batcher" / "queue" /: Arg.l2_message_hash) end + +module Root = struct + open Tezos_rpc.Path + + include Make_services (struct + type prefix = unit + + let prefix = root + end) + + let openapi = + Tezos_rpc.Service.get_service + ~description:"OpenAPI specification of RPCs for rollup node" + ~query:Query.proto_query + ~output:Data_encoding.json + (path / "openapi") +end diff --git a/src/lib_smart_rollup_node/cli.ml b/src/lib_smart_rollup_node/cli.ml index 2d7ed6be425343adb6053fbb747676c7da3c5f74..cf720ecf1572b56a706fd15ffcfa93a0e3b0c482 100644 --- a/src/lib_smart_rollup_node/cli.ml +++ b/src/lib_smart_rollup_node/cli.ml @@ -424,3 +424,18 @@ let cors_allowed_origins_arg = ~placeholder:"ALLOWED_ORIGINS" ~doc:"List of accepted cors origins." string_list + +let protocol_hash_parameter = + Tezos_clic.parameter (fun (_cctxt : Client_context.full) p -> + Lwt.return (Protocol_hash.of_b58check p)) + +let protocol_hash_arg = + Tezos_clic.arg + ~long:"protocol" + ~short:'P' + ~placeholder:"Proto" + ~doc: + "Protocol hash in base58-check. If not provided, the export will be for \ + the last registered protocol in the rollup node which may be different \ + between different versions of the node." + protocol_hash_parameter diff --git a/src/lib_smart_rollup_node/dune b/src/lib_smart_rollup_node/dune index 4593b1d08632d73304699b44b78343eb0dc189ac..82e516f8ded8cfcadcc58495a1f62c6458ce32ac 100644 --- a/src/lib_smart_rollup_node/dune +++ b/src/lib_smart_rollup_node/dune @@ -13,6 +13,7 @@ octez-shell-libs.client-base octez-shell-libs.client-base-unix cohttp-lwt-unix + tezos-openapi octez-node-config prometheus-app camlzip diff --git a/src/lib_smart_rollup_node/node_context.ml b/src/lib_smart_rollup_node/node_context.ml index f25e8f3575afd80e5552da9c3aba889a2434fdfd..5cdcb0e4b0215604c0206bbfc1cdfeca5bd309e9 100644 --- a/src/lib_smart_rollup_node/node_context.ml +++ b/src/lib_smart_rollup_node/node_context.ml @@ -1236,4 +1236,53 @@ module Internal_for_tests = struct } let unsafe_get_store node_ctxt = node_ctxt.store + + let openapi_context cctxt protocol = + let current_protocol = + { + hash = protocol; + proto_level = 0; + constants = + Rollup_constants. + { + minimal_block_delay = 0L; + delay_increment_per_round = 0L; + sc_rollup = + { + challenge_window_in_blocks = 0; + commitment_period_in_blocks = 0; + reveal_activation_level = + Some + { + blake2B = 0l; + metadata = 0l; + dal_page = 0l; + dal_parameters = 0l; + }; + max_number_of_stored_cemented_commitments = 0; + }; + dal = + { + feature_enable = false; + attestation_lag = 0; + number_of_slots = 0; + cryptobox_parameters = + { + redundancy_factor = 0; + page_size = 0; + slot_size = 0; + number_of_shards = 0; + }; + }; + }; + } + in + Lwt_utils_unix.with_tempdir "smart-rollup-node-openapi" @@ fun data_dir -> + let open Lwt_result_syntax in + let* node_ctxt = + create_node_context cctxt current_protocol ~data_dir Wasm_2_0_0 + in + let*! () = Context.close node_ctxt.context in + let* () = Store.close node_ctxt.store in + return node_ctxt end diff --git a/src/lib_smart_rollup_node/node_context.mli b/src/lib_smart_rollup_node/node_context.mli index 13fec5791cfc943adec635dd5c315068b6d65657..bcca7df32da471dbb8a5f2fed6822f9921bef4e9 100644 --- a/src/lib_smart_rollup_node/node_context.mli +++ b/src/lib_smart_rollup_node/node_context.mli @@ -563,4 +563,8 @@ module Internal_for_tests : sig unsafe to use outside of tests as it breaks the abstraction barrier provided by the [Node_context]. *) val unsafe_get_store : 'a t -> 'a Store.t + + (** Create a dummy context to generate OpenAPI specification. *) + val openapi_context : + #Client_context.full -> Protocol_hash.t -> Store_sigs.rw t tzresult Lwt.t end diff --git a/src/lib_smart_rollup_node/protocol_plugins.ml b/src/lib_smart_rollup_node/protocol_plugins.ml index f5e3c0b4294e50f8511c0839e4d372a2990de721..cc4b4c42d3a23305bf4abd06b107fc892e9f3aed 100644 --- a/src/lib_smart_rollup_node/protocol_plugins.ml +++ b/src/lib_smart_rollup_node/protocol_plugins.ml @@ -46,6 +46,8 @@ type proto_plugin = (module Protocol_plugin_sig.S) let proto_plugins : proto_plugin Protocol_hash.Table.t = Protocol_hash.Table.create 7 +let last_registered = ref None + let register (plugin : proto_plugin) = let module Plugin = (val plugin) in if Protocol_hash.Table.mem proto_plugins Plugin.protocol then @@ -55,11 +57,17 @@ let register (plugin : proto_plugin) = Did you register it manually multiple times?" Protocol_hash.pp Plugin.protocol ; + last_registered := Some Plugin.protocol ; Protocol_hash.Table.add proto_plugins Plugin.protocol plugin let registered_protocols () = Protocol_hash.Table.to_seq_keys proto_plugins |> List.of_seq +let last_registered () = + match !last_registered with + | None -> Stdlib.failwith "No protocol plugins registered" + | Some p -> p + let proto_plugin_for_protocol protocol = Protocol_hash.Table.find proto_plugins protocol |> Option.to_result ~none:[Unsupported_protocol protocol] diff --git a/src/lib_smart_rollup_node/protocol_plugins.mli b/src/lib_smart_rollup_node/protocol_plugins.mli index b7bb6604d4c98963135f273bfc271189611a0857..a51f85cab64ea2c68de43d21ce536abcb8ea8dc1 100644 --- a/src/lib_smart_rollup_node/protocol_plugins.mli +++ b/src/lib_smart_rollup_node/protocol_plugins.mli @@ -34,6 +34,12 @@ val register : proto_plugin -> unit (** Returns the list of registered protocols. *) val registered_protocols : unit -> Protocol_hash.t list +(** Returns the last registered protocol. + + NOTE: This is the last protocol with which the rollup node is linked + against, and this is decided only by the order in [manifest/main.ml]. *) +val last_registered : unit -> Protocol_hash.t + (** {2 Using the correct protocol plugin} *) (** Return the protocol plugin for a given protocol (or an error if not diff --git a/src/lib_smart_rollup_node/rollup_node_daemon.ml b/src/lib_smart_rollup_node/rollup_node_daemon.ml index d18f5ab0e1b2745b4e88e428ea14a2a2ca3249c3..b92bab7cfb2b90c08b48efe37ad6297a2f45ab7b 100644 --- a/src/lib_smart_rollup_node/rollup_node_daemon.ml +++ b/src/lib_smart_rollup_node/rollup_node_daemon.ml @@ -718,9 +718,8 @@ let run ~data_dir ~irmin_cache_size ~index_buffer_size ?log_kernel_debug_file configuration in let* () = Plugin.L1_processing.check_pvm_initial_state_hash node_ctxt in - let* rpc_server = - Rpc_server.start configuration (Rpc_directory.directory node_ctxt) - in + let dir = Rpc_directory.directory node_ctxt in + let* rpc_server = Rpc_server.start configuration dir in let state = {node_ctxt; rpc_server; configuration; plugin} in let (_ : Lwt_exit.clean_up_callback_id) = install_finalizer state in run state diff --git a/src/lib_smart_rollup_node/rpc_directory.ml b/src/lib_smart_rollup_node/rpc_directory.ml index 6eee9999a32f51cc5fa90bdda988264d2030f51b..7aeb651a7b133e93b97a70edf830a7ad312a4808 100644 --- a/src/lib_smart_rollup_node/rpc_directory.ml +++ b/src/lib_smart_rollup_node/rpc_directory.ml @@ -39,11 +39,16 @@ let get_head_level_opt node_ctxt = let+ res = Node_context.last_processed_head_opt node_ctxt in Option.map (fun Sc_rollup_block.{header = {level; _}; _} -> level) res -let get_proto_plugin_of_level node_ctxt level = - let open Lwt_result_syntax in - let* proto = Node_context.protocol_of_level node_ctxt level in - let*? plugin = Protocol_plugins.proto_plugin_for_protocol proto.protocol in - return plugin +module Root_directory = Make_directory (struct + include Rollup_node_services.Root + + type context = Node_context.rw + + type subcontext = Node_context.ro + + let context_of_prefix node_ctxt () = + Lwt_result.return (Node_context.readonly node_ctxt) +end) module Global_directory = Make_directory (struct include Rollup_node_services.Global @@ -343,38 +348,141 @@ let () = return status +let add_describe dir = + Tezos_rpc.Directory.register_describe_directory_service + dir + Tezos_rpc.Service.description_service + let top_directory (node_ctxt : _ Node_context.t) = List.fold_left (fun dir f -> Tezos_rpc.Directory.merge dir (f node_ctxt)) Tezos_rpc.Directory.empty - [Global_directory.build_directory; Local_directory.build_directory] + [ + Root_directory.build_directory; + Global_directory.build_directory; + Local_directory.build_directory; + ] + +let block_prefix = + Tezos_rpc.Path.( + open_root / "global" / "block" /: Rollup_node_services.Arg.block_id) + +let protocol_directories = Protocol_hash.Table.create 3 + +let build_protocol_directory node_ctxt proto = + let plugin = + match Protocol_plugins.proto_plugin_for_protocol proto with + | Error e -> + Format.kasprintf + Stdlib.failwith + "Cannot build RPC directory for %a.\n%a" + Protocol_hash.pp + proto + pp_print_trace + e + | Ok p -> p + in + let (module Plugin) = plugin in + let block_directory = Plugin.RPC_directory.block_directory node_ctxt in + let full_static_dir = + Tezos_rpc.Directory.merge + (top_directory node_ctxt) + (Tezos_rpc.Directory.prefix block_prefix block_directory) + |> add_describe + in + Protocol_hash.Table.replace + protocol_directories + proto + (block_directory, full_static_dir) ; + (block_directory, full_static_dir) + +let build_protocol_directories node_ctxt = + List.iter + (fun p -> ignore (build_protocol_directory node_ctxt p)) + (Protocol_plugins.registered_protocols ()) + +let get_proto_dir ?protocol (node_ctxt : _ Node_context.t) = + let proto = Option.value protocol ~default:node_ctxt.current_protocol.hash in + match Protocol_hash.Table.find protocol_directories proto with + | None -> error_with "Unknown protocol %a" Protocol_hash.pp proto + | Some (block_dir, full_dir) -> Ok (block_dir, full_dir, proto) + +let generate_openapi dir proto = + let open Lwt_result_syntax in + let*! descr = + Tezos_rpc.Directory.describe_directory ~recurse:true ~arg:() dir + in + let json_api = + Data_encoding.Json.construct + Tezos_rpc.Encoding.description_answer_encoding + descr + in + let open Tezos_openapi in + json_api + |> Json.annotate ~origin:"description" + |> Api.parse_tree |> Api.parse_services |> Api.flatten + |> Convert.convert_api + ~title:"Smart Rollup Node RPCs" + ~description: + (Format.asprintf + "Smart Rollup Node RPC API for protocol %a" + Protocol_hash.pp + proto) + Tezos_version_value.Bin_version.version_string + |> Openapi.to_json |> return + +let () = + Root_directory.register0 Rollup_node_services.Root.openapi + @@ fun node_ctxt {protocol} () -> + let open Lwt_result_syntax in + let*? _, dir, proto = get_proto_dir ?protocol node_ctxt in + generate_openapi dir proto let directory node_ctxt = + let dir = top_directory node_ctxt in + build_protocol_directories node_ctxt ; let path = Tezos_rpc.Path.( open_root / "global" / "block" /: Rollup_node_services.Arg.block_id) in - Tezos_rpc.Directory.register_dynamic_directory - ~descr:"Dynamic protocol specific RPC directory for the rollup node" - (top_directory node_ctxt) - path - (fun ((), block_id) -> - let open Lwt_syntax in - let+ dir = - let open Lwt_result_syntax in - let* level = - Block_directory_helpers.block_level_of_id node_ctxt block_id + let dir = + Tezos_rpc.Directory.register_dynamic_directory + ~descr:"Dynamic protocol specific RPC directory for the rollup node" + dir + path + (fun ((), block_id) -> + let open Lwt_syntax in + let+ dir = + let open Lwt_result_syntax in + let* level = + Block_directory_helpers.block_level_of_id node_ctxt block_id + in + let* () = Node_context.check_level_available node_ctxt level in + let* proto = Node_context.protocol_of_level node_ctxt level in + let*? block_directory, _, _ = + get_proto_dir ~protocol:proto.protocol node_ctxt + in + return block_directory in - let* () = Node_context.check_level_available node_ctxt level in - let+ (module Plugin) = get_proto_plugin_of_level node_ctxt level in - Plugin.RPC_directory.block_directory node_ctxt - in - match dir with - | Ok dir -> dir - | Error e -> - Format.kasprintf - Stdlib.failwith - "Could not load block directory for block %s: %a" - (Rollup_node_services.Arg.construct_block_id block_id) - pp_print_trace - e) + match dir with + | Ok dir -> dir + | Error e -> + Format.kasprintf + Stdlib.failwith + "Could not load block directory for block %s: %a" + (Rollup_node_services.Arg.construct_block_id block_id) + pp_print_trace + e) + in + add_describe dir + +let generate_openapi ?protocol cctxt = + let open Lwt_result_syntax in + let protocol = + Option.value_f protocol ~default:Protocol_plugins.last_registered + in + let* node_ctxt = + Node_context.Internal_for_tests.openapi_context cctxt protocol + in + let _, dir = build_protocol_directory node_ctxt protocol in + generate_openapi dir protocol diff --git a/src/lib_smart_rollup_node/rpc_directory.mli b/src/lib_smart_rollup_node/rpc_directory.mli index 78993096c60e4dea38e5b30f9332a8d72e1b59db..4430d84c93b09603a502bd0e9fe5a0fef2fdb895 100644 --- a/src/lib_smart_rollup_node/rpc_directory.mli +++ b/src/lib_smart_rollup_node/rpc_directory.mli @@ -29,3 +29,10 @@ val top_directory : Node_context.rw -> unit Tezos_rpc.Directory.t (** The full RPC directory for the protocol agnostic rollup node. *) val directory : Node_context.rw -> unit Tezos_rpc.Directory.t + +(** Generate the OpenAPI description for the RPC API of the node. If [protocol] + is not specified, the API will be generated for the newest protocol. *) +val generate_openapi : + ?protocol:Protocol_hash.t -> + #Client_context.full -> + Ezjsonm.value tzresult Lwt.t diff --git a/src/proto_017_PtNairob/lib_sc_rollup_node/pvm_rpc.ml b/src/proto_017_PtNairob/lib_sc_rollup_node/pvm_rpc.ml index b08b345c429efaa8610d9201de75481035f09a9d..f1180236418279b0b73f78090a3bc84941525dbc 100644 --- a/src/proto_017_PtNairob/lib_sc_rollup_node/pvm_rpc.ml +++ b/src/proto_017_PtNairob/lib_sc_rollup_node/pvm_rpc.ml @@ -40,4 +40,6 @@ let of_kind = function | Kind.Example_arith -> no_rpc | Wasm_2_0_0 -> (module Wasm_2_0_0_rpc.Make_RPC (Wasm_2_0_0_pvm.Durable_state) : S) - | Riscv -> invalid_arg "Riscv rollup is inactive in this protocol" + | Riscv -> + (* Riscv rollup is inactive in this protocol *) + no_rpc