From 531b33a96eeecb38026822f5bff4abfc0315b8b2 Mon Sep 17 00:00:00 2001 From: Alain Mebsout Date: Tue, 27 Sep 2022 16:19:22 +0200 Subject: [PATCH 01/10] lib_openapi: allow to provide title and description in convert --- src/bin_openapi/generate.sh | 20 +++++++++++++++++--- src/bin_openapi/rpc_openapi.ml | 15 +++++++++------ src/lib_openapi/convert.ml | 8 ++++---- 3 files changed, 30 insertions(+), 13 deletions(-) diff --git a/src/bin_openapi/generate.sh b/src/bin_openapi/generate.sh index 3d5c49c2d5a0..8321ccf7008c 100755 --- a/src/bin_openapi/generate.sh +++ b/src/bin_openapi/generate.sh @@ -82,10 +82,24 @@ 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" 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 cc9a2a9d7246..3cc34f216c6e 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/lib_openapi/convert.ml b/src/lib_openapi/convert.ml index f33f871a817f..d46687f50201 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 -- GitLab From 72f9d58d0b89998b2ca5cc8890f3dfe3a974c82c Mon Sep 17 00:00:00 2001 From: Alain Mebsout <alain.mebsout@functori.com> Date: Thu, 30 Nov 2023 10:16:50 +0100 Subject: [PATCH 02/10] lib_openapi: only depend on tezt.json library The Tezt library has side effects which makes it not fit to be used in binaries. --- manifest/main.ml | 5 ++++- src/lib_openapi/dune | 2 +- src/lib_openapi/json.ml | 2 +- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/manifest/main.ml b/manifest/main.ml index a3eae7456d9c..7e82749ccdfc 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 diff --git a/src/lib_openapi/dune b/src/lib_openapi/dune index a3915470fbdb..9d79efd4bcfc 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 3d791875cf72..1ab93ce57c2a 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 -- GitLab From f94b65f3c7d9663d88e78a55942ad0a8452a4cbe Mon Sep 17 00:00:00 2001 From: Alain Mebsout <alain.mebsout@functori.com> Date: Wed, 13 Sep 2023 18:19:14 +0200 Subject: [PATCH 03/10] Manifest: rollup node uses lib_openapi --- .gitlab/ci/jobs/packaging/opam_package.yml | 7 ++++++- manifest/main.ml | 1 + opam/octez-smart-rollup-node-lib.opam | 1 + src/lib_smart_rollup_node/dune | 1 + 4 files changed, 9 insertions(+), 1 deletion(-) diff --git a/.gitlab/ci/jobs/packaging/opam_package.yml b/.gitlab/ci/jobs/packaging/opam_package.yml index 9567f44e7071..99e6ba41bf2d 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/manifest/main.ml b/manifest/main.ml index 7e82749ccdfc..262bd672c6c1 100644 --- a/manifest/main.ml +++ b/manifest/main.ml @@ -4588,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 b0ed900c38b6..467e5ed1dd09 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/lib_smart_rollup_node/dune b/src/lib_smart_rollup_node/dune index 4593b1d08632..82e516f8ded8 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 -- GitLab From 9d447c47373022d15bb82b06b8051678253bbe18 Mon Sep 17 00:00:00 2001 From: Alain Mebsout <alain.mebsout@functori.com> Date: Wed, 13 Sep 2023 21:03:26 +0200 Subject: [PATCH 04/10] SCORU/Node: add /describe RPC for schema --- src/lib_smart_rollup_node/rpc_directory.ml | 51 ++++++++++++---------- 1 file changed, 28 insertions(+), 23 deletions(-) diff --git a/src/lib_smart_rollup_node/rpc_directory.ml b/src/lib_smart_rollup_node/rpc_directory.ml index 6eee9999a32f..fd23392cbb59 100644 --- a/src/lib_smart_rollup_node/rpc_directory.ml +++ b/src/lib_smart_rollup_node/rpc_directory.ml @@ -354,27 +354,32 @@ let directory node_ctxt = 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" + (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 + 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 - 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 + Tezos_rpc.Directory.register_describe_directory_service + dir + Tezos_rpc.Service.description_service -- GitLab From f9ed42fa461092a446892554fbe49a02f768ba7e Mon Sep 17 00:00:00 2001 From: Alain Mebsout <alain.mebsout@functori.com> Date: Thu, 14 Sep 2023 13:05:28 +0200 Subject: [PATCH 05/10] SCORU/Node: add /openapi RPC --- src/lib_smart_rollup/rollup_node_services.ml | 27 ++++ .../rollup_node_daemon.ml | 5 +- src/lib_smart_rollup_node/rpc_directory.ml | 116 ++++++++++++++++-- .../lib_sc_rollup_node/pvm_rpc.ml | 4 +- 4 files changed, 136 insertions(+), 16 deletions(-) diff --git a/src/lib_smart_rollup/rollup_node_services.ml b/src/lib_smart_rollup/rollup_node_services.ml index bff9b59401f4..98c54904f5f4 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/rollup_node_daemon.ml b/src/lib_smart_rollup_node/rollup_node_daemon.ml index d18f5ab0e1b2..b92bab7cfb2b 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 fd23392cbb59..040cdd38cbf3 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,13 +348,99 @@ 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) @@ -357,7 +448,7 @@ let directory node_ctxt = let dir = Tezos_rpc.Directory.register_dynamic_directory ~descr:"Dynamic protocol specific RPC directory for the rollup node" - (top_directory node_ctxt) + dir path (fun ((), block_id) -> let open Lwt_syntax in @@ -367,8 +458,11 @@ let directory node_ctxt = Block_directory_helpers.block_level_of_id node_ctxt block_id 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 + 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 match dir with | Ok dir -> dir @@ -380,6 +474,4 @@ let directory node_ctxt = pp_print_trace e) in - Tezos_rpc.Directory.register_describe_directory_service - dir - Tezos_rpc.Service.description_service + add_describe dir 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 b08b345c429e..f11802364182 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 -- GitLab From e329f4905daeecac45603f067212868f135f2bd8 Mon Sep 17 00:00:00 2001 From: Alain Mebsout <alain.mebsout@functori.com> Date: Thu, 14 Sep 2023 13:05:35 +0200 Subject: [PATCH 06/10] SCORU/Node: command to generate OpenAPI --- .../main_smart_rollup_node.ml | 14 ++++++ src/lib_smart_rollup_node/cli.ml | 15 ++++++ src/lib_smart_rollup_node/node_context.ml | 49 +++++++++++++++++++ src/lib_smart_rollup_node/node_context.mli | 4 ++ src/lib_smart_rollup_node/protocol_plugins.ml | 8 +++ .../protocol_plugins.mli | 6 +++ src/lib_smart_rollup_node/rpc_directory.ml | 11 +++++ src/lib_smart_rollup_node/rpc_directory.mli | 7 +++ 8 files changed, 114 insertions(+) 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 7069a3ceda36..ff2fbe9acefa 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_smart_rollup_node/cli.ml b/src/lib_smart_rollup_node/cli.ml index 2d7ed6be4253..cf720ecf1572 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/node_context.ml b/src/lib_smart_rollup_node/node_context.ml index f25e8f3575af..5cdcb0e4b021 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 13fec5791cfc..bcca7df32da4 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 f5e3c0b4294e..cc4b4c42d3a2 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 b7bb6604d4c9..a51f85cab64e 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/rpc_directory.ml b/src/lib_smart_rollup_node/rpc_directory.ml index 040cdd38cbf3..7aeb651a7b13 100644 --- a/src/lib_smart_rollup_node/rpc_directory.ml +++ b/src/lib_smart_rollup_node/rpc_directory.ml @@ -475,3 +475,14 @@ let directory node_ctxt = 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 78993096c60e..4430d84c93b0 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 -- GitLab From 7205139ff5297d9b373adb486bf054c75f83f191 Mon Sep 17 00:00:00 2001 From: Alain Mebsout <alain.mebsout@functori.com> Date: Thu, 30 Nov 2023 11:26:25 +0100 Subject: [PATCH 07/10] Docs: OpenAPI file gen for smart rollup node RPCs --- docs/api/openapi.rst | 35 +++++++++++++++++++++++++++++++++-- src/bin_openapi/generate.sh | 9 ++++++++- 2 files changed, 41 insertions(+), 3 deletions(-) diff --git a/docs/api/openapi.rst b/docs/api/openapi.rst index 005d4e249a7d..52cd8fc5ef17 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) <https://gitlab.com/tezos/tezos/-/blob/master/docs/api/oxford-mempool-openapi-rc.json>`_ +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) + <https://gitlab.com/tezos/tezos/-/blob/master/docs/api/nairobi-smart-rollup-node-openapi.json>`_ + (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) + <https://gitlab.com/tezos/tezos/-/blob/master/docs/api/oxford-smart-rollup-node-openapi.json>`_ + (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 <https://editor.swagger.io/>`_ to check for syntax issues (just copy-paste ``rpc-openapi.json`` into it or open diff --git a/src/bin_openapi/generate.sh b/src/bin_openapi/generate.sh index 8321ccf7008c..86fb87d2480c 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 @@ -102,4 +104,9 @@ dune exec src/bin_openapi/rpc_openapi.exe -- \ $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" -- GitLab From 22953f095f33071aeac09511101fc4c6e96a8732 Mon Sep 17 00:00:00 2001 From: Alain Mebsout <alain.mebsout@functori.com> Date: Thu, 14 Sep 2023 14:55:25 +0200 Subject: [PATCH 08/10] Docs: changelog --- CHANGES.rst | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/CHANGES.rst b/CHANGES.rst index b94979e1aedc..0ebcff61e43f 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 -------------------------- -- GitLab From 3eb2bc01ec0f319895ccea8b2f5c8e1d68c31b6c Mon Sep 17 00:00:00 2001 From: Alain Mebsout <alain.mebsout@functori.com> Date: Thu, 30 Nov 2023 11:43:40 +0100 Subject: [PATCH 09/10] Docs: smart rollup node openapi file for Nairobi --- .../nairobi-smart-rollup-node-openapi.json | 5705 +++++++++++++++++ 1 file changed, 5705 insertions(+) create mode 100644 docs/api/nairobi-smart-rollup-node-openapi.json 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 000000000000..49a9eab0af08 --- /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 <data-dir>/simulation_kernel_logs/, where <data-dir> 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" ] } ] } } } } -- GitLab From 449e99164f471b709517656acc9b204cebed165a Mon Sep 17 00:00:00 2001 From: Alain Mebsout <alain.mebsout@functori.com> Date: Wed, 6 Dec 2023 09:49:08 +0100 Subject: [PATCH 10/10] Docs: smart rollup node openapi file for Oxford --- .../api/oxford-smart-rollup-node-openapi.json | 5741 +++++++++++++++++ 1 file changed, 5741 insertions(+) create mode 100644 docs/api/oxford-smart-rollup-node-openapi.json 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 000000000000..91330651a245 --- /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 <data-dir>/simulation_kernel_logs/, where <data-dir> 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" ] } ] } } } } -- GitLab